Рубрики
Проекты на ESP8266

Система контроля посещаемости на основе RFID, ESP8266, Arduino и Adafruit.io

В данной статье мы рассмотрим как создать систему учета рабочего времени на основе IoT (интернет вещей) и RFID (радиочастотных метках) с использованием плат Arduino и NodeMCU ESP8266, а также платформы Adafruit.io с использованием брокера MQTT. Поэтому в этом проекте мы будем использовать модуль для считывания RFID меток MFRC522, платы Arduino Uno и NodeMCU ESP-12E. Плата Arduino и сканер RFID будут сканировать карты RFID, а затем регистрировать их на облачной платформе Adafruit IO с помощью модуля Wi-Fi ESP8266. Эта информация может отображаться на панели управления Adafruit IO и может быть доступна соответствующим органам для просмотра и анализа посещаемости через Интернет из любого места в любое время.

Ранее на нашем сайте мы рассматривали следующие похожие проекты:

Необходимые компоненты

  1. NodeMCU ESP8266 (купить на AliExpress).
  2. Плата Arduino Uno (купить на AliExpress).
  3. Модуль RFID RC522 и карты RFID 13,56 МГц (5-10 шт.) (купить на AliExpress).
  4. Макетная плата.
  5. Соединительные провода.

Реклама: ООО «АЛИБАБА.КОМ (РУ)» ИНН: 7703380158

Схема проекта

Схема системы контроля посещаемости на основе RFID модуля RC522, плат NodeMCU ESP8266 и Arduino Uno представлена на следующем рисунке.

Подключите вывод SDA модуля RFID к цифровому выводу 10 Arduino. Аналогично подключите SCK к D13, MOSI к D11, MISO к D12, GND к GND, вывод RST к D9 и подайте питание 3,3 В с помощью выводов 3,3 В. Контакт IRQ не подключен. Аналогично подключите выводы TX, RX NodeMCU к выводам D2, D3 платы Arduino соответственно. Также подайте питание на Node MCU, подключив его выводы VCC и GND.

Собранная конструкция проекта показана на следующем рисунке.

Все компоненты системы подключены согласно схеме просто на макетной плате. MFRC522 — это модуль SPI, подключенный к Arduino. Nodemcu подключен через контакты UART. Существует несколько карт RFID, мы будем использовать 6 карт для 6 человек. Все эти карты имеют частоту 13,56 МГц.

Ранее RFID модуль RC522 мы использовали в следующих проектах на нашем сайте:

Настройка учетной записи Adafruit.io

Adafruit.io — это открытая платформа данных, которая позволяет вам агрегировать, визуализировать и анализировать данные в реальном времени в облаке. Используя Adafruit.io, вы можете загружать, отображать и контролировать свои данные через Интернет, а также сделать свой проект IoT-совместимым.

Для настройки Adafruit первое, что вам нужно сделать, это зарегистрироваться на Adafruit. Чтобы зарегистрироваться, перейдите на сайт Adafruit IO https://io.adafruit.com/ и нажмите ‘Get started for Free’ («Начать бесплатно») в правом верхнем углу экрана. После этого появится окно, в котором вам нужно будет заполнить свои данные.

Итак, как только учетная запись будет создана, просто вернитесь на https://io.adafruit.com/. С левой стороны нажмите на view AIO Key. Отсюда вам нужно скопировать имя пользователя, а также AIO Key. Так что просто скопируйте эти ключи в блокнот, так как они вам понадобятся позже для использования в программе.

Теперь слева нажмите на панель мониторинга и создайте новую панель мониторинга, используя любое имя, например RFID_Attendance. Вы можете дать или не дать описание. Итак, панель мониторинга создана.

Теперь аналогично зайдите в каналы и создайте новый канал. Дайте ему имя. Также скопируйте это имя (в блокнот), которое вы ему дали, так как оно нам также понадобится позже.

Исходный код программы

Этот проект создан с использованием плат NodeMCU и Arduino. Поэтому у нас будет два кода: один для arduino UNO/Nano, а другой для NodeMCU. Вам нужно загрузить оба этих кода в соответствующие им платы.

Код для платы Arduino

Вам будет нужна библиотека MFRC522. Загрузите библиотеку отсюда: Библиотека MFRC522

Код для платы NodeMCU ESP-12E

Вам будет нужна библиотека MQTT. Загрузите библиотеку отсюда: библиотека MQTT

Объяснение работы кода

1. Код Ардуино

Для RFID-сканера используется библиотека MFRC522. Контакты SDA и RST подключены к контактам 10 и 9 Arduino, как показано на принципиальной схеме.

Внутри функции setup() мы инициализируем последовательную связь на скорости 9600 бод и программную последовательную связь на скорости 115200 бод. Мы также открыли связь с MFRC522.

Внутри функции void loop() мы проверим, присутствует ли новая карта, и если присутствует новая карта, то она проверит UID карты. Для действительной карты она выведет UID карты с именем пользователя. В противном случае она выведет «неавторизированная карта».

Шестнадцатеричное число — это номер метки RFID. В примерах есть простая программа для определения этих номеров RFID. Вы можете найти эти номера RFID и заменить их в программе. Аналогично, функция ser.write имеет номера 1, 2, 3, 4, 5, 6. Эти номера — серийный номер карты, который будет загружен в панель управления Adafruit. Вы можете назначить этим номерам несколько имен, как вы можете видеть выше. Эти имена будут отображаться на последовательном мониторе во время сканирования.

2. Код NodeMCU ESP8266-12E

Запустите программу, добавив необходимые библиотеки. После этого введите учетные данные Wifi и пароль с именем пользователя Adafruit IO и ключом AIO, полученными ранее.

Используя функцию setup(), мы начнем последовательную связь на скорости 11500 бод. Затем мы подключим наш Wi-Fi-клиент к серверу Adafruit IO.

Внутри функции void loop() плата ESP считывает данные из последовательного порта, а затем публикует их на сервере Adafruit IO.

Если вы хотите более подробно разобраться в работе с сервером MQTT, то можете посмотреть следующие проекты:

Тестирование работы проекта

После загрузки кода на обе платы вы можете просто открыть последовательный монитор для обоих плат и начать сканирование RFID-карт.

Когда сканируется несколько или много карт, данные загружаются в каналы adafruit io. Вы можете просто войти в систему и проверить детали этих операций.

Видео, демонстрирующее сборку и работу проекта

2 ответа к “Система контроля посещаемости на основе RFID, ESP8266, Arduino и Adafruit.io”

Нафига тут ардуина если весь функционал можно было на есп8266 сделать, разве что только ног поменьше

Да, можно. Но возможности для масштабирования и дальнейшего наращивания функционала, а также гибкости внесения изменений здесь лучше чем в варианте только с ESP8266

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *