ODNFC-LAN
ODNFC-LAN-C
NFC считыватель-контроллер с сетевым интерфейсом с Lua
Ключевые возможности
  • Широкий список поддерживаемых меток
    В зависимости от исполнения:

    Метки 13,56 МГц
    Чтение-запись меток следующих стандартов:
    Mifare Classic 1K/4K/Mini: полная поддержка
    Mifare Ultralight: полная поддержка
    Mifare Ultralight Nano: полная поддержка
    Mifare Ultralight C: ограниченная поддержка - только чтение UID
    NTAG 213/215/216: полная поддержка
    S50/S70: полная поддержка

    Метки 125 КГц
    Чтение UID меток стандарта Em-marine EM4100, HID ProxCard II.
  • Работа в локальной сети
    Считыватель подключается в локальную сеть Ethernet с DHCP или статическими адресами, либо WiFi (AP или STA).
    Имеет встроенный WEB-интерфейс для настройки устройства.
    Может передавать данные по сетевому интерфейсу или получать команды.
  • Использование банковских карт в качестве метки
    Использование номера карты в качестве метки. Также можно использовать электронные карты из Apple Pay и Android Pay.
  • Генерация отчетов и логов
    Возможность собирать статистику "вход-выход" за период и отправлять на почту.
    Данному разделу выделена отдельная страница.
  • Telegram
    Прамая интеграция с телеграм ботом без использования сторонних сервисов.
    • Можно отправлять команды на перезагрузку и получать данные о работе, данные датчиков, статистику и т.д.
    • Можно написать свои действия на команды.
  • Самостоятельная модификация кода
    Считыватель имеет встроенный редактор кода, который позволяет расширить функционал устройства и сделать логику работы такой, как нужно именно вам.
    Есть онлайн среда и плагин для vscode.
  • Дискретный вход и выход
    Считыватель имеет один выход для подключения напрямую замка, а также вход для подключения кнопки. Это позволяет уменьшить количество используемого оборудования.
  • Управляемая индикация
    Считыватель позволяет программно управлять звуковым излучателем и RGB-светодиодами (ODNFC-LAN). Вместо встроенных диодов можно подключить управляемую ленту длиной 40-60 светодиодов и реализовывать световые эффекты.
    ODNFC-LAN-C управляет классической светодиодной парой "красный-зелёный".
    Также можно подключить неуправляемую ленту через OUT.
  • Локальное хранение данных
    Устройство может хранить данные о пользователях локально и работать автономно или синхронизироваться с сервером по сетевому интерфейсу для запроса данных для обновления списка пользователей.
Исполнения корпуса

ODFNC-LAN (корпус Тип А) и
ODFNC-LAN-C (корпус Тип В)
У ODNFC-LAN лицевая панель покрыта тонкой защитной транспортировочной плёнкой.
Удалите её перед использованием.
Web-интерфейс
Если у вас не такой интерфейс, то вы можете обновить устройство и тогда следующая инструкция будет для вас точно актуальна.

Основной экран

На данном экране можно увидеть общую информацию об устройстве и сообщения из кода (отправленные из программы пользователя).


Экран настроек

Данный экран позволяет изменять основные настройки устройства.

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

Выключение web-интерфейса и пароль нужны, чтобы ограничить доступ к устройству, если используется общая сеть (но не ограничьте случайно себе).
Пароль передается по сети в открытом виде.

HTTPS-сервер будет включать web-сервер с самоподписанными сертификами: браузер все-равно будет заходить на такую страницу только с ручным подтвержденим (и работать будет гораздо медленнее), поэтому включайте только если это действительно вам нужно.

Websocket REPL - включает удаленный доступ к устройству по сети. Используется в IDE lua.unitx.pro (вместе с https) и в плагине VSCode (без https).

Если вы перезагружаете устройство, то желательно перезагружать и странцу (примерно через 5 секунд). Потому что у вас в браузере осталась страница, которая не знает, что устройство перезагружено и она будет вести себя непредсказуемо, исходя из времени жизни кеша, открытых соединений и т.п.
Окно настроек унифицировано. Влияет ли конкретная настройка на работу вашего устройства зависит от конкретного загруженного скрипта.
Пример некоторых опций:
  • Опции "Формат", "Тип ключа", "Ключ" - могут использоваться программистом в своей программе для упрощения настройки RFID при интеграции. Нужны, чтобы при настройке не требовалось править код.
  • "WatchDog" - функция, которая перезагрузит устройство, если что-то пойдет не так. Отключите на время разработки.
  • Опция "Тип Адреса" определяет тип подключения Ethernet/WIFI и тип получения адреса.

Редактор кода

Простой редактор для модификации встроенной программы.
Позволяет изменять только в файле usercode.lua, который загружается автоматически.

