Inhaltsverzeichnis:

Arduino RFID-Türschloss - Gunook
Arduino RFID-Türschloss - Gunook

Video: Arduino RFID-Türschloss - Gunook

Video: Arduino RFID-Türschloss - Gunook
Video: Is it possible to open a door with RFID and Arduino 2024, Juli
Anonim
Arduino RFID-Türschloss
Arduino RFID-Türschloss
Arduino RFID-Türschloss
Arduino RFID-Türschloss
Arduino RFID-Türschloss
Arduino RFID-Türschloss
Arduino RFID-Türschloss
Arduino RFID-Türschloss

***Aktualisiert am 09.08.2010*** Ich wollte meine Garage einfach und sicher betreten. RFID war der beste Weg, um meine Tür aufzuschließen, selbst mit vollen Händen kann ich die Tür aufschließen und aufschieben! Ich habe eine einfache Schaltung mit einem grundlegenden ATMega 168 Arduino-Chip und einem ID-20-RFID-Lesegerät gebaut, um ein elektronisches Türschloss zu steuern. Die Schaltung besteht aus 3 separaten Teilen, einem Leser zum Lesen von RFID-Tags, einem Controller zum Empfangen von Daten vom Leser und zur Steuerung der Ausgabe der RGB-LED und des elektrischen Türschlosses. Das Türschloss wird zuerst in eine Tür eingebaut und mit einer 9V-Batterie getestet, um eine korrekte Installation zu gewährleisten. In den meisten Fällen möchten Sie einen normalerweise offenen Stromkreis am Türschloss oder Fail Secure. Das bedeutet, dass die Tür verriegelt bleibt, wenn kein Strom durch sie fließt. Wenn 12 V DC durch den Elektromagneten im Türschloss geleitet werden, gibt eine Platte im Schloss nach und ermöglicht das freie Aufschieben der Tür. Der Leser befindet sich außen an der Tür und ist innen vom Controller getrennt, so dass niemand die Sicherheit umgehen kann, indem er den Leser aufbricht und versucht, den Leser kurzzuschließen. Der Controller empfängt serielle Daten vom Reader und steuert die RGB-LED und das Türschloss. In diesem Fall habe ich beides zum Testen auf separate Steckbretter gelegt. Hier ist ein Videoüberblick über das System in Aktion Lesen Sie weiter, um zu sehen, wie Sie eines selbst bauen können! **Update** Alle Codes, Schaltpläne und PCB-Designs wurden getestet und verfeinert. Sie sind alle hier ab dem 09.08.2010. Aktualisiertes Video des endgültig installierten und funktionierenden Systems.

Schritt 1: Benötigte Teile

Benötigte Teile
Benötigte Teile

Hier sind eine Liste von Teilen und Links zu SparkFun.com, wo ich sie gekauft habe. Dies ist der grundlegende Satz von Teilen, die Sie zum Bauen und Arduino benötigen, und eine Schaltung zum Einlesen von RFID-Tags in das Arduino. Ich gehe davon aus, dass Sie bereits ein Steckbrett, Netzteil und Anschlusskabel haben.

Arduino-Sachen

ATmega168 mit Arduino-Bootloader $4.95

Kristall 16MHz 1,50 €

Kondensator Keramik 22pF 0,25 $ (x2)

Widerstand 10k Ohm 1/6 Watt PTH 0,25

Mini-Druckknopfschalter $0.35

LED-RGB mit dreifachem Ausgang - diffus 1,95 $

RFID-Zeug

Einer davon, 20 hat eine bessere Reichweite, 12 ist kleinerRFID Reader ID-12 $29.95RFID Reader ID-20 $34.95

RFID-Leser-Ausbruch $0.95

Kopfzeilen abbrechen - Gerade 2,50 $

RFID-Tag - 125kHz 1,95 €

Sonstiges

TIP31A Transistor (Radio Shack / lokaler Elektronikladen $ 1,50)

Türschloss ist von ebay. Türausfallsichere Zugangskontrolle Elektrischer Türöffner v5 NEIN 17,50 $ (kawamall, bay)

Schritt 2: Bauen Sie den Arduino-Controller

Bauen Sie den Arduino-Controller
Bauen Sie den Arduino-Controller
Bauen Sie den Arduino-Controller
Bauen Sie den Arduino-Controller
Bauen Sie den Arduino-Controller
Bauen Sie den Arduino-Controller

Der erste Schritt zum Bau eines RFID-Türschlosses mit einem einfachen Arduino besteht darin, ein grundlegendes funktionierendes Arduino auszubilden. Die meisten vorgeflashten ATMega 168-Chips von Arduino werden mit dem vorinstallierten Standard-Blinkprogramm geliefert. Schließen Sie eine LED an den digitalen Ausgang 13 an und überprüfen Sie, ob alles funktioniert.

