Рассматривая в предыдущей статье модуль считывателя бесконтактных карт EM-Marine RDM6300, можно понять, что этот модуль годится не только на то, чтобы получить актуальную информацию о коде бесконтактной карты, но и использовать его в качестве считывателя для контроллера СКУД (системы контроля и управления доступом). То есть микроконтроллер в этой конструкции будет не только обрабатывать приходящую от модуля считывателя информацию, но и сохранять и впоследствии сравнивать с новой полученной информацией о бесконтактной карте, а в случае совпадения открывать электрозамок (либо электромеханическую защелку).
Схема устройства:
В данной схеме используется микроконтроллер STM32F103C8T6 – недорогой и эффективный 32-битный микроконтроллер, ресурсы которого позволяют многократно совершенствовать конструкцию в будущем. Источником тактирования микроконтроллера является кварцевый резонатор частотой 8 МГц. Для простоты использования устройство оборудовано LCD символьным дисплеем на базе микроконтроллера HD44780. Размер экрана составляет четыре строки по двадцать символов, при этом используется все символьное поле дисплея, поэтому 1602 дисплеи использовать не получится. Меню на дисплее и работу устройства можно посмотреть на видео в конце статьи. Резистор R1 используется для ограничения тока подсветки данного дисплея – чем больше номинал, тем тускнее будет подсветка. Подстроечный резистор R3 регулирует контрастность дисплея. Подключение к микроконтроллеру используется стандартное по 4-битной схеме. Микроконтроллер STM32F103C8T6 не имеет энергонезависимой памяти, где лучше всего хранить информацию о записанных бесконтактных картах, поэтому было решено использовать внешнюю EEPROMпамять – 24LC02 в моем случае.
Данная микросхема имеет интерфейс I2C, по которому и соединяется с микроконтроллером. 24LC02 (или аналогичная память) имеет 256 байт памяти и адресацию в 1 байт. В данной версии прошивки устройства не поддерживается EEPROM с адресацией 2 байта. Выводы А0, А1, А2 микросхемы 24LC02 должны быть подсоединены к минусу питания – эти выводы определяют адрес микросхемы, поэтому если этого не сделать, то микроконтроллер не будет записывать информацию. В качестве считывателя бесконтактных карт используется модуль RDM6300.
Этот модуль имеет интерфейс UART, по которому и соединяется с микроконтроллером. Это первый способ получения доступа – по бесконтактным картам. Второй способ – это ввод пин-кода при помощи энкодера.
Способ ввода пин-кода напоминает способ, используемый в сейфах – необходимо вращением ручки энкодера ввести четырехзначный пароль, после чего доступ будет открыт. Ввод осуществляется следующим способом: из дежурного меню необходимо нажать кнопку энкодера, появится меню ввода пин-кода, вращаем ручку энкодера, набирая необходимую цифру, далее нажимаем еще раз кнопку энкодара и переходим на ввод следующей цифры и так до конца. В случае правильного ввода открывается доступ и загорается светодиод HL1. Если пин-код введен неверный, то загорается светодиод HL2. При этом на дисплее отображается соответствующая информация. Открытие электрозамка происходит при помощи размыкания контактов реле Rel1. Управляется реле микроконтроллером через транзистор T1. В схеме используется КТ815, однако можно использовать любой другой n-p-n транзистор с подходящими параметрами. Вся схема требует три уровня напряжения в данном варианте 12 вольт необходимо для работы реле и электрозамка или электромеханической защелки. 5 Вольт необходимо для LCD дисплея и модуля считывателя бесконтактных карт RDM6300. 3,3 вольта необходимо для работы самого микроконтроллера и EEPROM памяти. Можно было бы избавиться от уровня 12 вольт, используя реле с рабочим напряжением 5 вольт, но электрозамки и электрозащелки используют 12 вольт, поэтому этот уровень напряжения в любом случае останется в схеме. Электрозамок подключается к нормально замкнутому контакту реле, так как в рабочем состоянии должно подаваться напряжение – тогда пластина магнитится к электромагниту и дверь закрыта, при подаче сигнала о разрешении доступа реле перекинет контакт, напряжение снимется с электромагнита и дверь откроется. В случае использования электромеханической защелки ее необходимо подключать к нормально разомкнутому контакту реле и в целом ее работа инверсна электрозамку.
Для перехода в режим программирования устройства (занесение карт в память и изменение пин-кода) необходимо замкнуть перемычку Jmp1 и перезагрузить устройство отключив и включив питание или нажатием кнопки S1. В первом меню необходимо ввести новый пин-код (аналогично его вводу в основном режиме). После ввода пин-кода появится меню сохранения бесконтактных карт. Для перелистывания номеров карт в памяти используется энкодер. Для занесения карты в память необходимо ее поднести к рамке считывателя, после чего актуальная информация о карте появится в соответствующих полях на дисплее, и далее необходимо нажать кнопку энкодера, чтобы сохранить эту карту. Для удаления бесконтактной карты из памяти необходимо просто нажать кнопку энкодера когда в поле «Tag» отображаются все нули (если до этого сохранялась какая-то карт, то нули вместо реального номера карты появятся сразу после сохранения карты в памяти). Чтобы выйти из этого меню необходимо снять перемычку и снова перезапустить устройство. Появится основное меню.
Устройство собиралось и тестировалось на макетных платах (финального варианта пока что нет, чтобы трассировать печатную плату):
В качестве релейного модуля используется вариант с 5 вольтовым реле, чтобы тестировать устройство без 12-вольтового уровня напряжения – так проще отлаживать устройство. Светодиоды HL1 и HL2 использовались в одном корпусе двухцветного светодиода, который имеет 3 вывода, средний вывод – общий катод.
Кому понравилась задумка, и кто видит варианты улучшения конструкции, складывайте все предложения и замечания в комментариях к статье.
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
IC1 | EEPROM | 24LC02 | 1 | |||
IC2 | МК STM32 | STM32F103C8 | 1 | |||
IC3 | RFID считыватель | RDM6300 | 1 | |||
VR1 | Линейный регулятор | LM7805 | 1 | |||
VR2 | Линейный регулятор | AMS1117-3.3 | 1 | |||
T1 | Транзистор | КТ815 | 1 | или другой n-p-n | ||
VD1 | Выпрямительный диод | 1N4007 | 1 | |||
R1 | Резистор | 22 Ом | 1 | |||
R2 | Резистор | 100 Ом | 1 | |||
R3 | Подстроечный резистор | 10 кОм | 1 | |||
R4 | Резистор | 270 Ом | 1 | |||
R5, R7, R8, R10-R13 | Резистор | 10 кОм | 7 | |||
R6, R9 | Резистор | 1 кОм | 2 | |||
R14 | Резистор | 390 Ом | 1 | |||
C1, C2 | Конденсатор | 22 пФ | 2 | |||
C3, C5-C8, C10, C11 | Конденсатор | 100 нФ | 7 | |||
C4 | Электролитический конденсатор | 470 мкФ | 1 | |||
C9 | Электролитический конденсатор | 220 мкФ | 1 | |||
C12 | Электролитический конденсатор | 100 мкФ | 1 | |||
HG1 | LCD-дисплей | 2004a | 1 | |||
HL1 | Светодиод | Зеленый | 1 | HL1 и HL2 можно использовать как один двухцветный светодиод | ||
HL2 | Светодиод | Красный | 1 | HL1 и HL2 можно использовать как один двухцветный светодиод | ||
HL3 | Светодиод | Зеленый | 1 | |||
L1 | Антенна | 1 | В комплекте с RDM6300 | |||
Z1 | Кварцевый резонатор | 8 МГц | 1 | |||
Rel1 | Реле | hjr-3ff-s-z | 1 | или любое другое | ||
Jmp1 | Перемычка | Джемпер | 1 | |||
S1 | Тактовая кнопка | 1 | ||||
S2 | Энкодер | 1 | ||||