Электронный конструктор arduino умный дом

Обновлено: 26.04.2024

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

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

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

Как работает такой умный дом?

Чтобы создать умный дом своими руками, потребуется навык Домовёнок Кузя. Через него можно не только контролировать умный дом, но и интегрировать виртуальные устройства напрямую в Яндекс.Алису. Это значит, что вам не придётся постоянно открывать навык, чтобы просто выключить лампочку. С микроконтроллером навык будет связываться через веб-хуки.

Для веб-хуков отлично подходит платформа Blynk — панель управления устройствами на Arduino и Raspberry Pi. Там вы сможете без труда создать графический интерфейс, через который можно будет управлять устройством по Wi-Fi (а ещё по Ethernet, USB, GSM и Bluetooth).

Какие устройства можно интегрировать в умный дом?

Через навык можно взаимодействовать с обширным количеством устройств: лампочки, розетки, шторы, замки, роботы-пылесосы, термостаты, очистители воздуха, кондиционеры и чайники. Кроме этого, можно переключать каналы на телевизоре (через универсальный пульт) и менять цвета RGB-ламп.

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

Аппаратная и программная часть

Для того, чтобы собрать умный дом своими руками, мы будет использовать Wi-Fi модуль ESP8266. Процесс разработки на нём почти не отличается от традиционной разработки на Arduino.

Для начала нужно скачать приложение Blynk из GooglePlay или AppStore и зарегистрироваться в нём. После этого нужно создать новый проект и выбрать соответствующий микроконтроллер. Перед вами появится пустая панель, на которой можно размещать элементы управления. Это могут быть кнопки, иконки, слайдеры, индикаторы, выпадающие списки и многое другое.

После создания проекта на вашу почту придёт токен доступа. Его нужно будет указать в скетче и веб-хуках.

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

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

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

Для этого скетча в панели управления Blynk нужно добавить элемент «Button». В его настройках OUTPUT выставить V0, а режим работы переключить в Switch.

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

Голосовое управление светом не мешает управлению им аппаратно. К микроконтроллеру можно подключить физическую кнопку или выключатель, которые тоже будут включать и выключать свет. Если это необходимо, то изменять состояние виртуального порта можно методом Blynk.virtualWrite(port, value) . Тогда изменения будут отображаться и на панели управления.

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

Всё работает? Тогда можете переходить к следующему этапу.

Получение веб-хуков

От Blynk вам потребуется не панель управления, а контроль виртуальных портов через GET-запросы. Вот так выглядит веб-хук на изменение состояния порта:

Чтобы включить виртуальный порт, нужно указать как 1, чтобы выключить — как 0.

Помимо этого, значение с порта можно получить таким запросом:

Настройка навыка «Домовёнок Кузя»

Активационная фраза — название запроса, которое будет отображаться в списке (например «свет на кухне, включение»). Если вы не планируете контролировать умный дом конкретно изнутри навыка, то больше фраза нигде не понадобится. Поле Ответ Кузи тоже оставляйте пустым. В поле URL вставляете соответствующий веб-хук на включение света (виртуального порта). Остальные параметры можно не изменять. После этого нужно сделать идентичное правило на выключение света.




Пример настройки правила на включение света

Дальше нужно перейти во вкладку виртуальных устройств и добавить устройство «Лампа». Тут нужно дать название устройству, по которому его будет идентифицировать Алиса. Например: свет, бра, подсветка, лампа или торшер. Место расположения — комната, в которой будет установлено устройство. Это нужно на тот случай, если в нескольких комнатах будут одинаковые по названию элементы. К тому же, одной голосовой командой можно включать и выключать все устройства в определённой комнате.

В Правило на включение/выключение из списка выбираете соответствующие запросы. В лампе имеется возможность управления яркостью. Для этого нужно создать ещё одно правило, но значение параметра value установить как . Тогда в запрос будет подставляться число от 0 до 100, которое будет обозначать требуемую яркость. Вам лишь остаётся обработать это значение в скетче.




Пример настройки виртуального устройства

Примечание Если вы планируете изменять яркость, то параметр value в веб-хуке на включение нужно изменить с 1 на 100.

Умный дом Arduino

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

Что такое Arduino

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

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

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

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