Der Hardwareteil dieses RFID-Lesers wäre zu einfach, wenn wir ein normales Arduino mit eingebautem USB-Programmierer verwenden würden. Da ich vorhabe, dies in die Wand zu stecken und es nicht wieder zu berühren, möchte ich kein großes sperriges 30-Dollar-Arduino-Board verwenden, wenn ich ein ATMega 168 für 5 US-Dollar kaufen und eine viel kleinere benutzerdefinierte Leiterplatte herstellen kann.

Da ich mich dafür entschieden habe, selbst eine grundlegende Arduino-Schaltung zu erstellen, benötige ich einen externen USB-> Serial FDIT-Programmierer. Ich habe Eagle-Schaltpläne des Controllers mit einem Netzteil aus einem 7805-Spannungsregler enthalten. Beim Testen habe ich ein Brotplatinen-Netzteil verwendet.

Um ein Arduino zum Laufen zu bringen, brauchen Sie nur den ATMega168 mit der darauf geflashten Arduino-Software, 2x 22pF-Kondensatoren, 16-MHz-Kristall, 10k-Ohm-Widerstand, Druckknopf und ein Steckbrett. Der Anschluss dafür ist bekannt, aber ich habe den gesamten Schaltplan für die Schaltung beigefügt.

Das Arduino wird 4 Ausgänge auslösen, jeweils 1 für rote / grüne / blaue LEDs und 1 zum Auslösen des TIP31A, um 12 V DC an das Türschloss zu senden. Das Arduino empfängt serielle Daten auf seiner Rx-Leitung vom ID-20-RFID-Lesegerät.

Schritt 3: Erstellen Sie den RFID-Reader

Bauen Sie den RFID-Leser
Bauen Sie den RFID-Leser
Bauen Sie den RFID-Leser
Bauen Sie den RFID-Leser
Bauen Sie den RFID-Leser
Bauen Sie den RFID-Leser

Nachdem Sie Ihr Arduino-Brot verkabelt haben und arbeiten, können Sie den RFID-Leserteil des Stromkreises zusammenstellen, der die ID-10 oder ID-20 und die RGB-LED enthält, um den Status des Stromkreises anzuzeigen. Denken Sie daran, dass sich das Lesegerät außen befindet und innen vom Controller getrennt ist, damit jemand nicht leicht einbrechen kann.

Um dies zu bauen, senden wir 5 V / Masse vom primären Steckbrett zu einem sekundären Steckbrett, auf dem wir den Reader aufbauen. Senden Sie auch über 3 Drähte von 3 der Arduino-Ausgangspins, um die RGB-LED zu steuern, eine für jede Farbe. Ein weiterer Draht, Brown in den Bildern, ist eine serielle Verbindung für den ID-20, um mit dem seriellen Rx-Eingang des Arduino zu kommunizieren. Dies ist eine sehr einfache Schaltung zum Anschließen. LEDs erhalten Widerstände und einige Punkte am ID-20 sind mit Masse / 5 V verbunden, um den richtigen Status einzustellen.

Um das Steckbrett zu erleichtern, verkauft das ID-10/ID-20 Sparkfun ein Breakout-Board, mit dem Sie längere Stiftleisten anbringen können, die beabstandet sind, um ein Steckbrett zu passen. Dieses Teil und die Stiftleisten sind in der Teileliste aufgeführt.

Der Schaltplan sollte geradeaus und leicht zu folgen sein.

Schritt 4: Programm

Zeit, Ihr Arduino zu programmieren. Dies kann mit einem einfachen Arduino etwas schwierig sein. Möglicherweise müssen Sie die Reset-Taste vor und während des ersten Teils des Uploads mehrmals drücken. Eine sehr wichtige Sache, die Sie sich merken sollten, Sie erhalten einen Upload-Fehler, wenn Sie die serielle ID-20-Leitung nicht vorübergehend von der Rx-Leitung des Arduino trennen. Der ATMega168 hat nur 1 Rx-Eingang und verwendet ihn, um Code hochzuladen, um mit dem Programmierer zu sprechen. Trennen Sie den ID-20 während der Programmierung und stecken Sie ihn wieder ein, wenn Sie fertig sind. Ich habe einen FTDI-Programmierer verwendet, mit dem Sie das Arduino über USB mit nur 4 Drähten programmieren können. Der Schaltplan des Controllers zeigt eine Stiftleistenverbindung, damit Sie eine direkt anschließen können. Sparkfun verkauft auch dieses Teil, aber viele haben es vielleicht schon.

Sie können meinen Code ganz einfach auf Ihr Arduino hochladen und nie zurückblicken, aber was macht das Spaß? Lassen Sie mich die Grundidee erklären, wie es funktioniert.

Zuallererst wollte ich keine externen Tasten / Schalter / etc. und ich wollte das Arduino nicht jedes Mal neu programmieren, wenn ich eine neue Karte hinzufügen wollte. Daher wollte ich nur RFID verwenden, um den Betrieb der Schaltung sowie die Kontrolle über das Türschloss zu steuern.

