Интернет-магазин

Просмотр корзины
В корзине:

товаров - 0 шт.



Статьи / KA066 / Laurent-5/5G: iButton DS1990



§ 66. Laurent-5/5G: iButton DS1990

Дмитрий Иванов, 07 Апреля 2023



Задача



Нужно подключить к модулю Laurent-5 / Laurent-5G 1-Wire считыватель iButton (Touch Memory) DS1990 (или DS1990A), иметь возможность получать информацию об обнаруженной метке а так же настроить модуль на выполнение автоматической реакции на данное событие. Нужно так же иметь возможность подключить RFID эмулятор iButton типа MATRIX-II (мод. Е).




Подключение DS1990




Статья подразумевает использование прошивки не младше чем L527 / G527.


Модули Laurent-5 / Laurent-5G с прошивкой не младше чем L527 / G527 могут обрабатывать сразу два считывателя iButton на двух разных физических каналах шины 1-Wire (канал 'А' и канал 'B'). Давайте рассмотрим именно такую ситуацию когда нужно сразу два считывателя. Причем один из них будет типа домофонной кнопки (таблетки) а второй - RFID эмулятор MATRIX-II (мод. Е).


Первым делом нужно настроить модуль и указать ему что на шине 1-Wire следует ожидать DS1990. Для этого заходим в WEB интерфейс модуля, в разделе Общие настройки → Шина 1-Wire. В данной статье оба канала настроим на работу с DS1990. Хотя, разумеется, можно использовать только один из них (любой).

Настройка шины 1-Wire


Настройку модуля можно делать не только через WEB но и KE-командами управления (через TCP сервер / клиент, URL ссылкой и т.д.).

$KE,OWI,MOD

Предположим что к каналу 'А' подключим домофонную кнопку (например, считыватель JSB 15.0). Схема подключения показана на рисунке ниже.

Считыватель DS1990 DS1990 TouchMemory

Подключение DS1990 к Laurent



К каналу 'B' подключим iButton RFID эмулятор MATRIX-II (мод. Е). Схема подключения показана на рисунке ниже. Подразумевается, что сам модуль Laurent питается от источника 12 В (клемма Vin).

Подключение MATRIX-II (мод. Е) к Laurent

Подключение MATRIX-II (мод. Е) к Laurent



Если теперь вставить домофонную кнопку в гнездо считывателя или поднести RFID карту к считывателю MATRIX в WEB интерфейсе модуля в разделе RFID Wiegand & iButton можно увидеть информацию об обнаруженных метках:

Laurent: RFID Wiegand & iButton


Laurent: RFID Wiegand & iButton






Ke-сообщение




А что делать если нужно получать информацию об обнаруженной метке в режиме реального времени и обрабатывать в моем собственном софте на PC?


Для получения данных о событии обнаружения метки в режиме реального времени, можно воспользоваться KE-сообщением #IBUT. Для включения его выдачи следует в WEB интерфейсе в разделе Общие настройки → Сообщения активировать выдачу, например, в соединение TCP сервера (по умолчанию, на TCP порту 2424).

Laurent: Ke-сообщение о DS1990 в TCP сервер


Если теперь подключиться к TCP серверу модуля (по умолчанию 192.168.0.101 : 2424), например, программой putty и поднести iButton метку, то в режиме реального времени получим текстовое сообщение с информацией об обнаруженной метке. Сообщение можно разобрать в собственном софте и выполнить нужные действия.

Laurent: Ke-сообщение iButton


Информацию о формате Ke-сообщений в частности сообщении #IBUT можно найти в документации на модуль Ethernet модуль Laurent-5 / Laurent-5G. Ke-команды управления




Аналогично, можно настроить выдачу KE-сообщений в соединение TCP клиента. Т.е. не наш софт подключается к модулю а наоборот - TCP клиент модуля сам выходит на связь с TCP сервером развернутым на некотором PC. Например, предположим, что на PC с IP 192.168.0.200 запущен TCP сервер на порту 8000. Тогда что бы получить информацию о событии по iButton достаточно активировать TCP клиент на модуле и включить выдачу Ke-сообщений в это соединение.

Laurent: TCP клиент

Laurent: настройка TCP клиента

