Микроконтроллерный электронный замок. Кодовый замок Кодовый замок на микроконтроллере

Микроконтроллерный электронный замок. Кодовый замок Кодовый замок на микроконтроллере

Дело было вечером, когда на пороге офиса появилась настойчивая крупногабаритная женщина, предлагающая купить посуду известной марки. На следующий же день я получила от начальника (он же ) задание оградить его творческую натуру от нападок торговых представителей. Так появилась идея создания проекта под кодовым названием Hungry _ Wall . Конечно, сейчас существует множество служб, занимающихся контролем доступа в помещение. Но куда интереснее сделать электронный замок своими руками, особенно мне, начинающему программисту и электронщику.

Как говорится, главное правильно составить ТЗ, т.е.то, что мы хотим получить в результате.

  1. Создать систему распознавания ключей.
  2. Сравнивать ключ с базой, и при совпадении кода поднесенного ключа с одним из записанных в базе открывать замок.
  3. Снимать показания магнитного датчика, позволяющие идентифицировать состояние двери, и если дверь открыта, закрывать замок.
  4. Использовать таймер, по истечению которого замок закрывается, в том случае, если мы передумали входить/выходить. Это предусмотрено для того, чтобы “враги” не попали в секретное логово, воспользовавшись нашей переменой настроения.
  5. Обеспечить открытие двери с помощью кнопки, размещенной внутри помещения.
  6. Запись нового ключа в базу после поднесения ключа-мастера и, естественно, запись самого мастера.
  7. Удаление ключа из базы (feature).
  8. Система индикации для пущей привлекательности.

Полдела сделано, осталось самое малое – реализовать задуманное аппаратно и программно. Для этого необходимо:

  1. Электрический замок
  2. Считыватель прокси (em-Marin) карт "CP-Z" фирмы IronLogic
  3. Ключи или карточки для записи в базу
  4. Кнопка
  5. Блок питания 12 V
  6. Корпус (чтобы все было аккуратно и красиво)
  7. Электроника – микроконтроллер ATmega 8, «кроваткаХ28», стабилизатор КР1158ЕН5В, транзистор IRLU 024 N , 6 разъемов KLEM 2, 1 разъем WF 3 (COM-port), конденсатор, светодиоды и резисторы по вкусу.

Разводка платы показана на схеме 1.

Внутренности платы показаны на рисунке 1.

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

Блок замка включает в себя непосредственно электрический замок, таймер TimeOpen , позволяющий задать максимальное время открытого состояния замка, магнитный датчик, индицирующий открытие и закрытие двери. Входом блока замка является команда открыть замок (Open), поступающая от блоков уключины и кнопки. Блок уключины состоит из считывающего устройства, базы данных, таймера TimeMaster , задающего максимальное время на поднесение нового ключа для записи в базу. Вход в блок осуществляется поднесением ключа или мастера. Блок кнопки состоит из кнопки, которая может принимать 2 состояния (нажата/не нажата).

Для считки бесконтактных карт применяется "Считыватель прокси (em-Marin) карт "CP-Z" фирмы IronLogic его особенность в том, что он эмулирует iButton (1-wire) если к нему поднести проксикарту.. это позволяет упростить программирование замка. однако следует учесть что в данной версии считывателя имеются свои подводные грабли .

Принцип работы предельно прост. При поднесении ключа происходит считывание его кода и сравнение с базой. Если ключ найден в базе замок получает команду Open . Здесь необходимо учитывать особенность замка: открытие надо производить щелчками (открыть-закрыть-открыть). Это обеспечивает защиту от заклинивания замка. При поднесении мастера логика программы меняется. Его наличие никак не влияет на “настроение” замка. Он рассматривается как некий турецкий султан, готовый зарегистрировать (записать в EEPROM) очередную жену (ключ). Т.е. при поднесении ключа (если он ранее не был записан) его код записывается в EEPROM . Тут необходимо учитывать, что память микрухи нерезиновая, и, например, для ATmega 8 она составляет 512 байт, что позволяет записать максимум 255 ключей (если для хранения 1 ключа использовать 2 байта, как в нашем случае). В качестве мастера записывается самый первый поднесенный ключ. Нажатие кнопки также посылает замку команду Open . Система индикации делает наш проект более красочным и информативным. Если горит красный диод – проход блокирован,если зеленый – можно идти! При поднесении мастера горят оба светодиода.

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

