- Materiale utilizate
- Modulul de citire RFID EM18
- Aflați codul RFID unic cu 12 cifre folosind Arduino
- Diagrama circuitului
- Modul senzor de amprentă digitală
- Programare pentru aprindere fără cheie RFID
În zilele noastre, cea mai mare parte a mașinii este dotată cu sistem de intrare fără cheie și sistem de aprindere prin buton, în care trebuie doar să purtați cheia în buzunar și trebuie doar să puneți degetul pe senzorul capacitiv de pe mânerul ușii pentru a deschide ușa mașinii. Aici, în acest proiect, adăugăm câteva alte caracteristici de securitate acestui sistem, utilizând senzorul de amprentă digitală și RFID. Senzorul RFID va valida licența utilizatorului, iar senzorul de amprentă va permite doar o persoană autorizată în vehicul.
Pentru acest sistem de aprindere auto pe bază de amprentă digitală, folosim Arduino cu un senzor de amprentă R305 și un cititor RFID EM18.
Materiale utilizate
- Arduino Nano
- Senzor de amprentă R305
- Cititor RFID EM18
- 16 * 2 LCD alfanumeric
- Motoare de curent continuu
- L293D driver IC motor
- Veroboard sau Breadboard (oricare dintre acestea este disponibil)
- Conectarea firelor
- Baterie 12V DC
Modulul de citire RFID EM18
RFID reprezintă identificarea frecvenței radio. Se referă la o tehnologie, în care datele digitale sunt codificate în etichete RFID și pot fi decodate de un cititor RFID folosind unde radio. RFID este similar cu codul de bare în care datele dintr-o etichetă sunt decodate de un dispozitiv. Tehnologia RFID este utilizată în diverse aplicații, cum ar fi sistemul de securitate, sistemul de prezență al angajaților, Încuietoarea ușii RFID, Mașina de vot RFID, Sistemul de colectare a taxelor etc.
EM18 Reader este un modul care poate citi informațiile despre ID stocate în etichetele RFID. Etichetele RFID stochează un număr unic de 12 cifre care poate fi decodat de un modul de citire EM18, atunci când eticheta vine în raza de acțiune cu Reader. Acest modul funcționează la o frecvență de 125 kHz, care are o antenă încorporată și este operat utilizând o sursă de alimentare de 5 volți DC.
Oferă o ieșire de date seriale și are o rază de acțiune de 8-12 cm. Parametrii de comunicație serială sunt 8 biți de date, 1 bit de oprire și 9600 baud rate.
Caracteristici EM18:
- Tensiune de funcționare: + 4.5V la + 5.5V DC
- Consum curent: 50mA
- Frecvența de funcționare: 125KHZ
- Temperatura de funcționare: 0-80 grade C
- Comunicare Baud Rate: 9600
- Distanța de citire: 8-12 cm
- Antena: încorporată
EM18 Pinout:
Descrierea pinului:
VCC: intrare de tensiune 4.5-5V DC
GND: știft de împământare
Buzzer: Buzzer sau pin LED
TX: Pinul emițătorului de date seriale al EM18 pentru RS232 (ieșire)
SEL: Acesta trebuie să fie ÎNALT pentru utilizarea RS232 (LOW dacă se utilizează WEIGAND)
Date 0: date WEIGAND 0
Date 1: date WEIGAND 1
Pentru a afla mai multe despre RFID și etichete, consultați proiectele noastre anterioare bazate pe RFID.
Aflați codul RFID unic cu 12 cifre folosind Arduino
Înainte de a programa Arduino pentru sistemul de aprindere auto Arduino, mai întâi, trebuie să aflăm codul unic al etichetei RFID cu 12 cifre. După cum am discutat anterior, etichetele RFID conțin un cod unic de 12 cifre și pot fi decodate folosind un cititor RFID. Când glisăm eticheta RFID lângă Reader, Readerul va da codurile unice prin portul de ieșire serial. Mai întâi, conectați Arduino la cititorul RFID conform schemei de circuit și apoi încărcați codul dat mai jos la Arduino.
int count = 0; char card_no; void setup () {Serial.begin (9600); } bucla void () {if (Serial.available ()) {count = 0; while (Serial.available () && count <12) {card_no = Serial.read (); conta ++; întârziere (5); } Serial.print (card_no); }}
După încărcarea cu succes a codului, deschideți monitorul serial și setați rata de transmisie la 9600. Apoi glisați cardul lângă Reader. Apoi, codul de 12 cifre va începe să se afișeze pe monitorul serial. Faceți acest proces pentru toate etichetele RFID utilizate și notați-l pentru referințe viitoare.
Diagrama circuitului
Diagrama circuitului pentru acest sistem de aprindere bazat pe amprentă este prezentată mai jos:
În cazul meu, am lipit circuitul complet pe placa de perf, așa cum se arată mai jos:
Modul senzor de amprentă digitală
Finger Print Sensor Module sau Finger Print Scanner este un modul care captează imaginea cu amprentă digitală și apoi o convertește în șablonul echivalent și le salvează în memoria sa pe ID-ul selectat (locație) de către Arduino. Aici tot procesul este comandat de Arduino, cum ar fi luarea unei imagini a unei amprente digitale, transformarea acesteia în șabloane și stocarea locației etc.
Am folosit anterior același senzor R305 pentru a construi o mașină de votat, un sistem de prezență, un sistem de securitate etc. Puteți verifica aici toate proiectele bazate pe amprente.
Înscrierea amprentelor digitale la senzor:
Înainte de a continua programul, trebuie să instalăm bibliotecile necesare pentru senzorul de amprentă. Aici am folosit „ Adafruit_Fingerprint.h ” pentru utilizarea senzorului de amprentă R305. Deci, mai întâi de toate, descărcați biblioteca utilizând linkul de mai jos:
- Biblioteca de senzori de amprentă Adafruit
După descărcarea cu succes, în IDE-ul Arduino, accesați Fișier > Instrumente> Includeți bibliotecă> Adăugați bibliotecă.zip și apoi selectați locația fișierului zip pentru a instala biblioteca.
După instalarea cu succes a bibliotecii, urmați pașii de mai jos pentru a înregistra o nouă amprentă în memoria senzorului.
1. În IDE-ul Arduino, accesați Fișier > Exemple > Biblioteca senzorului de amprentă digitală Adafruit > Înscriere.
2. Încărcați codul pe Arduino și deschideți monitorul Serial la o rată de transmisie de 9600.
Important: Schimbați pinul serial al software-ului din program la SoftwareSerial mySerial (12, 11).
3. Ar trebui să introduceți un ID pentru amprenta în care doriți să stocați amprenta. Deoarece aceasta este prima mea amprentă, am tastat 1 în colțul din stânga sus, apoi am făcut clic pe butonul Trimitere.
4. Apoi, lumina de pe senzorul de amprentă va clipi, ceea ce indică faptul că ar trebui să așezați degetul pe senzor și apoi urmați pașii afișați pe monitorul serial până când vă recunoaște înscrierea cu succes.
Programare pentru aprindere fără cheie RFID
Codul complet pentru acest sistem de aprindere biometrică este dat la sfârșitul tutorialului. Aici explicăm câteva părți importante ale codului.
Primul lucru este să includeți toate bibliotecile necesare. Aici, în cazul meu, am inclus „ Adafruit_Fingerprint.h ” pentru utilizarea senzorului de amprentă R305. Apoi configurați portul serial în care va fi conectat senzorul de amprentă. În cazul meu, am declarat 12 ca pin RX și 11 ca pin TX.
#include #include
În pasul următor, declarați toate variabilele, care vor fi utilizate în întregul cod. Apoi definiți pinii de conexiune LCD cu Arduino urmat de declarația unui obiect din clasa LiquidCrystal .
intrare char; 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);
Apoi, în interiorul buclei (), codul este scris pentru a obține codurile unice de 12 cifre ale etichetelor RFID și acestea sunt stocate într-o matrice. Aici elementele matricei vor fi potrivite cu codurile unice stocate în memorie, pentru a obține detaliile persoanei autentificate.
număr = 0; while (Serial.available () && count <12) { input = Serial.read (); conta ++; întârziere (5); }
Apoi, matricea recepționată este comparată cu codurile etichetei stocate. Dacă codul este asociat, atunci licența este considerată valabilă, ceea ce permite utilizatorului să pună amprentă validă. În caz contrar, va apărea o licență nevalidă.
if ((strncmp (input, "3F009590566C", 12) == 0) && (a == 0)) { lcd.setCursor (0, 0); lcd.print („Licență valabilă”); lcd.setCursor (0, 1); lcd.print („Bun venit”); întârziere (1000); a = 1; amprenta (); }
În pasul următor, se scrie o funcție getFingerprintID care va returna un ID de amprentă valid pentru o amprentă deja înregistrată.
int getFingerprintID () { uint8_t p = finger.getImage (); if (p! = FINGERPRINT_OK) returnează -1; p = finger.image2Tz (); if (p! = FINGERPRINT_OK) returnează -1; p = finger.fingerFastSearch (); if (p! = FINGERPRINT_OK) returnează -1; întoarce degetul.fingerID; }
În interiorul funcției fingerprint () , care se numește după o potrivire RFID reușită, funcția getFingerprintID este chemată pentru a obține un ID valid de amprentă. Apoi este comparat folosind bucla if-else pentru a obține informații cu privire la datele despre persoane autentificate și dacă datele sunt potrivite, atunci vehiculul este aprins, în caz contrar, va solicita amprenta digitală greșită.
int fingerprintID = getFingerprintID (); întârziere (50); if (fingerprintID == 1) { lcd.setCursor (0, 0); lcd.print („Acces acordat”); lcd.setCursor (0, 1); lcd.print („Vehicul pornit”); digitalWrite (9, HIGH); digitalWrite (10, LOW); în timp ce (1); }
Deci, astfel funcționează acest sistem de aprindere auto RFID, care adaugă două straturi de securitate mașinii dvs.
Codul complet și videoclipul demonstrativ sunt prezentate mai jos.