Laurent: чтение данных от TCP клиента

Laurent: чтение данных от TCP клиента




Ke-команда




А что делать если нужно запросить информацию о ранее обнаруженной метке (последнем факте)?



На этот случай, есть специальная Ke-команда $KE,IBT,LST - она возвращает информацию о последней обнаруженной метке iButton на указанной шине 1-Wire.

Laurent: Ke-сообщение iButton


В данном случае, на шине 'B' была обнаружена метка с ID=1.43.225.223.160.15.0.17 и с тех пор прошло 1457 секунд.


Ke-команду можно отправить в модуль не только через TCP-сервер соединение но и, например, в виде URL запроса:

Laurent: URL команда iButton DS1990




Белая база меток




А можно сохранить идентификаторы нужных меток / карт в базе данных самого модуля и в дальнейшем выполнять логику обработки исходя из наличия обнаруженной метки в "белой" базе?



Да, такая возможность у модулей Laurent-5 / Laurent-5G есть. Они могут хранить в своей энергонезависимой памяти до 1000 шт идентификаторов меток / карт (+ текстовое описание) и в дальнейшем, используя систему программируемой логики CAT, выполнять действия при обнаружении метки из белой базы.


Для того что бы добавить метку в базу, в WEB интерфейсе модуля необходимо нажать на зеленый "плюс" расположенный рядом с обнаруженной меткой.

Laurent: белая база iButton RFID


Произвольную метку можно так же добавить в базу с помощью Ke-команды $KE,RFD.




Программируемая логика CAT




А что делать если нужно выполнить действие на стороне модуля (например, включить реле) при обнаружении метки? Причем, все должен сделать сам контроллер без участия внешнего сервера / компьютера?



Такая задача легко решается с помощью программируемой логики CAT силами самого модуля. В WEB интерфейсе заходим в раздел Система CAT и создаем новое событие по iButton:

Laurent: программируемая логика CAT


Выбираем вариант "Метка из белого списка". Это будет означать что если на любом из каналов 1-Wire будет обнаружена метка iButton и ID этой метки сохранен в белой базе - сработает реакция на данное событие (реакцию мы зададим далее).

Laurent: программируемая логика CAT


Реакция на событие CAT задается в виде списка Ke-команд. В данном случае, например, будем переключать состояние реле RELE_1 на противоположенное.

Laurent: программируемая логика CAT


Укажем текстовое имя данному событию:

Laurent: программируемая логика CAT


После создания события CAT его нужно активировать (включить):

Laurent: программируемая логика CAT


Если теперь поднести метку iButton которая есть в "белой" базе - автоматически сработает система CAT и 1-ое реле изменит свое состояние на противоположенное. Если же поднести метку которой нет в базе - ни чего происходить с реле не будет.

Laurent: программируемая логика CAT

Laurent: программируемая логика CAT


Можно создать дополнительные события CAT на метку которой нет в базе или на конкретный ID. Все созданные события CAT сохраняются в энергонезависимой памяти и отрабатываются модулем автономно без необходимости держать внешний компьютер / сервер.




Динамические переменные




А можно передать информацию об обнаруженной метке, например, на внешний WEB сервер в виде аргумента GET запроса?



Да, без проблем! И такую задачу можно решить. Для этого в модуле есть Ke-команда отправки HTTP GET запроса ($KE,URL) и динамические переменные, которые можно указать в теле Ke-команды и вместо обозначения переменной при выполнении команды / запроса будет подставлены актуальные значения (показание датчика, состояние аппаратного ресурса или как в нашем случае - ID обнаруженной метки).

Если предположить, что на машине с IP 192.168.0.200 на TCP порту 8090 запущен WEB сервер, то выполнив вот такую команду на модуле (либо в терминале, либо как реакция в событии CAT) мы отправим идентификаторы iButton меток для шины А (динамическая переменная ~IB1~) и для шины B (~IB2~) обнаруженных последний раз.


$KE,URL,RUN,192.168.0.200,8090,scr.cgi?valA=~IB1~&valB=~IB2~

Laurent: динамические переменные в HTTP GET запросе


© Дмитрий Иванов
07 Апреля 2023
https://kernelchip.ru



© KERNELCHIP 2006 - 2024