Данный проект является модульным, т.е. можно подключать/отключать разные элементы и получить разную функциональность. На картинках выше показан вариант с полной функциональность, а именно:
-
Запирающий механизм. Служит для ОТКРЫТИЯ и ЗАКРЫТИЯ двери. В этом проекте рассмотрено использование трёх разных механизмов:
- Сервопривод. Бывают большие, бывают маленькие. Очень компактный, и вкупе с тяжёлым засовом – отличный вариант
- Электропривод замка дверей автомобиля. Большая и мощная штука, но жрёт просто безумные токи
- Соленоидная щеколда. Хороший вариант, так как сама захлопывается
В настройках прошивки можно выбрать любой из трёх типов (настройка lock_type)
- Кнопка внутри. Служит для ОТКРЫТИЯ и ЗАКРЫТИЯ двери изнутри. Может быть размещена на ручке двери (со стороны ладони или со стороны пальцев), на самой двери, либо на косяке
- Кнопка снаружи. Служит для ЗАКРЫТИЯ двери, а также для ПРОБУЖДЕНИЯ из энергосбережения. Может быть размещена на ручке двери (со стороны ладони или со стороны пальцев), на самой двери, либо на косяке
-
Концевик на закрытие двери. Служит для автоматического закрытия замка при закрывании двери. Им может быть:
- Тактовая кнопка
- Датчик холла + магнит на самой двери
- Геркон + магнит на самой двери
- Секретная кнопка сброса доступа. Служит для сброса пароля/ввода нового пароля/запоминания нового ключа/комбинации и т.д. Может быть спрятана где-то в корпусе
-
Светодиод для индикации работы. Светодиод RGB, используются красный и зелёный цвета (при смешении дают жёлтый):
- Горит зелёный — замок ОТКРЫТ. Горит чтобы не забыть закрыть дверь
- Горит жёлтый — система проснулась и ожидает ввод пароля
- Мигает красный — сел аккумулятор
Любой из этих элементов можно исключить из системы:
- Убираем концевик. В прошивке в настройках тоже его отключаем (настройка tail_button). Теперь чтобы закрыть замок, нужно нажимать кнопку
- Убираем наружную кнопку. В прошивке в настройках тоже её отключаем (настройка wake_button). Теперь систему не нужно будить, она просыпается сама (потребление энергии чуть больше). А также у нас теперь нет кнопки закрыть на передней части двери, и нужен концевик. Либо замок – щеколда
- Убираем внутреннюю кнопку. Этот вариант годится для шкафов и сейфов. В настройках ничего менять не нужно
- Убираем светодиод. В настройках ничего менять не нужно
- Кнопку сброса доступа можно отпаять после первого использования, либо переписать код под себя
ЛОГИКА РАБОТЫ СИСТЕМЫ
- Дверь закрыта, нажато СНАРУЖИ — проснуться, ждать ввод пароля/RFID метку/электронный ключ/отпечаток пальца
- Дверь закрыта, система проснулась, ждёт ввод пароля. Время можно настроить (настройка sleep_time)
- Дверь закрыта, введён пароль/метка/ключ и т.д. — открыть
- Дверь закрыта, нажато ВНУТРИ — открыть
- Дверь открыта, нажато СНАРУЖИ — закрыть
- Дверь открыта, нажато ВНУТРИ — закрыть
- Дверь открыта, нажат КОНЦЕВИК — закрыть
В замке предусмотрена работа от аккумулятора в режиме пониженного энергосбережения (включить выключить: настройка sleep_enable), а именно:
- Просыпаться каждые несколько секунд, следить за СОБЫТИЕМ (опциональный вариант, если снаружи нет кнопки. Включить можно в настройке wake_button)
- Каждые несколько минут следить за напряжением акума (вкл/выкл настройка battery_monitor)
- Если акум разряжен (напряжение устанавливается в настройке bat_low):
- открыть дверь (опционально, можно настроить в прошивке open_bat_low)
- запретить дальнейшее открытие и закрытие
- при нажатии на кнопки мигать красным светодиодом
- перестать следить за СОБЫТИЕМ (т.е. ввод пароля/метка и т.д.)
ЛОГИКА РАБОТЫ С КЛАВИАТУРОЙ
Когда система не спит, нажать кнопку смены пароля (скрытая кнопка). Попадаем в режим смены пароля: Вводим пароль из цифр (МАКСИМУМ 10 ЦИФР!!!)
- При нажатии * пароль записывается в память и система выходит из смены пароля
- При нажатии # пароль сбрасывается (можно вводить заново)
- Если ничего не нажимать 10 секунд, автоматически выйдем из режима смены пароля, пароль останется старый
- Обработка пароля сделана таким образом, что правильный пароль засчитывается только при наборе правильной последовательности цифр, то есть если пароль 345, то вводить можно любые числа до тех пор, пока не появится последовательность 345, т.е. 30984570345 откроет замок, так как оканчивается на 345.
- Если пароль введён верно, дверь откроется
- Если ничего не нажимать, через 10 секунд система вернётся в обычный (дежурный) режим
- Если нажать #, сразу выйдем из режима ввода пароля
- Если нажать секретную кнопку смены пароля в режиме ввода пароля, то тоже из него выйдем
Аккумуляторы, бат. отсеки
Кнопки, светодиоды
Блоки питания, преобразователи
Всё для пайки
Мини щеколда
Средняя щеколда
Большая щеколда
Средний сервопривод
Мощный сервопривод
Реле
2х реле
Силовой ключ
БП 5В 2А
БП 12В 3А
Зарядник 1 банки
Зарядник 3 банок (12.6 В)
Защита 3 банок
Аккумуляторы, бат. отсеки
Arduino NANO
RFID NFC модуль
Читалка домофонных ключей
Сканер отпечатков
Клавиатура
Энкодер
Датчик вибрации
Bluetooth
Калибровка
Пустая
Клавиатура
ОТ СЕТИ 220 В
Сервопривод, от сети
Привод замка, от сети, реле
Привод замка, от сети, MOSFET
Щеколда, от сети, реле
Щеколда, от сети, MOSFET
ОТ СЕТИ 220 В + РЕЗЕРВНЫЙ АКБ
Сервопривод, резерв
Привод замка, резерв, реле
Привод замка, резерв, MOSFET
Щеколда, резерв, реле
Щеколда, резерв, MOSFET
АВТОНОМНАЯ АКБ
Сервопривод, АКБ (автономный)
Привод замка, АКБ (автономный), реле
Привод замка, АКБ (автономный), MOSFET
Щеколда, АКБ (автономный), реле
Щеколда, АКБ (автономный), MOSFET
Немного повозившись, я собрал действующую модель умного замка. В этой статье я расскажу вам, как я ее собрал.
Шаг 1: Список материалов
Для сборки электронного замка на Ардуино вам понадобятся следующие материалы:
Электроника:
- Arduino Nano
- модуль Bluetooth
- сервопривод SG90
- 5В настенный адаптер
Компоненты:
- шпингалет на дверь
- 6 винтов для шпингалета
- картон
- провода
Инструменты:
- паяльник
- клеевой пистолет
- дрель
- сверло
- сверло для направляющего отверстия
- канцелярский нож
- компьютер с программой Arduino IDE
Шаг 2: Как действует замок
Задумка состоит в том, чтобы я мог открывать или закрывать дверь без ключа, и даже не подходя к ней. Но это лишь основная идея, ведь можно еще добавить датчик детонации, чтобы он реагировал на особый стук, или можно добавить систему распознавания голоса!
Рычаг сервопривода, соединенный со шпингалетом, будет закрывать его (на 0°) и открывать (на 60°), с помощью команд, получаемых через модуль Bluetooth.
Шаг 3: Схема монтажа проводов
Давайте сначала подключим сервопривод к плате Arduino (хочу заметить, что, хотя у меня использована плата Arduino Nano, в плате Uno расположение выводов точно такое же).
- коричневый провод сервопривода – заземляющий, его подключаем к земле на Arduino
- красный провод – плюс, его подключаем к разъему 5В на Arduino
- оранжевый провод – вывод истока сервопривода, его подключаем к 9-му выводу на Arduino
Я советую вам проверить работу сервопривода, прежде чем продолжить сборку. Для этого в программе Arduino IDE в примерах выбираете Sweep. Убедившись в том, что серво работает, можем подключать Bluetooth-модуль. Нужно соединить вывод rx модуля Bluetooth с tx выводом Arduino, и tx вывод модуля с rx выводом Arduino. Но пока не делайте этого! Когда эти соединения будут спаяны, вы уже не сможете загрузить никакие коды на Arduino, поэтому сначала загрузите все ваши коды и только после этого паяйте соединения.
Вот схема соединений модуля и микроконтроллера:
- Rx модуля – Tx платы Arduino
- Tx модуля – Rx платы
- Vcc (положительный вывод) модуля – 3,3v платы Arduino
- Ground соединяем с Ground (заземление с заземлением)
Если объяснение кажется вам непонятным, следуйте представленной схеме соединений проводов.
Шаг 4: Испытание
Теперь, когда у нас есть все действующие части, давайте удостоверимся в том, что сервопривод сможет двигать шпингалет. Прежде чем монтировать шпингалет на дверь, я собрал пробный образец, чтобы убедиться в том, что серво достаточно мощный. Сначала мне показалось, что мой серво слабоват и я добавил каплю масла в шпингалет, после этого он все заработало нормально. Это очень важно, чтобы механизм хорошо скользил, иначе вы рискуете оказаться запертым в своей комнате.
Шаг 5: Корпус для электрокомпонентов
Я решил поместить в корпус только контроллер и модуль Bluetooth, а сервопривод оставить снаружи. Для этого на куске картона обводим контур платы Arduino Nano и добавляем по 1 см пространства по периметру и вырезаем. После этого также вырезаем еще пять сторон корпуса. В передней стенке нужно будет прорезать отверстие под шнур питания контроллера.
Размеры сторон корпуса:
- Дно – 7,5х4 см
- Крышка – 7,5х4 см
- Левая боковая стенка – 7,5х4 см
- Правая боковая стенка – 7,5х4 см
- Передняя стенка – 4х4 см (с прорезью под шнур питания)
- Задняя стенка – 4х4 см
Шаг 6: Приложение
Для управления контроллером вам нужен гаджет на Android или Windows со встроенным Bluetooth-ом. У меня не было возможности проверить работу приложения на яблочных устройствах, может быть, будут нужны какие-нибудь драйвера.
Уверен, кое у кого из вас есть возможность проверить это. Для Андроида скачайте приложение Bluetooth Terminal, для Windows скачайте TeraTerm. Затем нужно подключить модуль к смартфону, имя должно быть linvor, пароль – 0000 или 1234. Как только сопряжение установится, откройте установленное приложение, войдите в опции и выберите «Установить соединение (небезопасное)». Теперь ваш смартфон – монитор последовательного интерфейса Arduino, то есть вы можете обмениваться данными с контроллером.
Шаг 7: Монтируем шпингалет
Сначала вам нужно соединить сервопривод со шпингалетом. Для этого с монтажных отверстий корпуса привода нужно срезать заглушки. Если мы положим сервопривод, монтажные отверстия должны быть вровень со шпингалетом. Затем нужно поместить рычаг сервопривода в прорезь шпингалета, туда, где была ручка шпингалета. Проверьте, как ходит замок в корпусе. Если все нормально, закрепите рычаг сервопривода клеем.
Теперь нужно просверлить в двери направляющие отверстия для винтов. Для этого приложите шпингалет к двери и карандашом отметьте на полотне двери отверстия под винты. Просверлите в отмеченных местах отверстия под винты глубиной примерно 2,5 см. Приложите шпингалет и закрепите его винтами. Снова проверьте работу сервопривода.
Шаг 8: Питание
Шаг 9: Код
#include Servo myservo; int pos = 0; int state; int flag=0; void setup() { myservo.attach(9); Serial.begin(9600); myservo.write(60); delay(1000); } void loop() { if(Serial.available() > 0) { state = Serial.read(); flag=0; } // if the state is '0' the DC motor will turn off if (state == '0') { myservo.write(8); delay(1000); Serial.println("Door Locked"); } else if (state == '1') { myservo.write(55); delay(1000); Serial.println("Door UnLocked"); } }
Шаг 10: Законченный замок на базе Arduino
Наслаждайтесь своим замком с дистанционным управлением, и не забудьте «случайно» запереть друзей в комнате.
Используемые источники:
- https://alexgyver.ru/electro_lock/
- https://masterclub.online/topic/15074-elektronnyi-zamok-na-vhodnuyu-dver&parent-reqid=1587072560589882-731805508683375927100126-production-app-host-man-web-yp-292&lite=1