Рубрики
Схемы на Arduino

Цифровой кодовый замок на Arduino

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

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Модуль клавиатуры (матричная клавишная панель).
  3. Зуммер (звонок) (купить на AliExpress).
  4. ЖК дисплей 16х2 (купить на AliExpress).
  5. Транзистор BC547 (купить на AliExpress).
  6. Резистор 1 кОм (купить на AliExpress).
  7. Макетная плата.
  8. Источник питания.
  9. Соединительные провода.

В представленном проекте мы будем использовать технологию мультиплексирования для подключения клавиатуры (с помощью которой и будет вводиться пароль) к плате Arduino Uno. Мы будем использовать клавиатуру 4х4 которая содержит 16 кнопок (клавиш). В обычном режиме для подключения 16 кнопок к плате Arduino нам бы понадобилось 16 контактов, но с использованием технологии мультиплексирования нам будет достаточно 8 контактов для подключения 16 кнопок. Более подробно об этом можно прочитать в статье про подключение клавишной панели к Arduino.

Технология мультиплексирования является простым и эффективным способом уменьшения числа используемых контактов микроконтроллера при взаимодействии с большим числом кнопок (клавиш). В основном в этой технологии используется два простых приема: сначала сканируются строки, а потом сканируются столбцы. Но поскольку в Arduino мы используем специальную библиотеку для работы с клавиатурой, используя технологию мультиплексирования, нам нет необходимости писать специальный код для реализации этой технологии, по сравнению, например, с подключением клавишной панели к микроконтроллеру AVR.

Схема устройства

Схема устройства представлена на следующем рисунке и содержит в своем составе Arduino, модуль клавиатуры, буззер (звонок) и ЖК дисплей. Плата Arduino управляет всеми процессами работы схемы: считывание пароля с модуля клавиатуры, сравнение паролей, включение/выключение буззера и передача статуса на ЖК дсиплей. Клавиатура используется для ввода пароля. Буззер используется для индикации, а ЖК дисплей используется для отображения статуса операции и различных сообщений. Буззер управляется с помощью NPN транзистора.

Столбцы модуля клавиатуры непосредственно подключены к контактам 4, 5, 6, 7, а строки – к контактам 3, 2, 1, 0 платы arduino uno. ЖК дисплей подключен к плате Arduino в 4-битном режиме. Управляющие контакты RS, RW и En подключены к контактам Arduino 13, GND и 12. Контакты данных ЖК дисплея D4-D7 подключены к контактам 11, 10, 9 и 8 arduino. Буззер подключен к контакту 14(A1) arduino с помощью NPN транзистора BC547.

Работа схемы

В нашем проекте мы будем использовать встроенную в плату Arduino память EEPROM для хранения пароля. Поэтому когда мы будем подавать питание на нашу схему первым делом программа будет считывать остаточные данные из памяти EEPROM, сравнивать их с введенным паролем и выдавать сообщение на ЖК дисплей что доступ запрещен (Access Denied) потому что пароли не совпадают. Для устранения этой проблемы нам необходимо установить пароль по умолчанию (default password) на первый раз (начальное включение) с помощью следующего кода:

Этот код установит пароль “1234” в EEPROM платы Arduino.

После первого запуска нам необходимо удалить этот код из программы и снова записать код в Arduino и запустить программу на выполнение. Теперь наша система запустится без ошибок. Для второго запуска теперь у нас будет пароль “1234”. Теперь вы можете изменить его при помощи нажатия клавиши #, после этого вам будет нужно ввести текущий пароль, а потом ввести новый пароль.

В дальнейшем, когда вы будете вводить ваш пароль, система будет сравнивать введенный пароль с паролем, который хранится в памяти EEPROM платы arduino. Если пароли совпадают, то на ЖК дисплей выдается сообщение “access granted” (доступ разрешен), а если пароль неправильный, на ЖК дисплей выдается сообщение “Access Denied” (доступ запрещен) и буззер будет выдавать звуковой сигнал некоторое время. Также буззер будет выдавать одиночный (короткий) звуковой сигнал всегда когда вы будете нажимать какую-нибудь клавишу на клавиатуре.

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

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

Мы подключили библиотеку для работы с ЖК дисплеем (LiquidCrystal.h), библиотеку для работы с клавиатурой (Keypad.h) и библиотеку для работы с памятью EEPROM (EEPROM.h) и затем инициализировали необходимые для работы переменные и контакты.

Затем мы инициализировали ЖК дисплей и задали направление работы нужных нам контактов в функции setup.

После этого мы будем считывать значения с клавиатуры в функции loop.

А затем мы сравниваем введенный пароль с сохраненным паролем используя метод сравнения строк.

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

Далее представлен полный текст программы.

Видео, демонстрирующее работу схемы

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *