- Използвани компоненти:
- Работно обяснение:
- Описание на веригата:
- Инсталиране на wiringPi библиотека в Raspberry Pi:
- Обяснение на програмирането:
Преди сме използвали RFID в много от нашите RFID проекти и вече сме изградили RFID базирана система за присъствие, използвайки 8051, тук ще изградим RFID базирана система за посещение, използвайки Raspberry Pi.
В този проект, базиран на RFID Attendance System, ще ви обясним, че как можем да упълномощаваме и отчитаме присъствието автоматично с помощта на RFID карти. RFID технологията (радиочестотна идентификация и откриване) се използва често в училища, колежи, офиси и станции за различни цели за автоматично проследяване на хората. Тук ще преброим посещаемостта на упълномощено лице чрез използване на RFID.
Ако не сте запознати с Raspberry Pi, ние създадохме поредица от уроци и проекти за Raspberry pi, с взаимодействие с всички основни компоненти и някои прости проекти, с които да започнете, направете проверка.
Използвани компоненти:
- Raspberry Pi (с заредена SD карта)
- Натисни бутона
- Звънец
- 16x2 LCD
- 10к пот
- 10K резистор
- LED
- 1k резистор
- Дъска за хляб
- RFID четец
- Мощност 5 волта
- RFID тагове или карти
- Ethernet кабел
- Свързващи проводници
RFID четец и етикети:
RFID е електронно устройство, което има две части - едната е RFID четец, а другата е RFID етикет или карта. Когато поставим RFID етикет близо до RFID четеца, той чете данните на маркерите последователно. RFID етикетът има 12-цифрен код в бобина. Този RFID работи със скорост на предаване от 9600 bps. RFID използва електромагнит за прехвърляне на данни от Reader към Tag или Tag към Reader.
Работно обяснение:
Тук Raspberry Pi 3 контролира целия процес на този проект (Потребителят може да използва всяка дъска на Raspberry Pi). RFID Reader чете идентификатора на RFID картата, тези данни се получават от Raspberry Pi чрез UART, след което RPi потвърждава картата и показва резултатите на LCD екран.
Когато човек постави своя RFID етикет близо до RFID четеца, за да сканира, RFID чете данните на маркера и ги изпраща на Raspberry Pi. След това Raspberry Pi чете уникалния идентификационен номер на този RFID етикет и след това сравнява тези данни с предварително дефинирани данни или информация. Ако данните се съвпадат с предварително дефинирани данни, тогава Raspberry Pi увеличава присъствието на човека на маркера с един и ако съвпадението не съвпада, тогава микроконтролерът показва съобщение „Невалидна карта“ на LCD и зумерът издава непрекъснато звуков сигнал И тук добавихме и бутон, за да видим общ номер. на присъствието на всички ученици. Тук сме взели 4 RFID маркера, в които три се използват за записване на присъствието на трима ученици, а един се използва като невалидна карта.
Описание на веригата:
Схемата на схемата за този проект на системата за присъствие на Raspberry Pi е много проста, която съдържа Raspberry Pi 3, RFID четец, RFID тагове, зумер, LED и LCD. Тук Raspberry Pi контролира цялостния процес като четене на данни, идващи от Reader, сравняване на данни с предварително дефинирани данни, шофиране на зумер, индикатор за състояние на шофиране и изпращане на статус на LCD дисплей. RFID Reader се използва за четене на RFID тагове. Звуковият сигнал се използва за индикации и се задвижва от вграден NPN транзистор. LCD се използва за показване на състояние или съобщения върху него.
Връзките са прости. LCD е свързан с Raspberry Pi в 4-битов режим. RS, RW и EN щифтът на LCD е директно свързан при wiringPi GPIO 11, gnd и 10. А пинът за данни е свързан към wiringPi GPIO 6, 5, 4 и 1. 10K пот се използва за задаване на контраст или яркост на LCD. Зуммерът е свързан към окабеляване Pi GPIO щифт 7 по отношение на земята. Три индикатора са свързани за индикация на студент със съответната RFID карта. И един светодиод се използва, за да покаже, че системата е готова за сканиране на RFID картата. Бутонът също е свързан към окабеляване Pi GPIO pin 12, за да се покаже броя на посещенията. RFID четецът е свързан към UART щифт (окабеляване GPIO щифт 16).
Инсталиране на wiringPi библиотека в Raspberry Pi:
Подобно на Python, ние импортираме RPi.GPIO за импортиране като IO заглавен файл, за да използваме GPIO Pins на Raspberry Pi, тук на C език трябва да използваме wiringPi Library, за да използваме GPIO Pins в нашата програма 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
Обяснение на програмирането:
Сега първо включихме някои библиотеки и дефинирахме пинове, които трябва да използваме в този код.
#include
След него дефинирайте някои променливи и масив за изчисление и съхранявайте стойности и низове.
int sp; int count1 = 0, count2 = 0, count3 = 0; char ch; char rfid; int i = 0; char темп;
След това са написани Функции за изпълнение на целия процес. Някои от тях са дадени по-долу:
Дадената void функция lcdcmd се използва за изпращане на команда към LCD
void lcdcmd (неподписан 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);……………..
Дадената функция за запис на void се използва за изпращане на данни към LCD.
void write (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, HIGH); digitalWrite (EN, HIGH);……………..
Дадената функция void clear () се използва за изчистване на LCD, void setCursor се използва за задаване на позиция на курсора и празен печат за изпращане на низ към LCD.
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 (комплект); } void print (char * str) {while (* str) {write (* str); str ++; }}
Функцията void start се използва за инициализиране на LCD в 4-битов режим.
void begin (int x, int y) {lcdcmd (0x02); lcdcmd (0x28); lcdcmd (0x06); lcdcmd (0x0e); lcdcmd (0x01); }
Функциите void buzzer () и void wait () се използват за бипкане на зумера и за изчакване за повторно поставяне на карта. Функцията void serialbegin се използва за инициализиране на серийната комуникация.
void зумер () {digitalWrite (вест, HIGH); забавяне (1000); digitalWrite (бръмча, НИСКО); } void wait () {digitalWrite (led5, LOW); забавяне (3000); } void serialbegin (int baud) {if ((sp = serialOpen ("/ dev / ttyS0", baud)) <0) {clear (); print ("Не може да се отвори"); setCursor (0,1); печат ("сериен порт"); }}
Във функцията void setup () ние инициализираме всички GPIO, LCD и сериен UART.
void setup () {if (wiringPiSetup () == -1) {clear (); print ("Не може да се стартира"); setCursor (0,1); печат ("wiringPi"); } pinMode (led1, OUTPUT); pinMode (led2, OUTPUT);……………………
Като се има предвид невалидни get_card () функция се използва, за да получите информация от RFID четец.
Във функцията void main () показахме някои съобщения на LCD и сравнихме данните на маркера с предварително дефинирани данни, за да потвърдим картата с код по-долу.
……………… if (strncmp (rfid, "0900711B6003", 12) == 0) {count1 ++; ясно (); print ("Attd. Registered"); setCursor (0,1); печат ("Studnet 1"); digitalWrite (led1, HIGH); зумер (); digitalWrite (led1, LOW); изчакайте(); } иначе ако (strncmp (rfid, "090070FE6EE9", 12) == 0) {count2 ++; ясно (); print ("Attd. Registered"); setCursor (0,1);………………
Накрая функцията void check_button () се използва за показване на общото присъствие при натискане на бутона.
void check_button () {if (digitalRead (in1) == 0) {digitalWrite (led5, LOW); ясно (); setCursor (0,0); печат ("std1 std2 std3");……………..
Проверете пълния код за тази система за присъствие на Raspberry Pi по-долу.