Полезная информация! Arduino – итальянская компания, производящая и разрабатывающая компоненты ПО, для реальных и не сложных систем Smart Home, которые ориентированы на любого человека, заинтересовавшегося в этом вопросе. Архитектура полностью открыта, поэтому сторонние разработчики (преимущественно из Китая) уже успели полностью скопировать, и выпускают собственные альтернативные элементы системы, и ПО для них.

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


Набор умного дома Arduino

Проектирование умного дома Arduino

Умного дома «на все случаи жизни» не существует. Поэтому, его проектирование начинается с определения поставленных задач, выбора и размещения основного узла Arduino, а затем и остальных элементов. На конечном этапе связывается и дорабатывается функционал, с помощью программирования.


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

  1. Крыльцо. При приближении владельца к дому ночью, включится освещение. Также следует учесть обратное – выходя из дома ночью, тоже надо включать освещение.
  2. Прихожая. При детектировании движения и в сумерки включать свет. В темное время необходимо, чтобы загорался приглушенный свет лампочки.
  3. Подвал на улице. При приближении хозяина, в темное время суток, должна загораться лампа возле дверцы подвала. Открывая дверь, загорается свет внутри, и выключается в том случае, когда человек покидает здание. При выходе, включается освещение на крыльце, а по мере отхождения от подвального помещения, выключается возле дверцы. В подвале установлен контроль влажности и при достижении критической температуры, включаются несколько вентиляторов для улучшения циркуляции воздуха.
  4. Душевая комната. В ней установлен бойлер. Если человек присутствует в доме, бойлер включает нагрев воды. Автоматика выключается, когда максимальная температура нагрева достигнута. При входе в туалет, включается вытяжка и свет.
  5. Кухня. Включение основного освещения ручное. При длительном отсутствии хозяина дома на кухне, свет выключается автоматически. Во время приготовления еды автоматически включается вытяжка.
  6. Столовая. Управление светом происходит по аналогии с кухней. Присутствуя на кухне, есть возможность дать голосовую команду ассистенту умной колонки, чтобы тот запустил музыку.
  7. Спальная комната. Включение освещение происходит вручную. Но есть автоматическое выключение, если в комнате долгое время отсутствует человек. Дополнительно, нужно выключать освещение по хлопку.

По всему дому расставлены конвекторы. Необходим автоматический контроль поддерживаемой температуры в доме в двух режимах: когда человек есть в доме и вовремя его отсутствия. В первом варианте, температура должна опускаться не ниже 20 градусов и подниматься не выше 22. Во втором, температура дома должна опускаться не ниже 12 градусов.

Проект готов, осталось заняться его реализацией.

Плюсы и минусы системы


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

  1. Среда разработки Arduino IDE – это построенная на Java ппрограма, в которую входит: редактор кода, компилятор, передача прошивки в плату. По сравнению с современными решениями на 2019 год – это худшая среда разработки (в том виде, в котором она подается). Даже когда вы перейдете в другую среду разработки, IDE вам придется оставить для прошивки.
  2. Малое количество флэш-памяти для создания программ.
  3. Загрузчик нужно прошивать для каждого шилда микроконтроллера, чтобы закончить проект. Его размер – 2 Кб.
  4. Пустой проект занимает 466 байт на Arduino UNO и 666 байт в постоянной памяти платы Mega.
  5. Низкая частота процессора.

Модули и решения «умного дома» на Ардуино

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

  • Arduino UNO – средних размеров плата с собственным процессором и памятью. Основа — микроконтроллер ATmega328. В наличии 14 цифровых входов/выходов (6 из них можно использовать как ШИМ выводы), 6 аналоговых входов, кварцевый резонатор 16 МГц, USB-порт (на некоторых платах USB-B), разъем для внутрисхемного программирования, кнопка RESET. Флэш-память – 32 Кб, оперативная память (SRAM) – 2 Кб, энергонезависимая память (EEPROM) – 1 Кб.
  • Arduino NANO – плата минимальных габаритов с микроконтроллером ATmega328. Отличие от UNO – компактность, за счет используемого типа контактных площадок – так называемого «гребня из ножек».
  • Arduino MEGA – больших размеров плата с микроконтроллером ATMega 2560. Тактовая частота 16 МГц (как и в UNO), цифровых пинов 54 вместо 14, а аналоговых 16, вместо 6. Флэш-память – 256 Кб, SRAM – 8 Кб, EEPROM – 4.

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

  1. Шаговый двигатель.
  2. Манипулятор управления.
  3. Электросхематическое реле SRD-05VDC-SL-C 5 В.
  4. Беспаечная плата для макета MB-102.
  5. Модуль с картой доступа и и двумя метками.
  6. Звуковой датчик LM393.
  7. Датчик с замером уровня жидкости.
  8. Два простейших устройства отображения цифровой информации.
  9. LCD-дисплей для вывода множества символов.
  10. LED-матрица ТС15-11GWA.
  11. Трехцветный RGB-модуль.
  12. Температурный датчик и измеритель влажности DHT11.
  13. Модуль риал тайм DS1302.
  14. Сервопривод SG-90.
  15. ИК-Пульт ДУ.
  16. Матрица клавиатуры на 16 кнопок.
  17. Микросхема 74HC595N сдвиговый регистр для получения дополнительных выходов.
  18. Основные небольшие компоненты электроники для составления схемы.


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

