RFID означає Радіочастотна ідентифікація. Модуль RFID може зчитувати або записувати невелику кількість даних у пасивний RFID-тег, який може бути використаний в процесі ідентифікації в різних системах, таких як система відвідуваності, система безпеки, система голосування тощо. RFID - це дуже зручна та проста технологія.
Для читання пасивних карток RFID та тегів нам потрібен мікроконтролер з обладнанням UART. Якщо ми вибираємо мікроконтролер без UART, нам потрібно впровадити програмне забезпечення UART. Тут ми використовуємо мікроконтролер PIC16F877A для взаємодії RFID. Ми просто прочитаємо унікальний ідентифікаційний номер. RFID-тегів та відобразити його на РК-дисплеї 16x2.
RFID-модуль та його робота
У цьому проекті ми обрали модуль RF-EM-18, який є малогабаритним, недорогим та енергоефективним модулем. Модуль RF-EM-18 використовує частоту 125 кГц для зчитування пасивних міток 125 кГц RFID. Модуль EM-18 використовує генератор, демодулятор і декодер даних для зчитування даних з пасивної картки.
Тег RFID
Доступні три типи RFID-міток: пасивні, активні та пасивні з використанням батареї. На ринку доступні різні види RFID-міток з різними видами форм і розмірів. Мало хто з них використовує різну частоту для спілкування. Ми використовуватимемо пасивні картки RFID 125 кГц, які містять унікальні дані ідентифікатора. Ось картка RFID та теги, які ми використовуємо для цього проекту.
Робота RFID
Якщо ми бачимо таблицю даних (http://www.alselectro.com/files/rfid-ttl-em18.pdf) модуля EM-18, ми можемо побачити задню частину модуля та схему програми:
Модуль використовує протокол зв'язку UART зі швидкістю 9600 бод. Коли в магнітне поле зчитувача EM-18 вводиться допустима мітка частоти, транзистор BC557 вмикається, і зуммер починає подавати звуковий сигнал, він також світить світлодіодом. Ми використовуємо модуль, який є легко доступним на ринку і має повну схему із зуммером, світлодіодом та додатковим портом RS232.
Ось модуль плати RFID, який ми використовуємо з іменами контактів. Цей модуль також має додаткову опцію живлення.
Потрібно пам’ятати одне, що вихід зчитувача EM-18 використовує логічний рівень 5В. Ми могли б використовувати інший мікроконтролер, який використовує нижчий логічний рівень, але в таких випадках потрібен додатковий перетворювач логічного рівня. У деяких випадках UART штифт 3.3V мікроконтролера часто 5В.
Вихід UART забезпечує 12-бітові дані ASCII. Перші 10 бітів - це номер тегу RFID, який є унікальним ідентифікатором, а останні дві цифри використовуються для перевірки помилок. Ці дві останні цифри є XOR номера тегу. Модуль EM-18 зчитує дані з 125 кГц пасивних тегів RFID або карток.
Ці теги або ідентифікатори мають запрограмований на заводі масив пам'яті, який зберігає унікальний ідентифікаційний номер. Оскільки вони пасивні, тож на картці та мітках немає батареї, вони отримують енергію від магнітного поля радіочастотного модуля. Ці RFID-мітки зроблені за допомогою мікросхеми CMOS EM4102, яка також тактована магнітним полем.
Необхідний матеріал
Для створення цього проекту нам потрібні наступні пункти:
- PIC16F877A
- Кристал 20 МГц
- 2шт. 33pF керамічний конденсатор
- РК-дисплей із символами 16x2
- Макет
- 10 тис. Попередньо встановлених горщиків
- Резистор 4.7k
- Одножильні дроти для підключення
- Адаптер 5 В
- ВЧ-модуль EM-18
- Звуковий сигнал 5В
- Конденсатор на 100 мкФ і.1 мкФ на 12 В
- BC557 Транзистор
- СВІТЛОДІОДНИЙ
- Резистор 2.2k та 470R.
Ми використовуємо модульну плату EM-18 із зуммером та світлодіодом, попередньо налаштованою. Отже, компоненти, перелічені від 11 до 15, не потрібні.
Кругова діаграма
Схема проста; ми підключили РК через порт RB і підключили модуль EM-18 через штифт UART Rx.
Ми зробили з’єднання на макетній панелі відповідно до схеми.
Пояснення коду
Як завжди, спочатку нам потрібно встановити біти конфігурації в мікроконтролері pic, визначити деякі макроси, включаючи бібліотеки та частоту кристалів. Ви можете перевірити код для всіх, хто вказаний у повному коді, наведеному в кінці.
// Налаштування біта конфігурації PIC16F877A // Оператори конфігурації вихідного рядка 'C' // CONFIG #pragma config FOSC = HS // Біти вибору осцилятора (HS-генератор) #pragma config WDTE = OFF // Біт активації сторожового таймера (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 // Флеш-пам'ять програми Включити біти (захист від запису вимкнено; вся пам'ять програми може бути записана контролером 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 біт, ми друкуємо масив як рядок на РК-дисплеї.
void main (void) { непідписаний підрахунок знаків; беззнаковий знак RF_ID; system_init (); lcd_com (0x80); lcd_puts ("Дайджест схеми"); 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
RFID-взаємодія з мікроконтролером 8051
RFID-взаємодія з Arduino