Макет умного замка на базе esp8266

ROB-53566

Анализ проблемы и постановка задачи
История возникновения дверей и замков
С появлением частной собственности появилась необходимость оберегать ее от чужих посягательств. Для этого и были придуманы двери и замки. Замки для входных дверей и соответственно ключи к замкам появились у ранних цивилизаций. Первый деревянный ключ для дверного замка был найден в гробнице фараона Рамсеса ІІ. После этого замки и ключи прошли огромный путь развития. Врезные и навесные, большие и маленькие, потайные и изысканные - за века мастера придумали множество видов и типов замков и ключей. На рисунке (Рисунок 1.1) представлен пример из средневековья.

Рисунок 1.1.  Средневековый замок
Чтобы подтвердить значимость замкового дела, Император Карл IV ввел звание мастера по замкам. Тем самым в средневековой Европе законодательно закреплялись традиции данной профессии, утверждались стандарты мастерства и профессиональной этики. Интересно, что именно в Праге, на родине Императора, сегодня существует один из крупнейших Музей замков. Гильдии мастеров по замкам существовали в каждом большом городе. А в 1650 году в своде законов Людовика XIV замочное дело было названо четвертым искусством.
Екатерина Великая, царица России с 1762 по 1796 гг., имела одну из самых замечательных коллекций замков своего времени. Она восхищалась тонким мастерством ремесленников, которые придумывали изящные узоры на замках и создавали висячие замки причудливых форм
На протяжении многих веков ключи были символами власти, безопасности и авторитетности. Поэтому боги и святые в древних писаниях являются хранителями ключей от врат моря и земли, от рая небесного и от бездны. Важным событием в древние века и сегодня считается преподнесение замочного ключа от какой-то знаменательной двери. Вот и у Пушкина упоминаются «ключи старого Кремля», которые так не достались Наполеону. 
Очень долгое время замок и ключ были неотделимы друг от друга. Ключи, как и сами замки изготавливались различных форм и размеров и нередко тоже являлись произведениями искусства. 
Возникновение кодовых замков
Главный недостаток ключевых замков — необходимость носить с собой ключи или хранить их в укромном месте. Ключи – вот главная уязвимость ключевых замков. Потеря ключа или попадание его в чужие руки делают совершенно бесполезной всю надежность и секретность замка. Отказаться от ключа, который нужно носить с собой и который можно потерять или украсть - вот главная идея кодовых замков. 
Впервые кодовый замок был описан  на Древнем Востоке в начале XIII века. А современные кодовые замки ведут свою историю с середины XIX века. Обычно механический кодовый замок имеет несколько дисков, совмещая символы или цифры на которых набирается код. За многие годы конструкций кодовых замков придумано много, но общее у них одно - для того чтобы открыть замок не нужен ключ, нужно только знать специальный код, который знает только хозяин замка и который он всегда помнит. На рисунке (Рисунок 1.2) представлен внешний вид кодового замка XIX века.

Рисунок 1.2. Кодовый замок
Недостатком механических кодовых замков является их не очень высокая надежность, так как в одном устройстве должны быть сосредоточены и механизм собственно замка и механизм набора кода и механизм смены кода. При этом стремление к уменьшению размера приводит как правило к уменьшению прочности всего устройства.
Следующим шагом развития замков и ключей стало появление электронных кодовых замков. Они дают практически безграничный простор для реализации идей в области безопасности. При этом можно разделить сам замок, на механическую часть, сделав ее сколь угодно надежной, и так называемые «мозги», ту часть, которая реализует логику открытия замка и проверку легитимности открытия замка. 
И вот здесь возможно реализовать любые идеи, как ограничить злоумышленнику доступ к ценностям, охраняемым нашим замком, и как предотвратить взлом этого замка. Уже многие десятилетия фирмы, выпускающие электронные замки придумали множество устройств и приемов для того чтобы затруднить жизнь злоумышленникам. Например клавиатура с изменяющимся значением клавиш - бесполезно запоминать какие клавиши были нажаты - следующий раз тот же код нужно будет вводить при помощи других клавиш. 
Диапазон устройств для ввода кодов тоже очень широк - это клавиатуры и номеронабиратели, электронные ключи и много другое. Отдельно среди всех этих устройств выделяется биометрия. Это последнее достижение в области безопасности. Палец, отпечатком которого открывается замок - это и ключ и код ,который всегда с собой, и который невозможно потерять, украсть или забыть. Существуют и другие биометрические сканеры: сетчатки глаза, формы лица и т.д.
Постановка задачи
Я решил разработать «умный замок». Это будет не просто электронный кодовый замок. Скорее это следует рассматривать как систему безопасности, которую в будущем можно будет установить на любую дверь: дом, квартиру, сейф, офис и т.д. На этом устройстве я собираюсь отработать различные технологии для «умных замков», которые в свою очередь являются составной частью технологии «умный дом».
Чем принципиально отличаются электронные замки от обычных замков? Главное отличие - это отсутствие физического ключа. Невозможно потерять или украсть ключ, которого нет. Электронные замки очень удобно применять на тех дверях, которыми пользуются много людей, например в офисе. Все сотрудники, которые имеют право открывать замок, прописываются в памяти замка. В случае если сотрудник увольняется - он исключается из памяти и теряет доступ к замку. Даже если используются физические электронные ключи, RFID-карточки или smart-брелки, достаточно исключить код потерянного ключа из памяти замка, и он не сможет больше открыть замок. Если же замок действует вообще без ключа, а по коду или по отпечатку пальца, то исключить потенциального злоумышленника из списка разрешенных - еще проще. В любом случае не нужно демонтировать сам замок, переделывать ключи или менять саму дверь - достаточно просто настроить новый код или отредактировать список разрешенных отпечатков пальцев. 
В последнее время набирают популярность так называемые «умные замки». Отличительная особенность таких устройств - не заставлять хозяина совершать сложные действия для открытия замка: набирать код или подносить электронный ключ. Как правило, достаточно приложить палец или нажать кнопку в мобильном приложении на смартфоне. При этом «умные замки» обеспечивают больший уровень безопасности: код может стать известным злоумышленнику, электронный ключ можно потерять, а вот подделать отпечаток пальца практически невозможно, к тому же он всегда с собой.
Вторая отличительная особенность «умных замков» состоит в том, что их можно включать в комплексную систему «умный дом». Как правило, в состав «умного замка» входит микроконтроллер, который вполне можно по специальному протоколу связать с главным контроллером «умного дома» и быть его частью. Например, «умный замок» может быть открыт по команде от главного контроллера для того чтобы впустить гостя. 
Именно такой «умный замок» я буду разрабатывать в своем проекте. 
Отличительной особенностью разрабатываемого устройства является комбинированный способ открывания замка. Замок можно открыть приложив палец к сканеру отпечатков пальцев. Другой способ - послать сообщение из Telegram-бота по сети Интернет. В последнем случае авторизация происходит средствами обработки специальных команд, принятых из чат-бота Telegram.
Устройство будет собрано на базе игрушечного сейфа-копилки. Можно было бы собрать простой стенд, на котором продемонстрировать работу устройства, но я решил выбрать именно сейф, потому что сейф логичнее всего подходит для установки в нем электронного замка. Ведь сейф - это сейф, в нем обязательно должен быть замок и лучше чтобы это был «умный замок».
Основой устройства будет плата Node MCU, платформа на основе микроконтроллера ESP 8266 со встроенным Wi-Fi. Именно возможность подключиться к локальной Wi-Fi сети, а через нее к сети Интернет будет использована для открывания замка через Telegram-бота. Кроме возможности подключиться к Wi-Fi, плата Node MCU - это полноценный микроконтроллер с разведенной на плате периферией. 
Запирание двери будет осуществлено при помощи электро-механического замка. 
Считывание отпечатка пальца производится сканером отпечатков пальцев. Устройство должно хранить в своей памяти отпечатки пальцев нескольких людей. 
Устройство питается от двух аккумуляторов 3,7В. Если аккумуляторы разрядятся - это не должно привести к открытию замка. Подзарядка аккумуляторов должна выполняться непосредственно на устройстве, не вынимая их из него, для чего должна быть предусмотрена отдельная цепь зарядки.
Устройство должно представлять из себя законченный продукт и выполнять свою главную функцию - хранить ценности. Собранный сейф можно использовать как полноценную копилку для денег, а не просто как демонстрацию возможностей «умного замка».

 

 

 