Сенсоры и датчики

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


Плата дополняется совместимыми датчиками движения или иными PIR-сенсорами, которые определяют присутствие или отсутствие человека в зоне действия, и привязывается через реле к освещению.


Датчик Arduino

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


Газовый датчик Arduino

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

Светодиоды могут указывать состояние, в котором реле находится в данным момент времени. Например, красный – освещение выключено, зеленый – освещение есть. Схема подключение к лампе выглядит так.


Для более крупного проекта лучше применять шину реле, например, восьмиканальный модуль реле 5V.


Контроллер





Программная настройка

Или воспользоваться готовым скетч решением Ardublock – графический язык программирования, встраиваемый в IDE. По сути, вам нужно только скачать и установить ПО, а затем использовать блоки для создания схемы.

Дистанционное управление «умным» домом

  • Wi-Fi-адаптер, настроенный на прием и передачу сигнала через маршрутизатор;
  • или подключенный через Ethernet кабель Wi-Fi роутер.

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

Есть несколько вариантов управления умным домом Arduino: с помощью приложения для смартфона или через веб. Рассмотрим каждое подробнее.

Приложения управления

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

Blynk


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

Virtuino


Крутое бесплатное приложение на Android, позволяющее совмещать проекты в одно целое и управлять с помощью Wi-Fi или Bluetooth сразу несколькими платами.

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

Bluino Loader – Arduino IDE


Arduino Bluetooth Control


Приложение контролирует контакты Arduino и управляет основными функциями по Блютузу. Но, программа не направлена на удаленное управление, только мониторинг.

RemoteXY: Arduino Control


С помощью приложения пользователь может создать свой собственный интерфейс управления платой. Подключение происходит с помощью Wi-Fi, Блютуз или интернет, через облачный сервер.

Bluetooth Controller 8 Lamp


Созданное с помощью Bluetooth-модулей HC-05, HC-06 и HC-07 приложение, обеспечивает восьмиканальный контроль. Таким способом достигается контроль и регулирование работы Ардуино, в соответствии с каждым из 8 светодиодов.

BT Voice Control for Arduino

Приложение специально заточено под дистанционное управление данными с ультразвукового датчика, подключенного по блютуз через Arduino. Реализуется подключения через модуль HC-05.

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

IoT Wi-Fi контроллер

Приложение с интерфейсом, информирующем о конфигурации каждого входа/выхода в плате Arduino. В утилите можно переключать в реальном времени GPIO и показывать значение АЦП.

Веб-клиент

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

Для этих целей понадобится Arduino Ethernet Shield – сетевое расширение для пинов Ардуино Уно, позволяющее добавить разъем RJ-45 для подключения к сети.


При удаленном подключении, необходимо обеспечить внешнее питание платы не от USB.

Затем, подключите по USB плату к компьютеру, а по Ethernet плату к роутеру, которой раздает интернет компьютеру. При правильном установлении соединения, вы увидите зеленый свечение на порту.


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

Уведомления по SMS

  1. Работать с голосовыми вызовами.
  2. Получать и отправлять СМС.
  3. Подключаться к Интернету через GPRS.

Работает схема через специальную плату расширения GSM, содержащую специальный модем.


О создании универсальной сигнализации на Arduino, с отправкой СМС уведомления на смартфон можно узнать из соответствующей видеоинструкции.

Обучение азов Arduino


