Кодовый замок с дисплеем на микроконтроллере avr. Схема охранной сигнализации с кодовым замком на AVR микроконтроллерах

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

Фьюзы:
HIGH=D9
LOW=E1

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

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

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
U1 МК AVR 8-бит

ATmega8

1 ATmega8L В блокнот
U2 Линейный регулятор

LM7805

1 В блокнот
Q1, Q2 Биполярный транзистор

BC548

2 В блокнот
D1, D3 Выпрямительный диод

1N4007

2 В блокнот
D2, D4 Светодиод 2 В блокнот
С1, С3-С5 Конденсатор 0.1 мкФ 4 В блокнот
С2 Электролитический конденсатор 470 мкФ 1 В блокнот
R1 Резистор

200 Ом

1 В блокнот
R2, R4, R6 Резистор

4.7 кОм

3 В блокнот
R3, R5 Резистор

330 Ом

2 В блокнот
RV1 Подстроечный резистор 10 кОм 1 В блокнот
LCD1 LCD-дисплей 16x2 LCD 1 В блокнот
RL1 Реле РСВ 1 В блокнот
S1-S16 Кнопка 16 В блокнот
SW1 Выключатель 1 В блокнот
L1 Катушка индуктивности 10 мкГн 1

Исполнительным механизмом в электронном замке, схема которого показана на рис. 1, служит электромеханический замок ЗНЭМ-1-2, открывающийся при подаче на встроенный в него электромагнит Y1 постоянного напряжения 12 В. Логическая часть электронного замка построена на микроконтроллере PIC16F630-I/R Кнопки SB1 и SB2 предназначены для ввода открывающего его кода. Светодиоды HL1—HL3 разного цвета свечения сигнализируют о состоянии и режиме работы. Полевой транзистор VT1 по сигналу, формируемому микроконтроллером на выходе РСЗ, управляет электромагнитом Y1.

Рис. 1

Устройство питается от гальванической или аккумуляторной батареи напряжением 12 В. Такое напряжение необходимо для надёжного срабатывания электромагнита Y1. Его можно подавать как от гальванической или аккумуляторной батареи, так и от сетевого блока питания. Батарея гарантирует возможность открыть замок при отсутствии напряжения в сети, но придётся постоянно следить за её заряженностью.

Напряжение 5 В {требующееся для питания микроконтроллера) получается из 12 В с помощью интегрального стабилизатора DA1. Если использовать исполнительное устройство на другое напряжение или отдельный источник его питания, напряжение, подаваемое на вход стабилизатора, может быть уменьшено до 7 В или увеличено до 15 В.

Ток, потребляемый замком, когда он закрыт, очень невелик и не превышает нескольких миллиампер. В процессе набора кода он возрастает до десятков миллиампер в зависимости от числа включённых светодиодов, а при срабатывании электромагнита — приблизительно до 1 А.

Рис. 2a. Вид со стороны компонентов

Рис. 2b. Вид со стороны дорожек

Замок собран на печатной плате. Расположение элементов и чертёж печатных проводников на ней показаны на рис. 2. Светодиоды HL1—HL3 и кнопки SB1, SB2 установлены отдельно на раме запираемой замком двери. Открывающему замок человеку светодиоды должны быть видны, а кнопки доступны для нажатия. Светодиоды, типы которых указаны на схеме, имеют диаметр корпуса 10 мм и повышенную яркость. Однако можно применить и другие, подходящих цветов свечения.

Программа микроконтроллера создана в среде "PIC Simulator IDE v6.91". Открывающий код представляет собой комбинацию из восьми нажатий в определённом порядке на кнопки SB1 и SB2. В программе нажатие на кнопку SB1 представляется логическим нулём в соответствующем порядковому номеру нажатия разряде ячейки памяти, а нажатие на кнопку SB2 — логической единицей в таком разряде. Общее число возможных комбинаций — 256.
Нажатие на любую кнопку подтверждается включением светодиода HL1, что позволяет визуально их контролировать. Набирая код, нельзя нажимать на обе кнопки одновременно. Это приведёт к отмене попытки набора и блокировке замка на 4 с. В случае слишком продолжительной паузы между нажатиями на кнопки или слишком длительного (более 3 с) удержания кнопки нажатой программа включает свето-диод HL3 и также отменяет попытку ввода, блокируя замок на 4 с.

Если код набран до конца, но не совпал с хранящимся в памяти микроконтроллера образцом, замок блокируется на 4 с, но светодиод HL3 при этом мигает. Три неверных набора кода заблокируют замок на минуту, что сопровождается включением всех трёх светодиодов. До окончания произошедшей по любой причине блокировки нажатия на кнопки не дают никакого эффекта.

Образцовая кодовая комбинация хранится в EEPROM микроконтроллера по адресу 1. В начале своей работы программа читает содержимое этой ячейки и присваивает его переменной code. Первоначально код заносят в EEPROM на этапе программирования микроконтроллера. Средства для этого имеются в программном обеспечении любого программатора. Например, в главном окне среды программирования "PIC Simulator IDE v6.91" достаточно перед загрузкой программы в микроконтроллер открыть пункт меню "Tools-* EEPROM Memory Editor" и в окне с образом EEPROM записать нужный код в ячейку по указанному выше адресу. Содержимое памяти здесь представляется в шестнадцатеричной системе счисления, поэтому, например, код 00110011 выглядит как 33.

В процессе эксплуатации замка можно сменить код, не перепрограммируя микроконтроллер. Для этого следует включить замок и правильно ввести код, действующий на данный момент. Должен включиться светодиод HL2, а замок — открыться. Пока он открыт, нажмите на обе кнопки одновременно.

Светодиод HL2 начнёт мигать, a HL3 включится. Отпустите кнопки и после того, как светодиод HL3 погаснет, начинайте ввод новой комбинации- Если требования к длительности нажатий на кнопки и пауз между ними при вводе не нарушены, светодиод HL2 продолжит мигать, а светодиод HL3 снова будет включён- После того как светодиод HL3 вновь погаснет (для этого обе кнопки должны быть отпущены), наберите ту же комбинацию ещё раз. Если она идентична первой, программа её примет и запишет в EEPROM.

Приложенный к статье исходный текст программы на языке BASIC содержит описания всех используемых переменных и комментарии к наиболее важным строкам. Таймер TMR0 микроконтроллера сконфигурирован так, что переполняется с периодом около 65,5 мс, каждый раз формируя запрос прерывания. Обрабатывая эти запросы, микроконтроллер определяет состояние кнопок и отсчитывает необходимые интервалы времени. Например, приблизительно минутная блокировка замка основана на отсчёте 1000 прерываний. Их счёт в данном случае ведётся в переменной den_p. Поскольку она имеет тип long, занимая четыре байта памяти, то может принимать значения от 0 до 232-1 (4294967295). Если, например, задать предельное значение результата счёта равным 3600/0,0655^56000, продолжительность блокировки увеличится до часа.

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