RFID è l'acronimo di Radio Frequency Identification. Il modulo RFID può leggere o scrivere una piccola quantità di dati in un tag RFID passivo, che può essere utilizzato nel processo di identificazione in vari sistemi come il sistema di presenza, il sistema di sicurezza, il sistema di voto ecc. RFID è una tecnologia molto comoda e facile.
Per leggere le schede e i tag RFID passivi, abbiamo bisogno di un microcontrollore con hardware UART. Se selezioniamo un microcontrollore senza UART, dobbiamo implementare il software UART. Qui stiamo usando il microcontrollore PIC PIC16F877A per l'interfacciamento RFID. Leggeremo semplicemente l'identificazione univoca n. di tag RFID e visualizzarlo su LCD 16x2.
Modulo RFID e suo funzionamento
In questo progetto, abbiamo scelto il modulo RFID EM-18, che è un modulo di piccole dimensioni, a basso costo ed efficiente dal punto di vista energetico. Il modulo RFID EM-18 utilizza una frequenza RF di 125 KHz per leggere tag RFID passivi a 125 KHz. Il modulo EM-18 utilizza oscillatore, demodulatore e decodificatore di dati per leggere i dati da una scheda passiva.
Tag RFID
Sono disponibili tre tipi di tag RFID, passivi, attivi o passivi assistiti da batteria. Sul mercato sono disponibili diversi tipi di tag RFID con diversi tipi di forme e dimensioni. Pochi di loro usano frequenze diverse per scopi di comunicazione. Useremo carte RFID passive da 125 Khz che contengono i dati ID univoci. Ecco la scheda RFID e i tag che stiamo utilizzando per questo progetto.
Funzionamento dell'RFID
Se vediamo il datasheet (http://www.alselectro.com/files/rfid-ttl-em18.pdf) del modulo EM-18 potremmo vedere il retro del modulo e il circuito dell'applicazione:
Il modulo utilizza il protocollo di comunicazione UART a 9600 Baud rate. Quando un tag di frequenza valido viene portato nel campo magnetico del lettore EM-18, il transistor BC557 si accende e il cicalino inizia a suonare, si accende anche il LED. Stiamo usando un modulo che è facilmente reperibile sul mercato e ha una circuiteria completa con un cicalino, led e una porta RS232 aggiuntiva.
Ecco il modulo della scheda RFID che stiamo utilizzando con i nomi dei pin. Questo modulo ha anche un'opzione di alimentazione aggiuntiva.
Una cosa deve essere tenuta presente che l'uscita del lettore EM-18 utilizza il livello logico 5V. Potremmo usare un altro microcontrollore che utilizza un livello logico inferiore, ma in questi casi è richiesto il convertitore di livello logico aggiuntivo. In alcuni casi, il perno UART del microcontrollore 3.3V è spesso 5V tollerante.
L'uscita UART fornisce dati ASCII a 12 bit. I primi 10 bit sono il numero del tag RFID, che è l'ID univoco e le ultime due cifre vengono utilizzate per il test degli errori. Queste ultime due cifre sono lo XOR del numero di tag. Il modulo EM-18 leggerà i dati da tag o schede RFID passive a 125 KHz.
Questi tag o ID hanno un array di memoria programmato in fabbrica che memorizza il numero ID univoco. Poiché sono passivi, quindi non è presente alcuna batteria nella scheda o nei tag, vengono eccitati dal campo magnetico del modulo ricetrasmettitore RF. Questi tag RFID sono realizzati utilizzando l' IC CMOS EM4102, anch'esso temporizzato dal campo magnetico.
Materiale richiesto
Per realizzare questo progetto abbiamo bisogno dei seguenti elementi:
- PIC16F877A
- Cristallo da 20 Mhz
- Condensatore a disco ceramico da 2 pezzi 33pF
- LCD 16x2 caratteri
- Una breadboard
- Pot preimpostato da 10k
- Resistenza da 4.7k
- Cavi a filo singolo da collegare
- Un adattatore da 5V
- Modulo RF EM-18
- Buzzer 5V
- Condensatore da 100uF e.1uF 12V
- Transistor BC557
- GUIDATO
- Resistenza 2.2k e 470R.
Stiamo utilizzando la scheda modulo EM-18 con buzzer e led preconfigurati. Quindi, i componenti elencati da 11 a 15 non sono necessari.
Schema elettrico
Lo schema è semplice; abbiamo collegato l'LCD attraverso la porta RB e abbiamo collegato il modulo EM-18 attraverso il pin UART Rx.
Abbiamo effettuato la connessione sulla breadboard secondo lo schema.
Spiegazione del codice
Come sempre, prima dobbiamo impostare i bit di configurazione nel microcontrollore pic, definire alcune macro, incluse le librerie e la frequenza dei cristalli. Puoi controllare il codice per tutti quelli nel codice completo dato alla fine.
// PIC16F877A Impostazioni dei bit di configurazione // Istruzioni di configurazione della riga sorgente 'C' // CONFIG #pragma config FOSC = HS // Bit di selezione dell'oscillatore (oscillatore HS) #pragma config WDTE = OFF // Bit di abilitazione timer watchdog (WDT disabilitato) # pragma config PWRTE = OFF // Bit di abilitazione timer di accensione (PWRT disabilitato) #pragma config BOREN = ON // Bit di abilitazione ripristino brown-out (BOR abilitato) #pragma config LVP = OFF // Bassa tensione (alimentazione singola) Bit di abilitazione della programmazione seriale in-circuit (il pin RB3 / PGM ha la funzione PGM; programmazione a bassa tensione abilitata) #pragma config CPD = OFF // Bit di protezione del codice della memoria EEPROM dei dati (protezione del codice EEPROM dei dati disattivata) #pragma config WRT = OFF // Bit di abilitazione scrittura memoria programma flash (protezione da scrittura disattivata; tutta la memoria del programma può essere scritta dal controllo EECON) #pragma config CP = OFF // Bit di protezione codice memoria flash programma (protezione codice disattivata) # includi "supporing_cfile \ lcd.h" #include "supporing_cfile \ eusart1.h"
Se vediamo la funzione principale abbiamo chiamato una funzione per inizializzare il sistema. Inizializziamo LCD e UART in questa funzione.
/ * Questa funzione è per le inizializzazioni del sistema. * / void system_init (void) { TRISB = 0x00; // PORTA B impostata come pin di uscita lcd_init (); // Questo inizializzerà lcd EUSART1_Initialize (); // Questo inizializzerà l'Eusart }
Ora, nella funzione principale , abbiamo utilizzato un array a 13 bit che è il numero RFID. Riceviamo ogni bit dell'RFID n. using EUSART1_Read (); funzione, che è dichiarata all'interno della libreria UART. Dopo aver ricevuto 12 bit, stampiamo l'array come stringa sul display LCD.
void main (void) { unsigned char count; carattere non firmato RF_ID; system_init (); lcd_com (0x80); lcd_puts ("Circuit Digest"); while (1) { for (count = 0; count <12; count ++) { RF_ID = 0; RF_ID = EUSART1_Read (); } lcd_com (0xC0); // Imposta il cursore per la seconda riga che inizia con lcd_puts ("ID:"); lcd_puts (RF_ID); } }
Di seguito viene fornito il codice completo con il video dimostrativo.
Verificare anche l'interfacciamento RFID con altri microcontrollori:
Interfaccia RFID con MSP430 Launchpad
Interfaccia RFID con microcontrollore 8051
Interfacciamento RFID con Arduino