Wiegand 26 описание протокола. Гипермаркет видеонаблюдения и систем безопасности. Поддерживаемые форматы Wiegand

Wiegand - простой проводной интерфейс связи между устройством чтения идентификатора (карточки) и контроллером, широко применяемый в системах контроля доступа (СКУД).

Предназначен для передачи уникального кода карты или pin-кода с клавиатуры в контроллер СКУД .

Интерфейс не имеет официального стандарта. Конкретные реализации интерфейса в железе исходят из общей изначальной идеи и практической совместимости с существующим оборудованием.

История

Изначально интерфейс применялся в считывателях магнитных карт и был максимально оптимизирован под простейшие считыватели. В сущности это был простой выход усилителя чтения. Из-за распространенности магнитных карт этот интерфейс стал стандартным де-факто. Позже магнитные карты были вытеснены бесконтактными картами (RFID) однако интерфейс был сохранен неизменным в целях совместимости оборудования.

Разновидности

Существует несколько разновидностей интерфейса Wiegand, различающихся цифрами в названии интерфейса. Эта цифра в названии обозначает количество бит в посылке.

Наиболее распространенные считыватели и контроллеры СКУД поддерживают следующие варианты Wiegand:

  • Wiegand-26. Самый распространенный. Состоит из 24 бит кода и 2 бит контроля на четность.
  • Wiegand-33. Состоит из 32 бит кода и 1 бита контроля на четность.
  • Wiegand-34. Состоит из 32 бит кода и 2 бит контроля на четность.
  • Wiegand-37. Состоит из 35 бит кода и 2 бит контроля на четность.
  • Wiegand-40. Состоит из 40 бит кода, контроля на четность нет.
  • Wiegand-42. Состоит из 40 бит кода и 2 бит контроля на четность.

Существуют разновидности считывателей с длиной Wiegand до 128 бит. На самом деле количество бит в формате Wiegand может быть практически любым разумным. Когда встречаешь новую цифру в названии остается неясным только наличие контрольных битов четности и методика их расчета.

Существуют и некоторые другие названия для аналогичных интерфейсов. Распространен, например, интерфейс KSF который является фактически Wiegand-32.

Электрическое подключение

Для связи между считывателем и контроллером СКУД используется трехпроводная шина - два провода сигнальных, один земля. На рисунке приведена классическая схема подключения, из нее очевидны и электрические параметры интерфейса.

Максимальная длина линии связи сильно зависит от грамотного выбора кабеля (основные критерии - низкая погонная емкость, низкое омическое сопротивление) и грамотного построения схемы развязки питания считывателя и контроллера. Обычные значения, приводимые поставщиками оборудования - до 150…250 метров.

Формат данных

Передача данных

Передача ведется короткими импульсами. Наличие импульса в линии «Data0» означает что был передан лог.0, наличие импульса в линии «Data1» означает что был передан лог.1. Ширина импульсов и их период сильно варьируется в зависимости от изготовителя считывателя. Ширина импульсов обычно в диапазоне 20…200 мкс. Период следования импульсов - 300…3000 мкс.

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

Разделение кадров осуществляется по таймауту. Реально минимальное время между кадрами 0,5 сек., рекомендуемый таймаут для контроллера СКУД - 50…250мс.

Контроль на четность

Если имеется контроль по четности, то к битам кода карты добавляются два бита - один перед кодом, другой после. Соответственно весь код карты делится ровно посередине на две части. Четность старшей половины кода контролируется первым битом, младшей - последним. Если количество бит в коде нечетное, то центральный бит кода входит в оба контроля четности.

Первый бит четности (старшей половины кода) ставится в 1 если количество единиц в его половине кода нечетное. Последний бит четности (младшей половины кода) ставится в 1 если количество единиц в его половине кода четное.

Надо заметить, что встречаются считыватели не подчиняющиеся этому правилу контроля четности. Поэтому реально большинство универсальных контроллеров СКУД просто игнорируют контроль на четность. Кроме того, некоторые форматы бесконтактных карт несут информацию о количестве бит кода и четности прямо на карте, соответственно считыватель не может никоим образом влиять на реальный выходной формат данных. Таков, например, формат HID ProxPass, Indala ASP и др.

Wiegand и клавиатуры для ввода pin кода

Некоторые СКУД имеют возможность двойного удостоверения личности: поднесением карты и набором pin-кода на клавиатуре. Обычно при этом цифровая клавиатура вмонтирована в считыватель и набранный код передается также по интерфейсу Wiegand. Обычно передается каждая набранная цифра индивидуально с помощью Wiegand-4.

