Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Система блокировки дверей без ключа Arduino с клавиатурой и ЖК-дисплеем

Компоненты и расходные материалы

Arduino UNO
× 1
Панель кнопок SparkFun 4x4 - совместимость со светодиодами
× 1
Стандартный ЖК-экран Adafruit - 16x2, белый на синем
× 1
Реле (универсальное)
× 1
Батарея 9 В (стандартная)
× 1
Однооборотный потенциометр - 10 кОм
× 1
Резистор 10 кОм
× 1

Приложения и онлайн-сервисы

IDE Arduino

Об этом проекте

Система замков дверей без ключа Arduino с клавиатурой и ЖК-дисплеем

0

0

Али Хамза

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

Обязательные компоненты

Компоненты, необходимые для этого проекта, следующие

  • Ардуино
  • Клавиатура 4X4
  • ЖК-дисплей
  • Блокировка постоянного тока
  • Реле
  • Батарея 9 В
  • потенциометр 10 кОм
  • резистор 220 Ом.

Как это работает?

Каждый раз, когда нажимаются клавиши, они сопоставляются с уже сохраненными клавишами. Если нажатые клавиши соответствуют начальному паролю, хранящемуся в EEPROM, который равен «1234», то замок откроется. Если пароль не совпадает, на ЖК-дисплее будет выведено сообщение «Доступ запрещен».

Если будет нажата клавиша «#», вам будет предложено ввести текущий пароль, и, если он совпадает, вам будет предложено ввести новый пароль, и пароль будет изменен.

Принципиальная схема

Сначала подключите клавиатуру 4X4 к Arduino; соедините первые шесть контактов на клавиатуре 4X4 с контактами A0 и A5 на Arduino. Затем подключите два последних контакта модуля клавиатуры 4X4 к цифровым контактам 3 и 2 на Arduino.

После этого подключите ЖК-дисплей к Arduino. Подключения для подключения ЖК-дисплея к Arduino следующие

  • Подключите контакт 1 на ЖК-дисплее, который является контактом VSS, к GND на Arduino.
  • Подключите контакт 2, который является контактом VDD, к контакту 5V на Arduino.
  • Подключите контакт 3, который является V0, к середине потенциометра 10k, а два других контакта потенциометра подключите к 5V и GND на Arduino. Этот штифт предназначен для настройки контрастности ЖК-дисплея.
  • Подключите контакт 4, который является контактом RS, к контакту 7 на Arduino.
  • Подключите контакт 5, который является контактом R / W, к контакту GND на Arduino.
  • Подключите контакт 6, который является контактом включения, к контакту 6 на Arduino.
  • Подключите контакты 11, 12, 13 и 14, которые являются контактами данных, к контактам 5, 4, 3 и 2 на Arduino.
  • Подключите контакт 15, который является контактом подсветки ЖК-дисплея, к 5 В на Arduino через резистор 220 Ом.
  • Подключите контакт 16 Arduino, который является отрицательным контактом подсветки, к GND на Arduino.

Наконец, мы подключим блокировку постоянного тока к Arduino. Замок работает от напряжения от 7 до 12 В, поэтому мы не можем напрямую подключить его к Arduino. Чтобы подключить его к Arduino, нам потребуются реле и аккумулятор.

Подключите сигнальный контакт реле к контакту 10 на Arduino, а VCC и GND замка к 5V и GND на Arduino. Затем на другом конце реле подключите отрицательный полюс батареи к общему проводу реле, а нормально разомкнутый контакт реле - к одной стороне замка. Затем подключите другую сторону замка к положительной клемме аккумулятора.

Код блокировки клавиатуры Arduino

