RFID oznacza identyfikację radiową. Moduł RFID może odczytywać lub zapisywać niewielkie ilości danych w pasywnym tagu RFID, który można wykorzystać w procesie identyfikacji w różnych systemach, takich jak system obecności, system bezpieczeństwa, system głosowania itp. RFID to bardzo wygodna i łatwa technologia.
Do odczytania pasywnych kart RFID i tagu potrzebujemy mikrokontrolera ze sprzętem UART. Jeśli wybierzemy mikrokontroler bez UART, musimy zaimplementować oprogramowanie UART. Tutaj używamy mikrokontrolera PIC PIC16F877A do łączenia RFID. Po prostu odczytamy unikalny numer identyfikacyjny. tagów RFID i wyświetlać je na wyświetlaczu LCD 16x2.
Moduł RFID i jego działanie
W tym projekcie wybraliśmy moduł RFID EM-18, który jest małym, tanim i energooszczędnym modułem. Moduł RFID EM-18 wykorzystuje częstotliwość 125 KHz RF do odczytu pasywnych tagów RFID 125 KHz. Moduł EM-18 wykorzystuje oscylator, demodulator i dekoder danych do odczytu danych z karty pasywnej.
Tag RFID
Dostępne są trzy typy tagów RFID: pasywne, aktywne lub pasywne ze wspomaganiem bateryjnym. Na rynku dostępne są różnego rodzaju tagi RFID o różnych kształtach i rozmiarach. Niewiele z nich używa różnych częstotliwości do celów komunikacyjnych. Będziemy używać pasywnych kart RFID 125Khz, które przechowują unikalne dane identyfikacyjne. Oto karta RFID i tagi, których używamy w tym projekcie.
Działanie RFID
Jeśli zobaczymy arkusz danych (http://www.alselectro.com/files/rfid-ttl-em18.pdf) modułu EM-18, zobaczymy tylną stronę modułu i obwód aplikacji:
Moduł wykorzystuje protokół komunikacyjny UART z prędkością 9600 bodów. Kiedy znacznik o prawidłowej częstotliwości zostanie wprowadzony w pole magnetyczne czytnika EM-18, tranzystor BC557 włączy się, a brzęczyk zacznie wydawać dźwięk, a także zapali diodę LED. Używamy modułu, który jest łatwo dostępny na rynku i posiada kompletne obwody z buzzerem, diodą LED i dodatkowym portem RS232.
Oto moduł płytki RFID, którego używamy z nazwami pinów. Ten moduł ma również dodatkową opcję zasilania.
Należy pamiętać, że wyjście czytnika EM-18 wykorzystuje poziom logiczny 5V. Moglibyśmy użyć innego mikrokontrolera, który wykorzystuje niższy poziom logiczny, ale w takich przypadkach wymagany jest dodatkowy konwerter poziomów logicznych. W kilku przypadkach pin UART mikrokontrolera jest często 3.3V 5V tolerancyjny.
Wyjście UART dostarcza 12-bitowe dane ASCII. Pierwsze 10 bitów to numer tagu RFID, który jest unikalnym identyfikatorem, a ostatnie dwie cyfry są używane do testowania błędów. Te dwie ostatnie cyfry to XOR numeru znacznika. Moduł EM-18 odczyta dane z pasywnych tagów lub kart RFID 125 KHz.
Te znaczniki lub identyfikatory mają zaprogramowaną fabrycznie macierz pamięci, która przechowuje unikalny numer identyfikacyjny. Ponieważ są one pasywne, więc na karcie lub tagach nie ma baterii, są one zasilane przez pole magnetyczne modułu nadawczo-odbiorczego RF. Te znaczniki RFID są wykonane przy użyciu układu scalonego EM4102 CMOS, który jest również taktowany polem magnetycznym.
Wymagany materiał
Aby wykonać ten projekt, potrzebujemy następujących elementów:
- PIC16F877A
- Kryształ 20 Mhz
- 2szt 33pF ceramiczny kondensator dyskowy
- Wyświetlacz LCD 16x2 znaków
- Płytka prototypowa
- Potencjometr 10k
- Rezystor 4,7 k
- Pojedyncze przewody do podłączenia
- Adapter 5V
- Moduł RF EM-18
- Brzęczyk 5 V.
- Kondensator 100uF i.1uF 12V
- Tranzystor BC557
- DOPROWADZIŁO
- Rezystor 2,2k i 470R.
Używamy płyty modułu EM-18 z wstępnie skonfigurowanym buzzerem i diodami LED. Tak więc komponenty wymienione od 11 do 15 nie są potrzebne.
Schemat obwodu
Schemat jest prosty; połączyliśmy LCD przez port RB i podłączyliśmy moduł EM-18 przez pin UART Rx.
Podłączenie wykonaliśmy na płytce stykowej według schematu.
Objaśnienie kodu
Jak zawsze, najpierw musimy ustawić bity konfiguracyjne w mikrokontrolerze pic, zdefiniować kilka makr, w tym biblioteki i częstotliwość kryształu. Możesz sprawdzić kod dla wszystkich w pełnym kodzie podanym na końcu.
// PIC16F877A Ustawienia bitu konfiguracji // Instrukcje konfiguracji linii źródłowej „C” // CONFIG #pragma config FOSC = HS // Bity wyboru oscylatora (oscylator HS) #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT wyłączony) # pragma config PWRTE = OFF // Power-up Timer bit Enable (PWRT wyłączony) #pragma config BOREN = ON // Brown-out Reset Enable bit (BOR włączony) #pragma config LVP = OFF // Niskie napięcie (pojedyncze zasilanie) Bit włączenia programowania szeregowego w obwodzie (pin RB3 / PGM ma funkcję PGM; programowanie niskonapięciowe włączone) #pragma config CPD = OFF // Bit ochrony kodu pamięci EEPROM danych (ochrona kodu danych EEPROM wyłączona) #pragma config WRT = OFF // Zapisywanie pamięci programu Flash Włącz bity (ochrona przed zapisem wyłączona; cała pamięć programu może być zapisywana przez sterowanie EECON) #pragma config CP = OFF // Bit ochrony kodu pamięci programu Flash (ochrona kodu wyłączona) # include "supporing_cfile \ lcd.h" #include "supporing_cfile \ eusart1.h"
Jeśli widzimy główną funkcję, nazwaliśmy funkcję w celu zainicjowania systemu. W tej funkcji inicjalizujemy LCD i UART.
/ * Ta funkcja służy do inicjalizacji systemu. * / void system_init (void) { TRISB = 0x00; // PORT B ustawiony jako wyjściowy pin lcd_init (); // Spowoduje to zainicjowanie lcd EUSART1_Initialize (); // Spowoduje to zainicjowanie Eusart }
Teraz w funkcji głównej użyliśmy tablicy 13-bitowej, która jest numerem RFID. Otrzymujemy każdy bit numeru RFID. przy użyciu EUSART1_Read (); funkcja, która jest zadeklarowana wewnątrz biblioteki UART. Po otrzymaniu 12 bitów drukujemy tablicę jako ciąg znaków na wyświetlaczu LCD.
void main (void) { liczba znaków bez znaku; unsigned char 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); // Ustaw kursor na początek drugiej linii lcd_puts ("ID:"); lcd_puts (RF_ID); } }
Pełny kod z filmem demonstracyjnym jest podany poniżej.
Sprawdź również połączenie RFID z innym mikrokontrolerem:
Połączenie RFID z MSP430 Launchpad
Interfejs RFID z mikrokontrolerem 8051
Interfejs RFID z Arduino