- Використовувані компоненти:
- Робоче пояснення:
- Опис ланцюга:
- Встановлення бібліотеки wiringPi в Raspberry Pi:
- Пояснення програмування:
Раніше ми використовували RFID у багатьох наших проектах RFID і вже побудували систему відвідуваності на основі RFID, використовуючи 8051, тут ми збираємося створити систему відвідуваності на основі RFID за допомогою Raspberry Pi.
У цьому проекті "Система відвідуваності" на основі RFID ми пояснимо вам, як можна авторизувати та підрахувати відвідуваність автоматично за допомогою карток RFID. Технологія RFID (ідентифікація та виявлення радіочастот) зазвичай використовується в школах, коледжах, офісах та на станціях різного призначення для автоматичного відстеження людей. Тут ми підрахуємо відвідуваність уповноваженої особи за допомогою RFID.
Якщо ви не знайомі з Raspberry Pi, ми створили низку навчальних посібників та проектів Raspberry Pi із взаємодією з усіма основними компонентами та кількома простими проектами для початку, перевірте.
Використовувані компоненти:
- Raspberry Pi (із завантаженою SD-картою)
- Нажимна Кнопка
- Зумер
- РК-дисплей 16x2
- 10к горщик
- 10K резистор
- СВІТЛОДІОДНИЙ
- Резистор 1к
- Хлібна дошка
- RFID-зчитувач
- Потужність 5 вольт
- RFID-мітки або картки
- Кабель Ethernet
- Підключення проводів
RFID-зчитувач і теги:
RFID - це електронний пристрій, який складається з двох частин - одна - RFID-зчитувач, а інша - RFID-мітка або картка. Коли ми розміщуємо тег RFID поблизу зчитувача RFID, він зчитує дані тегів послідовно. Тег RFID містить 12-значний код символу в котушці. Цей RFID працює зі швидкістю передачі даних 9600 біт / с. RFID використовує електромагніт для передачі даних з пристрою зчитування на мітку або мітки на зчитувач.
Робоче пояснення:
Тут Raspberry Pi 3 контролює весь процес цього проекту (Користувач може використовувати будь-яку дошку Raspberry Pi). RFID Reader зчитує ідентифікатор картки RFID, ці дані отримує Raspberry Pi через UART, потім RPi перевіряє карту та відображає результати на РК-екрані.
Коли людина розміщує свій RFID-тег поблизу RFID-зчитувача для сканування, RFID зчитує дані тегу і надсилає їх на Raspberry Pi. Потім Raspberry Pi зчитує унікальний ідентифікаційний номер цього тегу RFID, а потім порівнює ці дані із заздалегідь визначеними даними або інформацією. Якщо дані узгоджуються із заздалегідь визначеними даними, Raspberry Pi збільшує відвідуваність особи тегу на одиницю, а якщо збіг не відповідає, тоді мікроконтролер відображає повідомлення "Недійсна картка" на РК-дисплеї, а зуммер подає безперервний сигнал протягом деякого часу. І тут ми також додали кнопку, щоб побачити загальний номер. відвідуваності всіх студентів. Тут ми взяли 4 теги RFID, в яких три використовуються для запису відвідуваності трьох студентів, а один використовується як недійсна картка.
Опис ланцюга:
Принципова схема для цього проекту проекту відвідуваності Raspberry Pi дуже проста, що містить Raspberry Pi 3, зчитувач RFID, теги RFID, зумер, світлодіод та РК-дисплей. Тут Raspberry Pi керує повним процесом, таким як зчитування даних, що надходять із пристрою зчитування, порівняння даних із заздалегідь визначеними даними, водіння зуммера, світлодіодний індикатор стану та надсилання стану на РК-дисплей. RFID Reader використовується для зчитування тегів RFID. Звуковий сигнал використовується для індикацій і управляється вбудованим транзистором NPN. РК-дисплей використовується для відображення стану або повідомлень на ньому.
Зв’язки прості. РК-дисплей підключений до Raspberry Pi в 4-розрядному режимі. Контакт RS, RW та EN рідкокристалічного дисплея безпосередньо підключений до wiringPi GPIO 11, gnd та 10. А контактний штифт підключений до wiringPi GPIO 6, 5, 4 та 1. Для встановлення контрастності або яскравості РК-дисплея використовується 10-канальний горщик. Зуммер підключений до проводки Pi GPIO pin 7 відносно землі. Три індикатори підключені для індикації студентів відповідною карткою RFID. І один світлодіод використовується, щоб показати, що система готова сканувати карту RFID. Кнопка також підключена на проводці Pi GPIO pin 12 для відображення кількості відвідувачів. Зчитувач RFID підключений на штифті UART (підключення GPIO штир 16).
Встановлення бібліотеки wiringPi в Raspberry Pi:
Як і в Python, ми імпортуємо імпорт RPi.GPIO як файл заголовка вводу-виводу для використання штифтів GPIO Raspberry Pi, тут мовою C нам потрібно використовувати бібліотеку wiringPi, щоб використовувати шпильки GPIO у нашій програмі C. Ми можемо встановити його, використовуючи наведені нижче команди по черзі, ви можете запустити цю команду з терміналу або з якогось клієнта SSH, наприклад Putty (якщо ви використовуєте Windows). Пройдіть наш посібник «Початок роботи з Raspberry Pi», щоб дізнатись більше про роботу з Raspberry Pi.
sudo apt-get встановити git-core sudo apt-get update sudo apt-get upgrade git clone git: //git.drogon.net/wiringPi cd wiringPi git pull origin cd wiringPi./build
Перевірте установку бібліотеки wiringPi, використовуйте команди нижче:
gpio -v gpio readall
Пояснення програмування:
Тепер спочатку ми включили декілька бібліотек і визначили шпильки, які нам потрібно використовувати в цьому коді.
#включати
Після цього визначте деякі змінні та масив для обчислення та збережіть значення та рядки.
int sp; int count1 = 0, count2 = 0, count3 = 0; char ch; char rfid; int i = 0; char temp;
Потім були написані Функції для виконання всього процесу. Деякі з них наведені нижче:
З огляду на анулюються lcdcmd функція використовується для відправки команди на ЖК - дисплеї
void lcdcmd (unsigned int ch) {int temp = 0x80; digitalWrite (D4, temp & ch << 3); digitalWrite (D5, temp & ch << 2); digitalWrite (D6, temp & ch << 1); digitalWrite (D7, temp & ch); digitalWrite (RS, LOW); digitalWrite (EN, HIGH);……………..
Дана функція запису порожнечі використовується для надсилання даних на РК-екран.
запис порожнечі (без підпису int ch) {int temp = 0x80; digitalWrite (D4, temp & ch << 3); digitalWrite (D5, temp & ch << 2); digitalWrite (D6, temp & ch << 1); digitalWrite (D7, temp & ch); digitalWrite (RS, HIGH); digitalWrite (EN, HIGH);……………..
Дана функція void clear () використовується для очищення РК-дисплея, void setCursor - для встановлення положення курсору та друку void для надсилання рядка на РК-екран.
void clear () {lcdcmd (0x01); } void setCursor (int x, int y) {int set = 0; if (y == 0) set = 128 + x; if (y == 1) set = 192 + x; lcdcmd (набір); } недійсний друк (char * str) {while (* str) {write (* str); str ++; }}
Функція void start використовується для ініціалізації РК в 4-бітному режимі.
void begin (int x, int y) {lcdcmd (0x02); lcdcmd (0x28); lcdcmd (0x06); lcdcmd (0x0e); lcdcmd (0x01); }
Функції void buzzer () та void wait () використовуються для звукового сигналу зумера і для очікування для повторного розміщення картки. Функція void serialbegin використовується для ініціалізації послідовного зв'язку.
void buzzer () {digitalWrite (buzz, HIGH); затримка (1000); digitalWrite (buzz, LOW); } void wait () {digitalWrite (led5, LOW); затримка (3000); } void serialbegin (int baud) {if ((sp = serialOpen ("/ dev / ttyS0", baud)) <0) {clear (); print ("Неможливо відкрити"); setCursor (0,1); print ("послідовний порт"); }}
У функції void setup () ми ініціюємо всі GPIO, РК-дисплей та послідовний UART.
void setup () {if (wiringPiSetup () == -1) {clear (); print ("Неможливо запустити"); setCursor (0,1); друк ("wiringPi"); } pinMode (led1, OUTPUT); pinMode (led2, OUTPUT);……………………
Дана функція void get_card () використовується для отримання даних з пристрою зчитування RFID.
У функції void main () ми показали кілька повідомлень на РК-дисплеї та порівняли дані тегів із заздалегідь визначеними даними для перевірки картки з кодом нижче.
……………… if (strncmp (rfid, "0900711B6003", 12) == 0) {count1 ++; clear (); друк ("Довідково зареєстровано"); setCursor (0,1); друк ("Studnet 1"); digitalWrite (led1, HIGH); зумер (); digitalWrite (led1, LOW); чекати (); } інакше якщо (strncmp (rfid, "090070FE6EE9", 12) == 0) {count2 ++; clear (); друк ("Довідково зареєстровано"); setCursor (0,1);………………
Нарешті, функція void check_button () використовується для відображення загальної кількості відвідувачів при натисканні кнопки.
void check_button () {if (digitalRead (in1) == 0) {digitalWrite (led5, LOW); clear (); setCursor (0,0); друк ("std1 std2 std3");……………..
Перевірте повний код цієї системи відвідуваності Raspberry Pi нижче.