RFID înseamnă Radio Frequency Identification. Modulul RFID poate citi sau scrie o cantitate mică de date într-o etichetă RFID pasivă, care poate fi utilizată în procesul de identificare în diverse sisteme precum sistemul de prezență, sistemul de securitate, sistemul de vot etc. RFID este o tehnologie foarte convenabilă și ușoară.
Pentru a citi cardurile RFID pasive și eticheta, avem nevoie de un microcontroler cu hardware UART. Dacă selectăm un microcontroler fără UART, trebuie să implementăm software-ul UART. Aici folosim microcontrolerul PIC PIC16F877A pentru interfața RFID. Vom citi pur și simplu identificarea unică nr. de etichete RFID și afișați-l pe un ecran LCD de 16x2.
Modulul RFID și funcționarea acestuia
În acest proiect, am ales modulul RFID EM-18, care este un modul de dimensiuni mici, cu cost redus și cu consum redus de energie. Modulul RFID EM-18 utilizează o frecvență RF de 125 KHz pentru a citi etichete RFID pasive de 125 KHz. Modulul EM-18 folosește oscilatorul, demodulatorul și decodificatorul de date pentru a citi datele de pe un card pasiv.
Etichetă RFID
Există trei tipuri de etichete RFID disponibile, pasiv, activ sau pasiv asistat de baterie. Sunt disponibile pe piață diferite tipuri de etichete RFID cu un alt tip de forme și dimensiuni. Puțini dintre ei folosesc frecvențe diferite în scopul comunicării. Vom folosi carduri RFID pasive de 125 Khz care dețin datele de identificare unice. Iată cardul RFID și etichetele pe care le folosim pentru acest proiect.
Funcționarea RFID
Dacă vedem foaia tehnică (http://www.alselectro.com/files/rfid-ttl-em18.pdf) a modulului EM-18 am putea vedea partea din spate a modulului și circuitul aplicației:
Modulul folosește protocolul de comunicație UART în 9600 Baud rate. Când o etichetă de frecvență validă este introdusă în câmpul magnetic al cititorului EM-18, tranzistorul BC557 pornește și buzzerul va începe să emită un semnal sonor, luminând și LED-ul. Folosim un modul care este ușor disponibil pe piață și are circuite complete cu buzzer, led și un port RS232 suplimentar.
Iată modulul plăcii RFID pe care îl folosim cu numele pinilor. Acest modul are și o opțiune suplimentară de alimentare.
Un lucru trebuie reținut că ieșirea cititorului EM-18 folosește un nivel logic de 5V. Am putea folosi un alt microcontroler care utilizează un nivel logic mai scăzut, dar în astfel de cazuri este necesar un convertor de nivel logic suplimentar. În câteva cazuri, pinul UART al microcontrolerului de 3,3V este adesea tolerant la 5V.
Ieșirea UART oferă date ASCII pe 12 biți. Primii 10 biți sunt numărul etichetei RFID, care este ID-ul unic, iar ultimele două cifre sunt utilizate pentru testarea erorilor. Ultimele două cifre sunt XOR ale numărului etichetei. Modulul EM-18 va citi datele de pe etichete sau carduri RFID pasive de 125 KHz.
Acele etichete sau ID-uri au o matrice de memorie programată din fabrică care stochează numărul ID unic. Deoarece acestea sunt pasive, deci nu există baterie în card sau etichete, acestea sunt alimentate de câmpul magnetic al modulului de emisie-recepție RF. Aceste etichete RFID sunt realizate folosind IC- ul CM4 EM4102, care este tactat și de câmpul magnetic.
Material necesar
Pentru realizarea acestui proiect avem nevoie de următoarele elemente-
- PIC16F877A
- Cristal de 20Mhz
- 2buc condensator de ceramică 33pF
- 16x2 caractere LCD
- O placă de măsurare
- Oală presetată de 10k
- Rezistor de 4.7k
- Firuri cu un singur fir pentru conectare
- Un adaptor de 5V
- Modul RF EM-18
- Buzzer de 5V
- Condensator 100uF și.1uF 12V
- BC557 Tranzistor
- LED
- Rezistor 2.2k și 470R.
Folosim placa modulului EM-18 cu buzzer și led preconfigurat. Deci, componentele enumerate de la 11 la 15 nu sunt necesare.
Diagrama circuitului
Schema este simplă; am conectat LCD prin portul RB și am conectat modulul EM-18 prin pinul UART Rx.
Am realizat conexiunea pe panou conform schemei.
Explicarea codului
Ca întotdeauna, mai întâi trebuie să setăm biții de configurare în microcontrolerul pic, să definim câteva macrocomenzi, inclusiv biblioteci și frecvența cristalelor. Puteți verifica codul pentru toți cei din codul complet dat la final.
// PIC16F877A Setări de biți de configurare // Instrucțiuni de configurare a liniei sursă „C” // CONFIG #pragma config FOSC = HS // Oscillator Selection bits (HS oscilator) #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled) # pragma config PWRTE = OFF // Bit de activare Timer de pornire (PWRT dezactivat) #pragma config BOREN = ON // Brown-out Reset Enable bit (BOR activat) #pragma config LVP = OFF // Low-Voltage (Single-Supply)) Bit de activare a programării seriale în circuit (pinul RB3 / PGM are funcția PGM; programare de joasă tensiune activată) #pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off) #pragma config WRT = OFF // Flash Program Memory Write Enable bits (Protecție la scriere dezactivată; toată memoria programului poate fi scrisă de către controlul EECON) #pragma config CP = OFF // Program de memorie Flash program Bit de protecție (Protecție cod dezactivată) # include "supporing_cfile \ lcd.h" #include "supporing_cfile \ eusart1.h"
Dacă vedem funcția principală , am apelat la o funcție de inițializare a sistemului. Inițializăm LCD și UART în această funcție.
/ * Această funcție este pentru inițializarea sistemului. * / void system_init (void) { TRISB = 0x00; // PORT B setat ca pin de ieșire lcd_init (); // Aceasta va inițializa lcd EUSART1_Initialize (); // Aceasta va inițializa Eusart }
Acum, în funcția principală , am folosit o matrice de 13 biți, care este numărul RFID. Primim fiecare bit din RFID nr. folosind EUSART1_Read (); funcție, care este declarată în interiorul bibliotecii UART. După ce am primit 12 biți, imprimăm matricea ca șir pe LCD.
void main (void) { număr de caractere nesemnat; caracter RF_ID nesemnat; 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); // Setați cursorul pentru a doua linie care începe lcd_puts ("ID:"); lcd_puts (RF_ID); } }
Codul complet cu Video demonstrativ este prezentat mai jos.
De asemenea, verificați interfața RFID cu alt microcontroler:
Interfață RFID cu MSP430 Launchpad
Interfață RFID cu microcontroler 8051
Interfață RFID cu Arduino