Внешний вид всего устройства показан на рисунке 2. Все достаточно аккуратно и красиво.

Скачать исходники можно

В различной радиолюбительской литературе можно обнаружить множество вариантов электронных кодовых замков.

Особенностью данной схемы кодового замка на микроконтроллере является принципиально новый метод считывания нажатия клавиш, используя всего лишь один порт микроконтроллера PIC12F675. Эта особенность может быть реализована только с микроконтроллерами в составе которого имеется модуль аналого-цифрового преобразователя (АЦП), к примеру как наш микроконтроллер PIC12F675.

Данный микроконтроллер снабжен 10 битным АЦП с диапазоном преобразования от 0 до 1023. Суть метода в том, что клавиатура представляет из себя, по сути, делитель напряжения на резисторах R1-R12 и при нажатии определенной кнопки клавиатуры на вход 7 микроконтроллера поступает напряжение, величина которого характерна только для данной кнопки.

Работа кодового замка на PIC12F675

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

Теперь если набрать данный код на клавиатуре произойдет включение реле на 5 секунд. При десятикратной неверно набранном секретном коде прозвучит сигнал тревоги.

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

Схема кодового замка показана на рис. 1. Основным элементом устройства является микроконтроллер ATtiny2313 (DD1), у которого использованы встроенный RC-генератор и внутренние резисторы. Чтобы открыть замок, необходимо знать код. Для его ввода используется клавиатура, расположенная на внешней стороне двери и состоящая из кнопок SB1- SB 12. Кнопки SB 13 и SB 14 расположены на внутренней стороне двери, первая из них предназначена для ее открывания, а вторая - для закрывания. При использовании электромеханического привода замка двери кнопка SB 14 не нужна. Двухцветный светодиод HL1 индицирует состояние замка: если горит светодиод красного цвета свечения - дверь закрыта, зеленый - открыта. Резистор R3 служит для ограничения тока через светодиод.

Рисунок 1

Для управления исполнительным механизмом - соленоидом YA1 (или электромеханическим приводом) - используется мощный полевой переключательный транзистор VT1. Если код набран правильно, с линии PD2 (вывод 6) микроконтроллера DD1 на затвор полевого транзистора поступит открывающее напряжение, на соленоид YA1 - напряжение питания, и он откроет замок.

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

Чтобы открыть замок, необходимо ввести цифры кода в заданной последовательности. Для индикации нажатия на кнопку (при закрытом замке) светодиод красного цвета свечения гаснет примерно на 0,3 с, при этом светодиод зеленого цвета свечения не горит, пос¬ле чего опять загорается красный светодиод. После ввода последней цифры открывается транзистор VT1 и загорается светодиод зеленого цвета свечения, индицируя, что замок открыт

Чтобы закрыть замок, необходимо нажать на кнопку SB4 "*" или кнопку SB 14 "Закрыть".

Для изменения кода при открытом замке нажимают на кнопку SB12 "#", вводят новый код (минимум одна цифра, максимум - сто двадцать семь), после чего опять нажимают на кнопку SB 12 "#". Если при вводе кода была допущена ошибка, нажимают на кнопку SB4 "*", вводят правильный код и только затем нажимают на кнопку SB12 "#". При записи нового кода индикация нажатия на кнопки осуществляется так. Светодиод зеленого цвета свечения гаснет на 0,5 с, при этом загорается светодиод красного цвета свечения, а затем снова постоянно светит светодиод зеленого цвета.

Рисунок 2

