Лестницы. Входная группа. Материалы. Двери. Замки. Дизайн

Лестницы. Входная группа. Материалы. Двери. Замки. Дизайн

» » Схема охранной сигнализации с кодовым замком на AVR микроконтроллерах. Цифровой кодовый замок Кодовый замок на микроконтроллере atmega8

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

Решил поиграться с давно заказанной с китая мембранной клавиатурой 3x4. Есть много видов и разновидностей данной клавиатуры, есть в пластмассовых корпусах, а есть пленочные. У моего вариант 3x4 7 контактов, распиновка клавиатуры 4x4 показана на схеме ниже, схема один к одному. Схема почти идентична с клавиатурой 3x4 за исключением того что отсутствует правый ряд клавиш "A,B,С,D".

Схема подключения клавиатуры 3x4:

Клавиатура 4x4 подключается аналогично, четвертый ряд "A, B, С, D " подключается к порту PD7 микроконтроллера.

Исходный код программы:

$regfile = "m8def.dat"
$crystal = 1000000

"конфигурация дисплея
Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Config Lcd = 20 * 4
Cursor Off
Cls

"конфигурация клавиатуры
Config Kbd = Portd , Debounce = 40 , Delay = 100

"переменные
Dim Key_char As Byte "номер нажатой клавиши
Dim Key_str As String * 1 "символ нажатой клавиши на клаивиатуре
Dim Result As String * 20 "результат нажатий на клавиатуру
Deflcdchar 1 , 32 , 14 , 10 , 31 , 27 , 27 , 14 , 32 "

Locate 1 , 4
Lcd Chr(1)

Result = ""

"Главный цикл программы
Do

Key_char = Getkbd() "когда клавиша не нажата функция возвращает переменной значение 16

If Key_char <> 16 Then "если переменная не равна 16, значит была нажата кнопка
Key_str = Lookupstr(key_char , Keyboard_data) "вытаскиваем из массива символ нажатой клавиши
Result = Result + Key_str
End If

Locate 2 , 3
Lcd Result "выводим на дисплей результат нажатий

Waitms 100

If Result = "123" Then
Locate 2 , 2
Lcd "UNLOCK"
Wait 1
Goto Pizdec
Else
End If

If Key_str = "5" Then
Locate 2 , 2
Lcd "RETURN"
Wait 1
Goto Pizdec
Else
End If

Loop

Keyboard_data:
Data "1" , "4" , "7" , "*" , "2" , "5" , "8" , "0"
Data "3" , "6" , "9" , "#" , "A" , "B" , "C" , "D"

Pizdec:
Return

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

Key_char = Getkbd()
If Key_char <> 16 Then
Goto 1
End If

То мы избегаем повторения символов при удержании клавиши. Можем хоть минуту давить на кнопку, а символ будет один.

При включении прибора на верхней строке высвечивается иконка "замок", на нижней строке отображаются вводимые символы.


По умолчанию в исходнике код "123", как только мы введем этот код (как только нажмем третью правильную кнопку) на нижней строке выйдет надпись "UNLOCK".

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

Видео работы кодового замка:

Файлы проекта с исходным кодом (~15кб.)

Готовая версия кодового замка:

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

При верном вводе PIN кода привод сработает на 1 секунду, этого времени достаточно для работы механизма замка (открывания двери)? привод подключается через транзистор к порту PORTB.4. Если же при попытке ввести PIN код ошиблись цифрой, нажимаете кнопку "решетка" и можно начать ввод кода заново...

При правильном вводе PIN кода открывается замок, а на дисплее выводится надпись "UNLOCK".

Проект в Proteus и прошивка лежат ниже в архиве, PIN код замка указан в архиве в названии файла прошивки.

По материалам сайта avrproject.ru

проект Proteus и файл прошивки (~16кб.)

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

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

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

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

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

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



Данный проект будет отличным вариантом для повторения новичками, в нем используется ЖКИ дисплей 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)

Alan Parekh

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

Устройство может применяться в системах управления гаражными воротами, в системе управления освещением, в охранных системах.

Принципиальная схема устройства

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