Контроллер предназначен для применения в простых системах контроля доступа. Контроллер работает с замками, которые открываются подачей или снятием напряжения. Принцип работы контроллера основан на сравнении ранее занесенных ключей с кодом поднесенного ключа. При совпадении кодов активируется выход на замок на заданное время. Контроллер работает с контактным считывателем ключей Touch Memory, либо с бесконтактными считывателями Touch Memory или Wiegand-26.
Рекомендуется устанавливать контроллер в монтажную коробку EB-820 (65х65х18мм).

Особенности

Интерфейс подключения считывателя: Wiegand 26 , Dallas TM.
. Количество подключаемых считывателей (контактный или бесконтактный) - 1.
. Количество подключаемых кнопок -1.
. Количество используемых мастер-ключей - 2.
. Подключение и управление всеми типами замков.
. Защита от залипания кнопки «выход».
. Возможность переноса базы пользователей в сетевую версию СКУД.
. Режим «Автоматическое занесение жетонов в память контроллера».
. Компактные габариты устройства для размещения его внутри замка.
. Увеличенное расстояние между считывателем и контроллером - до 35 м (в случае применения бесконтактных считывателей STORK - Fly 2 / Fly 3)
. Режим работы «Триггер» - управление работой исполнительного устройства (вкл/выкл): одно касание ключа - исполнительное устройство закрыто, повторное - открыто.
. 5 байтная защита кода жетона.
. Простой, интуитивно понятный режим программирования.

Возможности

Программирование пользователем двух мастер-ключей.
. Программирование с помощью мастер-ключа до 900 шт пользовательских ключей.
. Энергонезависимая память для хранения информации о пользовательских ключах.
. Программирование с помощью мастер-ключа времени открывания замка от 0.5 до 127 сек, с шагом 0.5 сек.
. Удаление с помощью мастер-ключа всех пользовательских ключей.
. Дополнительная возможность открывания замка с помощью кнопки «открыть».
. Защита от статического электричества.
. Индикация всех режимов работы (встроенный зуммер, светодиод).
. Замена мастер-ключей без обнуления базы пользователей;
. Обнуление базы пользовательских ключей без удаления мастер ключей;
. Режим "Автоматическое занесение жетонов в память контроллера". Каждый новый идентификатор, поднесенный к считывателю, записывается в память контроллера и одновременно инициируется режим прохода.

Технические характеристики

Напряжение питания контроллера 9 - 15В (DC).
. Ток потребления контроллера при U пит. = 12 В:
- в режиме ожидания не более 15 мА.
- в режиме коммутации не более 30 мА.
. Выход управления замком ток не более 3 А.
. Выход управления индикацией открытый коллектор транзистора с резистором 1 кОм, ток не более 30 мА.
. Расстояние от считывателя до контроллера:
- Touch Memory при сечении кабеля 0,22 мм² не более 100м.
- Wiegand-26 при сечении кабеля 0,22 мм² не более 100м.
. Тип ключей DS1990A, RFID карточки/брелки
. Встроенная энергонезависимая память EEPROM
. Максимальное время опознавания ключа 0,7 сек.
. Перемычка для выбора типа замка электромагнитный, электромеханический
. Рабочий диапазон температур от -35°С до +50°С.
. Относительная влажность не более 90%.
. Габаритные размеры (ДхШхВ) 47х32х13 мм.

Комплект поставки

Контроллер -1 шт.
. Перемычка - 3 шт.
. Инструкция - 1 шт.
. Упаковка - 1 шт.

Автономный контроллер СКУД LC-1DW (Wiegand, TM), Контроллер СКУД автономный

Деятельность нашего интернет магазина видеонаблюдения охватывает весь спектр оборудования систем безопасности и охраны, который включает в себя:

и многое другое

Осуществляя поставки по всей России, наша компания доставляет товар даже в самые отдаленные регионы страны. Мы стараемся удовлетворить самого требовательного клиента.

Специалисты "Актив-СБ" понимают специфику работы систем безопасности и видеонаблюдения не только в Москве, но и в удаленных регионах со сложными климатическими условиями. Наши сотрудники предложат вам наиболее приемлемые как по функционалу, так и по стоимости варианты, расскажут об их возможностях и обоснуют необходимость использования тех или иных технических систем.
Торговый дом систем безопасности Актив-СБ проводит сервисное и гарантийное обслуживание проданного оборудования, прием и проверку товара ненадлежащего качества, осуществляет обмен неисправного оборудования.