Das Programm schaltet die blaue LED ein, um anzuzeigen, dass es bereit ist, eine neue Karte zu lesen. Wenn die Karte gelesen wird, entscheidet sie, ob sie eine gültige Karte ist oder nicht, indem sie das, was sie eingelesen hat, mit einer Liste gültiger Karten vergleicht. Wenn der Benutzer gültig ist, schaltet das Arduino die blaue LED aus und die grüne LED für 5 Sekunden ein. Es schaltet auch einen anderen Ausgang für 5 Sekunden hoch ein. Dieser Ausgang ist mit dem TIP31A-Transistor verbunden und ermöglicht es dem winzigen Arduino, ein viel größeres 12-V-300-mA-Türschloss zu steuern, ohne beschädigt zu werden. Nach 5 Sekunden wird das Türschloss wieder verriegelt und die LED wird wieder blau, um auf das Lesen einer weiteren Karte zu warten. Wenn die Karte ungültig ist, wechselt die LED für einige Sekunden auf ROT und dann wieder auf Blau, um auf eine andere Karte zu warten.

Es ist wichtig, dass das Türschloss auch dann noch funktioniert, wenn das Arduino über Nacht die Stromversorgung verliert oder zurückgesetzt wird. Daher werden alle gültigen Karten-IDs im EEPROM-Speicher gespeichert. Der ATMega168 verfügt über 512 Byte EEPROM-Speicher. Jede RFID-Karte hat eine 5-Hex-Byte-Seriennummer und eine 1-Hex-Byte-Prüfsumme, mit der wir überprüfen können, ob bei der Übertragung zwischen dem ID-20 und dem Arduino keine Fehler aufgetreten sind.

Gültige Karten werden im EEPROM gespeichert, indem das erste Byte als Zähler verwendet wird. Wenn beispielsweise 3 gültige Karten gespeichert sind, wäre das erste Byte im EEPROM 3. EEPROM.read(0); = 3. Wenn wir dies wissen und die Tatsache, dass jede ID 5 Byte lang ist, wissen wir, dass 1-5 Karte 1 ist, 6-10 Karte 2 und 11-15 Karte 3 ist. Wir können eine Schleife machen, die durch das EEPROM schaut 5 Bytes gleichzeitig und versucht die vom Leser eingelesene Karte zu finden.

Aber wie können wir dem EEPROM neue Karten hinzufügen, nachdem die Schaltung installiert wurde? Ich habe eine meiner RFID-Karten eingelesen und als Master-RFID-Karte hartcodiert. Selbst wenn das gesamte EEPROM gelöscht wird, funktioniert die Masterkarte noch. Immer wenn eine Karte gelesen wird, prüft sie zuerst, ob es sich um die Master-Karte handelt. Wenn nicht, wird weiterhin überprüft, ob es sich um eine gültige Karte handelt oder nicht. Wenn die Karte die Masterkarte ist, lassen wir das Arduino in einen "Programmiermodus" gehen, in dem es RGB blinkt und darauf wartet, dass ein weiteres gültiges Tag gelesen wird. Das nächste gelesene Tag wird an der nächsten freien Stelle im EEPROM hinzugefügt und der Zähler wird um 1 erhöht, wenn die Karte noch nicht im EEPROM-Speicher vorhanden ist. Der Leser kehrt dann in den Normalmodus zurück und wartet auf das Lesen einer neuen Karte.

Derzeit habe ich keine Möglichkeit zum Löschen einer Karte programmiert, da die Gründe für das Löschen einer Karte höchstwahrscheinlich deren Verlust oder Diebstahl sein würden. Da dies höchstwahrscheinlich mit 1-10 Personen verwendet wird, wäre es am einfachsten, eine Master Erase-Karte hart zu programmieren, die alle Karten aus dem EEPROM löscht und dann alle neu hinzufügt, was nur wenige Sekunden dauert. Ich habe Code hinzugefügt, um das EEPROM zu löschen, aber ich habe diese Funktion noch nicht implementiert..

Der Code wird zusammen mit einer Kopie der Stückliste in einer Textdatei angehängt.

Schritt 5: Erweitern

Dies sind nur einige der coolen Sachen, die Sie mit RFID machen können. Sie könnten dies noch viel weiter ausbauen mit einem LCD-Ausgang, Protokollierung, wer wann eingeht, Netzwerk- / Twitter-Verbindung usw. Ich habe vor, eine fertige PCB-Version dieser Schaltung zu erstellen. Ich habe noch nie eine Platine gemacht, also arbeite ich immer noch am Design und Layout der Teile. Sobald ich sie fertig habe, werde ich sie auch posten. Ich ermutige jeden, den Code, den ich geschrieben habe, zu nehmen und zu modifizieren, um noch mehr coole Dinge zu tun!

Finalist im Arduino-Wettbewerb

Empfohlen: