- Verwendete Materialien
- EM18 RFID-Lesemodul
- Finden Sie mit Arduino den eindeutigen 12-stelligen RFID-Tag-Code heraus
- Schaltplan
- Fingerabdrucksensormodul
- Programmierung für RFID Keyless Ignition
Heutzutage ist der größte Teil des Autos mit einem schlüssellosen Zugang und einem Druckknopf-Zündsystem ausgestattet, bei dem Sie nur den Schlüssel in der Tasche tragen und nur Ihren Finger auf den kapazitiven Sensor am Türgriff legen müssen, um die Autotür zu öffnen. Hier in diesem Projekt fügen wir diesem System mithilfe von RFID und Fingerabdrucksensor einige weitere Sicherheitsfunktionen hinzu. Der RFID-Sensor validiert die Lizenz des Benutzers und der Fingerabdrucksensor erlaubt nur eine autorisierte Person im Fahrzeug.
Für dieses auf Fingerabdrücken basierende Autozündsystem verwenden wir Arduino mit einem R305-Fingerabdrucksensor und einem EM18-RFID-Lesegerät.
Verwendete Materialien
- Arduino Nano
- R305 Fingerabdrucksensor
- EM18 RFID-Lesegerät
- 16 * 2 Alphanumerisches LCD
- Gleichstrommotoren
- L293D Motortreiber-IC
- Veroboard oder Breadboard (je nachdem, was verfügbar ist)
- Kabel anschließen
- 12V DC Batterie
EM18 RFID-Lesemodul
RFID steht für Radio Frequency Identification. Es bezieht sich auf eine Technologie, bei der digitale Daten in RFID-Tags codiert werden und von einem RFID-Lesegerät mithilfe von Funkwellen decodiert werden können. RFID ähnelt der Barcodierung, bei der Daten von einem Tag von einem Gerät decodiert werden. Die RFID-Technologie wird in verschiedenen Anwendungen wie Sicherheitssystemen, Anwesenheitssystemen für Mitarbeiter, RFID-Türschlössern, RFID-basierten Abstimmungsgeräten, Mauterhebungssystemen usw. verwendet.
EM18 Reader ist ein Modul, das die in den RFID-Tags gespeicherten ID-Informationen lesen kann. Die RFID-Tags speichern eine 12-stellige eindeutige Nummer, die von einem EM18-Lesemodul dekodiert werden kann, wenn das Tag mit dem Reader in Reichweite ist. Dieses Modul arbeitet mit einer Frequenz von 125 kHz, die über eine eingebaute Antenne verfügt, und wird mit einer 5-Volt-Gleichstromversorgung betrieben.
Es gibt eine serielle Datenausgabe und einen Bereich von 8-12 cm. Die seriellen Kommunikationsparameter sind 8 Datenbits, 1 Stoppbit und 9600 Baudrate.
EM18 Eigenschaften:
- Betriebsspannung: + 4,5 V bis + 5,5 V DC
- Stromaufnahme: 50mA
- Betriebsfrequenz: 125 kHz
- Betriebstemperatur: 0-80 ° C.
- Kommunikationsbaudrate: 9600
- Leseabstand: 8-12 cm
- Antenne: Eingebaut
EM18 Pinbelegung:
Pin Beschreibung:
VCC: 4,5-5 V Gleichspannungseingang
GND: Erdungsstift
Summer: Summer oder LED-Pin
TX: Serieller Datensender-Pin von EM18 für RS232 (Ausgang)
SEL: Dies muss für die Verwendung von RS232 HIGH sein (LOW bei Verwendung von WEIGAND).
Daten 0: WEIGAND-Daten 0
Daten 1: WEIGAND-Daten 1
Weitere Informationen zu RFID und Tags finden Sie in unseren früheren RFID-basierten Projekten.
Finden Sie mit Arduino den eindeutigen 12-stelligen RFID-Tag-Code heraus
Bevor wir das Auto-Zündsystem Arduino für Arduino programmieren, müssen wir zunächst den eindeutigen 12-stelligen RFID-Tag-Code herausfinden. Wie bereits erwähnt, enthalten RFID-Tags einen 12-stelligen eindeutigen Code, der mithilfe eines RFID-Lesegeräts dekodiert werden kann. Wenn wir das RFID-Tag in der Nähe des Readers durchwischen, gibt der Reader die eindeutigen Codes über die serielle Ausgangsschnittstelle aus. Schließen Sie zuerst den Arduino gemäß Schaltplan an den RFID-Leser an und laden Sie dann den unten angegebenen Code auf Arduino hoch.
int count = 0; char card_no; void setup () {Serial.begin (9600); } void loop () {if (Serial.available ()) {count = 0; while (Serial.available () && count <12) {card_no = Serial.read (); count ++; Verzögerung (5); } Serial.print (card_no); }}
Öffnen Sie nach dem erfolgreichen Hochladen des Codes den seriellen Monitor und stellen Sie die Baudrate auf 9600 ein. Wischen Sie dann die Karte in der Nähe des Readers. Dann wird der 12-stellige Code auf dem seriellen Monitor angezeigt. Führen Sie diesen Vorgang für alle verwendeten RFID-Tags durch und notieren Sie ihn für zukünftige Referenzen.
Schaltplan
Der Schaltplan für dieses auf Fingerabdrücken basierende Zündsystem ist unten angegeben:
In meinem Fall habe ich die gesamte Schaltung wie unten gezeigt auf die Perf-Platine gelötet:
Fingerabdrucksensormodul
Das Fingerabdrucksensormodul oder der Fingerabdruckscanner ist ein Modul, das das Fingerabdruckbild erfasst, es dann in die entsprechende Vorlage konvertiert und von Arduino unter der ausgewählten ID (Position) in seinem Speicher speichert. Hier wird der gesamte Prozess von Arduino gesteuert, z. B. das Aufnehmen eines Bilds eines Fingerabdrucks, das Konvertieren in Vorlagen und das Speichern des Speicherorts usw.
Wir haben zuvor denselben R305-Sensor verwendet, um eine Abstimmungsmaschine, ein Anwesenheitssystem, ein Sicherheitssystem usw. zu bauen. Hier können Sie alle auf Fingerabdrücken basierenden Projekte überprüfen.
Registrieren von Fingerabdrücken für den Sensor:
Bevor wir mit dem Programm fortfahren können, müssen wir die erforderlichen Bibliotheken für den Fingerabdrucksensor installieren. Hier haben wir " Adafruit_Fingerprint.h " für die Verwendung des R305-Fingerabdrucksensors verwendet. Laden Sie also zunächst die Bibliothek über den unten angegebenen Link herunter:
- Adafruit-Fingerabdrucksensorbibliothek
Gehen Sie nach erfolgreichem Download in der Arduino IDE zu Datei > Extras> Bibliothek einschließen> ZIP-Bibliothek hinzufügen und wählen Sie dann den Speicherort der Zip-Datei aus, um die Bibliothek zu installieren.
Führen Sie nach erfolgreicher Installation der Bibliothek die folgenden Schritte aus, um einen neuen Fingerabdruck im Sensorspeicher zu registrieren.
1. Gehen Sie in der Arduino IDE zu Datei > Beispiele > Adafruit Fingerprint Sensor Library > Registrieren.
2. Laden Sie den Code auf das Arduino hoch und öffnen Sie den seriellen Monitor mit einer Baudrate von 9600.
Wichtig: Ändern Sie den seriellen Software-Pin im Programm in SoftwareSerial mySerial (12, 11).
3. Sie sollten eine ID für den Fingerabdruck eingeben, in dem Sie Ihren Fingerabdruck speichern möchten. Da dies mein erster Fingerabdruck ist, habe ich oben links 1 eingegeben und dann auf die Schaltfläche Senden geklickt.
4. Dann blinkt das Licht am Fingerabdrucksensor, was darauf hinweist, dass Sie Ihren Finger auf den Sensor legen sollten. Befolgen Sie anschließend die auf dem seriellen Monitor angezeigten Schritte, bis Sie für die erfolgreiche Registrierung bestätigt werden.
Programmierung für RFID Keyless Ignition
Der vollständige Code für dieses biometrische Zündsystem finden Sie am Ende des Tutorials. Hier erklären wir einige wichtige Teile des Codes.
Das erste ist, alle erforderlichen Bibliotheken einzuschließen. Hier in meinem Fall habe ich " Adafruit_Fingerprint.h " für die Verwendung des R305-Fingerabdrucksensors eingefügt. Konfigurieren Sie dann die serielle Schnittstelle, an die der Fingerabdrucksensor angeschlossen wird. In meinem Fall habe ich 12 als RX-Pin und 11 als TX-Pin deklariert.
#include #include
Deklarieren Sie im nächsten Schritt alle Variablen, die im gesamten Code verwendet werden. Definieren Sie dann die LCD-Verbindungsstifte mit Arduino, gefolgt von der Deklaration eines Objekts der LiquidCrystal- Klasse.
char input; int count = 0; int a = 0; const int rs = 6, en = 7, d4 = 2, d5 = 3, d6 = 4, d7 = 5; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
Als nächstes wird innerhalb der Schleife () Code geschrieben, um die eindeutigen 12-stelligen Codes der RFID-Tags zu erhalten, und sie werden in einem Array gespeichert. Hier werden die Elemente des Arrays mit den im Speicher gespeicherten eindeutigen Codes abgeglichen, um die authentifizierten Personendetails zu erhalten.
count = 0; while (Serial.available () && count <12) { input = Serial.read (); count ++; Verzögerung (5); }}
Dann wird das empfangene Array mit den gespeicherten Tag-Codes verglichen. Wenn der Code übereinstimmt, wird die Lizenz als gültig betrachtet, wodurch der Benutzer einen gültigen Fingerabdruck hinterlassen kann. Andernfalls wird eine ungültige Lizenz angezeigt.
if ((strncmp (Eingabe, "3F009590566C", 12) == 0) && (a == 0)) { lcd.setCursor (0, 0); lcd.print ("Lizenz gültig"); lcd.setCursor (0, 1); lcd.print ("Willkommen"); Verzögerung (1000); a = 1; Fingerabdruck(); }}
Im nächsten Schritt wird eine Funktion getFingerprintID geschrieben, die eine gültige Fingerabdruck-ID für einen bereits registrierten Fingerabdruck zurückgibt .
int getFingerprintID () { uint8_t p = finger.getImage (); if (p! = FINGERPRINT_OK) gibt -1 zurück; p = finger.image2Tz (); if (p! = FINGERPRINT_OK) gibt -1 zurück; p = finger.fingerFastSearch (); if (p! = FINGERPRINT_OK) gibt -1 zurück; return finger.fingerID; }}
Innerhalb der Funktion fingerprint () , die nach erfolgreicher RFID-Übereinstimmung aufgerufen wird, wird die Funktion getFingerprintID aufgerufen, um eine gültige Fingerabdruck-ID abzurufen . Anschließend wird es mit der if-else-Schleife verglichen, um Informationen zu authentifizierten Personendaten abzurufen. Wenn die Daten übereinstimmen, wird das Fahrzeug gezündet. Andernfalls wird der falsche Fingerabdruck angezeigt.
int fingerprintID = getFingerprintID (); Verzögerung (50); if (fingerprintID == 1) { lcd.setCursor (0, 0); lcd.print ("Zugriff gewährt"); lcd.setCursor (0, 1); lcd.print ("Fahrzeug gestartet"); digitalWrite (9, HIGH); digitalWrite (10, LOW); während (1); }}
So funktioniert dieses RFID-Autozündsystem, das Ihrem Auto zwei Sicherheitsebenen verleiht.
Der vollständige Code und das Demonstrationsvideo sind unten angegeben.