- Materiali usati
- Modulo lettore RFID EM18
- Scopri il codice univoco a 12 cifre del tag RFID utilizzando Arduino
- Schema elettrico
- Modulo sensore impronte digitali
- Programmazione per l'accensione senza chiave RFID
Oggigiorno la maggior parte delle auto è dotata di accesso senza chiave e sistema di accensione a pulsante, in cui è sufficiente portare la chiave in tasca e basta appoggiare il dito sul sensore capacitivo sulla maniglia della portiera per aprire la portiera dell'auto. Qui in questo progetto, stiamo aggiungendo alcune altre funzionalità di sicurezza a questo sistema utilizzando RFID e sensore di impronte digitali. Il sensore RFID convaliderà la licenza dell'utente e il sensore di impronte digitali consentirà solo a una persona autorizzata di salire a bordo del veicolo.
Per questo sistema di accensione per auto basato sulle impronte digitali, utilizziamo Arduino con un sensore di impronte digitali R305 e un lettore RFID EM18.
Materiali usati
- Arduino Nano
- Sensore di impronte digitali R305
- Lettore RFID EM18
- LCD alfanumerico 16 * 2
- Motori DC
- L293D Driver del motore IC
- Veroboard o Breadboard (a seconda di quale è disponibile)
- Cavi di collegamento
- Batteria 12V DC
Modulo lettore RFID EM18
RFID sta per identificazione a radiofrequenza. Si riferisce a una tecnologia in cui i dati digitali sono codificati in tag RFID e possono essere decodificati da un lettore RFID utilizzando le onde radio. RFID è simile al codice a barre in cui i dati di un tag vengono decodificati da un dispositivo. La tecnologia RFID viene utilizzata in varie applicazioni come il sistema di sicurezza, il sistema di presenza dei dipendenti, la serratura RFID, la macchina per il voto basata su RFID, il sistema di riscossione dei pedaggi, ecc.
EM18 Reader è un modulo in grado di leggere le informazioni ID memorizzate nei tag RFID. I tag RFID memorizzano un numero univoco di 12 cifre che può essere decodificato da un modulo lettore EM18, quando il tag rientra nel raggio del lettore. Questo modulo funziona a una frequenza di 125 kHz, che ha un'antenna incorporata, e funziona utilizzando un alimentatore CC a 5 volt.
Fornisce un'uscita dati seriale e ha una portata di 8-12 cm. I parametri di comunicazione seriale sono 8 bit di dati, 1 bit di stop e 9600 baud rate.
Caratteristiche EM18:
- Tensione di esercizio: da + 4,5 V a + 5,5 V CC
- Consumo di corrente: 50mA
- Frequenza di funzionamento: 125 KHZ
- Temperatura di esercizio: 0-80 gradi C
- Velocità di trasmissione della comunicazione: 9600
- Distanza di lettura: 8-12 cm
- Antenna: incorporata
Pinout EM18:
Descrizione pin:
VCC: ingresso tensione 4,5-5 V CC
GND: pin di massa
Buzzer: Buzzer o LED pin
TX: Pin del trasmettitore dati seriale di EM18 per RS232 (uscita)
SEL: deve essere ALTO per utilizzare RS232 (BASSO se si utilizza WEIGAND)
Dati 0: dati WEIGAND 0
Dati 1: dati WEIGAND 1
Per saperne di più su RFID e tag, controlla i nostri precedenti progetti basati su RFID.
Scopri il codice univoco a 12 cifre del tag RFID utilizzando Arduino
Prima di programmare il sistema di accensione per auto Arduino per Arduino, innanzitutto dobbiamo trovare il codice univoco del tag RFID a 12 cifre. Come abbiamo discusso in precedenza, i tag RFID contengono un codice univoco di 12 cifre e possono essere decodificati utilizzando un lettore RFID. Quando passiamo il tag RFID vicino al lettore, il lettore fornirà i codici univoci tramite la porta seriale di uscita. Innanzitutto, collega Arduino al lettore RFID come da schema circuitale e quindi carica il codice indicato di seguito su Arduino.
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 ++; ritardo (5); } Serial.print (card_no); }}
Dopo aver caricato correttamente il codice, aprire il monitor seriale e impostare la velocità di trasmissione su 9600. Quindi passare la scheda vicino al lettore. Quindi il codice a 12 cifre inizierà a essere visualizzato sul monitor seriale. Eseguire questo processo per tutti i tag RFID utilizzati e annotarlo per riferimenti futuri.
Schema elettrico
Di seguito è riportato lo schema del circuito per questo sistema di accensione basato su impronte digitali:
Nel mio caso, ho saldato il circuito completo sulla scheda perf come mostrato di seguito:
Modulo sensore impronte digitali
Il modulo sensore di impronte digitali o scanner di impronte digitali è un modulo che cattura l'immagine dell'impronta del dito e quindi la converte nel modello equivalente e la salva nella sua memoria sull'ID selezionato (posizione) da Arduino. Qui tutto il processo è comandato da Arduino come prendere un'immagine di un'impronta digitale, convertirla in modelli e memorizzare la posizione, ecc.
In precedenza abbiamo utilizzato lo stesso sensore R305 per costruire una macchina per il voto, un sistema di presenza, un sistema di sicurezza, ecc. Puoi controllare tutti i progetti basati sulle impronte digitali qui.
Registrazione delle impronte digitali nel sensore:
Prima di procedere con il programma, dobbiamo installare le librerie richieste per il sensore di impronte digitali. Qui abbiamo utilizzato " Adafruit_Fingerprint.h " per utilizzare il sensore di impronte digitali R305. Quindi prima di tutto scarica la libreria usando il link indicato di seguito:
- Libreria di sensori di impronte digitali Adafruit
Dopo il download riuscito, nell'IDE di Arduino, vai su File > Strumenti> Includi libreria> Aggiungi libreria.zip e quindi seleziona il percorso del file zip per installare la libreria.
Dopo aver installato correttamente la libreria, seguire i passaggi indicati di seguito per registrare una nuova impronta digitale nella memoria del sensore.
1. Nell'IDE di Arduino, vai su File > Esempi > Adafruit Fingerprint Sensor Library > Enroll.
2. Carica il codice su Arduino e apri il monitor seriale a una velocità di trasmissione di 9600.
Importante: modificare il pin seriale del software nel programma in SoftwareSerial mySerial (12, 11).
3. È necessario immettere un ID per l'impronta digitale in cui si desidera memorizzare l'impronta digitale. Poiché questa è la mia prima impronta digitale, ho digitato 1 nell'angolo in alto a sinistra, quindi ho fatto clic sul pulsante Invia.
4. Quindi la spia sul sensore di impronte digitali lampeggerà indicando che è necessario posizionare il dito sul sensore e quindi seguire i passaggi visualizzati sul monitor seriale fino a quando non si conferma l'avvenuta registrazione.
Programmazione per l'accensione senza chiave RFID
Il codice completo per questo sistema di accensione biometrico è fornito alla fine del tutorial. Qui stiamo spiegando alcune parti importanti del codice.
La prima cosa è includere tutte le librerie richieste. Qui nel mio caso, ho incluso " Adafruit_Fingerprint.h " per l'utilizzo del sensore di impronte digitali R305. Quindi configurare la porta seriale in cui verrà collegato il sensore di impronte digitali. Nel mio caso, ho dichiarato 12 come pin RX e 11 come pin TX.
#include #include
Nel passaggio successivo, dichiara tutte le variabili, che verranno utilizzate in tutto il codice. Definisci quindi i pin di connessione LCD con Arduino seguito dalla dichiarazione di un oggetto della classe LiquidCrystal .
input di caratteri; 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);
Successivamente, all'interno di loop (), viene scritto il codice per ottenere i codici univoci a 12 cifre dei tag RFID e vengono memorizzati in un array. Qui gli elementi dell'array verranno abbinati ai codici univoci archiviati nella memoria, per ottenere i dettagli della persona autenticata.
count = 0; while (Serial.available () && count <12) { input = Serial.read (); count ++; ritardo (5); }
Quindi, l'array ricevuto viene confrontato con i codici dei tag memorizzati. Se il codice viene abbinato, la licenza viene considerata valida, il che consente all'utente di inserire un'impronta digitale valida. Altrimenti, mostrerà una licenza non valida.
if ((strncmp (input, "3F009590566C", 12) == 0) && (a == 0)) { lcd.setCursor (0, 0); lcd.print ("Licenza valida"); lcd.setCursor (0, 1); lcd.print ("Benvenuto"); ritardo (1000); a = 1; impronta digitale(); }
Nel passaggio successivo, viene scritta una funzione getFingerprintID che restituirà un ID di impronta digitale valido per un'impronta digitale già registrata.
int getFingerprintID () { uint8_t p = finger.getImage (); se (p! = FINGERPRINT_OK) restituisce -1; p = finger.image2Tz (); se (p! = FINGERPRINT_OK) restituisce -1; p = finger.fingerFastSearch (); se (p! = FINGERPRINT_OK) restituisce -1; return finger.fingerID; }
All'interno della funzione fingerprint () , che viene chiamata dopo la corretta corrispondenza RFID, viene chiamata la funzione getFingerprintID per ottenere un ID dell'impronta digitale valido. Quindi viene confrontato utilizzando il ciclo if-else per ottenere le informazioni sui dati della persona autenticata e se i dati vengono abbinati, il veicolo viene acceso, altrimenti verrà richiesta l'impronta digitale sbagliata.
int fingerprintID = getFingerprintID (); ritardo (50); if (fingerprintID == 1) { lcd.setCursor (0, 0); lcd.print ("Accesso concesso"); lcd.setCursor (0, 1); lcd.print ("Veicolo avviato"); digitalWrite (9, HIGH); digitalWrite (10, BASSO); mentre (1); }
Ecco come funziona questo sistema di accensione per auto RFID che aggiunge due livelli di sicurezza alla tua auto.
Di seguito sono riportati il codice completo e il video dimostrativo.