Разработка устройства
Описание компонентов устройства
При сборке устройства использовались следующие компоненты:
плата Node MCU Lua на базе Wifi модуля ESP8266;
датчик отпечатков пальцев DY-50;
электронный замок-защелка;
реле KY-019;
зарядная плата TP4056 (2 шт);
повышающий регулируемый DC-DC преобразователь MT3608;
Li-ion аккумулятор 3,7 вольта (2 шт).
Основой разрабатываемого «умного замка» является плата NodeMcu – платформа на основе микроконтроллера ESP8266 для создания различных устройств интернета вещей (IoT). Модуль умеет отправлять и получать информацию в локальную сеть либо в интернет при помощи Wi-Fi. Недорогой модуль часто используется для создания систем умного дома или роботов, управляемых на расстоянии (Рисунок 2.1).

Рисунок 2.1. Плата Node MCU ESP 8266 v3


Технические характеристики модуля:
поддерживает Wi-Fi протокол 802.11 b/g/n;
поддерживаемые режимы Wi-Fi – точка доступа, клиент;
входное напряжение 3,7В – 20 В;
рабочее напряжение 3В-3,6В;
максимальный ток 220мА;
встроенный стек TCP/IP;
диапазон рабочих температур от -40С до 125С;
частота 80 МГц, 32-битный процессор;
оперативная память: 128 КБ;
внешняя  флеш-память: 4 МБ;
время пробуждения и отправки пакетов: 22мс;
встроенные TR переключатель и PLL;
наличие усилителей мощности, регуляторов, систем управления питанием.
ESP8266 NodeMCU имеет в общей сложности 17 выводов GPIO, выведенных на разъемы с обеих сторон отладочной платы. Эти выводы могут использоваться для выполнения различных периферийных задач, в том числе:
вход АЦП – канал 10-разрядного АЦП;
интерфейс UART – интерфейс UART используется для загрузки кода по последовательной связи;
выходы ШИМ – выводы ШИМ могут использоваться для регулировки яркости светодиодов или управления двигателями;
интерфейсы SPI, I2C – интерфейсы используются SPI и I2C для подключения всевозможных датчиков и периферийных устройств;
интерфейс I2S – используется для цифровой передачи звука.
Программирование платы Node MCU возможно из среды Arduino IDE - самой популярной среды разработки у начинающих робототехников (Рисунок 2.2). Для этого в среду устанавливается специальное обновление для этой платы и других вариантов микроконтроллера ESP 8266.

Рисунок 2.2. Выбор платы NodeMCU в среде Arduino IDE
Загружать написанную программу мы будем через USB-кабель micro-USB. При размещении платы внутри сейфа нужно предусмотреть возможность легкого подключения к ней этим кабелем для обновления программы или заливки новых ключей. 
Для разблокировки по отпечатку пальца я решил использовать биометрический датчик отпечатков пальцев DY-50. Данный датчик подключается по интерфейсу UART и имеет возможность записи до 127 различных отпечатков.  Питающее напряжение датчика: DC 3,6 ~ 6,0 V/3,3 V. Уровень безопасности: пять (от низкого до высокого: 1,2,3,4,5)
Уровень ложного приема (Дальний): <0.001% (уровень безопасности 3). (Рисунок 2.3)

Рисунок 2.3. Датчик отпечатков пальцев DY-50
Электронный замок-защелка используется для открывания и закрывания двери. Характеристики данного замка:
время разблокировки: 1 секунда;
входной ток: 0.4A;DC12V;
габариты: длина-27 мм, ширина-15 мм, высота-17 мм, длина языка-7 мм, высота языка-10 мм.

