Постройка умного дома с автоматическим замком

Перевод статьи

Вступление

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

По сути, я начинал с приобретения комплекта Arduino и набора датчиков. Я хотел с ними поиграться, поработать с обработкой различных данных с модулей, джойстиков, реле, двигателей, дисплеев и т. д. Только потом, после получения небольшого опыта, я решил превратить свой дом в умный дом и управлять им с телефона. Итоговый вариант можно будет интегрировать в GoogleHome/HomePod, но пока что эту идею я отложил.

Задачи я поставил себе такие:

  • Включение/выключение питания, контроль интенсивности и программирование освещения дома, а также контроль розеток.
  • Измерение внутренней и наружной температуры, и её регулировка.
  • Открытие двери здания с помощью голосовых команд через Сири.
  • Открытие двери дома по отпечатку пальца и контроль её закрытия. Кроме того, надо сделать кнопку открытия изнутри.
  • Система уведомлений и хранение истории всех производимых действий.
  • При этом нужно соблюдать определенные меры безопасности, чтобы гарантировать безопасность квартиры.

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

Мозгом всей системы сделаем Rasberry Pi - небольшой одноплатный компьютер, к которому можно подключить и контролировать все устройства в доме, которые вы захотите добавить. На Rasberry Pi я поставил систему автоматизации Domoticz.

Конечно, на рынке уже есть много вариантов от разных брендов и по любой цене. От лампочек до камер, термостатов, холодильников и другого. Но в конце концов, в наше время почти что угодно, независимо от размера можно подключить по WiFi/Bluetooth. Такие устройства называются IoT-устройствами или интернет вещей.

Поэтому вместо покупки уже готового устройства можно собрать себе своё под исключительно свои нужды. В моем случае я использовал микросхемы ESP8266 вместе с релейным модулем, работающим на 5 В, которые, например, можно использовать для включения/выключения электрической цепи мини-фонтана.

Также, для контроля температуры в доме будем использовать микросхему Node MCU(справа). Она производит измерения через установленный интервал и обновляет данные на панели управления Domoticz, которая могла бы запустить систему отопления, если температура упадет ниже критической. Как видно на картинке я ещё добавил дисплей для отображения текущего времени.

Панель управления

После настройки всех устройств перейдем в панель управления Domoticz, она будет доступна даже с мобильного телефона из браузера. Отсюда мы можем управлять всеми подключенными устройствами, добавлять их, удалять и делать многие другие настройки. Доступ конечно только из локальной сети в целях безопасности.

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

В моем случае, как вы можете видеть, грузится информация с Raspberry Pi о температуре снаружи и внутри дома. Также видно некоторые розетки, светильники из разных комнат или районов дома.

Ещё есть возможность включения/выключения дверного механизма и некоторые другие опции.

3D моделирование и печать

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

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

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

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

Красные детали в дальнейшем были заменены.

Кстати, эти компоненты доступны и могут быть загружены с веб-сайта thingiverse.com (веб-сайт, посвященный обмену файлами цифрового дизайна, созданными пользователем).

Сборка

Сборка - процесс долгий, но я не хотел, чтобы кабели отовсюду торчали. Мало того, что это мозолит глаза, но могут возникнуть ещё более серьезные трудности. Вдруг произойдет короткое замыкание или оборвется провод. Чтобы этого не произошло, я использовал кабель-канал.

Так это выглядит у меня. Я пропустил кабели под дверной рамой до самого замка. Получилось довольно незаметно. Слева мы видим домофон, который подключен к Raspberry Pi. А справа серводвигатель, держащийся за деталь, напечатанной на 3D принтере.

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

Электрическая цепь

Для сборки окончательного варианта системы я пробовал различные варианты на макетной плате, перед тем как всё собрать в одном корпусе. Я итоговый вариант не паял а так и оставил на макетке, но всегда можно к этому вернуться и припаять если возникнет необходимость, хотя вдруг что то захочется поменять.

