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

Дверной замок с клавиатурой и изменяемым кодом

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

Arduino UNO
× 1
Матрица клавиатуры 4x4
× 1
Стандартная кнопка
× 1
ЖК-дисплей i²c
× 1
Блокировка линейного соленоида
× 1
IRF510N MOSFET
× 1
1-канальное реле
× 1

Необходимые инструменты и машины

Макет, 170 выводов
10 шт. Комплект перемычки, длина 5 см

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

Привет, и добро пожаловать в этот учебник (да, он старый, но классический), сегодня я делаю проект дверного замка на основе платы Arduino, клавиатуры, ЖК-экрана i²c, и я буду использовать для блокировки соленоид и реле, вы можете проверить мое руководство о дверном замке с отпечатками пальцев, где я использовал замок с двигателем постоянного тока, поэтому в зависимости от вашей системы блокировки вам придется выбрать проводку, коды и адаптировать их.

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

Детали

Итак, для этого проекта нам понадобятся эти компоненты, а также несколько соединительных проводов и источник питания на 12 В. Извините, я не добавил его сюда:

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

Я использовал клавиатуру 4 × 4, вы можете использовать 3 × 4, но вам нужно будет изменить что-то в коде, например, для подтверждения я использую «A», вы можете изменить его на «*» или «#».

Соленоид питается от внешнего источника питания 12 В и управляется МОП-транзистором IRF510N.

Транзистор используется в качестве переключателя, и лучше использовать N-канал, IRF510N довольно популярен при использовании с Arduino, когда вы прикладываете напряжение 5 В между затвором и источником, транзистор становится похожим на замкнутый переключатель между Слив и Источник, и ему не нужен резистор вроде биполярных.

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

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

Схема алгоритма

Чтобы упростить понимание, вот блок-схема, она не является полностью подробной, но представляет собой обзор кода.

Примечание:вы можете использовать реле для управления любым электрическим замком напряжением до 250 В переменного тока, вы также можете использовать его для управления соленоидом…

Коды точно такие же, единственное, что вы переключаетесь между (НИЗКИЙ и ВЫСОКИЙ), чтобы открыть замок.

Просто помните, что в первый раз вы должны загрузить код и изменить код доступа, затем раскомментировать некоторые строки (прочитайте код, чтобы найти их (они находятся в настройке)) и повторно загрузите код, чтобы он мог прочитать код доступа из EEPROM. ЭТО СДЕЛАНО ТОЛЬКО ОДИН РАЗ .

Также вы можете изменить длину кода, сначала я сделал ее четырехзначной, вы можете изменить ее с кода по умолчанию, поскольку я использовал в коде «sizeof (code)» вместо «4». Вы не можете изменить четырехзначный код на шестизначный код доступа, сначала измените исходный код доступа из источника кода.

Тест

Вы найдете тест на картинках ниже, перемещайтесь по ним

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

Надеюсь, это будет полезно, и если у вас возникнут проблемы или вопросы, оставьте комментарий.

Код

  • Keypad_doorlock_solenoid.ino
  • Keypad_doorlock_relay.ino
Keypad_doorlock_solenoid.ino Arduino
Не забудьте сначала загрузить код, затем раскомментировать строки с 62 по 64 и повторно загрузить, это делается только один раз.
 / * Этот код работает с матрицей клавиатуры 4x4, ЖК-микросхемой, транзистором IRF510N и кнопкой * Это замок, в котором работает транзистор соленоидный замок, который можно открыть либо с помощью правильного кода *, либо с помощью кнопки изнутри * Код может быть изменен непосредственно с клавиатуры и не требует повторной загрузки кода * Код хранится в EEPROM * См. www.surtrtech.com для более подробной информации * / # include  #include  #include  #define Solenoid 11 // Фактически затвор транзистора, который управляет соленоидом # define O_Button 10 // Кнопка #define I2C_ADDR 0x27 // Адрес I2C, вы должны сначала использовать код для сканирования адреса (0x27) здесь # define BACKLIGHT_PIN 3 // Объявление выводов ЖК-дисплея #define En_pin 2 # define Rw_pin 1 # define Rs_pin 0 # define D4_pin 4 # define D5_pin 5 # определить D6_pin 6 # определить D7_pin 7const byte numRows =4; // количество строк на клавиатуреconst byte numCols =4; // количество столбцов в раскладке клавиатуры [numRows] [numCols] ={{'1', '2', '3', 'A'}, {'4', '5', '6', 'B '}, {' 7 ',' 8 ',' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; нажатие клавиши char; // Место хранения ключей очень часто меняется char code [] ={'6', '6', '0', '1'}; // Код по умолчанию, вы можете изменить его или сделать его n-значным onechar code_buff1 [sizeof (code)]; // Где хранится новый ключchar code_buff2 [sizeof (code)]; // Где снова сохраняется новый ключ для сравнения с предыдущим short a =0, i =0, s =0, j =0; // Используемые переменные более позднего байта rowPins [numRows] ={9,8,7,6}; // Строки с 0 по 3 // если вы изменяете свои пины, вы должны изменить этот слишком байт colPins [numCols] ={5,4,3,2}; // Столбцы от 0 до 3 LiquidCrystal_I2C lcd (I2C_ADDR, En_pin, Rw_pin, Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin); Keypad myKeypad =Keypad (makeKeymap (keymap), rowPins, colPins, numRows, numRows, numRows, numRows, n .begin (16,2); lcd.setBacklightPin (BACKLIGHT_PIN, ПОЛОЖИТЕЛЬНЫЙ); lcd.setBacklight (ВЫСОКИЙ); // Подсветка подсветки lcd.home (); lcd.print («Ожидание»); // То, что написано на ЖК-дисплее, можно изменить pinMode (Solenoid, OUTPUT); pinMode (O_Button, ВХОД); // for (i =0; i  
