Проблемы с wiegand

Здравствуйте, пытаюсь подключить считыватель Matrix II к WB 8.5 по протоколу wiegand 26. Скомпилировал модуль ядра GitHub - wirenboard/wiegand-linux: Linux driver for reading wiegand data from GPIO. Tested for ARM 9G20 (linux stamp) Модуль успешно загружается. D0 считывателя подключен к A1 в режиме входа, D1 считывателя к A2 контроллера. Использую номера gpio 233 и 228 соответственно. Входное напряжение контроллера 12 В, на входах 4.6 В. Карта считывается, но на входы номер карты не передаётся.

В чём может быть проблема?

Добрый день.

gpio-233 A1 IN
gpio-228 A2 IN
А чем эти gpio заняты? Проверьте что не процесcом wb-mqtt-gpio

2026-03-02_15-47-26

Проверил, заняты модулем ядра. Оно не загружается, если gpio заняты

А вот тут на скриншоте они оба lo.
Что маловероятно, так как ширина значащих импульсов узка и они не могут быть (никогда) одновременно в 0.
Проверьте пожалуйста текущее напряжение на входах? Возможно - надо его подтянуть к +5

Напряжение на обоих входах 4.6 В Надо подтягивать?

Ну, в дежурном режиме все ж hi ожидаю.

Я тогда не очень понимаю… На входе же если больше 3.3 В, то это логическая единица, если меньше 1.5, то ноль. У меня 4.6, значит единица должна считываться

Лучше перепроверьте. Вот для прjверки - отключите устройство, соедините вход с Gnd. Затем с +5.


Подтянул +5V Out на входы А1 и А2. Напряжение стало 5В, но входы всё равно в статусе lo

Так, интересно.
Проверил, подав 5 на вход

echo 228 > /sys/class/gpio/export
cat /sys/class/gpio/gpio228/value
1

Ну и

cat /sys/kernel/debug/gpio |grep A2
 gpio-119 (A2 OUT                            ) 
 gpio-228 (A2 IN               |sysfs               ) in  hi 
 gpio-513 (EC A2               )

Может я что-то с подключением не понимаю..
Вот так у меня

А какой номинал резисторов подтяжки между +5 и входами? Я думал примерно 4,7 кОм.

Да, между +5 и входами резисторы на 4.7 кОм. Но входы всё равно в lo. Куда можно ещё копнуть?

Выгрузите модуль пожалуйста и проверьте стандартным wb-mqtt-gpio. То есть при чтении состояние входов должно меняться.

выгрузил модуль, читаю стандартным wb-mqtt-gpio, входы в lo

Выгрузил модуль, подключил ко входам кнопку. При чтении стандартным wb-mqtt-gpio состояние входов меняется. Модуль wiegand_gpio тоже через кнопку что-то считывает, но вот при подключении считывателя не работает. Может надо пересобрать модуль с другими таймаутами чтения gpio?

Лучше осциллографом глянуть что на входе точно что-то есть.

Могу, конечно, собрать эмулятор, проверить. Просто на ардуинке.
Но, как мне кажется - при чтении стандартным wb-mqtt-gpio для подключенного считывателя должен фиксировать импульсы.

Подключу считыватель к контроллеру СКУД, чтобы убедиться, что карты читаются. Может со считывателем что-то. Спасибо

Подключил считыватель к штатному контроллеру СКУД - все карты считываются без проблем. Значит считыватель и карты в порядке. Что-то в схеме подключения или в модуле ядра. Есть мысли что ещё попробовать?