Меню Рубрики

Кодовый замок на микроконтроллере PIC16F628A. Микроконтроллерный электронный замок Принципиальная схема устройства

Схема кодового звонка реализована на микроконтроллере ATtiny2313. Схема кодового замка состоит из микроконтроллера AVR и транзисторного ключа, управляющего реле.

Для записи кода замыкаем тумблер "sw", тем самым переводим замок в режим записи кода. Вводим размерность кодовой комбинации кнопками от 1 до 7 (кнопки 8, 9 и 0 в наборе размерности не задействованы), набираем любую кодовую комбинацию равную размерности кода.

Сработает эл. магнит замка, открыв его, тем самым сигнализируя, что кодовая комбинация записана в память "EEPROM".
Рабочий режим. Отключаем тумблер "sw", переводим замок в режим проверки, записанной кодовой комбинации. Повторяем последовательность для режима записи, вводим размер, вводим записанный код.

Принципиальная схема кодового замка на микроконтроллере AVR:

Набор кода всегда начинается с кн. 1 _ 7 (размерность). При наборе кодовой комбинации, код можно вводить не только по одной цифре, а так - же например, нажав кн. 7, не отпуская, нажать кн. 8 далее нажать кн. 6 и отпускать по одной кнопке в любой последовательности, в результате будет набрана пятизначная кодовая комбинация.

Если при правильно набранной комбинации замок не открылся нужно несколько раз нажать кн. 8 - 9 или 0, максимум 7 раз или нажать одновременно эти кнопки раза два и повторить набор кода. Это косвенно может означат, что замок пытались открыть.

При прошивке микроконтроллера fuse-биты надо выставить следующим образом:

Собранный кодовый замок выглядит так:


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

Принцип работы

Работа замка на микроконтроллере основана на поочередном вводе трех чисел. Размер каждого числа может быть в диапазоне от 0 до 255. Это в свою очередь повышает уровень секретности кодового замка по сравнению с другими замками, у которых каждое секретное число имеет размер от 0 до 9.

В том случае если введенная последовательность этих трех чисел совпадает с тремя числами, которые внесены в память микроконтроллера кодового замка, то на выходе (вывод 3) появится управляющий сигнал (лог.1), на 15 секунд загорится светодиод HL4 сигнализируя о правильности ввода и сработает реле К1 управляющее исполнительным механизмом замка. По истечении 15 секунд на выводе 4 микроконтроллера появится лог. 0 и замок перейдет в первоначальное состояние ожидания.

Управление работой кодового замка осуществляется всего двумя кнопками, руководствуясь только индикацией светодиодов. Причем ввод секретного кода осуществляется только одной кнопкой SB2, которая находится на наружной панели замка. Вторая кнопка SB1 предназначена для программирования, и она расположена на самой плате.

Этапы управления кодовым замком

  • Внесение в энергонезависимую память микроконтроллера три кодовых числа.

Рассмотрим это на конкретном примере. Допустим, нам нужно задать следующий секретный код: первая цифра 8, вторая цифра 12, третья цифра 9. Для этого подаем питание на устройство, затем нажимаем и удерживаем обе кнопки (SB1 и SB2). После этого отпускаем кнопку SB1, и как только начал мигать светодиод HL1 отпускаем и кнопку SB2. После этих манипуляций светодиод HL1 будет гореть постоянно, а светодиоды HL2 и HL3 не будут гореть. Это состояние светодиодов говорит о том, что устройство перешло в режим программирования.

Теперь чтобы записать первое число нам нужно нажать и удерживать кнопку SB2, при этом все три светодиода начнут мигать. Нужно отсчитать необходимое количество вспышек (в нашем случае это 8) и отпустить кнопку. После этого, в подтверждении правильности введенного числа, светодиоды промигают такое же количество раз (8 раз). Все, первое число записано. Далее загорается светодиод HL2 – напоминая нам, что необходимо записать второе число.

Поступаем точно так же как и с записью первого числа: нажимаем и удерживаем кнопку SB2 и отсчитываем необходимое число вспышек светодиодов (в нашем примере это 12), отпускаем кнопку и проверяем правильность ввода по повторным вспышкам. Затем загорается светодиод HL3 для третьего числа, и повторяем туже процедуру и для третьего числа (число 9).

После того так мы записали в память микроконтроллера все три числа и для выхода из режима программирования нужно нажать кнопку SB1.

  • Набора секретного кода

Рассмотрим так же это на примере. До этого мы записали секретный код 8-12-9. Для ввода вначале нажимаем кнопку SB1 и отпускаем ее сразу, после того как загорится светодиод HL1, тем самым переводим наш замок в режим ввода кода. Свечение светодиода HL1 свидетельствует, что нужно ввести первую цифру. Процедура ввод цифр аналогична тому, как вводились цифры при программировании. То есть, нажимая на кнопку SB1, отсчитываем необходимое количество, после чего отпускаем кнопку и наблюдаем подтверждение наборной цифры путем мигания светодиодов. Затем переходим ко второй и третьей цифре.

В том случае если все три цифры секретного кода введены верно, сработает реле и на 15 секунд включится светодиод HL4, светодиоды HL1,HL2,HL3 будут светиться в режиме бегущих огней.

Для ввода секретного кода предоставляется три попытки. Если в третий раз код введен неверно, возможность ввода блокируется на 2,5 минуты. По прошествии этого времени замок снова будет готов к вводу кода.

При программировании микроконтроллера следует выставить следующие фьюзы:

  • CKDIV8 = 0
  • BODLEVEL0 = 0
  • SPMEN = 0

(1,3 Mb, скачано: 1 566)

Устройство предназначено для защиты помещений, шкафов и сейфов от несанкционированного вскрытия. Все установки и код хранятся в энергонезависимой памяти микроконтроллера. Основой устройства служит микро­контроллер 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 .

Дело было вечером, когда на пороге офиса появилась настойчивая крупногабаритная женщина, предлагающая купить посуду известной марки. На следующий же день я получила от начальника (он же ) задание оградить его творческую натуру от нападок торговых представителей. Так появилась идея создания проекта под кодовым названием 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 секунд. При десятикратной неверно набранном секретном коде прозвучит сигнал тревоги.