Перейти к содержанию
ODNFC-RS485 Modbus на MicroPython — руководство

ODNFC-RS485 Modbus на MicroPython — руководство

ODNFC-RS485 на MicroPython: совместимые карты, конфигуратор ODRFIDConfigM, карта регистров, AT-команды через Modbus RTU и обновление прошивки.

ODNFC-RS485 с прошивкой MicroPython — считыватель-контроллер с интерфейсом RS485 и протоколом Modbus RTU. Он передаёт данные карты в ПЛК или СКУД, а пользовательская программа на MicroPython обрабатывает вход, выход и индикацию.

Основные характеристики

  • Интерфейс подключения: RS485, Modbus RTU.
  • Поддерживаемые карты: MIFARE Classic 1K/4K/Mini, MIFARE Plus S/X (SL0/SL1/SL3), MIFARE Ultralight, Ultralight Nano, Ultralight EV1 80/164, NTAG 213/215/216, S50/S70 — полная поддержка; MIFARE Plus X (SL2), Ultralight C, DESFire — только чтение UID.
  • EMV-совместимые банковские карты: чтение PAN как идентификатора, без платёжных операций. Идентификатор мобильного кошелька может меняться; до внедрения проверьте конкретный телефон и сценарий.
  • Передача UID и/или заранее заданного блока данных.
  • Настраиваемый формат выдаваемых данных.
  • Светодиодная и звуковая индикация взаимодействия с картой.
  • Один дискретный вход.
  • Управляемый дискретный выход.

Настройки порта по умолчанию: 115200 8N1.

Конфигуратор ODRFIDConfigM

Для настройки устройства и формата выводимых данных используется кроссплатформенная программа-конфигуратор.

Конфигуратор задаёт адрес устройства, настройки порта, индикацию, режим работы, ключ шифрования и строку форматирования вывода. Можно прочитать и записать настройки, перевести устройство в режим загрузчика для обновления прошивки. Есть тестовая консоль для проверки работы.

Строка форматирования задаёт состав результата и позволяет переставлять, добавлять или исключать байты до передачи данных из считывателя.

Карта данных и AT-команды

Устройство предоставляет готовую область данных последней карты и отдельный обмен AT-командами через регистры Modbus.

Некоторые программы обозначают регистры хранения как 40001, 40002 и далее, хотя в запросе Modbus передаётся относительный адрес с нуля. В этой инструкции указаны относительные адреса: 0 соответствует 40001.

Готовые данные карты. Последняя поднесённая карта отображается в регистрах, начиная с адреса 130.

Простой режим Modbus

AT-команды через Modbus. Команда и ответ передаются через буферы в регистрах. Порядок чтения ответа:

  1. Прочитать входной регистр (Input Register) 0 и проверить, есть ли ответ.
  2. Если данные есть, прочитать их из регистров хранения (Holding Registers), начиная с 0.
  3. После чтения очистить входной буфер записью любого значения в регистр 126 (0x7E). Если не стирать, данные будут копиться в буфере, пока не наберётся 252 байта; дальше лишние данные отбрасываются.

Обновление прошивки

  1. Переведите устройство в режим обновления: запишите 1 в регистр хранения (Holding Register) 128 — либо 40129, если программа использует такую нумерацию, — или отправьте AT-команду AT+X.

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

  3. Подключитесь к Wi-Fi-сети устройства OD-eRFID-DFU.

  4. Откройте в браузере адрес 10.10.0.1.

    Если страница не открывается с телефона, временно отключите мобильные данные: операционная система может пытаться отправить запрос не в локальную Wi-Fi-сеть устройства.

  5. Нажмите поле Click to select a firmware image file… («Выбрать файл прошивки») или кнопку Select («Выбрать»).

  6. Выберите файл прошивки *.efw.

  7. Нажмите Upload («Загрузить») и дождитесь надписи Uploaded. Устройство подаст двойной звуковой сигнал.

  8. Нажмите Launch («Запустить») в левой колонке. Устройство перезагрузится, а соединение с его Wi-Fi-сетью разорвётся.

Исполнения

Исполнения различаются корпусом, индикацией и диапазоном питания:

  • ODNFC-RS485 — RGB-светодиод, возможность подключения адресной RGB-ленты, питание 7–24 В.
  • ODNFC-RS485-C — классические зелёный-красный светодиоды, питание 5–12 В.

Дополнительные материалы

История обновлений ODNFC на Lua

Если установлена версия ниже 1.7.0, сначала обновите её до 1.7.0, а затем до более новой версии. Перед обновлением отключите сторожевой таймер и сотрите пользовательскую программу.

