RFID означава Радиочестотна идентификация. RFID модулът може да чете или записва малко количество данни в пасивен RFID етикет, който може да се използва в процеса на идентификация в различни системи като Attendance система, система за сигурност, система за гласуване и т.н. RFID е много удобна и лесна технология.
За да четем пасивните RFID карти и етикет, ни е необходим микроконтролер с UART хардуер. Ако изберем микроконтролер без UART, трябва да внедрим софтуер UART. Тук използваме PIC микроконтролер PIC16F877A за свързване на RFID. Ние просто ще прочетем уникалния идентификационен номер. на RFID етикети и го покажете на 16x2 LCD.
RFID модулът и неговата работа
В този проект ние избрахме EM-18 RFID модул, който е малък по размер, евтин и енергийно ефективен модул. EM-18 RFID модулът използва 125 KHz RF честота за четене на пасивни 125 KHz RFID тагове. Модулът EM-18 използва осцилатор, демодулатор и декодер за данни, за да чете данни от пасивна карта.
RFID етикет
Налични са три вида RFID тагове, пасивни, активни или пасивни с батерия. На пазара се предлагат различни видове RFID тагове с различен вид форми и размери. Малко от тях използват различна честота за комуникация. Ще използваме 125Khz пасивни RFID карти, които съдържат уникалните данни за идентификация. Ето RFID картата и етикетите, които използваме за този проект.
Работа на RFID
Ако видим листа с данни (http://www.alselectro.com/files/rfid-ttl-em18.pdf) на модул EM-18, можем да видим задната страна на модула и схемата на приложението:
Модулът използва UART комуникационен протокол със скорост 9600 бода. Когато в магнитното поле на четеца EM-18 се въведе валиден етикет за честота, транзисторът BC557 се включва и зумерът ще започне да издава звуков сигнал, той също свети светодиода. Използваме модул, който е лесно достъпен на пазара и има пълна верига със зумер, led и допълнителен RS232 порт.
Тук е модулът на платката RFID, който използваме с имена на щифтове. Този модул има и допълнителна опция за захранване.
Трябва да се има предвид едно нещо, че изходът на четеца EM-18 използва логическо ниво 5V. Можем да използваме друг микроконтролер, който използва по-ниско логическо ниво, но в такива случаи се изисква допълнителен преобразувател на логическо ниво. В някои случаи UART щифтът на 3.3V микроконтролера често е 5V толерантен.
Изходът UART осигурява 12-битови ASCII данни. Първите 10 бита са номер на RFID етикет, който е уникалният идентификатор, а последните две цифри се използват за тестване на грешки. Последните две цифри са XOR на номера на маркера. Модулът EM-18 ще чете данните от 125 KHz пасивни RFID тагове или карти.
Тези маркери или идентификатори имат фабрично програмиран масив от памет, който съхранява уникалния идентификационен номер. Тъй като те са пасивни, така че в картата или етикетите няма батерия, те се захранват от магнитното поле на модула RF приемо-предавател. Тези RFID етикети са направени с помощта на EM4102 CMOS IC, която също се тактира от магнитното поле.
Необходим материал
За да направим този проект са ни необходими следните елементи-
- PIC16F877A
- 20Mhz кристал
- 2бр. 33pF керамичен дисков кондензатор
- 16x2 символен LCD
- Макет
- 10k предварително зададен пот
- 4.7k резистор
- Едножилни проводници за свързване
- Адаптер 5V
- RF модул EM-18
- Звънец 5V
- Кондензатор 100uF &.1uF 12V
- BC557 транзистор
- LED
- 2.2k и 470R резистор.
Използваме модулната платка EM-18 с предварително конфигуриран зумер и led. Така че компонентите, изброени от 11 до 15, не са необходими.
Електрическа схема
Схемата е проста; свързахме LCD през порт RB и свързахме модула EM-18 през UART Rx щифта.
Направихме връзката на макет съгласно схематично.
Обяснение на кода
Както винаги, първо трябва да зададем конфигурационните битове в микроконтролера pic, да дефинираме някои макроси, включително библиотеки и кристална честота. Можете да проверите кода за всички в пълния код, даден в края.
// Настройки на бита за конфигуриране PIC16F877A // Изявления за конфигуриране на линията на източника „C“ // CONFIG #pragma config FOSC = HS // Битове за избор на осцилатор (HS осцилатор) #pragma config WDTE = OFF // Бит за активиране на Watchdog Timer (WDT деактивиран) # pragma config PWRTE = OFF // Бит за разрешаване на таймера за включване (PWRT деактивиран) #pragma config BOREN = ON // Разрешаване на бита за нулиране (активиран BOR) #pragma config LVP = OFF // Ниско напрежение (единично захранване) Бит за активиране на последователно програмиране в веригата (RB3 / PGM щифт има PGM функция; активирано програмиране с ниско напрежение) #pragma config CPD = OFF // Бит за защита на EEPROM памет за данни (защита на EEPROM код за данни изключена) #pragma config WRT = OFF // Flash Program Memory Активиране на битове (Защита срещу запис е изключена; цялата памет на програмата може да бъде записана от контрола на EECON) #pragma config CP = OFF // Бит за защита на кода на паметта на Flash програма (защита на кода изключена) # включва "supporing_cfile \ lcd.h" #include "supporing_cfile \ eusart1.h"
Ако видим основната функция, ние извикахме функция за инициализиране на системата. Ние инициализираме LCD и UART в тази функция.
/ * Тази функция е за инициализации на системата. * / void system_init (void) { TRISB = 0x00; // ПОРТ B зададен като изходен щифт lcd_init (); // Това ще инициализира lcd EUSART1_Initialize (); // Това ще инициализира Eusart }
Сега в основната функция използвахме 13-битов масив, който е RFID номер. Получаваме всеки бит от RFID №. използвайки EUSART1_Read (); функция, която е декларирана вътре в UART библиотеката. След като получим 12 бита, отпечатваме масива като низ в LCD.
void main (void) { неподписан char count; неподписан знак 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); // Задайте курсора за втория ред, започващ lcd_puts ("ID:"); lcd_puts (RF_ID); } }
Пълният код с демонстрационно видео е даден по-долу.
Също така проверете взаимодействието на RFID с друг микроконтролер:
RFID взаимодействие с MSP430 Launchpad
RFID взаимодействие с микроконтролер 8051
RFID взаимодействие с Arduino