С помощью приложения «Справочник по Arduino 2» можно в течении двух недель освоить материал. Приложение полностью автономно и не требует подключение к интернету. В нем описана такая информация: функции, данные, операторы, библиотеки Arduino.

После освоения азов, можно посетить ресурс Habrahabr, на котором собраны 100 уроков по программированию на Arduino.

Тем, кто привык черпать знания из книг, станет замечательным пособием для теории и практики «Джереми Блум: изучаем Arduino».


Самый популярный учебник по Arduino

В книге приведены основные сведения об аппаратном и программном обеспечении Ардуино. Рассказаны принципы программирования в среде Arduino IDE. Автор книги учит анализу электрических схем и чтению технических заданий. Информация из книги поможет в дальнейшем определится с выбором подходящих деталей для создания умного дома.

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

Видео по теме

Отличным решением для заинтересовавшихся в теме, станет видео для начинающих. В нем описаны основные элементы платы, зачем они используются, а также рассказаны основы программирования в среде Arduino IDE.

Не лишним будет ознакомится на примере, как реализовано создание умного контроллера для теплицы.

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



А еще чуть позже — вот такое:



Это к тому, что цель всей затеи — не Умный дом и метеостанция как таковые. Цель — почесать руки (потому что чешутся) и не дать им окислиться (потому что из золотого сплава). Так что все, кто недоумевает, зачем тратить время, когда можно просто купить такие девайсы — идите лесом-DNCом. А тем, кому интересна тема DIY-электроники (или DIY-электронщиков, что тоже не зазорно), можно скроллить дальше.

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

— Владимир Завертайлов, руководитель Студии «Сибирикс»

Arduino

Первую версию Умного дома Женя сделал два с половиной года назад на arduino.

Arduino — небольшая плата с микроконтроллером, памятью и контактами, к которым можно подключать лампочки, моторы, датчики и вообще все, что работает от электричества. Пишешь программу на C++, загружаешь ее в память микроконтроллера arduino — и она управляет всеми подключенными устройствами. Так создаются классные гаджеты — система полива дачного участка, например, или робот, который приносит вам тапочки.



Первая тема, которую Женя сделал на arduino — это игрушка. Два сенсора, два участника. Каждый держит руку над своим сенсором. Когда игрушка пикнет, нужно резко убрать руку. Игрушка измеряет время реакции до 100-х секунд и говорит, кто тут чемпион. Рубились с женой. Удобно — кто проиграл, тот моет посуду).

Когда с arduino все стало понятно, Женя решил, конечно, делать Умный дом (электронщик же). Подключил к arduino охранную систему (датчик движения и датчик открытия двери) и термометр (датчик температуры и влажности DHT11) и остался недоволен. Связь между всеми устройствами была по радиоканалу на 433 МГц и оказалась нестабильной. Женя боролся с радиосигналами месяца 2, а потом решил не бороться, а переделать сервер умного дома на Raspberry Pi.

Raspberry Pi

Raspberry Pi — это уже полноценный компьютер. Да, одноплатный. Да, размером с кредитную карту. Да, сильно уступает по мощностям современным большим компьютерам. Но на нем может быть запущена операционная система Linux. Это значит, можно перейти с С++ на более высокие языки — java script, php. А это уже родные для Жени языки. Но главное — Raspberry Pi позволяет уйти от 433 радиосигнала и перейти ко всем известному и горячо любимому wi-fi, который работает стабильно.



Дизайн

Обычно ты или электронщик, или дизайнер. Женя, как мы помним, определился с этим еще в 5 лет, поэтому с дизайном были траблы. Но недолго. Потому что скоро он подошел к гендиректору «Сибирикс» и попросил помочь. Через месяц у него уже был отрисован интерфейс Умного дома нашим дизайнером.











Система

Систему Женя написал за 4 месяца. Работал примерно по 2,5 часа в день. Полтора часа до работы (специально вставал пораньше, потому что вечером — сын, домашние дела, игра в «Цивилизацию» с женой) и час во время обеда на работе.

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

Поэтому система организована таким образом: создаешь папку в Умном доме с модулем, описываешь его работу и она легко интегрируется в систему. Сейчас там 9 модулей. Есть модули физические (те, которые имеют физическое устройство), а есть логические (те, которые нужны для работы системы).

Функционал

Метеостанция