Этого хватает для подавляющего большинства задач. Если у вас планируется разработка большого проекта, то вы можете записывать файлы на устройство через консоль, онлайн среду или плагин VSCode (но это будет немного сложнее).

При написании кода не стесняйтесь обращаться к нам - мы поможем.


Экран "Система"

Экран для получения информации об устройстве и обновления устройства локально.

RFID метки устроены гораздо сложнее, чем это кажется на первый взгляд.
Метки Mifare позволяют не только читать их номер, но и производить чтение и запись ее встроенной памяти, использовать специальные ячейки-счетчики для хранения "баллов", шифровать отдельные блоки и т.п.

На картинке ниже содержимое начальных секторов некоторых типов карт из нашей программы ODRFIDKit, которая используется со считывателями ODRFID-M/N и может вам пригодиться для чтения-записи карт или понимания их структуры.
Считыватель позволяет легко реализовать считывание разных областей с помощью "строки форматирования".
Строка форматирования позволяет задать произвольный формат вывода данных с карты, произвести некоторые манипуляции (изменить порядок байт, добавить или вырезать данные и т.п.) ещё в считывателе и выдать уже преобразованный результат.
Подробнее о строке форматирования...
Технические характеристики
1. Работа с метками (в зависимости от исполнения):

13,56 МГц
Mifare Classic 1K/4K/Mini: полная поддержка
Mifare Ultralight: полная поддержка
Mifare Ultralight Nano: полная поддержка
Mifare Ultralight C: ограниченная поддержка - только чтение UID
NTAG 213/215/216: полная поддержка
S50/S70: полная поддержка

125 КГц
UID меток стандарта Em-marine EM4100.

Устройство может быть собрано с одним из интерфейсов или сразу с двумя.

2. Дальность считывания меток: до 6-10 см (зависит от качества метки).
3. Габаритные размеры: 120х76х22мм ODNFC-LAN, 115х75х20мм ODNFC-LAN-C.
4. Интерфейсы: Ethernet/WiFi.
5. Индикация: RGB светодиод x2, звуковой излучатель, подключаемая лента.
6. Один входной канал (3В, подтянут к "1").
7. Один выходной канал (1А max), напряжение соответствует напряжению питания.
8. Четыре крепёжных отверстия М3.
9. Питание Passive PoE 7-24V.
Подключение
Интерфейс: Ethernet.
Разъём: IDC381-8-110, либо клеммная колодка или привычный LAN разъем 8P8C.
По-умолчанию, устройство подключается к DHCP-серверу и получает от него IP-адрес. В настройках можно поменять на статический адрес.

Питание: Passive PoE 7-24В.
Возможно подключение питания от источника постоянного тока.

Индикация сети: красный - нет линка, зелёный - есть линк.
  • odnfc-lan-n4-l-r
  • odnfc-lan-n4-l-i
  • odnfc-lan-n4-l-k
Назначение выводов

Сетевой разъем (Ethernet с Passive PoE):

odnfc-lan-n4-l-r: стандартный RJ45

odnfc-lan-n4-l-i и odnfc-lan-n4-l-k: колодка
  • 1 и 2: используются для передачи данных (пара 1)
  • 3 и 6: используются для передачи данных (пара 2)
  • 4 и 5: используются для передачи питания (+)
  • 7 и 8: используются для передачи питания (-)
Можно подключить питание от БП подходящего тока и напряжения.

Дополнительная колодка:
  • OUT+ «+» исполнительного устройства / замка
  • OUT- «-» исполнительного устройства / замка
  • GND - «Земля»
  • IN - Сигнальный входной контакт





В некоторых сценариях может подойти также вариант с маленьким преобразователем из USB, но тут следует иметь в виду, что его мощность передачи питания по USB от ПК ограничена, и wifi, например, может не заработать.
Нужно включать от 1А зарядника (и иметь зарядник, допускающий постоянную работу).

Типы устройств
Если считыватель поддерживает 125КГц - то в конец артикула добавляется -e, если с считыватель с двумя интерфейсами сразу (13,56 МГц + 125 КГц), то -c.
PRO версия отличается большим количеством энергонезависимой и оперативной памяти.

Дополнительные ресурсы Pro позволяют:
  • исполнять более сложные алгоритмы
  • использовать SSH
  • полноценно использовать библиотеку CURL
  • использовать FTP
  • работать с Telegram
  • отправлять данные по почте
