Программируемый
IoT RFID считыватель

Гибкий и функциональный программируемый контроллер-считыватель.

Поддерживаемые карты: MIFARE Classic 1/4K, Ultralight, S50/70, NTAG 213/214/215.
Для кого?
Устройство будет полезно для разработчиков:
1. Интеллектуальных систем,
2. Систем "Интернета вещей",
3. Систем автоматизации,
4. СКУД.

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

Примеры применения RFID контроллера
Что умеет RFID контроллер
Мы реализовали все свои идеи в одном устройстве
  • 1
    Автономность
    Может работать без базы и ему не нужны провода. Может работать даже от аккумулятора, например, если нужно собрать систему на мероприятии в открытом поле.
  • 2
    Гибкость
    Можно не только работать с UID карты, но читать/писать области памяти карты. Работать с шифрованием карт.
  • 3
    Беспроводной интерфейс
    Встроенный беспроводной интерфейс (868 МГц) и возможность ретрансляции радиопосылок открывают большое количество недоступных ранее сценариев использования.
  • 4
    Проводные интерфейсы
    В считывателе всегда есть USB интефейс для настройки и опциональные CAN/UART для создания проводной сети.
  • 5
    Энергоэффективность
    Благодаря хорошо реализованным режимам энергосбережения средняя энергия потребления составляет 11ма. Это позволяет использовать его от аккумулятора на протяжении 80 часов активной работы.
  • 6
    Удобство программирования
    Устройство имеет встроенный язык программирования Python3 (MicroPython), что позволяет создавать самые разные сценарии работы.
    Доступ к устройству осуществляется через RNDIS - виртуальную Ethernet карту поверх USB.
  • 7
    "Беспроводная" кнопка включения
    Если есть необходимость выключать устройства (на ночь, на время транспортировки и т.д.), а потом включить его, то для этого предусмотрен включатель, активируемый поднесением магнита к корпусу.
Основные узлы


1 - Разъём подключения аккумулятора (опционально).

2 - Геркон (опционально).

3 - Разъём microUSB.

4 - Клеммная колодка (опционально).

5 - Процессорный модуль.

6 - Клемма сброса программного обеспечения.

Технические характеристики:
1. Поддерживаемые карты: MIFARE Classic 1/4K, Ultralight, S50/70, NTAG 213/214/215.
2. Дальность считывания меток: до 6 см
3. Габаритные размеры: 95х62х20 мм
4. Проводные интерфейсы: USB
5. Беспроводной интерфейс: 868 Мгц
6. Идникация: светодиоды (красный и зелёный), звуковой излучатель
7. Аккумулятор Li-ion 3.82V 1810mA от iPhone6 (опционально)
8. Контроль заряда и состояния аккумулятора.
Магнитный включатель
Магнитный включатель - геркон используется для бесконтактного включения устройства с помощью магнита.
Полезно при организации выездных мероприятий.
Как начать работать
  • 1
    Установите устройство к USB и включите устройство
    В компьютере должна появиться виртуальная сетевая карта.
  • 2
    Подключитесь к устройству
    Подключитесь к созданной устройством сети и введите в
    web-браузере Safari, Chrome, Firefox или Opera адрес http://10.10.0.1
  • 3
    Готово!
    В web-браузере можно увидеть интерфейс устройства, изменить настройки или встроенную программу.
Как программировать
Считыватели уже идут со встроенным ПО,
но можно написать программу под свои нужды:
для этого мы ведём раздел
самостоятельная разработка ПО
Для начала сделаем программу, которая при поднесении любой карты зажигает один светодиод и печатает UID в консоль .

import pyb
from rfid_utils import RFID, GLED

print("User code started")
rfid = RFID()
while 1:
        pyb.delay(100)
        uid = rfid.read()
        if uid:
            print(uid)
            GLED.on()
            pyb.delay(300)
            GLED.off()
Вариант программы, которая передаёт UID поднесённой карты по радио абоненту 2.
Удалим всё в main.py и запишем:

import pyb
from rfid_utils import RFID, GLED

#включаем RFID-считыватель 
rfid = RFID()

#включаем радио
radio = pyb.SI446X(address=2)


while 1:
    pyb.delay(100)
    uid = rfid.read()
    if uid:
        print(uid)
        if radio.send(1, uid) == pyb.SI446X.RES_OK:  # отправка по радио абоненту 1
            GLED.on()
            pyb.delay(300)
        GLED.off()


Следующий вариант для считывателей с замком:
сравниваем UID и открываем замок, если карта подходит.
Удалим всё в main.py и запишем:

from binascii import unhexlify
import pyb
from rfid_utils import RFID, GLED, LOCK

MY_SECRET_CARD_UID = b'030e873e'  #UID карты в HEX 

rfid = RFID()

while 1:
    uid = rfid.read()
    if uid == unhexlify(MY_SECRET_CARD_UID)
        GLED.on()
        LOCK.off()
        pyb.delay(5000)  # даём 5 секунд на вход
    GLED.off()
    LOCK.on()
    pyb.delay(500)

Простой дверной RFID замок на 24 строки
Удалим всё в main.py и запишем:

from binascii import hexlify
import pyb
from rfid_utils import RFID, GLED, RLED, LOCK, Buzzer

settings = {"USER_LIST" : {"030e873e": "user1", "11111111": "user2", "11111112" : "user3"}}

rfid = RFID()
buzz = Buzzer()
LOCK.on()

while 1:
    uid = rfid.read()
    if hexlify(uid).decode() in settings['USER_LIST']:
        LOCK.off()
        GLED.on()
        buzz.beeps(50)
        GLED.off()
        pyb.delay(3000)
        LOCK.on()
    else:
        RLED.on()
        buzz.beeps(500)
        RLED.off()
        pyb.delay(1500)
Дополнительные ресуры