Для метеостанции Женя взял 4 главных параметра, которые позволяют понять, умрешь ты или нет (температура, влажность, атмосферное давление, концентрация углекислого газа в воздухе). Создание метеостанции проспонсировал гендиректор студии на том условии, что Женя сделает еще одну такую в студию (уже сделал). У нас она по wi-fi подключается не к Умному дому, а к заббиксу, системе мониторинга серверов, которая мониторит разные параметры, от температуры жестких дисков до нагрузки на сеть, и выводит это все в виде красивых графиков. Теперь там есть еще и график температуры в офисе.

Датчик CO2 мы планировали подключить к нашему Zabbix, вывести на плазму и мониторить атмосферу. Первые же эксперименты показали, что приточку горе-винтеляционщики нам смонтировали так себе. Воспользовавшись электронным эндоскопом, мы выяснили, что приток шел через маленькую щелку в сайдинге здания (оно относительно новое). Ругаясь матерными словами, мы подогнали вышку и перемонтировали все по-человечески. Теперь утром датчик показывает CO2 в районе 500, к обеду поднимается до 800, что, в общем-то, нормально.

— Владимир Завертайлов, руководитель Студии «Сибирикс»

Видеонаблюдение

Когда на Женин дом установили камеры видеонаблюдения, которые можно отслеживать через приложение для телефона, оказалось, что они сделаны на очень популярном сервисе — макроскоп, и у них есть api-доступ. Женя подключил камеры видеонаблюдения в свой Умный дом. Забавно, что в Умном доме они работает лучше, чем в приложении. Приложение тупит дико. А в Умном доме камеры открываются влет.

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

Здесь отображаются все события, которые зарегистрировала система.

Здесь можно посмотреть параметры системы: график температур процессора, IP aдрес, нагрузку на процессор, батарейку.

Здесь содержатся реакции системы на какое-либо событие. Реакции задаются с компа.

Корпус

Корпус — это та вещь, которая разрабатывалась 5 часов, а печаталась 28 часов. Печаталась на стареньком домашнем 3d-принтере. Для справки — если печать длится порядка 4 часов, это уже считается долго. А тут — 28. На нижнюю часть корпуса ушло 16 часов. На верхнюю — 6. Это вечеринка на целый день — запускаешь 3d-принтер и он печатает, прерывать нельзя. Если свет, допустим, отключится на 98% печати, значит, ты 15 часов пластика просто выкидываешь. Такого, к счастью, не случилось. Случилось другое: из-за недочета в проектировании (слишком тонкие стенки в фигурном отверстии под динамик) крышку пришлось перепечатать. То есть, суммарно печать заняла примерно 28 часов. Ушла почти вся катушка пластика.

Голос

Speech-to-text

Реакция на команды

Второй сервис называется dialogflow. Фишка в том, что ты задаешь шаблон фразы, например: «Какая погода завтра?» и указываешь, что слово «завтра» — это переменная типа date. И теперь уже ты можешь задать любой вопрос: «Какая погода 20 сентября?», «Какая погода послезавтра?», «Какая погода через 3 дня?» и система понимает, что это тип данных — date, конвертирует его в программную дату и реагирует на нее. Вся эта тема — на нейросетях, и она обучаема. Если ты сказал «Какая будет погодка сегодня?» и система не поняла, она говорит «Я не поняла», и ты заходишь на сервер и прям руками обучаешь ее, что вот эта фраза означает «Какая погода?», и она запоминает. Обучение нейросети происходит по доступу: при регистрации на сервисе выдаются ключи доступа к api, доступ к личному кабинету агента, можно этого агента обучать и можно дать право кому-то на его использование.

Получается, сервис передает в Умный дом сам триггер, который должен быть выполнен и возможную фразу для ответа, Дом ловит эту фразу и дальше задача наоборот: tts, то есть text to speech.

Text-to-speech

Это хорошо умеет делать Яндекс. Там можно выбрать не только голос (нескольких вариантов женских и мужских голосов), но и настроение (веселый, грустный, злой, нейтральный). У Яндекса очень простое и условно бесплатное api (с лимитом что-то около 10 тыс преобразований в день).

Таким образом получился цикл: произносишь фразу, система ее понимает, произносит что-то в ответ и совершает какое-то действие. Так, например, работает установка будильника голосом. Говоришь: «Поставь будильник на вторник на 7 часов». И во вторник в 7 тебя разбудит Умный дом.

