RFID står for radiofrekvensidentifikation. RFID-modul kan læse eller skrive lille mængde data i et passivt RFID-mærke, som kan bruges i identifikationsprocessen i forskellige systemer som fremmøde, sikkerhedssystem, afstemningssystem osv. RFID er meget praktisk og nem teknologi.
For at læse de passive RFID-kort og tag, har vi brug for en mikrocontroller med UART-hardware. Hvis vi vælger en mikrocontroller uden UART, er vi nødt til at implementere UART-software. Her bruger vi PIC Microcontroller PIC16F877A til interfacering af RFID. Vi læser simpelthen det unikke identifikationsnr. af RFID-tags og vise den på 16x2 LCD.
RFID-modul og dets arbejde
I dette projekt valgte vi EM-18 RFID-modul, som er et lille, billigt og energieffektivt modul. EM-18 RFID-modul bruger 125 KHz RF-frekvens til at læse passive 125 KHz RFID-tags. EM-18-modulet bruger oscillator, demodulator og datadekoder til at læse data fra et passivt kort.
RFID-mærke
Der er tre typer RFID-tags tilgængelige, passive, aktive eller batteriassisterede passive. Forskellige slags RFID-tags med forskellige former og størrelser er tilgængelige på markedet. Få af dem bruger forskellige frekvenser til kommunikationsformål. Vi bruger 125 kHz passive RFID-kort, der indeholder de unikke ID-data. Her er RFID-kortet og de tags, vi bruger til dette projekt.
Arbejde med RFID
Hvis vi ser databladet (http://www.alselectro.com/files/rfid-ttl-em18.pdf) af EM-18-modulet, kunne vi se bagsiden af modulet og applikationskredsløbet:
Modulet bruger UART kommunikationsprotokol i 9600 Baud rate. Når et gyldigt frekvensmærke bringes ind i magnetfeltet på EM-18-læseren, tændes BC557-transistoren, og summeren begynder at bippe, den lyser også lysdioden. Vi bruger et modul, der er let tilgængeligt på markedet og har komplette kredsløb med en summer, led og en ekstra RS232-port.
Her er det RFID-kortmodul, vi bruger med pinnavne. Dette modul har også ekstra strømindstilling.
En ting skal huskes på, at output fra EM-18-læser bruger 5V-logikniveau. Vi kunne bruge en anden mikrokontroller, der bruger et lavere logikniveau, men i sådanne tilfælde kræves den ekstra logiske niveauomformer. I få tilfælde er UART-stiften på 3.3V-mikrocontrolleren ofte 5V-tolerant.
UART-output leverer 12-bit ASCII- data. De første 10 bits er RFID-kodenummer, hvilket er det unikke ID, og de sidste to cifre bruges til fejltest. De sidste to cifre er XOR for tagnummeret. EM-18 modulet læser data fra 125 KHz Passive RFID tags eller kort.
Disse tags eller ID'er har et fabriksprogrammeret hukommelsesarray, der gemmer det unikke ID-nummer. Da disse er passive, så der ikke er noget batteri i kortet eller tags, får de strøm fra magnetfeltet i RF Transceiver-modulet. Disse RFID-tags er lavet ved hjælp af EM4102 CMOS IC, som også er uret af magnetfeltet.
Nødvendigt materiale
For at lave dette projekt har vi brug for følgende emner-
- PIC16F877A
- 20Mhz krystal
- 2stk 33pF keramisk diskkondensator
- 16x2 tegn LCD
- Et brødbræt
- 10k forudindstillet pot
- 4,7 k modstand
- Enkeltstrengede ledninger til at forbinde
- En 5V adapter
- RF-modul EM-18
- 5V summer
- 100uF &.1uF 12V kondensator
- BC557 Transistor
- LED
- 2,2k og 470R modstand.
Vi bruger EM-18 modulkortet med summer og ledet forudkonfigureret. Så de komponenter, der er anført fra 11 til 15, er ikke nødvendige.
Kredsløbsdiagram
Skematisk er enkel; vi tilsluttede LCD på tværs af port RB og tilsluttede EM-18-modulet over UART Rx-stiften.
Vi har oprettet forbindelsen på breadboard i henhold til skematisk.
Kode Forklaring
Som altid skal vi først indstille konfigurationsbitene i pic-mikrocontrolleren, definere nogle makroer, herunder biblioteker og krystalfrekvens. Du kan kontrollere koden for alle dem i den komplette kode, der er angivet i slutningen.
// PIC16F877A Configuration Bit Settings // 'C' source line config statements // CONFIG #pragma config FOSC = HS // Oscillator Selection bits (HS oscillator) # pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT deaktiveret) # pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT deaktiveret) # pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled) # pragma config LVP = OFF // Low-Voltage (Single-Supply)) Seriel programmering i kredsløb muliggør bit (RB3 / PGM-pin har PGM-funktion; lavspændingsprogrammering aktiveret) #pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off) #pragma config WRT = OFF // Flash-programhukommelse Skriv Aktiver bits (skrivebeskyttelse er slået fra; al programhukommelse kan skrives til af EECON-kontrol) #pragma config CP = OFF // Flash- programhukommelseskodebeskyttelsesbit (kodebeskyttelse fra) # inkluderer "supporing_cfile \ lcd.h" #include "supporing_cfile \ eusart1.h"
Hvis vi ser hovedfunktionen , kaldte vi en funktion til at initialisere systemet. Vi initialiserer LCD og UART i denne funktion.
/ * Denne funktion er til systeminitialisering. * / ugyldigt system_init (ugyldigt) { TRISB = 0x00; // PORT B indstillet som output pin lcd_init (); // Dette initialiserer lcd EUSART1_Initialize (); // Dette initialiserer Eusart }
Nu, i vigtigste funktion, brugte vi en 13 bit-array, som er RFID-nummer. Vi modtager hver bit af RFID-nr. ved hjælp af EUSART1_Read (); funktion, der er erklæret inde i UART-biblioteket. Efter at have modtaget 12 bit udskriver vi Array som streng i LCD'et.
ugyldigt hoved (ugyldigt) { usigneret tegntælling; usigneret char RF_ID; system_init (); lcd_com (0x80); lcd_puts ("Circuit Digest"); mens (1) { for (count = 0; count <12; count ++) { RF_ID = 0; RF_ID = EUSART1_Read (); } lcd_com (0xC0); // Indstil markøren til anden linje, der begynder lcd_puts ("ID:"); lcd_puts (RF_ID); } }
Komplet kode med demonstrationsvideo er angivet nedenfor.
Kontroller også interfacering af RFID med anden mikrocontroller:
RFID-grænseflade med MSP430 Launchpad
RFID-grænseflade med 8051 mikrokontroller
RFID-grænseflade med Arduino