Рисунок 2.4. Электронный замок
Для зарядки аккумуляторов я решил использовать зарядные платы TP4056. Такая плата принимает входное напряжение в 4,5–5В. Для индикации зарядки аккумулятора используются два светодиода, также важно отметить, что данная плата имеет защиту от избыточного заряда аккумуляторов, но не имеет защиты от переполюсовки.

Рисунок 2.5. Зарядная плата TP4056
Также в проекте присутствуют реле KY-019 и повышающий регулируемый DC-DC преобразователь MT3608.

Рисунок 2.6. Преобразователь MT3608

Рисунок 2.7. Реле KY-019

Сборка устройства
Перед сборкой устройства я нарисовал общую схему устройства и схему подключения каждого компонента к модулю NodeMCU. На рисунке (Рисунок 2.8) показана схема подключения сканера отпечатка пальцев к NodeMCU.


Рисунок 2.8. Подключение датчика отпечатка пальцев к модулю NodeMCU
На рисунке (Рисунок 2.9) приведена схема подключения реле к NodeMCU

Рисунок 2.9. Подключение реле к модулю NodeMCU
На рисунке (Рисунок 2.10) показана схема подключения замка-защелки к NodeMCU через реле. Так как замок-защелка работает от 12 В возникла необходимость включить в схему повышающий преобразователь MT3608.

Рисунок 2.10. Схема подключения замка при помощи реле и повышающего преобразователя.
Общая схема приведена на рисунке (Рисунок 2.11).

Рисунок 2.11. Общая схема
Устройство работает следующим образом. если срабатывает одно из условий: пришла команда из чат-бота или приложили палец к датчику - это условие проверяется. Если пришла команда из Telegram, то проверяется, доверенный ли пользователь ввел команду. Сделано это для того, чтобы команду на открытие не мог подать злоумышленник. Если приложен палец к сканеру отпечатков, то сосканированный отпечаток проверяется в списке разрешенных отпечатков. Если одно из условий выполняется, то подается команда на срабатывание реле и через него подается 12 В с преобразователя напряжения на замок-защелку, и он открывается. 
Устройство собрано внутри игрушечного сейфа для того, чтобы показать что это не просто макет, а действующее устройство. Сейф с таим «умным замком» вполне может использоваться для хранения денег или других ценностей. Довольно не просто было компактно разместить все компоненты устройства и элементы питания внутри сейфа, оставив большой полезный объем для хранения ценностей (Рисунок 2.12).


Рисунок 2.12. Получившийся сейф
Отдельно необходимо рассказать о питании устройства. Плата NodeMCU питается от аккумулятора 3,7 В. Замок-защелка питается напряжением 12 В. Для получения такого напряжения используется повышающий преобразователь на 12 В MT3608. Для питания платы достаточно было бы и одного аккумулятора, но для замка тока одного аккумулятора оказалось недостаточно, пришлось использовать два. В случае если аккумуляторы разрядятся, замок не откроется, а для их зарядки непосредственно в устройстве используется зарядная плата TP4056, выход которой выведен наружу корпуса устройства. Там же находится переключатель режима работы: «Охрана/Зарядка». 
При открытой дверце сейфа доступен разъем микро-USB платы NodeMCU, что позволяет переписать управляющую программу или добавить/ удалить разрешенные отпечатки пальцев, не разбирая устройство. 
Написание управляющей программы
При написании управляющей программы мной использовать приёмы объектно-ориентированного программирования, а также мной были применены библиотеки FastBot для обработки сообщений, поступающих из чат-бота Telegram и Adafruit_Fingerprint_Sensor, обрабатывающая данные с датчика отпечатка пальцев. Для обеспечения взаимодействия модуля ESP8266 и бота Telegram необходимо обладать следующей информацией:
название и пароль любой Wi-Fi сети, имеющей выход в сеть интернет;
индивидуальный токен бота, который будет взаимодействовать с программой;
индивидуальный ID пользователя Telegram, с которым будет взаимодействовать программа. Сделано это для того, если сторонний пользователь пожелает воспользоваться чат-ботом для открытия замка, программа не будет обрабатывать его запросы.
При создании бота и получении данных для взаимодействия с ним были задействованы сторонние Telegram-боты BotFather (Рисунок 2.13) и IDBot (Рисунок 2.14). При помощи бота IDBot мной был определён ID моего пользователя Telegram, а при помощи BotFather я создал своего Telegram-бота и получил его индивидуальный токен. Также мной было реализовано, что если дверь открывается по отпечатку пальцев, в Telegram-бот направится сообщение об открытии двери.
По сколько модуль NodeMCU  считается сторонней платой, то есть не является продуктом Arduino, необходимо установить для неё расширение для среды Arduino IDE. 
Так, как в стороннюю библиотеку FastBot интегрированы стандартные библиотеки для работы с ESP8266, такие как: ESP8266WiFi, ESP8266HTTPClient, WiFiClientSecure и другие.