Неплохо, если Умный дом может оповестить вас о пожаре или вскрытии двери, когда вас нет дома, правда? Есть такой модуль — называется sim800L. Это gps модем, который является полноценным телефоном. Он умеет звонить, отвечать на звонки, отправлять/получать смски, выходить в интернет с помощью gprs, определять местоположение с помощью сотовых вышек и т. д. Идея была такая: заказать этот модуль, вставить сим-карту в Умный дом, настроить какой-нибудь тариф, чтобы не было абонентской платы вообще, закинуть туда 500 руб и, пока они не истратятся (по 1 руб. за смс), а это, как минимум на год, забыть про все это.

Но оказалось, что в пике эта платка в момент поиска сетей потребляет 2 Ампера тока. У Умного дома есть модуль питания, туда заходит шнур, там аккумулятор и от аккумулятора выходит питание в систему. Батарейка может обеспечить максимум 3 Ампера выхода. То есть 3 Ампера постоянного потребления всей системой — край. И, если добавить этот gsm модуль к raspberry, она вырубится. Ей не хватит тока, и она просто потухнет. Единственное решение проблемы — это модуль отправки смсок делать отдельной коробочкой. Тогда туда можно обеспечить бесперебойное питание на 2 Ампера. И просто по Wi-Fi связать с Умным домом. То есть Умный дом говорит модулю: «Отправь вот такую смску», и модуль отправляет. Сейчас Жене нужно докупить пару железяк, и модуль будет готов.

  • Raspberry Pi — 1500 руб.
  • Дисплей — 2500 руб.
  • Детали метеостанции — 1500 руб. (самая дорогая деталь — датчик CO2, 1100 руб.)
  • Всякая мелочь, вроде микрофончика, колонок компьютерных, маленьких, настольных, самые дешевых, чтобы усилок оттуда достать — пусть будет 500 руб.
  • Плата резервного питания — 1500 руб.
  • Печать корпуса весом грамм 300 (2 руб. за грамм с учетом расхода пластика и электроэнергии) — 600 руб. Если печатать на заказ, выйдет дороже, возможно, около 1500 руб.

Немного лирики напоследок

Электронщики — это люди, которые зачарованно смотрят на трехзначное число на дисплее и говорят:
— Смотри, как круто!
Ты смотришь на то же самое число и неуверенно говоришь:
— Круто, да…
— А что ты видишь? — испытывают они тебя.
Ты делаешь попытку:
— 328?
И, конечно, не попадаешь. Потому что это не просто 328. Это офигенно работающая динамическая индикация.

Дерзай! Набор Arduino

быстрый просмотр

Дерзай! Умный дом на базе Arduino. Большой набор, Книга + электронные компоненты .

быстрый просмотр

«Автополив» - дополнение набора «Йодо», Комплект компонентов совместимые с .

быстрый просмотр

«Интернет вещей» - дополнение набора «Йодо», Комплект компонентов совместимые с .

быстрый просмотр

«Интернет вещей» - продолжение набора «Матрёшка на основе Arduino Uno» .

быстрый просмотр

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

быстрый просмотр

Матрешка Y, Стартовый набор для начала работы с Arduino

быстрый просмотр

Матрешка Z, Стартовый набор для начала работы с Arduino

быстрый просмотр

Матрешка Х, Стартовый набор для начала работы с Arduino

быстрый просмотр

1W Solar Panel 80X100, Солнечная панель 5.5В 170мА

быстрый просмотр

2.5W Solar Panel 116X160, Солнечная панель 5.5В 450мА

быстрый просмотр

2W Solar Panel 80X180, Солнечная панель 5.5В 360мА

быстрый просмотр

Wireless Charging Module - 5V/1A, Беспроводной зарядный модуль

быстрый просмотр

0.5W Solar Panel 55X70, Солнечная панель 5.5В 100мА

быстрый просмотр

1.5W Solar Panel 81X137, Солнечная панель 5.5В 270мА

быстрый просмотр

3W Solar Panel 138X160, Солнечная панель 5.5В 540мА

быстрый просмотр

Wireless Charging Module- 5V/600mA, Беспроводной зарядный модуль

быстрый просмотр

Ваниль, Arduino Uno, программируемы контроллер на базе ATmega328P-PU .

быстрый просмотр

Бузина v2, Arduino Nano, программируемый контроллер на базе ATmega328P-AU, CP2102

