При попытке получить ИД карточки со считывателя карт с помощью скриптов через интерфейс Wiegand: (https://github.com/contactless/wiegand-linux-sysfs ), приходят все время разные данные, по содержанию и по размеру, при том что карточка одна и та же. Считыватель подключен к портам А1 и А2, разъемы GPIO: 111 и 109.
Контроллер: WirenBoard 6.5
Ниже вывод работы Питоновского скрипта.
Подскажите, пожалуйста, как быть и в чем может быть причина? Спасибо.
Пробовали все скрипты из указанного репозитория (https://github.com/contactless/wiegand-linux-sysfs), в том числе с высоким приоритетом (nice -n -19 …).
Пробовали останавливать сервисы командой service wb-* stop.
К успеху пока не пришли.
Считыватель подключаем следующим образом (провод считывателя -> пин на WB):
D0 -> A1 (GPIO 109)
D1 -> A2 (GPIO 111)
V+ -> +5V / Vout 12V (пробовали два варианта)
GND -> GND
Подключили считыватель к Arduino Nano - стабильно получаем 26 бит.
Что мы делаем не так? Похоже, что-то тривиальное не учли, но сами понять пока не можем. Ткните носом по возможности. Спасибо!
Боюсь, что не хватает “реальности времени” на Wiren Board для этого считывателя. В протоколе Wiegand, если я правильно помню, допустимы разные времена. Видимо у этого считывателя они особенно маленькие.
Варианты решения: использовать Dallas или RS-485, использовать другой считыватель, использовать Arduino Nano в качестве конвертера во что-то, например в UART.