Коды программы, которые находятся в архиве , микроконтроллера для замка с соленоидом приведены в табл. 1 , для замка с электромеханическим приводом - в табл. 2 . Во время программирования в EEPROM микроконтроллера заносится начальный код, состоящий из цифр 1, 2, 3. Необходимо также записать файл данных - табл. 3 в EEPROM микроконтроллера. При программировании задают биты конфигурации в соответствии с рис. 2.

Отличие работы замка с электромеханическим приводом от замка с соленоидом заключается только во входе в режим записи нового кода и закрытия замка. Замок в этом случае закрывается автоматически через 3 с после открытия, этого времени должно хватить для того, чтобы открыть дверь. Сделано это для того, чтобы не перегревался электродвигатель электромеханического привода. Для записи нового кода при открытом замке необходимо сначала нажать на кнопку SB13 "Открыть" и удерживать ее.

class="eliadunit">

После того как замок закроется и загорится светодиод красного цвета свечения, надо дополнительно нажать на кнопку SB13 "Открыть" и удерживать ее еще примерно 15 с, затем нажать на кнопку SB 12 "#" и при загорании светодиода зеленого цвета свечения ввести новый код, после чего снова нажать на кнопку SB 12 "#" для его записи. Если при вводе была допущена ошибка, то нажимают на копку SB4 "*", вводят правильный код и только тогда нажимают на кнопку SB 12 "#". Будьте внимательны при вводе нового кода!

Фото готового устройства.



Данный проект будет отличным вариантом для повторения новичками, в нем используется ЖКИ дисплей 1602, клавиатура 4х4 из кнопок и конечно же сам контроллер. Кроме того, применены реле, кнопка и разъемы питания, PLS штырьки, пару транзисторов ну и по мелочи. Кстати, яркость дисплея в проекте будет регулироваться по методу ШИМ.

Это устройство может быть использовано для защиты практически любых объектов, пользователь должен ввести правильный пароль для получения доступа. Плата уже спроектирована удобным образом, и остается изготовить только красивый корпус для него. Пароль вводится с помощью встроенной в клавиатуру матрицы 4×4. Основной модуль ЖК-дисплея используется для отображения сообщений пользователю и текущей информации. Как только будет введен правильный пароль – сработает реле. Об этом так же будет свидетельствовать светодиод, установленный рядом с реле. Для отключения реле нужно нажать соответствующую кнопку на клавиатуре.

После ввода четырехзначного пароля необходимо нажать кнопку "ОК" (S8). В любое время вы можете нажать кнопку "Отмена" (S12), чтобы очистить код (например, при вводе любых неправильных цифр).

Код блокировки можно легко изменить, для этого нужно ввести специальный пароль “0000”, как только вы введете этот пароль, устройство переключится в режим смены пароля. Здесь нужно ввести старый пароль, чтобы получить разрешение, а затем ввести новый пароль, все очень просто.

Подсветка ЖК-дисплея выключается автоматически, после того как система находится в режиме ожидания нескольких секунд. Затемнение подсветки происходит очень плавно, так же как например в мобильных телефонах. Дисплей можно заменить на любой аналогичный, с похожим контроллером или даже другого разрешения, главное советую обратить внимание на распиновку выводов, в некоторых моделях распиновка дисплеев может отличаться. Программа для контроллера написана в среде С++, исходники, а так же прошивка для контроллера прилагаются. Микроконтроллер можно применить с любым индексом, буква L означает пониженное энергопотребление.

Список используемых радиодеталей:

01 330 Ом резистор (2 шт), R3, R5

02 4.7 кОм резистор R2, R4, R6

03 200 Ом резистор R1

04 0.1мкФ керамический конденсатор C1, C3, C4, C5

05 1N4007 Диод (2 шт), D1, D3

06 5мм светодиоды любого цвета D4

07 Микроконтроллер ATmega8L U1

08 Стабилизатор напряжения 7805 U2

09 Разъем питания CON1

10 PCB реле RL1

11 Выключатель Вкл / Выкл SW1

12 DC гнездо X1

13 16×2 LCD дисплей LCD1

14 10 кОм подстроечный резистор RV1