Нашими клиентами являются коммерческие организации и конечные потребители, монтажные компании и государственные предприятия. Более 50 000 зарегистрированных пользователей корпоративного сайта имеют доступ к постоянно обновляемой базе технической документации, сертификатам по современным системам безопасности, а так же участвуют в партнёрской программе и специальных акциях проводимых компанией.

Для удобства наших взаимоотношений с клиентами, мы сотрудничаем с монтажными организациями, которые готовы выполнить монтаж систем видеонаблюдения любой сложности и всегда придут к вам на помощь. Поэтому, при необходимости, вы можете не только приобрести у нас оборудование, но и, например, заказать установку систем видеонаблюдения или провести техническое обслуживание других систем безопасности.

Работа нашего гипермаркета систем безопасности основывается на принципах честности, открытости и порядочности. Мы с уверенностью смотрим в будущее, стремимся c каждым днем развиваться и совершенствоваться.

Это - кодовый замок на 4 двери с очень большими возможностями. Скорей всего он вам не нужен.
А мне надо было запилить в одной конторе 4 офисные двери и чтобы решились все вопросы с ключами, т.к. там постоянно толчется много всякого народа без выходных и сна. На входных дверях такой контроллер уже повесили.

Я первый раз сталкиваюсь с такими системами, поэтому пришлось как обычно нырнуть во все эти тонкости. Тут хочу написать, с чем я столкнулся, чтобы вам потом меньше работы было.
В ебее уже у этого продавца закончился такой набор, но его легко найти по названию заголовка.

Какие задачи должна решать эта система? Почему выбрал ее, а не другие автономные кодовые замки?
Эта система подключается к сети и позволяет с компутера мониторить в реальном времени открытые двери, проходящий персонал, показывая фотки, регистрировать время прихода-ухода, управлять лифтом через дополнительную плату, управлять одной дверью для контроля входа и выхода по карточке, мониторить открытую дверь, включать сирены, вести учет обедов по карточкам в столовках и вроде еще что-то, все так сразу и не упомнить.

Сам контроллер работает автономно от сети, в него загружаются пользователи и настройки, а так же хранится лог срабатываний, который иногда или в реальном времени может выгружаться софтом.
Софт используют файл ms access или же сетевую ms sql.
Количество пользователей до 20000, количество записей логов до 100000.

Софт написан на.net, поэтому легко посмотреть исходники. В исходниках можно найти пароль на базу.
168168
Для просмотра базы нужна прога
Пароль для входа в меню дополнительных настроек 5678.
Логин при первом запуске проги abc, пароль 123.

Есть немецкая версия софта, которая стоит 80 евров. Она уже обфусцированна и с ней идет усб ключ. Без него не не стартует.

Для моего случая нужен был считыватель с кнопками, т.к. есть персонал, который будет постоянно там работать, а есть временно приходящие, практиканты, уборщицы. Выдавать им карту нет смысла, проще и дешевле выписать пин и срок его действия. Персонал можно объединять в группы и подгруппы.
Считыватель без кнопок конечно дешевле.

Как видно на картинке, набор состоит из нескольких частей.









Последние - это кнопка принудительного открытия двери изнутри и блок питания на 12в для защелок. В моем случае это не понадобится.
Обычные защелки потребляют 0.7а от 12в. Они рассчитаны на кратковременное срабатывание.
Есть защелки с фиксацией и взводом.
Если вам надо дверь открытой держать, то есть защелки с небольшим рычажком. Его надо перевести в другое положение и тогда защелка не будет фиксироваться.

Защелки со взводом имеют пимпочку возле язычка. На такую защелку подается импульс тока и она уже разблокирована. Нужно просто толкнуть дверь и она откроется. Если дверь захлопнется, то защелка заблокирует ее как обычно. Если же пимпочки нет, то дверь можно открыть только когда подается напряжение. Все защелки этого типа не рассчитаны на долговременную работу и сильно нагреваются.

При установке защелки ставьте на ее контакты защитный диод, т.к. на плате контроллера его нет, хоть и стоятваристоры. Но длинный провод и довольно приличный ток превращают все это дело в открытую колебательную систему на частоте коротких волн, что может привести к глюкам контроллера и ненужными искрам на контактах реле. А так я просто подсоединял контакты к 12в бп и при отключении вообще никаких искр не было.

