Кодовый замок

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

Что это? Де-факто, это простой кодовый замок. Вот только вместо привычных кнопок с цифрами, в качестве ключа использовался … ключ 🙂 Некий плоский элемент с отверстиями. 

Как использовался этот прибор? На локации были разбросаны ящики. Каждый ящик был заперт этим замком. Для открывания ящика нужен ключ. Ключ надо было сделать «самому». Т.е. игроку надо было сначала добыть «болванку» ключа, а затем чертеж/схему. Проковыряв нужные отверстия он мог открыть нужный ему ящик. Или добыв схему он мог прийти к мастеру, который и изготовит ключ.

Железо

Для пояснения решил привести вид собранного девайса. По нему ориентироваться нагляднее, чем по схеме.

Вид с обратной стороны

Что мы видим?

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

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

Ряд светодиодов нужны для индикации кода считанного ключа.

Две кнопки нужны в верхнем углу нужны для переключения режимов работы девайса. Они доступный для пользователей, так как «торчат» наружу.

Кнопка в нижнем правом углу нужна для программирования мастер-ключа. Доступ к ней только после вскрытия корпуса.

Окно в плате, обрамлённое оптопарами – «замочная скважина». Через окно считывается ключ. Предусмотрен вариант как для установки оптрона на основе дискретных компонентов, так и использования фотоинтераптора. На 3D изображении видны оба варианта.

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

Схемотехника.

По схеме тут говорить особо нечего. Вполне типичное включение кнопок, светодиодов, зуммера, щелевых оптронов.

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

Логика работы.

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

Игровые ключи – те, которые на руках у игроков. В одно устройство можно запрограммировать несколько игровых ключей, но как правило, на один замок приходится по одному игровому ключу. Пока так хватало.

Кстати, сам ключ выглядит вот так.

Суть в том, что отверстия очень бодро заливаются парафином и достаточно хорошо «ковыряются» в полевых условиях. Как вы можете видеть, есть два ряда отверстий. Каждый ряд считывается своей оптопарой. Код состоит из одно байта. Один ряд определяет количество нулей, другой ряд количество единиц. В каждом столбце должен быть вскрыто только одно окно. Оба закрытых или оба вскрытых окна не допускается, иначе будет ошибка чтения ключа.

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

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

Процесс занесения ключей в память.

На устройстве имеются три кнопки: SB1, SB2, SB3.

Срабатывание кнопки фиксируется по отпусканию.

Нажатие на кнопку SB3 аналогично считыванию мастер-ключа.

SB3+SB1 – режим записи пользовательского ключа (сканированием)

SB3+SB2 – режим записи мастер-ключа.

Подтверждение записи и выход из режима – нажатие на SB3.

В режиме записи ключа мастера красный светодиод горит, зеленый мигает.

В режиме записи пользовательского ключа, красный мигает, зеленый горит.

Переход между режимами возможет только через выход из текущего (нажать на мастер-кнопку)

Контроль аккумулятора. 

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

Интервалы мигания светодиодов.

Короткая вспышка (КВ)– 50 мс.

Коротка пауза (КП)100 мс

Длинная вспышка (ДВ) 250мс

Длинная пауза (ДП) 1000мс

Критерий заряда батареи.

12В и более – заряжена полностью Зел (КВ-КП-КВ-ДП)

11.9-9.0 – средний уровеньЗел (КВ-ДП)

8.9 – 8 низкий уровень Кр (КВ-КП-КВ-ДП)

Менее 7,9 – села. Кр (КВ-ДП)

 

В качестве «понижайки» юзаю вот этот китайский DC/DC.

Конструкция.

Устройство крепится «плоской» стороной к стенке ящика. В стене делается прорезь для ключа. Аналогично можно закрепить на двери шкафа, например. Наружу выводятся два статусных светодиода и секретный разъем для внешнего питания. После подачи внешнего питания всё равно нужен ключ для открывания. Автоматом он от внешки не откроется.

 

А вот так выглядит девайс в реале.

 

Как прошить девайс? 

В приложении к статье есть *.bin файл, который загружается во флешку микроконтроллера при помощи ST-link (или китайского клона) программатора. Программатор подключается через разъем XP2. Используемый софт: STM32CubeProgrammer. Качается бесплатно с оф.сайта компании. 

Косяки в конструкции корпуса.

Не хватает «шахты» ключа для обеспечения движения горизонтально земле. В данной конструкции ключ, пока не попадет в прорезь крышки, может «пикировать»/«кабрировать» По-хорошему, нужно сделать «коридор» со стороны крышки. Это стабилизирует ключ во время движения после выхода ключа из печатной платы.

 

Что в приложении к статье. 

В приложении вы найдете pdf файл со схемой, обе стороны PCB (в масштабе 1:1, отзеркалено), виды TOP/BOT для монтажа, прошивку для MCU в виде *.bin, файлы для печати корпуса + файл для изготовления ключа. 

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
BL1, BL2 Фототранзистор L-3DP3C (L-32P3C) 2 Фототранзистор 3мм
BM1 Динамик HCM1203X 1 зуммер
 
C1, C2 Конденсатор 20 пФ 2 GRM2165C1H200J** SMD0805
C3, C6 Конденсатор 4.7 мкФ 2 GRM31CR71H475KA12L SMD1206
C4, C5 Конденсатор 0.1 мкФ 2 GRM21BR71H104K SMD0805
 
DA1, DA2 Оптрон ITR-9608 2
DD1 Микроконтроллер STM32F030K6T6 1
DD2 Регистр 74HC595D 1
DD3 Модуль DC/DC D-SUN 1
 
FV1 Диод SMAJ12A-TR 1
HL1-HL8 Светодиод GNL-3014SRD 8 Линза 3мм
HL9, HL10 Светодиод L-34SF4C 2 IR Led 3мм
 
R1-R8, R11, R16 Резистор 200 10 RC0805FR-07200RL SMD0805
R9, R10, R15, R20-R24, R26 Резистор 4.7 кОм 9 RC0805FR-074K7L SMD0805
R13 Резистор 0 1 Перемычка RC0805FR-070RL SMD0805
R12, R17 Резистор 10 кОм 2 RC0805FR-0710KL SMD0805
R18, R19, R25, R29, R30 Резистор 10 5 RC0805FR-0710RL SMD0805
R27 Резистор 100 кОм 1 RC0805FR-07100KL SMD0805
R28 Резистор 13 кОм 1 RC0805FR-0713KL SMD0805
 
SB1, SB2 Кнопка 3-1825910-1 (FSM16JH) 2 Шток 16мм
SB3 Кнопка 1825910-6 (FSM4JH) 1 Шток 4мм
 
VD1, VD2 Диод VS-15MQ040-M3/5AT 2
VT1, VT4, VT5 Транзистор IRLML2502 3
VT2, VT3 Транзистор STN3NF06L 2
 
XP1, XP5 Разъём KLS2-306V-5.00-02P-2S(С) (DG306-5.0-02P-12) 2 Шаг 5мм
XP3, XP4 Разъем DJK-02A 2 Гнездо для джека
XP6, XP7 Разъем CWF-2 2 Вилка для LED (не забыть про ответную часть)
ZQ1 Кварц HC49SM-8.000MHz-20pF 1 Любой 8МГц 20pF.