За что? UHF Reader позволяет отслеживать метки на расстоянии до 10 метров, что открывает интересные перспективы для различного использования.
Наиболее очевидным является контроль доступа транспортных средств.
Но можно придумать и более экзотические варианты: оборудование для наблюдения в гараже/сарае.
Вряд ли вор поймет, что к велосипеду (чемодану с инструментами) прикреплена RFID-метка и он способен сообщить о своем выезде за пределы наблюдаемого периметра.
NodeJS + RaspberryPI — гибкий и дешевый сервер для обработки данных и управления периферией.
Оборудование
На тестирование я взял CF-RU5109 (CHAFON), который поддерживает соединения по RS232, RS485, Wiegand, TCP. (ТСР мне нужен только для удобства тестирования оборудования) Страница модели - CF-RU5109 Теги — бумажная бирка RFID gen2 UHF с чипом Alien H3 Диапазон чтения.«Эксперименты показали, что чтение зависит от активности метки (ее перемещения в пространстве).
Пассивно лежащая метка читалась уверенно на расстоянии 3 метров, слабоподвижная - 5-5,5 метров, на расстоянии 8 метров приходилось активно махать рукой.
У моего ридера встроенная антенна 9 дБи.
Программное обеспечение
В комплект поставки Reader входит SDK, подробное описание команд и несколько тестовых программ для Windows. Я использую этот софт только для того, чтобы попробовать работать с Reader — при работе с NodeJS нам от него ничего не нужно.
Подключение к узлу
Из руководства.tcpclient.prototype.Start = function () { client = new net.Socket(); client.setEncoding('ascii'); client.connect(6000, '192.168.0.190', function() { }); client.on('connect', function(data) { console.log('UHF reader connected'); var bytes = Buffer.from([0x04, 0xff, 0x21, 0x19, 0x95], "ascii"); client.write(bytes); client.on('data', function(data) { console.log('UHF reader respond:'); var buffer = Buffer.from(data, "ascii"); console.log(buffer); }); }); client.on('close', function() { console.log('UHF reader - connection closed'); }); client.on('error', function(err) { console.log(err) }); }; tcpclient.prototype.Write = function (req) { var bytes = new Buffer(req, "ascii"); console.log(bytes); client.write(bytes); };
Командный блок структурирован следующим образом: Len, Adr, Cmd, Data[], LSB-CRC16, MSB-CRC16 Последние два байта представляют собой контрольную сумму CRC16 с полиномом 0x8408 и начальным числом 0xFFFF. Байты выводятся в обратном порядке.
Производитель любезно предоставил C-код для расчета, и я переписал его на JS (см.
ниже).
Соответственно, [0x04, 0xff, 0x21, 0x19, 0x95] — это команда запроса статуса считывателя по адресу FF по умолчанию.
04-длина, 21-команда, 19 и 95 – контрольная сумма CRC16. var PRESET_VALUE = 0xFFFF;
var POLYNOMIAL = 0x8408;
var CRC16 = function (pucY) {
var uiCrcValue = PRESET_VALUE;
for(var i = 0; i < pucY.length; i++){
uiCrcValue = uiCrcValue ^ (pucY[i]);
for(var j = 0; j < 8; j++){
if(uiCrcValue & 0x0001){
uiCrcValue = (uiCrcValue >> 1) ^ POLYNOMIAL;
} else {
uiCrcValue = (uiCrcValue >> 1);
}
}
}
var buf = Buffer.from(uiCrcValue.toString(16), 'hex');
buf = Buffer.from([buf[1], buf[0]], 'hex');
return buf;
};
//CRC16([0x04, 0xff, 0x21]); //returns <Buffer 19 95>
Примеры команд
Инвентарь – запрос на одноразовое чтение карты.
Работает в режиме ответа req =[0x04, 0x00, 0x01, 0xdb, 0x4b];
tcpClient.Write(req);
Если отметка находится в зоне видимости, мы получим ответ
Читатель УВЧ отвечает:62 00 51 79 17 19 00 04 05 60 5b 28 — это метка.
Переключение режимов работы считывателя
Режим ответа : [0x0a, 0x00, 0x35, 0x00, 0x02, 0x01, 0x00, 0x01, 0x00, 0x2a, 0x9f] Сканирование/Активный режим : [0x0a, 0x00, 0x35, 0x01, 0x02, 0x01, 0x00, 0x01, 0x00, 0x01, 0x9b].В этом режиме ридер постоянно опрашивает теги и возвращает их теги.
Что дальше?
И дальше, если требуется простое решение, то либо пишем код, который периодически отправляет команду 0x01 (Инвентаризация).Теги в зоне видимости сдают свои теги, мы сверяем их с базой данных и инициируем соответствующие действия.
Либо пишем код, который в режиме постоянного сканирования ждёт попадания метки в зону видимости и реагирует событием.
Теги: #JavaScript #node.js #RFID #uhf #Gen.2
-
Джон Кармак О Статическом Анализе Кода
19 Oct, 24 -
Обычная История В Автосалоне Nokia
19 Oct, 24 -
Skype Hd 2010: Новые Веб-Камеры
19 Oct, 24 -
Google Chrome Как Популяризатор Идей Apple
19 Oct, 24