Есть еще защелки, которые разблокируются, когда на них не подается напряжение. Их ставят на запасные выходы.
Есть еще магнитные держатели дверей, на них подается ток и магнит с силой в 300кг удерживает дверь. Вот для таких держателей в комплекте идут 2 блока питания.

В моем случае импульс будет 1 секунду и блока питания в черном ящике с запасом хватит для этого. На радиаторе стоит транзистор в то220. Там собрана схема стабилизации напряжения и заряда свинцового акума.

Теперь теория по поводу протокола wiegand 26.
Как-то в одной конторе сидел мужик и вдруг его осенило. Типа можно магнитные карты использовать как пропуск вместо покупок. И запилил интерфейс имени себя.

На самом деле конечно же все было не так. Виганд открыл какой-то эффект, суть которого объясняется на видео.

Если вы что-то поняли, то напишите в каментах человеческим языком.

У интерфейса значит есть дата0 и дата1. По одному проводу передаются нули, а по другому единицы.
Передаются они импульсами притягивания провода к земле.

Код делился на код здания и код карты. На это выделялось 24 бита и еще 2 бита по бокам для контроля четности. Для тех времен было норм. Сейчас это вызывает лютый смех. Ведь у виганда нет двухсторонней связи, нет шифрования и контроля целостности данных, каждый контроллер это отдельный кабель в 5 проводов. Нет единого стандарта.

Но все продолжают клепать этот хлам. Я когда еще не вошел в тему, то думал, что они все соединяются по рс485. Можете представить себе мой шок, когда выяснилось, что придется тянуть кучу проводов. А ведь можно было бы тянуть по 4 провода в одном кабеле и в каждом считывателе сделать вход для датчика двери и реле для замка. Но есть считывали и с таким интерфейсом, и рс232 есть. Правда почему-то дороже и редкие в продаже. Но тянуть провод от замка и от геркона вам все равно придется.





А это уже я сковырнул плату.



Контроллер nxp, пзу 25 серии, часы реального времени и ethernet phy. Ничего интересного.

Так выглядит плата контроллера. На вигандах есть еще выход на светодиод и пищалку. С этим отдельно надо разобраться.
Индикатор сис должен мигать, показывая, что контроллер не завис. ИН показывает принятый пакет от считывателя. Ошибка иногда загорается, если данные не зашли в контроллер или сеть отвалилась.

