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

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

Работаю я электромонтером в районе Крайнего Севера. Зимой у нас всегда возникала проблема, замерзает замок на входе в электроцех. И вот попался мне на глаза журнал «Радио» №5 за 2008 год. Там была опубликована статья Е. Переверзева «Цифровой кодовый замок».

Решил и сделал. Перерисовал печатку из журнала. Спаял схему.
Залил прошивку и схема заработала сразу, хотя это моя первая схема на микроконтроллере.

О моей сборке

На схеме показан аккумулятор, но я его не ставил.
Отсутствие электричества в электроцехе - это нонсенс, но на печатке аккумулятор я учел.
Файл «1.hex» - прошивка флэш, файл «2.hex» - прошивка EEPROM.
В EEPROM изначально заносится код открытия «1, 2, 3». Смена кода производится на открытом замке, после нажатия кнопки «#». Код может содержать до 125 знаков.

Версия печатки из статьи Е. Переверзева

Саму схему, кнопки «Открытие», «Закрытие», блок питания разместил к коробочке из под блока управления вакуумным выключателем.

Блок питания использовал от старого сканера.
Соленоид использовал от старой электоролаборатории, один минус - соленоид потребляет 1,5 А.

Клавиатуру взял от старого телефона.


Резиновые контакты пришлось удалить, т.к на морозе они работать не будут. На их место поставил кнопки SWT-9. Установить замок пока нет возможности (холодно). Но схема полностью работоспособна.

--
Спасибо за внимание!
Игорь Котов, главный редактор журнала «Датагор»

Оригинальная статья из "Радио":
🕗 20/12/11 ⚖️ 512,66 Kb ⇣ 111 Здравствуй, читатель! Меня зовут Игорь, мне 45, я сибиряк и заядлый электронщик-любитель. Я придумал, создал и содержу этот замечательный сайт с 2006 года.
Уже более 10 лет наш журнал существует только на мои средства.

Хорош! Халява кончилась. Хочешь файлы и полезные статьи - помоги мне!

Answer

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry"s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five http://jquery2dotnet.com/ centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.

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

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

Основным элементом схемы является микроконтроллер PIC16F628A, который отслеживает нажатие кнопки, визуально оповещает пользователя о приеме команды, управляет состоянием реле. Для визуализации используется светодиод, который подключен параллельно с кнопкой для ввода кода, что позволяет использовать лишь два провода для установки и подключения кнопки в необходимом месте.
Для питания устройства потребуется источник питания 12 В, в схеме установлен регулятор напряжения LM7805. Светодиод D3 свидетельствует о подаче питания.
Система имеет два режима работы: обычный режим и режим программирования. В обычном режиме устройство выполняет свою основную задачу – отслеживает нажатия кнопки и реагирует при правильном вводе кода. В режиме программирования производится настройка основных параметров системы: код, время активации, режим работы.
Для изменения режима работы (обычный/программирование) используется переключатель JP1. При выключенном переключателе – обычный режим работы, при включенном – режим программирования (настройки). Следует заметить, что вход в тот или иной режим осуществляется при подаче питания (состояние переключателя проверяется микроконтроллером при подаче питания). Поэтому для входа в режим настройки необходимо установить переключатель и подать питание, для выхода из режима – отключить переключатель, выключить и затем включить питание.

Для ввода кода вида 1234, последовательность действий следующая:
нажать кнопку 1 раз;
дождаться визуального подтверждения светодиодом на кнопке (светодиод мигнет один раз);
нажать кнопку два раза;

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

Опции меню:

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

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

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

Решил поиграться с давно заказанной с китая мембранной клавиатурой 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кб.)