Для сборки я использовал следующие детали и компоненты:

  • 1 Серводвигатель: чья функция - поворачивать ключ, чтобы открыть и закрыть дверь.
  • 1 Блок питания: 9 В постоянного тока, подает питание на серводвигатель для правильной работы.
  • 1 Магнитный выключатель (датчик Холла): определяет, когда дверь закрывается, и отправляет команду сервоприводу повернуть ключ.
  • 2 реле: одно отвечает за питание кнопки домофона, а другое - за сервоприводом тогда когда это необходимо.
  • 2 транзистора NPN: решение распространенной проблемы Raspberry Pi с повышением от 3,3 В GPIO до 5 В для питания реле.

Этот эскиз доступен и может быть загружен с веб-сайта fritzing.com (сайт предназначенный для того, чтобы делиться цифровыми чертежами пользователей).

Мобильное приложение

Чтобы повысить безопасность всей системы, я решил создать приложение, в котором вся информация проходила бы через мой собственный сервер, чтобы регистрировать и контролировать весь трафик, а также доступ, вместо использования Domoticz для этой критически важной части. Я использовал React-Native.

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

  • Сканер отпечатков пальцев при попытке произвести действие
  • Добавить команду быстрого доступа Siri можно только для двери квартиры
  • Система уведомлений и оповещений

Демонстрация

Привод открывания двери был изменён несколько раз и прошёл от альфа-версии до нынешней. Я старался уделить особое внимание безопасности, стабильности и корректности срабатывания. Нельзя чтобы двигатель просто перестал отвечать или вышел из строя. На момент написания приводом пользуются все члены семьи на протяжении месяца и пока без перебоев.

Вот демонстрация того, как это работает: youtube

Система внутренней связи удерживает дверь квартиры открытой в течение нескольких секунд после получения сигнала, отправленного Siri с телефона. Достаточно, чтобы успеть войти снаружи. После, Raspberry Pi замыкает цепь, проходящую через реле, выполняя ту же логику, как если бы мы нажали кнопку на стене.

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

Технологии и библиотеки

С точки зрения технологий, используемых в проекте, сервер и Raspberry Pi работают на nodeJS. Используется SSE (Server Send Events) для их взаимодействия, а также AWS Lambdas для выполнения различных действий.

Помним о среде выполнения PM2 (Process Manager2) для нашей системы и диспетчере процессов, позволяющем поддерживать приложения в актуальном состоянии, перезагружать их без перебоев и облегчать общие задачи DevOps по поддержке в актуальном состоянии.

Для управления GPIO (универсальный ввод-вывод) я использовал библиотеку узлов pigpio, обертку для библиотеки pigpio C. Хотя, другие альтернативы, такие как johny-five, которые часто используются для программирования интернета вещей и робототехники.

Мобильное приложение использует специальные библиотеки npm для следующих функций:

  • Функция сканера отпечатков пальцев
  • Функция команд Siri

Управление драйверами различных микросхем для ESP8266 и Node MCU, а также различных подключенных к ним модульных устройств, таких как датчик температуры и влажности (DTH11), 4-значный дисплей (TM1637), релейный модуль и другие, были использованы специальные библиотеки, рекомендованные производителем, некоторые из которых можно найти здесь.

Программное обеспечение

Для создания различных частей проекта, таких как система контроля и управления устройствами, 3D-моделирование и печать, проектирование и программирование схемы, я использовал различные сторонние программы, такие как:

Выводы

В настоящее время все больше и больше людей говорят о «умном доме», компании прилагают все усилия, чтобы завоевать растущий рынок и облегчить жизнь людей. Для этого они разрабатывают и продают различные виды устройств и наборов, таких как датчики, контроллеры, источники света, переключатели и т. д. Сейчас каждый может создать свой умный дом и управлять им с помощью телефона, голоса и жестов.

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

Возможности безграничны, и вы можете сделать всё так, как хочется вам. Технологии созданы для облегчения вашей жизни.

Назад