Keypad_doorlock_relay.ino Arduino
Не забудьте сначала загрузить код, затем раскомментировать строки 62-64 и повторно загрузить, это делается только один раз.
 / * Этот код работает с матрицей клавиатуры 4x4, ЖК-дисплеем, модулем реле и кнопкой * Это замок, на котором реле может управлять замком, который вы можете открыть либо с помощью правильного кода *, либо с помощью кнопки изнутри * Код можно изменить непосредственно с клавиатуры и не требует повторной загрузки кода * Код хранится в EEPROM * См. www.surtrtech.com для более подробной информации * / # include  #include  #include  #define Relay 11 // Управляет реле # define O_Button 10 // Кнопка # define I2C_ADDR 0x27 // I2C adress, вы должны использовать код для сканирования адреса сначала (0x27) здесь # define BACKLIGHT_PIN 3 // Объявление выводов ЖК-дисплея # define En_pin 2 # define Rw_pin 1 # define Rs_pin 0 # define D4_pin 4 # define D5_pin 5 # define D6_pin 6 # определить D7_pin 7const byte numRows =4; // количество строк на клавиатуреconst byte numCols =4; // количество столбцов в раскладке клавиатуры [numRows] [numCols] ={{'1', '2', '3', 'A'}, {'4', '5', '6', 'B '}, {' 7 ',' 8 ',' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; нажатие клавиши char; // Место хранения ключей очень часто меняется char code [] ={'6', '6', '0', '1'}; // Код по умолчанию, вы можете изменить его или сделать его n-значным onechar code_buff1 [sizeof (code)]; // Где хранится новый ключchar code_buff2 [sizeof (code)]; // Где снова сохраняется новый ключ для сравнения с предыдущим short a =0, i =0, s =0, j =0; // Используемые переменные более позднего байта rowPins [numRows] ={9,8,7,6}; // Строки с 0 по 3 // если вы изменяете свои пины, вы должны изменить этот слишком байт colPins [numCols] ={5,4,3,2}; // Столбцы от 0 до 3 LiquidCrystal_I2C lcd (I2C_ADDR, En_pin, Rw_pin, Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin); Keypad myKeypad =Keypad (makeKeymap (keymap), rowPins, colPins, numRows, numRows, numRows, numRows, n .begin (16,2); lcd.setBacklightPin (BACKLIGHT_PIN, ПОЛОЖИТЕЛЬНЫЙ); lcd.setBacklight (ВЫСОКИЙ); // Подсветка подсветки lcd.home (); lcd.print («Ожидание»); // То, что написано на ЖК-дисплее, можно изменить pinMode (Relay, OUTPUT); pinMode (O_Button, ВХОД); // for (i =0; i  

Схема


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

  1. Банковское хранилище
  2. Создание двери офиса с автоматическим запиранием с помощью датчика приближения смартфона
  3. Многотемпературный датчик
  4. MotionSense
  5. Пожарная безопасность 3D-принтера
  6. Дверной замок на основе пароля
  7. Датчик Интернета вещей с Arduino, Yaler и IFTTT
  8. Отталкивающая электромагнитная левитация Arduino
  9. Бот для захвата удаленного управления
  10. CoroFence - Тепловой детектор🖖