Первоначальный пароль - 1234.

  #include  #include  #include  LiquidCrystal liquid_crystal_display (9,8,7,6,5,4,); char пароль [4]; char initial_password [4], new_password [4]; int i =0; int relay_pin =10; char key_pressed =0; const byte rows =4; константные байтовые столбцы =4; char hexaKeys [строки] [столбцы] ={{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7' , '8', '9', 'C'}, {'*', '0', '#', 'D'}}; байтовые контакты row_pins [строки] ={A0, A1, A2, A3}; байты column_pins [columns] ={A4, A5,3,2}; Keypad keypad_key =Клавиатура (makeKeymap (hexaKeys), row_pins, column_pins, rows, columns); void setup () {pinMode (relay_pin, OUTPUT); liquid_crystal_display.begin (16,2); liquid_crystal_display.print ("DIYhacking.com"); liquid_crystal_display.setCursor (0,1); liquid_crystal_display.print («Электронный замок»); задержка (2000); liquid_crystal_display.clear (); liquid_crystal_display.print («Введите пароль»); liquid_crystal_display.setCursor (0,1); initialpassword ();} недействительный цикл () {digitalWrite (relay_pin, HIGH); key_pressed =keypad_key.getKey (); если (key_pressed =='#') change (); если (key_pressed) {пароль [i ++] =key_pressed; liquid_crystal_display.print (нажата клавиша); } Если (я ==4) {задержка (200); для (int j =0; j <4; j ++) начальный_пароль [j] =EEPROM.read (j); если (! (strncmp (пароль, начальный_пароль, 4))) {liquid_crystal_display.clear (); liquid_crystal_display.print («Пропуск принят»); digitalWrite (relay_pin, LOW); задержка (2000); liquid_crystal_display.setCursor (0,1); liquid_crystal_display.print ("Pres # изменить"); задержка (2000); liquid_crystal_display.clear (); liquid_crystal_display.print («Введите пароль:»); liquid_crystal_display.setCursor (0,1); я =0; } Else {digitalWrite (реле_контакт, ВЫСОКИЙ); liquid_crystal_display.clear (); liquid_crystal_display.print («Неверный пароль»); liquid_crystal_display.setCursor (0,1); liquid_crystal_display.print ("Pres # to Change"); задержка (2000); liquid_crystal_display.clear (); liquid_crystal_display.print («Введите пароль»); liquid_crystal_display.setCursor (0,1); я =0; }}} Void change () {int j =0; liquid_crystal_display.clear (); liquid_crystal_display.print («Текущий пароль»); liquid_crystal_display.setCursor (0,1); в то время как (j <4) {char key =keypad_key.getKey (); если (ключ) {новый_пароль [j ++] =ключ; liquid_crystal_display.print (ключ); } Ключ =0; } Задержка (500); если ((strncmp (новый_пароль, начальный_пароль, 4))) {liquid_crystal_display.clear (); liquid_crystal_display.print («Неверный пароль»); liquid_crystal_display.setCursor (0,1); liquid_crystal_display.print («Попробовать еще раз»); задержка (1000); } Иначе {j =0; liquid_crystal_display.clear (); liquid_crystal_display.print («Новый пароль:»); liquid_crystal_display.setCursor (0,1); в то время как (j <4) {char key =keypad_key.getKey (); если (ключ) {начальный_пароль [j] =ключ; liquid_crystal_display.print (ключ); EEPROM.write (j, ключ); j ++; }} Liquid_crystal_display.print («Пропуск изменен»); задержка (1000); } Liquid_crystal_display.clear (); liquid_crystal_display.print («Введите пароль»); liquid_crystal_display.setCursor (0,1); key_pressed =0;} void initialpassword () {для (int j =0; j <4; j ++) EEPROM.write (j, j + 49); for (int j =0; j <4; j ++) initial_password [j] =EEPROM.read (j);}  

Пояснение к коду

Прежде всего, мы включим библиотеки для клавиатуры 4X4, LCD и библиотеку для хранения пароля. Библиотека EEPROM используется для хранения пароля. По умолчанию в нем хранится пароль «1234».

  #include  #include  #include   

В функции цикла нажатая клавиша будет сохранена в ‘ key_pressed ’, И она будет сравниваться с другими ключами. Если нажата клавиша «#», то будет вызвана функция изменения, которая запросит новый пароль.

  key_pressed =keypad_key.getKey (); if (key_pressed =='#') change ();  

