- Используемые компоненты:
- Рабочее объяснение:
- Описание схемы:
- Установка библиотеки wiringPi в Raspberry Pi:
- Объяснение программирования:
Ранее мы использовали RFID во многих наших проектах RFID и уже создали систему посещаемости на основе RFID с использованием 8051, здесь мы собираемся создать систему посещаемости на основе RFID с использованием Raspberry Pi.
В этом проекте системы посещаемости на основе RFID мы объясним вам, как мы можем авторизовать и подсчитать посещаемость автоматически с помощью карт RFID. Технология RFID (радиочастотная идентификация и обнаружение) обычно используется в школах, колледжах, офисах и на станциях для различных целей, чтобы автоматически отслеживать людей. Здесь мы посчитаем явку уполномоченного лица с помощью RFID.
Если вы не знакомы с Raspberry Pi, мы создали серию руководств и проектов Raspberry Pi с взаимодействием со всеми базовыми компонентами и некоторыми простыми проектами для начала, обязательно проверьте.
Используемые компоненты:
- Raspberry Pi (с загруженной SD-картой)
- Нажать кнопку
- Зуммер
- ЖК-дисплей 16x2
- 10к банк
- Резистор 10 кОм
- СВЕТОДИОД
- Резистор 1 кОм
- Хлебная доска
- RFID считыватель
- Мощность 5 вольт
- RFID-метки или карты
- Сетевой кабель
- Соединительные провода
Считыватель 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 используется для чтения тегов RFID. Зуммер используется для индикации и управляется встроенным транзистором NPN. ЖК-дисплей используется для отображения статуса или сообщений на нем.
Подключения просты. ЖК-дисплей подключен к Raspberry Pi в 4-битном режиме. Выводы RS, RW и EN ЖК-дисплея напрямую подключаются к wiringPi GPIO 11, gnd и 10. Выводы данных подключаются к wiringPi GPIO 6, 5, 4 и 1. Поток 10K используется для установки контрастности или яркости ЖК-дисплея. Зуммер подключается к выводу 7 GPIO проводки GPIO относительно земли. Три светодиода подключены для индикации студента с соответствующей RFID картой. И один светодиод используется, чтобы показать, что система готова к сканированию RFID-карты. К контакту 12 GPIO wiringPi также подключена кнопка для отображения счетчика посещаемости. Считыватель RFID подключается к контакту UART (контакт 16 GPIO).
Установка библиотеки wiringPi в Raspberry Pi:
Как и в Python, мы импортируем import RPi.GPIO как файл заголовка ввода-вывода, чтобы использовать выводы GPIO Raspberry Pi, здесь, на языке C, нам нужно использовать библиотеку wiringPi для использования выводов GPIO в нашей программе C. Мы можем установить его, используя следующие команды одну за другой, вы можете запустить эту команду из Терминала или из какого-либо клиента SSH, такого как Putty (если вы используете Windows). Ознакомьтесь с нашим руководством по началу работы с Raspberry Pi, чтобы узнать больше об использовании Raspberry Pi.
sudo apt-get install 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 я = 0; char temp;
Затем были написаны функции для выполнения всего процесса. Некоторые из них приведены ниже:
Данная функция void 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, ВЫСОКИЙ);……………..
Данная функция записи void используется для отправки данных на ЖК-дисплей.
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, ВЫСОКИЙ); digitalWrite (EN, ВЫСОКИЙ);……………..
Учитывая, что функция void clear () используется для очистки ЖК-дисплея, void setCursor используется для установки положения курсора и пустая печать для отправки строки на ЖК-дисплей.
void clear () {lcdcmd (0x01); } void setCursor (int x, int y) {int set = 0; если (y == 0) установить = 128 + x; if (y == 1) set = 192 + x; lcdcmd (набор); } void print (char * str) {а (* str) {write (* str); str ++; }}
Функция void begin используется для инициализации ЖК-дисплея в 4-битном режиме.
пустое начало (int x, int y) {lcdcmd (0x02); lcdcmd (0x28); lcdcmd (0x06); lcdcmd (0x0e); lcdcmd (0x01); }
Функции void buzzer () и void wait () используются для подачи сигнала зуммера и ожидания повторной установки карты. Функция void serialbegin используется для инициализации последовательной связи.
void buzzer () {digitalWrite (гудок, ВЫСОКИЙ); задержка (1000); digitalWrite (шум, НИЗКИЙ); } недействительное ожидание () {digitalWrite (led5, LOW); задержка (3000); } void serialbegin (int baud) {если ((sp = serialOpen ("/ dev / ttyS0", baud)) <0) {clear (); print («Невозможно открыть»); setCursor (0,1); print ("последовательный порт"); }}
В функции void setup () мы инициализируем все GPIO, ЖК-дисплей и последовательный UART.
void setup () {если (wiringPiSetup () == -1) {clear (); print («Невозможно запустить»); setCursor (0,1); печать ("wiringPi"); } pinMode (led1, ВЫХОД); pinMode (светодиод2, ВЫХОД);……………………
Данная функция void get_card () используется для получения данных от считывателя RFID.
В функции void main () мы показали несколько сообщений на ЖК-дисплее и сравнили данные тега с предопределенными данными, чтобы проверить карту с помощью кода ниже.
……………… if (strncmp (rfid, "0900711B6003", 12) == 0) {count1 ++; Чисто(); print ("Аттд. Зарегистрировано"); setCursor (0,1); print ("Studnet 1"); digitalWrite (led1, HIGH); зуммер(); digitalWrite (led1, LOW); Подождите(); } иначе если (strncmp (rfid, "090070FE6EE9", 12) == 0) {count2 ++; Чисто(); print ("Аттд. Зарегистрировано"); setCursor (0,1);………………
Наконец, функция void check_button () используется для отображения общей посещаемости при нажатии кнопки.
void check_button () {если (digitalRead (in1) == 0) {digitalWrite (led5, LOW); Чисто(); setCursor (0,0); печать ("std1 std2 std3");……………..
Проверьте полный код для этой системы посещаемости Raspberry Pi ниже.