Варианты готовых программ
Мы предлагаем как уже запрограммированные и готовые к использованию устройства, так и демо-приложения. При этом все устройства можно модифицировать.
  • HTTP-считыватель
    Устройство передает UID поднесенной карты заданному в настройках серверу по HTTP, и в зависимости от ответа, открывает или нет.
    1
  • Автономный дверной замок
    Данный код открывает дверь при найденном в списке UID, который загружается через web-интерфейс.
    2
  • Замок с мастер-ключом
    Реализация классической схемы считывателя с мастер-ключом на добавление и удаление меток.
    3
  • Передача по сети
    Устройство передает UID поднесенной карты заданному в настройках серверу по UDP. Может пригодиться для решений типа "отметиться по приходу" или для автоматики (меток на предметах).
    4
  • Передача по MQTT
    Устройство передает UID поднесенной карты заданному в настройках серверу по MQTT. Может пригодиться для решений типа "отметиться по приходу" или для автоматики (меток на предметах).
    5
  • Ваш вариант
    Поможем вам (напишем или подскажем) реализовать ваш собственный сценарий работы.
    6
Почему Lua ?

Хотя Lua далеко не самый распространенный язык, он имеет ряд больших преимуществ:
  • предназначен для пользователей, не являющихся профессиональными программистами, вследствие чего большое внимание уделено простоте дизайна и лёгкости обучения;
  • скриптовый язык - не требует отдельной компиляции;
  • маленький размер - в контроллер умещается полная версия языка, а не урезанная;
  • простой паскалеподобный синтаксис, известный многим еще со школы;
  • минимум синтаксиса;
  • поддержка ООП;


Пример кода в устройстве
Небольшой пример, чтобы понять, как работает устройство.
Подробнее о самостоятельном программировании можно узнать на специальной странице.
Можно создать любой алгоритм, на который хватит фантазии (и возможностей устройства).
Очень простой пример: устройство передает UID поднесенной карты заданному в настройках серверу по UDP
-- создает WiFi-точку на всякий случай. уберите в финальной программе
net.wf.setup(net.wf.mode.AP,'OD-'..cpu.getmac(0, 1), 'password')
net.wf.start()

-- импорт библиотек
rfid = require("rfid")
indication = require("indication")
  
host, path, ssl, port = net.parseUrl(Settings.get("net_dest")) -- получаем адрес из настроек
leds = indication.Leds.new({RGB=true}) -- управление светодиодами
snd = indication.Sound.new() -- управление звуком
card_reader = rfid.singleReader() -- упрощеный ридер меток
  
leds:start() -- индикация запуска
snd:start() -- звук запуска

iprint("Это информационное сообщение")
eprint("Здесь могло быть сообщение об ошибке")

while true do
    uid = card_reader() -- получаем uid в виде hex-строки
    if uid then
        pcall(function() net.udp.sendto(host, port, uid) end) -- отправка по udp
        leds:ok() -- индикация
        snd:ok() -- звук
    end
    thread.sleepms(50)
end
Восстановление устройства
Порядок действий, если вы "закирпичили" устройство и не можете получить к нему доступ.

  1. Выключить устройство.
  2. Замкнуть контакты HARD RESET или RECV (зависит от ревизии) на плате устройства.
  3. Включить устройство держа замкнутым разъём HARD RESET/RECV.
  4. Подождать несколько секунд (после контакты можно размокнуть).
  5. Устройство создаст WiFi-точку доступа вида OD-[серийный номер].
  6. Сеть без пароля
  7. С версии 1.6.0 дополнительно запустит Ethernet интерфейс с DHCP-клиентом.
  8. Устройство запустит Web-сервер и telnet-сервер, чтобы вы могли исправить работать с консолью устройства: изменить настройки/программу и восстановить доступ к устройству.
  9. WiFi ip-адрес устройства: 192.168.4.1
Обновление устройства
Порядок действий
Открыть вкладку "Настройки" (в веб-браузере).
Если включен сторожевой таймер, то выключить его и перезагрузить устройство.

Открыть вкладку "Система" (в веб-браузере).

Обновление с файла
1. Скачать с этого сайта подходящую прошивку.
2. Нажать кнопку "Из файла", выбрать файл.
3. Нажать "Загрузить". Дождаться сообщения о готовности.
4. При успешной загрузке устройство перезагрузится.
5. После обновления нужно убедиться, что данные о сборке изменились на желаемые.

Актуальные прошивки можно скачать по ссылке

Дополнительные материалы
0
Строка форматирования
Как пользоваться, если выхотите читать не uid, а данные с карты.
1
Bluetooth Low Energy (BLE)
Как реализовать обмен BLE Beacons можно прочитать в статье.
2
TCP MODBUS
Как реализовать TCP MODBUS Master/Slave (Client/Server).
3
Консоль
Как работать с консолью.
4
Как программировать ODNFC на Lua
Инструкции, учебники, советы, обсуждения.
5
Миниучебник по Lua
"Lua за 15 минут"