RFID RC522 на ESP8266
Как-то давно заказал RFID модули RC522, а на днях попались на глаза, решил "поиграться" и написать плагин для DoT. Изначально планировал использовать только как считыватель карт и передавать ID на сервер УД, но в процессе написания плагина решил сделать более полноценное устройство с возможностью работы в автономном режиме.
Данный модуль может быть использован для автоматической идентификации, контроля доступа, робототехники, платежных систем и т.д. Он построен на специализированной микросхеме MFRC522 от NXP Semiconductors. В комплекте идут две метки, одна в виде брелка, другая в виде карты. Несмотря на то, что у данной микросхеме есть несколько интерфейсов для работы с ней i2c, spi и uart. Именно заказанный мной модуль работает в режиме spi, без возможности выбора других интерфейсов. Это обусловлено разводкой платы, хотя "киты" могли бы предусмотреть такую возможность. Также на али можно встретить в продаже модули и с i2c интерфейсом.
Характеристики:
- Напряжение питания: 3.3V;
- Потребляемый ток :13-26mA
- В ждущем режиме: 10-13mА
- В спящем режиме: менее 80 мкА
- Рабочая частота: 13.56MHz
- Дальность считывания: 0 ~ 60 мм (в реале 0 до 30мм)
- Интерфейс: SPI, максимальная скорость передачи 10Мbit/с
- Размер: 40мм х 60мм
Схема
Так как собирал данное устройство в целях ознакомления, поэтому использовал готовые модули и собрал все на макетной плате.

ПО
Программная часть сделана на основе DoT в виде плагина, об этом читаем тут. Настройка модуля, а также добавление или удаление меток, осуществляется через веб-интерфейс. В настройках плагина можно задать частоту опроса RC522, длительность срабатывания реле и переназначить некоторые порты.

Добавление и удаление ключей (меток) происходит в автоматическом режиме. Чтобы добавить метку, нужно в веб интерфейсе нажать на add, модуль перейдет в режим чтения меток. Далее подносим метку к RC522, в случае успешной записи ее ID подаст звуковой сигнал и через некоторое время в окне keys появится ID добавленной метки. По такому же принципу происходит и удаления меток, только для этого нужно перевести Mode в положение del или нажать на крестик в углу ID метки в окне keys, если знаете ID метки. Для перевода в нормальный режим работы, нужно вернуть переключатель в положение auth или перезагрузить устройство.

Обновление блока keys с ID метками, происходит автоматически раз 10 сек или можно обновить вручную нажав на кнопку Refresh. Для того чтобы управлять состоянием реле достаточно кликнуть по кнопке OPEN, что приведет к его срабатыванию на заданное в настройках времени.
MQTT
Устройство работает автономно, но и имеет возможность интеграции с сервером по средствам протокола MQTT, для этого необходимо установить плагин MQTT.
При появлении метки, в топик DOT-XXXXXX/info/RC522/card будет отправлен ее ID, а в топик DOT-XXXXXX/info/RC522/access состояние. Если метка была добавлена в память устройства придет значение true, а если нет, то соответственно false. Для управлением реле необходимо на топик DoT-XXXXXX/comm/RC522_dev/relay отправить true, что приведет к его срабатыванию.

Единственное нужно иметь ввиду, что при одновременном использовании web-интерфейса и работающем плагином MQTT могут возникнуть проблемы с нехваткой памяти, в результате возникнет ошибка и ESP будет перезагружена.