Для питания устройства потребуется источник питания 12 В, в схеме установлен регулятор напряжения LM7805 . Светодиод D3 свидетельствует о подаче питания.

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

Для изменения режима работы (обычный/программирование) используется переключатель JP1. При выключенном переключателе - обычный режим работы, при включенном - режим программирования (настройки). Следует заметить, что вход в тот или иной режим осуществляется при подаче питания (состояние переключателя проверяется микроконтроллером при подаче питания). Поэтому для входа в режим настройки необходимо установить переключатель и подать питание, для выхода из режима - отключить переключатель, выключить и затем включить питание.

Для ввода кода вида 1234, последовательность действий следующая:

  • нажать кнопку 1 раз;
  • дождаться визуального подтверждения светодиодом на кнопке (светодиод мигнет один раз);
  • нажать кнопку два раза;
  • нажать кнопку три раза;
  • дождаться визуального подтверждения светодиодом на кнопке;
  • нажать кнопку 4 раза.

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

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

Опции меню:

  1. Изменение кода - используется для изменения пользовательского кода. Для изменения код вводится также, как и в обычном режиме работы. Когда новый код будет сохранен, светодиод сообщит об этом частыми вспышками;
  2. Изменение времени активации - используется для изменения времени активного состояния. Нажатие кнопки один раз в этом меню изменяет это время на 1 с. Например, если необходимо время 10 секунд, то необходимо нажать кнопку 10 раз. Когда параметры будут сохранены, светодиод сообщит об этом частыми вспышками.
  3. Выбор режима работы - используется для изменения режима управления реле. Имеется два режима работы: активация реле при введении правильного кода и смена состояния реле (активация/деактивация) при вводе правильного кода. При выборе второго режима устройство будет действовать так: если реле активировано и вводится верный код, то реле деактивируется, при следующем вводе верного кода реле активируется. Для изменения режима работы: нажмите кнопку один раз для выбора первого режима и два раза для выбора второго режима.

Все параметры хранятся в энергонезависимой памяти микроконтроллера.

Схема собрана на двухсторонней печатной плате.






Для увеличения кликните на изображение

Загрузки

Hex-файл для программирования микроконтроллера -

  • Собрал, прошил, работает! Плату развел однослойную.
  • как пршивал(зарание СПАСИБО)
  • прошивал icprog105D программой, а програматор делал давно и как он называется уже не помню. Но проблем при прошивке не было. Я эту схему и в протеусе собирал она у меня и там работала.
  • Выложи модель в Proteus.
  • В архиве схема, анимация, и печатка в Proteus 7.7 SP2(Сборка9151) Уровень3. На печатной плате, реле взято с какой то сигнализации от авто, и модель для протеуса, сделана мной а схема аниме, это то что собственно можно запустить и проверить работу схемы в целом. Светодиод вместо реле поставил для наглядности.
  • Идея сделать замок на МК неплохая, только набор шифра неудобен. Представь что нужно набрать 9 сколько раз нажимать нужно. Нужен однорозрядный индикатор, держишь кнопку до появления нужной цифры, отпускаешь, и цифра запоминаеться или опознается в зависимости от режима. Жаль что программировать не могу ато бы занялся этим. Все попытки самостоятельно изучить, пока не увенчались успехом. Модель скачал.
  • А как вам такой, простой кодовый, и совсем без кнопок на двери http://shema.org.ua/forum/index.php?...&st=0#entry781
  • Замок оригинальный, но можно потерять брелок и не попасть за дверь охраняемую замком. А вот с единственной кнопкой! Её трудно потерять, но еще труднее найти! Код вводить долго, но если придумать использовать его как второй, резервный так сказать! В случае банально простом, Захлопнули двери, а ключи остались за дверьми. И вот эта конструкция, с одной кнопкой поможет! А вот кнопки может и не быть, роль кнопки выполнит ручка той же двери, захлопнувшейся. Дальше не буду разъеснять, и так понятно.
  • Конечно можно и потерять, а можно и у соседей оставить, как в старые добрые времена:) код не говорить только.

Исполнительным механизмом в электронном замке, схема которого показана на рис. 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, продолжительность блокировки увеличится до часа.