Нажатые клавиши сохраняются в « пароле . ’, И они отображаются на ЖК-дисплее при нажатии клавиш. Затем эти ключи будут сопоставлены с исходным паролем, хранящимся в EEPROM. Если нажатые клавиши совпадают с исходным паролем, то замок откроется, и на ЖК-дисплее будет напечатано «Пропуск принят». Если пароль не совпадает, он попросит ввести пароль еще раз.

  if (key_pressed) {пароль [i ++] =key_pressed; liquid_crystal_display.print (нажата клавиша); } если (я ==4) {задержка (200); для (int j =0; j <4; j ++) начальный_пароль [j] =EEPROM.read (j); если (! (strncmp (пароль, начальный_пароль, 4))) {liquid_crystal_display.clear (); liquid_crystal_display.print («Пропуск принят»); digitalWrite (relay_pin, LOW); задержка (2000);  

Если нажата клавиша «#», будет вызвана функция « change () . 'Функция. В функции изменения он попросит вас ввести текущий пароль. Если текущий пароль правильный, вам будет предложено ввести новый пароль. После ввода нового пароля пароль будет изменен.

  void change () {int j =0; liquid_crystal_display.clear (); liquid_crystal_display.print («Текущий пароль»); liquid_crystal_display.setCursor (0,1); в то время как (j <4) {char key =keypad_key.getKey (); если (ключ) {новый_пароль [j ++] =ключ; liquid_crystal_display.print (ключ); } Ключ =0; } Задержка (500);  

Теги:клавиатура 4x4, Arduino, DC Lock, Keylock, Keypad, lcd, Lock

Рекомендуемые сообщения

Будильник Arduino с использованием часов реального времени и ЖК-экрана

Как собрать самобалансирующегося робота на Arduino

Используйте Arduino и соленоид, чтобы заставить тостер танцевать

Сделайте самодельную систему автоматического полива с помощью Arduino

Код

  • Фрагмент кода №1
  • Фрагмент кода №2
  • Фрагмент кода №3
  • Фрагмент кода 4
  • Фрагмент кода № 5
Фрагмент кода №1 Обычный текст
 #include  #include  #include  LiquidCrystal liquid_crystal_display (9,8,7,6,5,4,); char пароль [4]; char initial_password [ 4], новый_пароль [4]; int i =0; int relay_pin =10; char key_pressed =0; const byte rows =4; константные байтовые столбцы =4; char hexaKeys [строки] [столбцы] ={{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7' , '8', '9', 'C'}, {'*', '0', '#', 'D'}}; байтовые контакты row_pins [строки] ={A0, A1, A2, A3}; байты column_pins [columns] ={A4, A5,3,2}; Keypad keypad_key =Клавиатура (makeKeymap (hexaKeys), row_pins, column_pins, rows, columns); void setup () {pinMode (relay_pin, OUTPUT); liquid_crystal_display.begin (16,2); liquid_crystal_display.print ("DIYhacking.com"); liquid_crystal_display.setCursor (0,1); liquid_crystal_display.print («Электронный замок»); задержка (2000); liquid_crystal_display.clear (); liquid_crystal_display.print («Введите пароль»); liquid_crystal_display.setCursor (0,1); initialpassword ();} недействительный цикл () {digitalWrite (relay_pin, HIGH); key_pressed =keypad_key.getKey (); если (key_pressed =='#') change (); если (key_pressed) {пароль [i ++] =key_pressed; liquid_crystal_display.print (нажата клавиша); } Если (я ==4) {задержка (200); для (int j =0; j <4; j ++) начальный_пароль [j] =EEPROM.read (j); если (! (strncmp (пароль, начальный_пароль, 4))) {liquid_crystal_display.clear (); liquid_crystal_display.print («Пропуск принят»); digitalWrite (relay_pin, LOW); задержка (2000); liquid_crystal_display.setCursor (0,1); liquid_crystal_display.print ("Pres # изменить"); задержка (2000); liquid_crystal_display.clear (); liquid_crystal_display.print («Введите пароль:»); liquid_crystal_display.setCursor (0,1); я =0; } Else {digitalWrite (реле_контакт, ВЫСОКИЙ); liquid_crystal_display.clear (); liquid_crystal_display.print («Неверный пароль»); liquid_crystal_display.setCursor (0,1); liquid_crystal_display.print ("Pres # to Change"); задержка (2000); liquid_crystal_display.clear (); liquid_crystal_display.print («Введите пароль»); liquid_crystal_display.setCursor (0,1); я =0; }}} Void change () {int j =0; liquid_crystal_display.clear (); liquid_crystal_display.print («Текущий пароль»); liquid_crystal_display.setCursor (0,1); в то время как (j <4) {char key =keypad_key.getKey (); если (ключ) {новый_пароль [j ++] =ключ; liquid_crystal_display.print (ключ); } Ключ =0; } Задержка (500); если ((strncmp (новый_пароль, начальный_пароль, 4))) {liquid_crystal_display.clear (); liquid_crystal_display.print («Неверный пароль»); liquid_crystal_display.setCursor (0,1); liquid_crystal_display.print («Попробовать еще раз»); задержка (1000); } Иначе {j =0; liquid_crystal_display.clear (); liquid_crystal_display.print («Новый пароль:»); liquid_crystal_display.setCursor (0,1); в то время как (j <4) {char key =keypad_key.getKey (); если (ключ) {начальный_пароль [j] =ключ; liquid_crystal_display.print (ключ); EEPROM.write (j, ключ); j ++; }} Liquid_crystal_display.print («Пропуск изменен»); задержка (1000); } Liquid_crystal_display.clear (); liquid_crystal_display.print («Введите пароль»); liquid_crystal_display.setCursor (0,1); key_pressed =0;} void initialpassword () {для (int j =0; j <4; j ++) EEPROM.write (j, j + 49); for (int j =0; j <4; j ++) initial_password [j] =EEPROM.read (j);} 
Фрагмент кода 2 Обычный текст
 #include  #include  #include  
Фрагмент кода № 3 Обычный текст
 key_pressed =keypad_key.getKey (); if (key_pressed =='#') change (); 
Фрагмент кода №4 Обычный текст
 if (key_pressed) {пароль [i ++] =key_pressed; liquid_crystal_display.print (нажата клавиша); } если (я ==4) {задержка (200); для (int j =0; j <4; j ++) начальный_пароль [j] =EEPROM.read (j); если (! (strncmp (пароль, начальный_пароль, 4))) {liquid_crystal_display.clear (); liquid_crystal_display.print («Пропуск принят»); digitalWrite (relay_pin, LOW); задержка (2000); 
Фрагмент кода № 5 Обычный текст
 void change () {int j =0; liquid_crystal_display.clear (); liquid_crystal_display.print («Текущий пароль»); liquid_crystal_display.setCursor (0,1); в то время как (j <4) {char key =keypad_key.getKey (); если (ключ) {новый_пароль [j ++] =ключ; liquid_crystal_display.print (ключ); } Ключ =0; } Delay (500); 

Схема

Используйте Arduino для управления дверным замком с соленоидом, который можно открыть с помощью правильной комбинации клавиш.

Производственный процесс

  1. Игра с гироскопом Arduino с MPU-6050
  2. Система посещаемости с использованием Arduino и RFID с Python
  3. Датчик DHT11 со светодиодами и пьезо-динамиком
  4. ЖК-анимация и игры
  5. Unopad - MIDI-контроллер Arduino с Ableton
  6. Регистратор данных температуры и влажности
  7. Простой датчик препятствий с Arduino
  8. Светодиодный куб 4x4x4 с Arduino Uno и 1sheeld
  9. Счетчик RPM на основе Arduino с новым и более быстрым алгоритмом
  10. Система посещаемости на основе Arduino и Google Spreadsheet