Рисунок 2.13. Интерфейс Telegram-бота BotFather

Рисунок 2.14. Интерфейс Telegram-бота IDBot
Расчет затрат на разработку устройства
Подсчитаем затраты на сборку устройства. Общие затраты на выполнения проекта:
Плата Node MCU ESP 8266 v3 – 370 рублей;
Датчик отпечатка пальцев DY-50 – 550 рублей;
Зарядная плата TP4056 (2 шт) – 125*2 = 250 рублей;
Реле KY-019 – 100 рублей;
Повышающий регулируемый DC-DC преобразователь MT3608 – 38 рублей;
Li-ion аккумулятор 3,7 вольта (2 шт) – 260*2 = 520 рублей;
Электронный замок-защелка – 290 рублей.
Общая стоимость устройства – 2118 рублей. 
Сравним эту стоимость со стоимостью предлагаемых на рынке решений.
Aqara N100 - электронный дверной замок имеющий возможность открытия код-паролем, отпечатком пальцев, NFC картой, а также из мобильного приложения. Стоимость – 24000 рублей.

Рисунок 2.15. Электронный дверной замок Aqara N100
Умный дверной замок Xiaomi Pro HD: разблокировка по код-паролю, отпечатку пальцев а также онлайн. Имеет даже hd-камеру и может использоваться как видеодомофон. Стоит 21000 рублей. 
Конечно это готовые решения, а не макеты как у меня, но все равно понятно, что их стоимость на порядок выше того, устройства, которое получилось разработать у меня.

 


Заключение
В результате выполнения проекта я углубил свои знания в программировании на языке C++, научился работать с ранее не известным для меня модулем NodeMCU на базе ESP 8266. Я начал изучать тему, которой не занимался ранее – разработка устройств, взаимодействующих с пользователем через сеть интернет. Результатом моей работы стал полностью рабочий макет двери, собранный внутри игрушечного сейфа, с комбинированным функционалом открытия двери.
Замок может быть разблокирован двумя способами: при помощи сканера отпечатков пальцев и с помощью отправки сообщения из телеграм-бота. 
В память сканера отпечатков пальца были внесены не только мои отпечатки, но и отпечатки всех членов моей семьи, что демонстрирует гибкие возможности настройки устройства и возможность использования его несколькими людьми. 
Альтернативный способ открытия замка: посылка сообщения из мессенджера Telegram через сеть интернет. Например, так можно открыть замок удаленно, впуская гостя. 
Тестирование устройства показало, что устройство работает корректно, а значит задача работы достигнута.
Главное преимущество разработанного устройства – его цена по сравнению с аналогами. А значит мое предположение, выдвинутое в начале работы верно. 
Также результатом работы является большой опыт, который я получил как при сборке устройства, так и при его программировании. 
В дальнейшем я собираюсь доработать устройство: добавить датчик открытой дверцы сейфа, а также световую и звуковую сигнализацию открытой дверцы. 

Файлы

Добавлен 27.11.2023

Добавлен 27.11.2023

Добавлен 27.11.2023