1.8.2
  • Улучшена работа устройства и исправлены ошибки.
  • Для устройств, работающих с метками 125 кГц, добавлено обнаружение типовых клонов EM-Marine.
1.8.1

Улучшения:

  • Новый веб-интерфейс.
  • Улучшена работа RFID-модулей MFRC и EM-Marine.
  • Улучшена работа Modbus.
  • Оптимизирована работа устройства.
1.7.0

Улучшения:

  • улучшена работа MFRC и EM-Marine;
  • в раздел «Редактор» добавлен простой файловый менеджер;
  • улучшена работа сетевых модулей;
  • оптимизирована работа устройства.

Исправлена ошибка в HTTP-заголовке Content-Length, из-за которой интерфейс не работал в некоторых операционных системах.

1.6.2
  • Улучшена работа MFRC и EM-Marine.
  • Улучшена библиотека Modbus.
  • Оптимизирована работа устройства.
  • В ODNFC-LAN-LUA добавлена регистрация обработчика успешного чтения.
1.6.1
  • Добавлена запись в зашифрованные карты MIFARE Classic.
  • Упрощена инициализация RFID: используются значения по умолчанию для каждой платы, поэтому изменён вызов основного класса и больше не требуются многие Lua-обёртки из rfid.lua.
  • Добавлена функция mfrc522.scan() — упрощённая версия базового класса для типовых операций.
  • Исправлены библиотеки EM-Marine и HID.
  • Оптимизирована библиотека Modbus.
  • Исправлена работа TCP-сервера.
1.6.0

Улучшения:

  • обновлён редактор кода: устранена проблема с переводами строк в новых версиях Firefox;
  • в веб-сервер добавлена поддержка HTTPS и WebSocket;
  • добавлены новые классы для работы с RFID-метками;
  • добавлена работа с NDEF и счётчиками Ultralight;
  • добавлены встроенные библиотеки cbor, cobs, mlib, Heatshrink и microtar;
  • расширены библиотеки osc, net, cutils, utils, cpu и emmarine;
  • LuaSocket больше не входит в прошивку;
  • добавлена загрузка сжатых Heatshrink-библиотек Lua;
  • добавлен WebSocket REPL для отладки через веб-IDE или расширение VS Code;
  • улучшена консоль: Unicode, автодополнение и история;
  • расширена поддержка Modbus;
  • Paho MQTT заменён собственной реализацией uMqtt;
  • ускорена работа устройства и веб-интерфейса;
  • выполнены другие небольшие исправления и оптимизации.

Исправлены ошибки, из-за которых после мягкой перезагрузки Wi-Fi запускался через раз, а RFID-модуль мог не инициализироваться.

1.5.0

Улучшения:

  • новый интерфейс и редактор кода;
  • добавлена библиотека tinycobs;
  • добавлены функции net.tcp.*;
  • добавлены функции eprint, hprint и wprint для вывода в окно «Инфо»;
  • трассировка ошибки загрузки теперь показывается в окне «Инфо»;
  • расширены возможности Telnet, SSH отключён;
  • в режиме восстановления Wi-Fi работает без пароля;
  • добавлена поддержка BLE-маяков на устройствах с BLE;
  • NTP запускается с задержкой 15 секунд, чтобы сеть успела установиться.

Исправлены режим статического Ethernet-адреса и установка яркости NeoPixel.

1.4.0
  • Улучшен встроенный веб-сервер.
  • Выполнены небольшие изменения для повышения стабильности.
  • Исправлена утечка памяти при HTTP-запросах из Windows.

Известная проблема этой версии: режим статического Ethernet-адреса в настройках не работает. Для обхода проблемы в начало пользовательской программы добавляли:

net.en.setup(
  net.packip(Settings.get("net_ip")),
  net.packip(Settings.get("net_mask")),
  net.packip(Settings.get("net_gw")),
  net.packip(Settings.get("net_dns"))
)
net.en.start()
1.3.2
  • В os.df() добавлен дополнительный параметр.
  • Выполнены небольшие изменения для повышения стабильности.
  • Исправлена утечка памяти при запросе метрики в интерфейсе.

Известная проблема этой версии: HTTP-запросы из Windows приводят к утечке памяти. После изменения настроек рекомендовалось закрыть браузер, перезагрузить устройство и не выполнять периодические HTTP-запросы.

1.3.1
  • Серийный номер синхронизирован с DataMatrix на корпусе модуля, если он есть.
1.3
  • Библиотека Telegram.lua добавлена в прошивку.
  • Библиотека LuaSocket теперь распространяется отдельно.