15 28 PIN кроватка для микроконтроллера IC

16 BC548 транзистор (2 шт.) Q1, Q2

17 Кнопки (16 штук)

Файл печатной платы для изготовления методом ЛУТ находится ниже в архиве, печатную плату можно заметно уменьшить, если применить кнопки поменьше, или если вынести клавиатуру на отдельную плату. Цифровые клавиши можно взять от старой клавиатуры компьютера или ноутбука.

Скачать файл печатной платы, исходник и прошивку

Оригинал статьи на английском языке (перевод: Адвансед для сайта cxem.net)

Устройство предназначено для защиты помещений, шкафов и сейфов от несанкционированного вскрытия. Все установки и код хранятся в энергонезависимой памяти микроконтроллера. Основой устройства служит микро­контроллер PIC16F628A (DD1 на схеме рис. 1). После подачи пита­ния программа микроконтроллера настраивает его порты, а также отклю­чает источник образцового напряже­ния, модуль ШИМ захвата сравнения, таймеры, компараторы и аппаратный USART - эти модули не нужны для ра­боты замка. Затем начинается опрос клавиатуры.

Она состоит из двух частей. Первая - кнопки SB3-SB 14 - находится снару­жи охраняемого объекта. Вторая - кнопки SB1, SB2 и выключатель SA1 - расположена внутри помещения. Кнопки SB3-SB 13 первой части кла­виатуры объединены в матрицу. Кноп­ка SB 14 в матрицу не входит, она пред­назначена для перезапуска микрокон­троллера в случае какого-либо сбоя в программе, а также в ряде других случаев, о которых будет рассказано ниже.

Кнопка SB1 "Открыть" установлена внутри помещения около двери. Нажа­тием на нее можно открывать дверь изнутри, не набирая кода. SB2 - кноп­ка перезапуска программы; кнопки SB2 и SB 14 включены параллельно. Кноп­кам матрицы присвоены обозначения: SB3 - "1", SB4 - "4", SB5 - "7", SB6 - "Открыть", SB7 - "2", SB8 - "5", SB9 - "8", SB 10 - "0", SB11 - "3", SB 12 - "6", SB 13 - "9". Тумблером SA1 выбирают режим закрывания замка. Код вводят поочередным кратковременным нажа­тием на цифровые кнопки. В подтверж­дение нажатия прозвучит короткий то­нальный сигнал пьезоизлучателя НА1, управляемого транзистором VT2.

Перед тем как открыть дверь, вводят четырехзначный код с паузами между соседними нажатиями не более 3 с, а затем в течение 3 с надо кратковре­менно нажать на кнопку SB6. Через 2 с на выходе RA0 микроконтроллера DD1 установится высокий уровень, откроет­ся транзистор VT1 и сработает элек­тромагнит, который приведет в дви­жение ригель замка, сжимая его пру­жину, и дверь откроется. Если пауза между соседними нажа­тиями превысит 3 с, то прозвучит сиг­нал с уменьшающейся частотой. Это означает, что программа начала выпол­няться заново и код надо вводить сна­чала. Диод VD1 предназначен для за­щиты транзистора VT1 от всплеска на­пряжения самоиндукции обмотки электромагнита Y1. Перед срабатыва­нием электромагнита прозвучит сигнал такой же частоты, как и при нажатии цифровых клавиш, но большей дли­тельности, что сигнализирует об откры­вании двери.

Когда контакты выключателя SA1 разомкнуты, электромагнит закроет замок через определенное время (по умолчанию - 12 с). Это время устана­вливают при программировании мик­роконтроллера. В программе, которую нужно будет загрузить в контроллер, в поле работы с EEPROM, в ячейку с адре­сом 0x06 (седьмая по счету) необходи­мо вставить число от 0x01 до OxFF, из расчета 1 единица = 2,5 с. Минимально возможная пауза равна 2,5 с, макси­мальная - 10 мин.