быстрый просмотр

nooLite

О цикле статей

Цикл разбит на три части. В первой части вы узнаете о принципах работы беспроводного оборудования nooLite и организации управления им из ваших проектов на Arduino. Во второй части будет подробно рассказано об интеграции управляющего модуля MT1132 в Arduino Mega Server и об открывающихся в связи с этим возможностях по управлению Умным домом. А третья статья цикла будет повещена очень интересной теме — концепции создания приборов «100 в 1» на основе Arduino Mega Server. Будет подробно разобран пример создания беспроводной паяльной станции на AMS буквально из ничего — на основе всего одного беспроводного димера nooLite. Будет ещё и четвёртая часть, из которой вы узнаете, как создать магический кристалл.

паяльная станция

И самое замечательное, что таких приборов в AMS может находиться сотни, причём одновременно. Например, паяльная станция, метеостанция, охранный блок, контроллер оранжереи и т. д. И работать всё это может одновременно или «запускаться» загрузкой веб-странички или даже целого сайта, посвящённого конкретному устройству.

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

Оборудование nooLite

Оборудование nooLite это уже известная и популярная система и в Интернет довольно много информации о ней. Я постараюсь здесь кратко изложить основные моменты.

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

Есть ещё беспроводные датчики, управление приборами со смартфона и многое другое, но в одной статье всё охватить невозможно, здесь мы сосредоточимся только на интеграции nooLite с популярной платформой DIY — Arduino.

Из всего обширного спектра оборудования nooLite нас будет интересовать управляющий модуль MT1132 потому, что он рассчитан на подключение к Arduino и одноплатным компьютерам типа Raspberry Pi. И работает он по простому последовательному интерфейсу. Забегая немного вперёд, скажу, что модуль мне понравился своей простотой, предсказуемостью и надёжной работой. И я смог по достоинству оценить эти качества после месяца бесплодной борьбы с сетевым модулем на чипе W5500, который так и не пожелал нормально работать.

модуль MT1132

И особенно мне понравилось то, что (не считая питания) модуль подключается к Arduino всего одним (!) проводом (RX). Второй (TX) можно вообще не подключать. Модуль «односторонний», т. е. рассчитан только на посылку управляющих сигналов. В планах компании «Ноотехника» разработка и выпуск «двухсторонней» версии модуля.

SU111-300

Второй нужный нам элемент из оборудования nooLite — это силовой управляющий блок, например, SU111-300. Подключение блока элементарно и видно на иллюстрации. Два провода подключаются к сети 220 вольт, а два других — к нагрузке. Единственное, на что хотелось бы обратить внимание, это то, что модули поставляются с перемычкой, которая блокирует режим димирования и, если вы хотите регулировать мощность, то нужно разрезать эту перемычку (и не забыть заизолировать образовавшиеся оголённые провода).

PU311-2

На пультах я особо останавливаться не буду потому, что это «ручное» управление, а нас, в связи с автоматизацией, больше интересует автоматическое. Скажу только, что эксперименты проводились с пультом PU311-2, выполненным в виде настенного выключателя и он показал себя самым наилучшим образом, то есть чётко и без сбоев включал и выключал свет. Чем, собственно, хорошее оборудование и отличается от плохого — хорошее просто не замечаешь.

Концепция работы. «Привязка» и «Отвязка»

Прежде, чем вы сможете включать и выключать электроприборы при помощи системы nooLite, вам нужно «связать» управляющие модули с соответствующими силовыми блоками. Это делается при помощи процедуры т. н. «привязки» и «отвязки», подробно описанной в документации nooLite. Вкратце, всё сводится к нажатию пары кнопок на связываемых блоках и не представляет каких-либо трудностей.

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

Каналы — это «линии управления» и в модуле MT1132 их 32, о чём свидетельствуют две последние цифры в названии. Это значит, что при помощи этого модуля вы можете управлять 32 отдельными группами оборудования, что более чем достаточно для квартиры или небольшого дома. Если у вас большой дом, то модули могут работать в связке и масштабироваться на любое количество каналов.

Описание протокола

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

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

Тестовые команды

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

  • Привязка
  • Отвязка
  • Включение
  • Выключение
  • Установка мощности (димирование)

Подключение модуля MT1132

