Как была побеждена проблема считывания ID карт доступа в 1С для управления СКУД Parsec
Описание подхода решения проблемы взаимодействия со штатным оборудованием системы СКУД «Parsec».
- Описание
- Подробнее
Описание
Данная статья является освещением одного из возможных подходов по обходу ограничений штатного оборудования СКУД.
Исходная задача – интеграция со СКУД «Parsec» с 1С для возможности создания рабочих мест управления доступами с гибкой настройкой возможных действий пользователей. В ходе решения задачи, возникла проблема выдачи карт и определения пользователя карты. Стандартные считыватели турникетов воспринимают 2 стандарта карт: NFC (Mifare) и EMarin. В то же время настольные считыватели, которые были в наличии, могли считывать, либо карты стандарта NFC, либо карты EMarine. Решение с двумя считывателями у оператора, конечно, было сделано. Под считыватели были реализованы свои внешние компоненты 1C, удовлетворяющие стандартам подключаемого оборудования. Но, возникла неприятная ситуация: если на рабочем месте запускается управляющая программа СКУД «Parsec», то считыватели для 1С блокируются. Более того, считыватель NFC подключался к родной оболочке Parsec довольно «экстравагантным способом» — через специальное ПО, которое передавало ID считанной карты через буфер обмена. Это «решения» порядком раздражало операторов пропускной системы. При этом в этом ПО был зашит один алгоритм, а с течением времени, понадобилось расширить кодировку ID, для расширения количество карт. Во внешней компоненте, обслуживающей оборудование NFC, была сделана доработка, и ID в 1С передавался корректно, но… проблемы блокировок, настройки разрешений и два считывателя (не дешевых) на столе продолжали «портить кровь».
В результате долгих и безуспешных поисков решения два в одном, без блокировок и за относительно не большие $$$, был сделан вывод: надо паять!
В качестве источника идей, конечно же выступила платформа Arduino, а поставщиком «проверенных решений» Aliexpress)
Главным критерии выполняемого решения:
- Исключить написание каких-либо драйверов подключаемого оборудования для 1С. Воспользоваться уже имеющимися «из коробки» драйверами библиотеки подключаемого оборудования.
- Один считыватель передает ID для обоих видов карт NFC и EMarine
- Считыватель должен состоять из доступных компонентов и быть легко повторяемым (что бы по каким-то причинам, вышедшие из строя устройства, можно было их быстро заменить)
- Можно удаленно или несложно обновлять прошивку, в случае каких-то изменений
В результате проработки задачи был получен следующий прототип решения:
- На борту Arduino имеется виртуальный COM-порт, по данному порту осуществляется как прошивка, так и передача данных. В составе библиотеки подключаемого оборудования есть драйвер считывателя магнитных карт, который, как раз и является очень примитивным читателем COM-порта. Остается только написать скетч для Arduino выдачи в COM-порт строк нужного формата.
Выбор железок:
Основываясь на собственном опыте, в качестве «сердца» устройства был выбран модуль Arduino Pro Micro. У меня, почему-то, к нему сложилось очень доверительное отношение, т.к. в устройствах «малой домашней автоматизации», он ни разу меня не подводил, в отличие от однополчан рода Atmega328:

Для считывания ID EMarine остановился на модуле RDM6300. Довольно стабильная и неприхотливая железка:

А вот со считыванием NFC-идентификаторов пришлось повозиться. Изначально выбор был сделан в пользу широко известного модуля RC-522. Но по каким-то причинам, от модуля к модулю возникали проблемы с дальностью считывания. После некоторого промежутка работы, модули начинали зависать или вести себя «неадекватно».

Проведя ряд тестовых операций различных модулей из поднебесной, остановился на модуле PN-532. Немного дороже, но зато имеет хорошую дальность действия – 2-4 см и стабильность работы.

Сборка:
Для сборки конструкции выбрал самый обычный корпус 142х82х38мм:

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

