01.05.2020
Перевод статьи
В этой статье я расскажу о личном опыте создания и сложностях, возникших походу при сборке и реализации моего личного проекта по превращению своего дома в умный дом. Целью было возможность управлять различными электронными устройствами, находящимися у меня в квартире. Например, входить в дом с помощью простого жеста на телефоне или открывать входную дверь с помощью голосовых команд Siri.
По сути, я начинал с приобретения комплекта Arduino и набора датчиков. Я хотел с ними поиграться, поработать с обработкой различных данных с модулей, джойстиков, реле, двигателей, дисплеев и т. д. Только потом, после получения небольшого опыта, я решил превратить свой дом в умный дом и управлять им с телефона. Итоговый вариант можно будет интегрировать в GoogleHome/HomePod, но пока что эту идею я отложил.
Задачи я поставил себе такие:
Удобство открытия двери с мобильного устройства, кроме предоставления доступа и контроля того, кто входит и выходит, заключается в повышении безопасности, ведь довольно много людей обычно не запирают дверь, а просто закрывают ее с помощью защелки. Поэтому авто закрытие позволит нам защититься от воров.
Мозгом всей системы сделаем Rasberry Pi - небольшой одноплатный компьютер, к которому можно подключить и контролировать все устройства в доме, которые вы захотите добавить. На Rasberry Pi я поставил систему автоматизации Domoticz.
Конечно, на рынке уже есть много вариантов от разных брендов и по любой цене. От лампочек до камер, термостатов, холодильников и другого. Но в конце концов, в наше время почти что угодно, независимо от размера можно подключить по WiFi/Bluetooth. Такие устройства называются IoT-устройствами или интернет вещей.
Поэтому вместо покупки уже готового устройства можно собрать себе своё под исключительно свои нужды. В моем случае я использовал микросхемы ESP8266 вместе с релейным модулем, работающим на 5 В, которые, например, можно использовать для включения/выключения электрической цепи мини-фонтана.
Также, для контроля температуры в доме будем использовать микросхему Node MCU(справа). Она производит измерения через установленный интервал и обновляет данные на панели управления Domoticz, которая могла бы запустить систему отопления, если температура упадет ниже критической. Как видно на картинке я ещё добавил дисплей для отображения текущего времени.
После настройки всех устройств перейдем в панель управления Domoticz, она будет доступна даже с мобильного телефона из браузера. Отсюда мы можем управлять всеми подключенными устройствами, добавлять их, удалять и делать многие другие настройки. Доступ конечно только из локальной сети в целях безопасности.
Как видно на картинке, здесь можно проводить логические настройки оборудования, добавлять триггеры срабатывания, таймеры включения, выключения и производить обмен данными между датчиками и приёмниками. Выглядит это так:
В моем случае, как вы можете видеть, грузится информация с Raspberry Pi о температуре снаружи и внутри дома. Также видно некоторые розетки, светильники из разных комнат или районов дома.
Ещё есть возможность включения/выключения дверного механизма и некоторые другие опции.
Чтобы открыть дверь дома, одного сигнала будет недостаточно. Этот сигнал должен запустить определенный алгоритм, а именно повернуть ключ. Из тех механизмов умного замка, которые я видел, ни один не подходил к моему типу двери.
Кроме того, нужно подумать о питании. Батарея должна быть, но переход на неё должен происходить только в случае крайней необходимости, если произойдет отключение питания в доме. Тогда всё равно останется возможность войти.
Такой механизм определённо придется делать для себя самому. Плюс ко всему не забываем, что дверь сама по себе бронированная что нужно учитывать при проектировании и врезке дверного механизма.
После изготовления пластиковой конструкции и ручки я начал проектировать опору серводвигателя. Я хотел разделить ключ на две части, чтобы сделать всю конструкцию более компактной, но в процессе подготовки эту идею пришлось отбросить. Была также возможность сделать зубчатую систему с шестерёнками, но это не долговечно и громоздко так как растёт крутящий момент необходимый для поворота. Я решил выбрать что-то более простое. Я начал рисовать трехмерные части, а затем напечатал то, что получилось. После некоторой подгонки и доработки напильником я получил вот такой конечный результат.
Красные детали в дальнейшем были заменены.
Кстати, эти компоненты доступны и могут быть загружены с веб-сайта thingiverse.com (веб-сайт, посвященный обмену файлами цифрового дизайна, созданными пользователем).
Сборка - процесс долгий, но я не хотел, чтобы кабели отовсюду торчали. Мало того, что это мозолит глаза, но могут возникнуть ещё более серьезные трудности. Вдруг произойдет короткое замыкание или оборвется провод. Чтобы этого не произошло, я использовал кабель-канал.
Так это выглядит у меня. Я пропустил кабели под дверной рамой до самого замка. Получилось довольно незаметно. Слева мы видим домофон, который подключен к Raspberry Pi. А справа серводвигатель, держащийся за деталь, напечатанной на 3D принтере.
В то же время, посередине у двери видна кнопка, она как раз нужна для того, чтобы открыть дверь изнутри можно было по нажатию.
Для сборки окончательного варианта системы я пробовал различные варианты на макетной плате, перед тем как всё собрать в одном корпусе. Я итоговый вариант не паял а так и оставил на макетке, но всегда можно к этому вернуться и припаять если возникнет необходимость, хотя вдруг что то захочется поменять.
Для сборки я использовал следующие детали и компоненты:
Этот эскиз доступен и может быть загружен с веб-сайта fritzing.com (сайт предназначенный для того, чтобы делиться цифровыми чертежами пользователей).
Чтобы повысить безопасность всей системы, я решил создать приложение, в котором вся информация проходила бы через мой собственный сервер, чтобы регистрировать и контролировать весь трафик, а также доступ, вместо использования Domoticz для этой критически важной части. Я использовал React-Native.
Приложение не является общедоступным и полностью предназначено для внутреннего использования и состоит из следующих функций:
Привод открывания двери был изменён несколько раз и прошёл от альфа-версии до нынешней. Я старался уделить особое внимание безопасности, стабильности и корректности срабатывания. Нельзя чтобы двигатель просто перестал отвечать или вышел из строя. На момент написания приводом пользуются все члены семьи на протяжении месяца и пока без перебоев.
Вот демонстрация того, как это работает: youtube
Система внутренней связи удерживает дверь квартиры открытой в течение нескольких секунд после получения сигнала, отправленного Siri с телефона. Достаточно, чтобы успеть войти снаружи. После, Raspberry Pi замыкает цепь, проходящую через реле, выполняя ту же логику, как если бы мы нажали кнопку на стене.
С другой стороны, действие по открытию бронированной двери может быть снято только по отпечатку пальца, и дверь будет оставаться открытой до тех пор, пока магнитный переключатель не зафиксирует закрытие двери, как это видно в демонстрации.
С точки зрения технологий, используемых в проекте, сервер и Raspberry Pi работают на nodeJS. Используется SSE (Server Send Events) для их взаимодействия, а также AWS Lambdas для выполнения различных действий.
Помним о среде выполнения PM2 (Process Manager2) для нашей системы и диспетчере процессов, позволяющем поддерживать приложения в актуальном состоянии, перезагружать их без перебоев и облегчать общие задачи DevOps по поддержке в актуальном состоянии.
Для управления GPIO (универсальный ввод-вывод) я использовал библиотеку узлов pigpio, обертку для библиотеки pigpio C. Хотя, другие альтернативы, такие как johny-five, которые часто используются для программирования интернета вещей и робототехники.
Мобильное приложение использует специальные библиотеки npm для следующих функций:
Управление драйверами различных микросхем для ESP8266 и Node MCU, а также различных подключенных к ним модульных устройств, таких как датчик температуры и влажности (DTH11), 4-значный дисплей (TM1637), релейный модуль и другие, были использованы специальные библиотеки, рекомендованные производителем, некоторые из которых можно найти здесь.
Для создания различных частей проекта, таких как система контроля и управления устройствами, 3D-моделирование и печать, проектирование и программирование схемы, я использовал различные сторонние программы, такие как:
В настоящее время все больше и больше людей говорят о «умном доме», компании прилагают все усилия, чтобы завоевать растущий рынок и облегчить жизнь людей. Для этого они разрабатывают и продают различные виды устройств и наборов, таких как датчики, контроллеры, источники света, переключатели и т. д. Сейчас каждый может создать свой умный дом и управлять им с помощью телефона, голоса и жестов.
Задумайтесь о том, как было бы удобно иметь возможность задать температуру до приезда домой, следить за вашим домом через установленную камеру безопасности, управлять различными электронными устройствами с помощью голосовых команд, автоматически поднимать жалюзи утром, ведь почему бы и нет. Вход в ваш дом без ключей а с мобильным телефоном никогда ещё не был так удобен.
Возможности безграничны, и вы можете сделать всё так, как хочется вам. Технологии созданы для облегчения вашей жизни.