Как я уже сказал, подключение модуля MT1132 производится буквально одним проводом (кроме питания). Питаться модуль может как от напряжения 5 вольт, так и от напряжения 3.3 вольт. Поэтому не возникло никаких проблем с подключением ни к 5-вольтовой Arduino Mega, ни к 3.3-вольтовой Arduino Due. Единственный момент заключается в том, что при пониженном питании снижается дальность уверенной работы системы. И это нужно учитывать, если вы хотите питать модуль от напряжения 3.3 вольт.

Arduino

На модуле есть выводы RX и TX для приёма и посылки сигналов по последовательному интерфейсу. Критичным для работы модуля является подключение RX, для приёма управляющих команд от контроллера. Соответственно, контакт RX на стороне модуля соединяется с контактом TX (18) на стороне Arduino. Эта распиновка справедлива как для Arduino Mega, так и для Arduino Due.

Программная часть

Теперь давайте разберёмся с тем, как управлять всем этим хозяйством из скетчей на Ардуино. Сначала инициализируем Serial1, к которому мы подключили модуль МТ1132 (делается это на стандартной частоте 9600):


Теперь код главной управляющей функции:


В принципе, нам даже не нужно знать как она работает, мы её можем использовать в режиме «чёрного ящика» или своеобразного API, у которого наружу «торчит» определённый интерфейс. Нам достаточно только знать, как пользоваться этим интерфейсом.

Как видите, там всего четыре параметра — канал, команда, данные и формат. По какому принципу формировать запросы к этому API, можно прочитать в вышеупомянутом документе, мы же ещё больше упростим себе задачу и обернём этот интерфейс в простые команды управления приборами nooLite.


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

Собственно… всё! Проще некуда. В коде управляющие команды выглядят так:


Теперь давайте на практике потренируемся в управлении силовым модулем nooLite. Итак, привязываем силовой блок на нулевом канале:


На силовом блоке начинает мигать светодиод. Нажимаем кнопку на блоке — светодиод перестаёт мигать — силовой блок привязан. Вместо нулевого канала можно использовать любой другой. И вы можете легко формировать номер канала в коде скетча в соответствии с вашими потребностями.

Включаем лампу (если мы привязали лампу на нулевом канале, то и команды для неё нужно посылать на этом канале):


Устанавливаем мощность (яркость свечения лампы):


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

Вот (на всякий случай) формула, которая транслирует «стандартные» значения от 0 до 100 в формат, понимаемый модулем nooLite:


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


На силовом блоке начинает мигать светодиод. Подтверждаем отвязку, нажимая кнопку на силовом блоке. Всё, теперь силовой блок перестал реагировать на наши команды и мы можем «привязать» его снова на любом из 32 каналов модуля nooLite MT1132.

Вот полный текст скетча.

byte const PIN_TX = 18; // TX PIN (to RX noolite)
byte const PIN_RX = 19; // RX PIN (to TX noolite)

void nooSendCommand(byte channel, byte command, byte data, byte format) byte buf[12];

buf[0] = 85;
buf[1] = B01010000;
buf[2] = command;
buf[3] = format;
buf[5] = channel;
buf[6] = data;

int checkSum = 0;
for (byte i = 0; i < 10; i++) checkSum += buf[i];
>

buf[10] = lowByte(checkSum);
buf[11] = 170;

void nooBind (byte ch)
void nooUnbind (byte ch)

void nooUp (byte ch)
void nooDown (byte ch)
void nooRevers (byte ch)

void nooValue (byte ch, byte v)

void setup() Serial1.begin(9600);

/* Используем любую нужную команду единовременно
или пишем свой код в loop(), используя эти команды */

Промежуточный итог

Как вы видите, в управлении силовыми модулями nooLite при помощи Arduino нет ничего сложного, наоборот, управление феноменально простое: подсоединяется модуль одним проводом, а команды представляют собой чуть ли не естественный человеческий язык — «включить канал 0», «выключить канал 1», «установить мощность 50% на канале 3» — проще действительно некуда.

Бонус для тех, кто дочитал до конца

Буквально на днях вышла новая версия Arduino Mega Server под номером 0.14, в которой преодолены все детские болезни технологии и которая работает быстро и стабильно. И эта же версия содержит интегрированное ядро управления приборами nooLite и о том, как всё это работает, вы узнаете из следующей статьи цикла «Беспроводное оборудование nooLite и Умный дом (часть 2). Arduino Mega Server».

Читайте также: