Привет, всем, попавшим сюда с просторов интернета. Не так давно я начал осваивать микроконтроллер Arduino. Приобретя парочку контроллеров, я решил оргпнизовать систему контроля и управлением доступа на базе rc522, стороннего веб-сервера управления данными и контроллерами.
Также мне стало интересно, можно ли модернизировать текущую СКУД и использовать уже имеющиеся считыватели Matrix III, который может работать как по Wiegand, так и как эмулятор DS1990A
Я решил подключить его к ардуино по Wiegand.
Библиотеку можно использовать эту https://github.com/sazanof/Wiegand-Protocol-Library-for-Arduino (форк).
Питания считывателя отдельно завел с блока питания на 12В. Конечно, Arduino UNO держит 12В, но я решил записать ее отдельно, по USB. На картинке ниже в колодке это оранжевый и бело-оранжевый.
Схема подключения считывателя Matrix III к Arduino UNO (Nano, Mega) по Wiegand запредельно проста:
Arduino pin GND - Matrix GND (земля общая у них) Arduino pin 2 - Matrix DATA0 Arduino pin 3 - Matrix DATA1
Все! Profit!
Открываем IDE Arduino. Тут я не буду учить вас добавлять билиотеки, думаю, вы это умеете делать.
Открываем примеры, ищем установленную библиотеку и открываем тестовый скетч:
#include <Wiegand.h> //подключаем библиотеку WIEGAND wg; void setup() { // открываем сериал Serial.begin(9600); wg.begin(); } void loop() { // если карта проситана, выводим данные в HEX или считываем номер if(wg.available()) { long unsigned int code = wg.getCode(); Serial.print("Wiegand HEX = "); Serial.print(wg.getCode(),HEX); Serial.print(", DECIMAL = "); Serial.print(code); Serial.print(", Type W"); Serial.println(wg.getWiegandType()); } }
Я немного изменил скетч, присвоив переменной code с типом long unsigned int значение wg.getCode()
Результат в мониторе порта будет такой:
Wiegand HEX = 55D4A8, DECIMAL = 5625000, Type W26 Wiegand HEX = 55D4A8, DECIMAL = 5625000, Type W26