Чем отличается считыватель в плане совместимости в контроллером? КАк я сказал выше - стандарта в формате данных нет. Т.е. если поднести карту, то выдается сразу весь код. Если же вы будете набирать пин, то будет передаваться 4х битный бцд код при каждом нажатии. Контроллер должен понимать завершающий символ. В данном контроллере это последовательность esc 111 ent. (как вариант *111#)
Есть более дорогие считыватели, которые могут передавать пин в таком режиме, а могут в режиме 26 бит. Это настраивается в самом считывателе. Либо в софте контроллера (не в этом) бывают опции настройки и интерпретирования данных.

У меня сначала не получалось настроить софт на пин, показывал ошибку в виде неправильного пароля. Я думал, что набранный код интерпретируется неправильно из-за режима 26 или 34 бит, но оба эти режима никак не влияли на ошибку. Я списывался с продавцом и он тоже тупил, сказал, что считыватель работает только в режиме карта + пин, когда надо набрать код и потом поднести карту. Но в конторе стоит такой же контроллер, правда другой считыватель и просто пин там работает.

Что посмотреть, что там вообще передает считыватель, я собрал макет на ардуине, залил тестовую прошивку и вот.



Как видно - при нажатии кнопок передается только 4 бита бцд код (режим виганд 6, т.к. там еще 2 бита четности).
Если же мы поднесем карту, то выдаст
Bits=26
RAW Binary=10100010111000011100110110
Это 4572059, что и нарисовано на метке.

Это и было тем самым подводным камнем. Ниже я покажу этот момент.

Вторым камнем был сигнал управления светодиодом и пищалкой. По умолчанию на считывателе горит карсная полоска. Если синий и желтый провод замкнуть на землю, то будет гореть зеленый и громко пищать. При правильном коде должен быть длинный 1с сигнал, а при неправильном 4 коротких. Но считыватель не реагировал. Хотя уровень напряжения менялся, но беда в том, что он не падает ниже 2в, а для срабатывания светодиода надо 1.7в. А с пищалкой еще хуже - она начинает тихо свистеть при 1.7в, а чтобы громко и четко пищала, то надо 1.2в минимум. Контроллер не притягивает нормально к земле, т.к. его выход защище парой резисторов по 470ом + еще 10к подтянут к 5в на входе. Мне пришлось городить плату на 74245 буферах, тогда срабатывает четко. Еще хочу сделать 4 выхода на оптопары для подключения к входам сигнализации видеорегистратора, чтобы на таймлайне ставились метки. В моем случае одна камера видит 4 двери. Но пока что-то я туплю со схемой и оптопара не открывается.

Напаял еще туда транзистор для оптопары, но похоже надо диоды убрать и поставить на входы.
Все 4 считывателя должны идти на одну оптопару, т.к. 4 двери в конторе под одной камерой.

Еще к контроллеру дополнительно можно купить плату на 1 вход и 4 выхода.

Ви таки спросите, зачем тебе колхоз с платой, если уже есть плата с реле?
Есть-то она есть, только в софте нет аларма на неправильный или правильный пароль.

Таки а где же софт уже?

Ищите там строчку
software Access controller Software-20171227 16.2 MB Download
Это самая актуальная версия.

После запуска идем сразу tools - extended functions, вводим пароль 5678.
Вкладка configuration, ставим галку activate access keypad. Перезапускаем. (появился сверху кнопка Pwd MGT.)

Жем слева на большую шестеренку конфига, там выбираем контроллеры.

Жмем поиск, контроллер найдется, если он в физической сети. Добавляем его. Потом жмем на добавленном контроллере 2 раза, откроется окно настройки. Если вы используете более одного контроллера, то там есть зоны. У меня так и есть. Один контроллер управляет входными дверями на этажах, а второй офисными кабинетами на одном этаже.

Жмем далее и попадаем на окно маркировок дверей.


Обзываем двери, выбираем состояние двери. По дефолту они управляются контроллером или могут постоянно быть открытыми или закрытыми.
Так же выбирается время открытия в секундах. В моем случае достаточно короткого импульса. Тут вы не можете выбрать режим постоянного удержания открытой двери. Это называется door as switch. Требует геркона и включается через запароленный раздел.

Галочка attendance позволяет записывать в лог время срабатывания. Это полезно для опции учета рабочего времени.

В меню department создаем отделы и даже подотделы.
Потом идем в персонал.
Там есть пакетное добавление карт и есть ручное добавление. В пакетном можно использовать как усб считыватель, так и выбрать считыватель на двери.
Потом можно выдать человеку рандомную карту из пачки, которую забили под конкретный отдел. Если есть настольный усб считыватель, то ставим курсор в поле card id и проводим картой. Прога сама найдет запись с этой картой, кликаем 2 раза и вбиваем туда имя и фамилию. Очень удобно.

Или же вбиваем руками, но в поле card id тоже можно ставить курсор и считывать карту. Нужен только считыватель, который эмулирует усб клавиатуру и пишет цифры в любом текстовом поле. У меня в комплекте шел, хотя в лоте не было его.

А что там с пинами?
Вот тут я провозился прилично, т.к. в мануале ничего не описано. Сколько читаю мануалы - они все капитанские, как будто для даунов. Нигде не пишут, что это за функция и для чего ее использовать (имеется в виду не конкретно этот контроллер).

Теперь жмем кнопку вверху Pwd MGT.





Далее добавляем нового пользователя. В поле карты пишем пин. Не должен начинаться с нуля и не должен быть больше 65535.
В поле PIN удаляем все зведочки. Если нужна двойная авторизация карта + пин, то надо активировать галочку в первой вкладке на скриншоте выше.
Стандартный пин 345678.

Пин вводится так: esc pin ent или * pin #. На некоторых считывателях звездочку в начале не обязательно.
Пин не может начинаться с нуля, он игнорируется.

Дальше раздаем права доступа.



Жмем allow and upload. Данные загружаются в контроллер.
База подготовлена, теперь надо ее залить в контроллер в виде настроек самого контроллера и привилегий.
Жмем слева кнопку operations, выбираем все двери, жмем upload.

Тут важный момент. Базу можно только залить в контроллер. В случае повреждения базы ее нельзя будет слить обратно. Для этого есть функция бекапа.
С контроллера можно слить транзакции или даже сливать и мониторить в реальном времени.

Вот вроде и все. Для безопасности в настройках контроллера можно выбрать доступ с конкретного ип адреса.
Для тех, кто хочет сделать свою систему и прикрутить вебморду, то вот есть целый класс на пхп и питоне.
+17 Добавить в избранное Обзор понравился +43 +68

Немного о Wiegand протоколе

Протокол wiegand26 появился в 80х годах как промышленный стандарт для систем контроля доступа - трехпроводная линия соединяет считыватель магнитных карт с платой контроллера, который обеспечивает хранение и контроль номеров карт.
В настоящее время магнитные карты практически вытеснены бесконтактными картами RFID, а протокол wiegand 26 был расширен и дополнен, но активно используется до сих пор как стандарт в большинстве охранных систем.

Wiegand протокол - физический уровень

Для передачи данных используются два провода - D0 / D1 и один для объединения земли ридера и контроллера. С учетом линии питания, минимально для подключения считывателя необходимо 4 жилы. Остальные 3-4 используются для управления дополнительными функциями считывателя.

В состоянии покоя, линии D0и D1 имеют высокий уровень (+5V) или неопределенный в расчете на подтяжку на стороне контроллера. Для передачи бита данных, считыватель притягивает одну из линий к земле на 50мкс, отпускает на 2мс и передает следующий бит притягивая соответствующую линию на 50мкс и снова пауза в 2мс. Если пауза между передачами больше 2мс, значит передача данных завершена.
Состояние бита 0 или 1 определяется по тому, какая линия D0 или D1 была притянута к земле в момент передачи бита. Линия D0 отвечает за нули, линия D1 за единицы.

Для наглядности приложу картинку

Однако, следует учитывать, что у разных производителей ширина импульсов и пауз между ними может отличаться очень сильно. Импульсы от 20 до 200 мкс и паузы от 200 до 3000мкс.
Если быть точнее, то стоит говорить не про промежутки (паузы), а про длину посылки одного бита, впрочем, это видно на графике, т.к. время считается от начала посылки одного бита, до начала посылки второго и включает в себя сам бит.

Wiegand протокол - логический уровень

На логическом уровне протокол wiegand26 состоит из 26 бит данных, внутри которых хранятся 2 номера - facility code и card number.
Facility code – нормер объекта или зоны
Card number – номер карточки доступа.

Первый бит используется для контроля первой половины данных (b1-b13) - если количество единиц в первой половине посылки нечетное, бит = 1
Следующие 8 бит (b2 – b9) - facility code (старший бит впереди)
Затем идут 16 бит (b14-b25) с номером карты (старший бит впереди)
Последний бит в посылке отвечает за контроль второй половины собранных данных (b14-b26) - если количество единиц во второй половине посылки четное, то бит =0

Более поздние версии wiegand протокола

В последнее время идет медленное вытеснение wiegand 26 расширенным вариантом протокола, где под коды выделяется не 26, а 32-40 бит + биты проверки четности. Общее количество бит в посылке, как и в случае с wiegand26, определяется по цифрам в названии протокола (wiegand33-wiegand42).
Существует так же огромное количество других разновидностей протокола с разными названиями и разным количеством бит, но по сути они все похожи и всё, что нужно выяснить это длину первой и второй части кода, а так же наличие битов четности.

Клавиатуры с wiegand

Некоторые считыватели совмещаются с клавиатурами и тогда контроллер охранной системы проверят карту и пин код набранный на клавиатуре. Чаще всего, пин код передается по одной цифре, длина посылки в таком случае всего 4 бита без битов четности. Но у разных производителей могут быть разные форматы. На практике мне несколько раз приходилось связываться с производителем и выяснять совместимы ли их системы со стандартом и часто ответ был «да, совместимо, но только в части карточек, для кода свой формат, мы его не разглашаем». Но имея анализатор сигналов, можно легко разобраться что и как передается, т.к. общий принцип остается неизменным. Ниже я приведу пример чтения wiegand26 для attiny2313 , который можно легко переделать в такой анализатор.

Номера зашитые в карточку

Формат Wiegand26, как уже было описано выше, содержит всего 2 кода - facility code и card number.
Facility code – это код здания или фирмы.
Card number - номер карточки.
Изначально предполагалось, следующая логика:
фирма 1 имеет карточки с facility кодом 1 и соответственно до 65535 карточек с уникальными номерами. Фирма 2 имеет карточки с facility кодом 2 и до 65535 карточек с теми же номерами что и у фирмы 1, но с другим facility кодом. Система контроля доступа проверяет facility код, если он совпадет с кодом принятым в этой фирме, проверяется номер карточки и если карточка есть в базе системы, дверь открывается. Если facility code не совпадает с принятым на данном объекте, система отказывает без проверки номера карты.
В большинстве современных систем, facility код частично утратил свой смысл и внутри объекта используются карты с любыми facility кодами, но общий принцип проверки остается похожим - сначала проверка короткого кода, затем проверка основного номера.

В более новых форматах длина facility кода увеличена в 2 раза - до 2х байт и номер карты увеличен в несколько раз. В отличии от некоторых других систем, коды на картах не являются уникальными и могут повторяться в разных партиях или у разных производителей. Только достаточная длина кода защищает от совпадения номеров карт.

Так же в расширенных форматах, может содержаться большое количество дополнительной информации, часто доступной для перезаписи, в которой может храниться либо информация о сотруднике (Ф,И,О, должность и тп), либо уникальные, записанные системой данные или уникальный неизменяемый код, которого нет в основной части протокола.

Мне не известно как точно работают расширенные форматы и как происходит их чтение. Желающим изучить работу системы подробнее, советую отправиться на сайт производителя таких систем или в google . Ключевые слова - Mifare, HID, RFID.

Карточки и частоты

В системах контроля доступа в основном используются 2 типа карточек - 125КГц и 13,5Мгц.
125КГц - наиболее распространенный формат, используется в основной массе считывателей, 13,5МГц более новый и чуть менее распространенный, но для для общения контроллера со считывателем эта информация не имеет значения, т.к. на стороне контроллера считыватель будет работать одинаково. Некоторые считыватели поддерживают обе частоты.
Карточки обоих форматов делятся на 2 типа - карточки доступные только для чтения и карточки с перезаписываемой памятью. В первом случае оба кода записаны при производстве карт и не меняются, во втором - номера можно менять при необходимости, например, при переводе сотрудника в другое здание, с другим facility кодом.
Обычно карты всех форматов несут общую стандартную часть в 26 бит, всё остальное читается по отдельному запросу системы, после чтения основной части.

Подключение RFID считывателя к attiny2313

Для экспериментов с RFID считывателем я накидал небольшую схему

Attiny2313 + стандартная обвязка - кварц 8 мгц, 2 конденсатора от кварца к земле, резистор от ресета к питанию, разъем программирования, разъем для связи с компом (через FT232 или MAX232). В дополнение 78l05 для питания контроллера.

Из обвязки необходимой для тестов считывателя только разъем для подключения самого считывателя (слева снизу), реле для замка, 2 джампера для выбора режима работы (ADD/DEL) схемы и для полноты картины я добавил ещё пару входов для геркона (МК) и для кнопки которая ставится с обратной стороны двери (REX).
На клеммы BEEP, RED и GREEN заводятся 3 оставшихся провода от считывателя, отвечающие за бипер, красный лед и зеленый лед соответственно. Управляются они нулем (PORTB.6=0 включит зеленый светодиод на считывателе).

Плата номер 1

Маленькая платка, которая поместится в небольшую пластиковую распредку.

Плата номер 2

Эта платка, более удобна как законченное устройство - все разъемы находятся на одной стороне и не нужно тянуть лишние проводники через плату. Как законченное устройство идущее в серию такой вариант будет предпочтительнее (оцениваю как профессиональный монтажник таких систем).
Однако на плате из защиты только конденсаторы на MK и REX входах, на питании. Строить полноценную систему на такой плате я бы не стал.
Так же на эту плату я добавил джампер для отключения реле - это может пригодиться, если используется только выведенный на клемник сигнал открытия двери (PD5). И ещё светодиод на питании - очень удобно в реальных условиях.

Вот так это выглядит в собранном виде

А вот плата с подключенным считывателем и омметром вместо замка на выходе реле.

Пример чтения wiegand26 для attiny2313

Замок на бесконтактных карточках.

Замок просто читает код с карты и проверяет есть ли такой в базе, если есть - открывает дверь.

Общий алгоритм:
1. Отловить и записать изменения на входах D0 и D1
2. Обработать полученные данные и выделить 2 кода
3. Произвести поиск по базе и при нахождении кода в базе включить реле на некоторое время
4. Очистить память от собранных данных и перейти к пункту 1.

Char dat; // массив для сбора 26 бит данных unsigned char fcode; // для facility code (0..255) unsigned int code; // для card number (0..65535) while(){ if(PIND.3==0){ // считыватель притянул D1 к земле dat[i]=1; // это D1, значит бит = 1 i++; while(PIND.3==0){}; } if(PIND.4==0){// считыватель притянул D0 к земле dat[i]=0; // это D0, значит бит = 0 i++; while(PIND.4==0){}; //ждем пока линия вернется в исходное состояние } if(i==27) { //если i=27, значит 26 бит собрано и больше данных быть не должно //теперь обработаем полученные данные b=0; for(a=9;a>1;a--){ //пробегаем через первые 8 бит в обратном порядке if(dat[a]==1) fcode=fcode+stepen(b); //если соответствующий бит =1, //прибавляем к коду степерь числа 2 //равную порядковому номеру бита //(2^0 , 2^1 , 2^2 и тд) b++; // увеличиваем порядковый номер бита с каждым шагом } b=0; // сбросить счетчик шагов for(a=25;a>9;a--){//то же самое для второй части посылки - 16 бит номера if(dat[a]==1) code=code+stepen(b); b++; } } //Если всё прошло успешно, на этом этапе у нас есть //facility code - в переменной fcode //card number – в переменной code //теперь нужно произвести поиск по базе //номера лежат в 2 массивах в eeprom //unsigned char fcode; для facility code //unsigned int code; для card number //MAX – константа задана в начале проекта, задает размер памяти // для attiny2313 это 40 кодов, больше не влезет for(i=0;i//проходим циклом по всему массиву // в цикле проверяем только facility code if(fcode == fcodedb[i]){ //если код совпал с кодом одной из ячеек //проверим для этой же ячейки номер карты if(code==codedb[i]){ //если номер карты тоже совпал... //...у нас есть полное совпадение, карта найдена card_found=1; // флаг = карта найдена break; //обрываем цикл, дальше искать не нужно } } } //проверим, было совпадение или нет if(card_found){//да было PORTD.5=1;//откроем замок PORTD.6=0;//включим зеленый индикатор (NB! Включается нулем) delay_ms(5000); //задержка 5 секунд на вход. PORTD.5=0;//закрываем замок PORTD.6=1;//выключим зеленый индикатор } else{ //совпадений не было - карта не найдена - в доступе отказано PORTB,0=0;//включим красный индикатор (NB! Включается нулём) delay_ms(3000); //задержка 3 секунды PORTB.0=1;//выключим красный индикатор } //вне зависимости от результата поиска обнуляем все данные fcode=0; // facility код code=0; // номер карточки i=0; // счетчик собранных битов card_found=0; // флаг поиска } //цикл уходит в повтор и крутится пока не появится новый сигнал }

В данном примере я проигнорировал все тайминги - не важно какой длины импульс, программа просто подвисает пока он не кончится. Не важно какие промежутки, главное успеть отследить начало следующего бита. Не важно сколько прошло времени после последнего бита - как только соберем 26, будем знать что конец и начнем обрабатывать данные.
Да, в таком варианте возможны проблемы - если будет сбой (наводка) и придет не 26 бит а меньше или больше система не узнает этого. Но это не столь важно - как только система доберет свои недостающие биты, она проведет проверки и сбросится к исходному состоянию. Таким образом будет пропущено не более 2х карт и не понадобится вмешательство. Для примера или бытового применения этого достаточно. А перед тем как пускать такой прибор в серию, стоит тщательно всё изучить и написать свой, более универсальный и правильный алгоритм.

Что ещё следует учесть при программировании системы

В данном примере, как и в большинстве известных мне систем, не производится проверка четности. Если карта прочитана не верно, считыватель отреагирует на неё как на неправильную карточку.
Но в таком варианте есть вероятность, что неправильно прочитанный код с чужой карты совпадет случайно с одним из правильных кодов. Это маловероятно, но возможно. Однако, такой проверкой пренебрегают так же многие известные производители охранного оборудования.

При программировании системы настоятельно рекомендую забить память полностью случайными данными или для каждой ячейки выставить флаг «ячейка пуста» и игнорировать такие ячейки при поиске. В более сложном варианте можно проходить по базе ровно столько шагов, сколько забито карт и при удалении проводить пересортировку с удалением пустот. Зачем это нужно? В любительских системах часто встречается одна беда - плохо написанная программа пробегает поиском по пустым ячейкам в которых все байты забиты нулями или FF. Для взлома такой системы достаточно эмулятора или карты у которой вписан код 00 или FF соответственно - такой код совпадет с пустой ячейкой и дверь будет открыта.