В случае, если контакты выключателя SA1 замкнуты, т. е. на входе RA4 мик­роконтроллера DD1 установлен низкий уровень, то закрывание замка происхо­дит после нажатия на кнопку SB 14 либо на SB2. После того как закроется транзи­стор VT1, электромагнит обесточится и пружина замка вытолкнет ригель обрат­но - дверь снова окажется запертой.

Для открывания двери изнутри поме­щения нажимают на кнопку SB1 и удер­живают ее до срабатывания электро­магнита, о чем оповестит тональный сигнал длительностью 2 с. Открыть дверь изнутри можно в любой момент. Если открывания двери не произойдет, необходимо нажать на кнопку SB2 (перезапустить программу) и снова нажать на кнопку SB1.

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

Устройство снабжено системой блоки­ровки. Каждый раз при введении невер­ного кода замок воспроизведет два сиг­нала частотой 1000 Гц и один частотой 500 Гц. Ошибочным контроллер считает нажатие на кнопку SB6 в то время, когда в рабочих регистрах находится неверный код, и введение пяти цифр кода. После трех ошибок подряд микроконтроллер DD1 установит на выходе RA2 высокий уровень. При этом откроется транзистор VT3, который включит тревожное устрой­ство. Этим устройством может быть сире­на или узел дозвона по телефону.

Одновременно включится светодиод HL1, установленный на панели клавиату­ры, который покажет, что опрос клавиа­туры (кроме тумблера SA1 и кнопок SB1, SB2, SB 14) отключен. Затем следует десятиминутная пауза, во время кото­рой работает тревожное устройство и включен светодиод HL1. В течение этого времени открыть замок можно только изнутри. Если нажать на кнопки SB 14 и SB2 (кнопки перезапуска программы микроконтроллера), то десятиминутный отсчет начнется заново. После паузы контроллер предоставит только одну возможность ввести код, и если он будет неверным, десятиминутная пауза с включением тревожного устройства повторится снова. И так будет продол­жаться до введения правильного кода. Каждый раз после верного введения кода счетчик ошибок обнуляется.

class="eliadunit">

Питает устройство источник постоян­ного тока напряжением 10... 15 В. При отключении электроэнергии в сети 220 В замок продолжает работать от аккуму­ляторной батареи. Схема простейшего варианта такого блока питания показа­на на рис. 2. Трансформатор Т1 пони­жает сетевое напряжение 220 В до 15...20 В. Максимальный ток вторичной обмотки трансформатора не должен быть менее 1,5 A DA1 - регулируемый стабилизатор напряжения. Изменяя со­противление построечного резистора R2, устанавливают на выходе стабили­затора DA1 такое напряжение, при кото­ром ток зарядки заряженной аккумуляторной батареи GB1 не превышает 100...200 мкА. При этом во время боль­шого потребления тока, когда сработал электромагнит Y1, основную часть тока дает аккумуляторная батарея, что позволяет не перегружать стабилизатор DA1. Диод VD5 предназначен для защи­ты стабилизатора DA1 в случае отсут­ствия на его входе напряжения.

Аккумуляторная батарея должна обес­печивать ток 300...600 мА (емкость - 7 А-ч). Стабилизатор DA1 следует уста­новить на теплоотвод площадью 30...40 см 2 . Клавиатуру можно изготовить из отдельных кнопок. Подойдут, к примеру, DIPTRONICS DTSMW-66N. Но можно применить и готовую клавиатуру от кно­почного телефонного аппарата или калькулятора. Как правило, можно легко подключить такую клавиатуру к устрой­ству, собрав кнопки в подходящую матрицу. Также необходимо вынести на панель клавиатуры светодиод HL1.

Пьезоизлучатель подойдет любой из серии ЗП. Электромагнит Y1 применен от лентопротяжного механизма магни­тофона, но подойдет любой другой, подходящий по габаритам и с макси­мальным током обмотки не более 1,3 А. Если ток, потребляемый электромагни­том, будет больше 1 А, то транзистор VT1 следует установить на теплоотвод площадью 30...40 см 2 .