Документация ODNFC — программируемые NFC/RFID считыватели
Руководства по подключению, программированию и интеграции ODNFC-LAN и ODNFC-RS485.
ODNFC — программируемые NFC/RFID считыватели-контроллеры. Прикладной алгоритм выполняется в самом устройстве на Lua или MicroPython: считыватель получает UID и, при наличии нужных ключей, данные защищённых блоков, управляет входом и выходом и обменивается данными по доступным интерфейсам. Набор Ethernet, Wi-Fi, RS485 и Bluetooth зависит от исполнения.
Здесь собраны основные технические материалы: руководства по устройствам, введение в программирование, описание протоколов и примеры кода.
С чего начать
| Ваша ситуация | Первый материал |
|---|---|
| Только выбираете исполнение | Обзор и выбор ODNFC |
| Купили ODNFC-LAN на Lua | Первый запуск и веб-интерфейс Lua |
| Купили ODNFC-LAN на MicroPython | Первый запуск и редактор MicroPython |
| Хотите изменить подсветку или мелодии | Световые эффекты и звуки ODNFC |
| Подключаете кнопку, геркон, замок, реле или RGB-ленту | Электрические схемы входов и выходов |
| Подключаете считыватель к ПЛК по RS485 | Настройка Modbus RTU и карта регистров |
| Подключаете считыватель к контроллеру СКУД по OSDP | Настройка адреса, обмена и Secure Channel |
| Нужно изменить формат номера карты | Настройка строки форматирования |
| Нужно сопоставить UID, надпись на карте и Wiegand | Форматы номера карты и преобразование UID |
| Нужно читать или записывать ссылки и текст на NFC-метках | Формат NDEF и проверка совместимости метки |
| Нужен телефон вместо пропуска | Ограничения UID и мобильных кошельков |
| Нужно защититься от копии UID | Ключи, счётчики и собственная антиклон-логика |
| Нужно отправить событие на сервер | Программирование на Lua или MicroPython |
Если вы внедряете ODNFC впервые, сначала добейтесь стабильного чтения карты и ручного управления выходом. Сетевую интеграцию, локальную базу и сложную логику добавляйте по одному — так проще отделить ошибку подключения от ошибки кода.
Руководства по устройствам
- Подключение периферии к ODNFC и ODRFID-RS485: кнопка, геркон, замок, реле, сигнал между устройствами и адресная RGB-лента.
- Руководство ODNFC-LAN на Lua: подключение к Ethernet или Wi-Fi и работа с веб-интерфейсом Lua.
- Руководство ODNFC-LAN на MicroPython: подключение и запуск программы во встроенном редакторе.
- Руководство ODNFC-RS485 Modbus на Lua: настройка линии и проверка обмена по карте регистров.
- Руководство ODNFC-RS485 OSDP на Lua: подключение к СКУД, проверка обмена с ПК и ввод Secure Channel в эксплуатацию.
- Руководство ODNFC-RS485 Modbus на MicroPython: настройка линии и чтение регистров из программы.
Программирование
- Программирование на Lua — правила разработки, доступ к настройкам, примеры программ
- Программирование на MicroPython — особенности MicroPython на устройстве и примеры
- Консоль Lua — работа с файловой системой и дополнительными файлами через USB-донгл
Справочники и примеры
- Модуль OSDP в Lua — полный API ролей CP/PD, событий, команд и Secure Channel
- NDEF: данные на NFC-метках — назначение формата, совместимость меток и встроенные функции ODNFC
- Модуль MFRC522 в Lua — API чтения и записи NDEF на Ultralight и NTAG
- Строка форматирования RFID-вывода — как настроить произвольный формат данных, считываемых с карты
- UID, напечатанные номера и Wiegand — как сопоставить разные представления идентификатора
- Защита от клонов меток — распознавание T55xx, защищённые блоки, индивидуальные ключи и одноразовые токены
- Пример: Modbus TCP — сервер Modbus TCP на Lua и MicroPython и клиент на Python
- Пример: Bluetooth-маяки — приём iBeacon и Eddystone и ограничения идентификации
- Пример журналирования и уведомлений с rsyslog, локальным файлом, Telegram и электронной почтой
Выбор языка программирования
Lua — основная ветка прошивок ODNFC с наиболее полным набором функций. MicroPython предназначен для ODNFC, уже выпущенных с этой прошивкой. Для нового проекта выбирайте Lua.
Не нашли ответа? Задайте вопрос инженеру.
История обновлений 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 теперь распространяется отдельно.

ODNFC-LAN на Lua — руководство
Сетевой считыватель-контроллер ODNFC-LAN с Lua: подключение, настройка, редактор кода и управление файлами через веб-интерфейс.

ODNFC-LAN на MicroPython — руководство
Сетевой считыватель-контроллер ODNFC-LAN с прошивкой MicroPython: настройка, подключение, веб-интерфейс и примеры кода.

ODNFC-RS485 Modbus — руководство
Считыватель-контроллер ODNFC-RS485 с протоколом Modbus RTU: карта регистров, подключение и примеры.

ODNFC-RS485 OSDP — быстрый старт для интегратора
Быстрый запуск ODNFC-RS485 в роли OSDP Peripheral Device: линия RS485, тест с ПК и настройка защищённого канала.

ODNFC-RS485 Modbus на MicroPython — руководство
RS485-исполнение ODNFC с прошивкой MicroPython: режимы Modbus, конфигуратор и обновление прошивки.
Программирование ODNFC на Lua
Быстрый старт с mfrc522.scan, веб-IDE и примеры кода на Lua.
Программирование ODNFC на MicroPython
Правила разработки на MicroPython, доступ к настройкам и разбор примера программы для ODNFC.

Консоль ODNFC (Lua)
Консоль Lua: подключение, файловая система, встроенный редактор и загрузка библиотек.
Строка форматирования RFID-вывода
Как задать произвольный формат данных, считываемых с карты: коды, режимы вывода и примеры.
Пример: Modbus TCP на ODNFC
Сервер Modbus TCP на Lua и MicroPython и Python-клиент для проверки регистров.
Пример: Bluetooth-маяки на ODNFC
Приём iBeacon и Eddystone на ODNFC: пример на Lua и ограничения безопасности.
Пример: логи и отчёты с ODNFC
rsyslog, файловый логгер, Telegram и почта — способы отправлять отчёты о работе устройства.