- Как сделать умный дом своими руками на Arduino и Яндекс.Алиса — пошаговая инструкция
- Как сделать умный дом своими руками на Arduino и Яндекс.Алиса — пошаговая инструкция
- Как работает такой умный дом?
- Какие устройства можно интегрировать в умный дом?
- Аппаратная и программная часть
- Получение веб-хуков
- Настройка навыка «Домовёнок Кузя»
- Умный дом на Arduino с нуля своими руками
- Что такое Arduino
- Преимущества системы Arduino
- Принцип работы системы
- Питание Ардуино
- Какие решения предлагает Arduino
- Виды плат для сборки умного дома
- Arduino Leonardo и Micro
- Arduino 101, Arduino Zero и Arduino MKR1000
- Платы дополнения (шилды)
- Составление проекта Arduino
- Компоненты для системы Умный дом
- Какие датчики и контролеры можно подключать и как они работают
- Сборка «умного дома»: пошаговая инструкция
- Подключение исполнительных и сенсорных устройств
- Разработка программного кода
- Установка клиентского приложения на смартфон (для ОС Android)
- Работа с роутером
- Настройка браузера на работу с “умным домом”
- На чем лучше написать десктопное приложение под устройство на Arduino
- Дистанционное управление умным домом
Как сделать умный дом своими руками на Arduino и Яндекс.Алиса — пошаговая инструкция
Как сделать умный дом своими руками на Arduino и Яндекс.Алиса — пошаговая инструкция
Уже больше года Яндекс развивает систему управления умным домом через Алису. Благодаря ей вы сможете включать свет, переключать каналы телевизора, заваривать кофе, изменять цвет подсветки, будить умные пылесосы и контролировать температуру в помещении.
Чтобы создать такую продвинутую экосистему умных устройств, совсем не обязательно штурмовать магазины электроники. Яндекс предоставляет 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.
Помимо этого, значение с порта можно получить таким запросом:
Настройка навыка «Домовёнок Кузя»
Перейдите на сайт навыка и авторизуйтесь там через Яндекс. Далее жмите на Добавить правило HTTP (GET). Перед вами откроется форма настройки правила.
Активационная фраза — название запроса, которое будет отображаться в списке (например «свет на кухне, включение»). Если вы не планируете контролировать умный дом конкретно изнутри навыка, то больше фраза нигде не понадобится. Поле Ответ Кузи тоже оставляйте пустым. В поле URL вставляете соответствующий веб-хук на включение света (виртуального порта). Остальные параметры можно не изменять. После этого нужно сделать идентичное правило на выключение света.
Пример настройки правила на включение света
Дальше нужно перейти во вкладку виртуальных устройств и добавить устройство «Лампа». Тут нужно дать название устройству, по которому его будет идентифицировать Алиса. Например: свет, бра, подсветка, лампа или торшер. Место расположения — комната, в которой будет установлено устройство. Это нужно на тот случай, если в нескольких комнатах будут одинаковые по названию элементы. К тому же, одной голосовой командой можно включать и выключать все устройства в определённой комнате.
В Правило на включение/выключение из списка выбираете соответствующие запросы. В лампе имеется возможность управления яркостью. Для этого нужно создать ещё одно правило, но значение параметра value установить как
Пример настройки виртуального устройства
Примечание Если вы планируете изменять яркость, то параметр value в веб-хуке на включение нужно изменить с 1 на 100.
Источник
Умный дом на Arduino с нуля своими руками
Что такое Arduino
Arduino – открытая небольшая электронная плата с простым в использовании процессором и программным обеспечением. Платформа считывает входящую информацию, затем по заранее введенному алгоритму переформировывать команды к различным устройствам, работающим от электричества. Для этого используется язык программирования Arduino и ПО Arduino (IDE) на базе проекта Processing.
Открытый код платы позволяет использовать составляющие различных производителей. Для конструирования системы Умный дом на Ардуино легко подобрать устройства под запросы пользователя. Людям с минимальными знаниями в программировании и электрике стоит обратить внимание на эту систему.
Преимущества системы Arduino
- Низкая стоимость по отношению к другим вариантам плат: готовые модули стоят 10 долларов.
- Межплатформенность ПО позволяет работать с операционными системами Windows, MacOSX, Linux.
- Интегрированная среда разработки IDE подходит для начинающих программистов, которые решили сделать Умный дом на Ардуино своими руками.
- Возможность создать небольшой проект за считаные минуты с помощью стандартных библиотек.
- Удобная в плане конструирования и соединения.
Принцип работы системы
Питание Ардуино
Чтобы при подключении к питанию плата не сгорела и работала без глюков, необходимо уделить отдельное внимание источникам питания и тому, как их подключать.
На плате Ардуино возможно подключение питания 3 способами:
- Через внешний адаптер в пин Vin (и GND), который ведет ток через бортовой стабилизатор напряжения Arduino. Рекомендуемое напряжение – 7–12 В. Данный тип подключения подходит для Ардуино проектов с не очень большой нагрузкой.
- С помощью порта USB, что удобно при тестировании или программировании через ПК.
- Прямая подача на пин 5V. Этот способ обходит стабилизатор входного напряжения, поэтому может вывести плату из строя. Однако для питания больших Ардуино проектов Умный дом – это наиболее подходящий вариант подключения.
Интересно: чтобы не превысить максимальное напряжение в 5,5 В, можно воспользоваться самым популярным решением – взять блок питания зарядки смартфона (диапазон от 300 мА до 3 А потянет практически любой проект).
5V – с этого пина подается питание внешним устройствам.
3.3V – на этот пин через внутренний стабилизатор подается напряжение 3.3 В.
GND – вывод на ноль.
VIN – пин для подачи внешнего напряжения.
IREF – пин для передачи информации о напряжении на внешние приборы.
Какие решения предлагает Arduino
Датчики и устройства, совместимые с Ардуино, выпускают многие производители, поэтому ассортимент комплектующих для системы Умный дом на Arduino внушительный:
- Сенсоры для отслеживания температуры, освещенности в разное время суток, влажности, осадков и атмосферного давления.
- Сенсоры реагирования на движение.
- Аварийные датчики.
- Другие устройства и пульты.
В набор Arduino Start (у большинства производителей – StarterKit) включена часть индикаторов и датчиков.
Для исполнения команд, направляемых системой Умный дом на базе Arduino, требуются:
- реле и переключатели;
- вентили;
- электромоторы;
- 3-ходовые клапаны с сервоприводом;
- диммеры.
Примечание: для освещения в системе Умный дом своими руками на базе Arduino используются светодиоды, так как лампы накаливания при подключении через реле сразу горят.
Виды плат для сборки умного дома
Платы для создания системы Умный дом на Ардуино своими руками с нуля не любят компактность – все задачи лучше разнести по различным блокам. А вот много памяти для ПО и хранения информации не нужно. Чаще всего при самостоятельной сборке используются такие виды плат:
Arduino Leonardo и Micro
Плата Arduino Leonardo довольно мощная по сравнению с другими. Она популярна при создании игровых устройств, определяет мышь, клавиатуру и игровые джойстики.
- чипсет ATMega32u4 (8 bit, 16 MHz);
- цифровые порты – 20, с поддержкой ШИМ – 7 из них;
- аналоговые порты – 12;
- флеш-память – 32 КВ;
- быстрая Sram для хранения программных данных – 2,5 КВ;
- медленная Eeprom, где хранится информация – 1 КВ.
Эту модификацию можно нагружать множеством датчиков благодаря наличию портов.
Arduino Micro – мини-аналог платформы Leonardo. Различие в том, что порт USB заменен на мини-USB и отсутствует питание от 12 В.
Примечание: модель Leonardo Esplora заточена исключительно под игры, поэтому для Умного дома не подходит.
Arduino 101, Arduino Zero и Arduino MKR1000
Эти модели обладают большой вычислительной мощностью и подходят для конструирования сложных систем, где предусмотрено голосовое управление Умным домом на Ардуино, распознавание изображений.
Количество портов для подключения датчиков примерно как у Leonardo, а остальные параметры мощней.
У Arduino 101 есть дополнительные чипсеты и порт USB.
- процессор Intel Curie (32 bit, 32 MHz);
- память flash – 196 КВ;
- Sram: 24 KB;
- Eeprom: нет;
- Bluetooth Low Energy для подключения готовых решений.
Параметры аналогичной Arduino Zero:
- процессор: SAM-D21 (32 bit, 48 MHz);
- flash-накопитель: 256 KB;
- Sram: 32 KB;
- Eeprom: нет;
- встроенный отладчик EDBG для поиска ошибок программирования.
Arduino MKR1000 – мощная платформа-аналог Zero. Особенности:
- чип Wi-Fi с протоколом 802.11 b/g/n;
- поддержка алгоритма SHA–256 для защиты передачи данных.
Платы дополнения (шилды)
Для расширения вспомогательного функционала используются дополнительные платы – шилды. Ниже приведен список самых интересных:
- LCD Shield определяет метеорологические показатели в помещениях: влажность, скорость ветра, температуру.
- Motor Shield обеспечивает управление скоростью и оборотами моторов. Есть модели с поддержкой нескольких приводов.
- Data Logging Shield предназначена для записи и хранения информации до 32 Gb.
- Relay Shield самая востребованная в системах Smart Homе, рассчитана на обслуживание приборов мощностью 1 КВт.
- Ethernet Shield от Ардуино обеспечивает независимость Умного дома от ПК, настраивает интернет-связь.
- Wi-fi Shield нужен для передачи шифрованных данных между Arduino и устройствами.
- Energy Shield позволяет разнообразить источники питания для подключения проекта.
- GPRS Shield используется для связи Умного дома с телефоном владельца.
Составление проекта Arduino
При создании системы Умный дом на Ардуино своими руками с нуля проект должен включать такие функции (пример):
- отслеживание колебаний температуры на улице и внутри здания;
- функция открытия и закрытия окон;
- изменения погоды;
- реагирование датчиков слежения при активной сигнализации.
Мониторинг работы системы проверяется через телефон и веб-браузер.
Компоненты для системы Умный дом
Стоимость элементов проекта составляет примерно 90–100 долларов:
- платформа Arduino;
- блок Ethernet ENC28J60;
- два датчика температуры DS18B20;
- микрофон;
- датчик для определения осадков;
- сенсор движения;
- переключатель;
- блок реле;
- резисторы 4,7 кОм;
- интернет-кабель;
- кабель «витая пара».
Какие датчики и контролеры можно подключать и как они работают
Микроконтроллер с помощью ПО обрабатывает данные с датчиков и управляет устройствами. Их подключают через шилды:
- Сенсоры контроля изменений в окружающей среде.
- Сенсоры пространственной ориентации объекта.
- Индикаторы движения объектов.
- Датчики контроля аварийных ситуаций.
Сборка «умного дома»: пошаговая инструкция
Подключение исполнительных и сенсорных устройств
Разработка программного кода
Программа пишется юзером в оболочке Arduino IDE, которая сохраняет файлы в расширении «.ino». При программировании используется язык С++ в упрощенной форме – многие файлы библиотек, заголовков IDE составляет автоматически. Пользователю обязательно прописать при старте настройки setup() и loop() (выполняется постоянно), указать пользовательские библиотеки. В простых настройках IDE не запутается даже начинающий программист.
Сейчас для Ардуино в интернете много готовых программ и скетчей, поэтому можно воспользоваться готовым ПО с объяснениями принципа работы. Нужно только скачать, распаковать архив и отправить в папку IDE.
Установка клиентского приложения на смартфон (для ОС Android)
Для отслеживания и управления Умным домом со смартфона нужно:
- загрузить файл SmartHome.apk;
- разрешить установку софта на телефон;
- активировать и настроить приложение.
Работа с роутером
Для настроек маршрутизатора:
- зайти в настройки устройства;
- прописать IP адрес Arduino;
- указать переход на чипсет Адруино по порту 80.
Настройка браузера на работу с “умным домом”
В адресную строку вводится «IP-адрес пользователя/all». После этого станет доступно управление системой.
На чем лучше написать десктопное приложение под устройство на Arduino
В Arduino стоят МК AVR, поэтому без проблем можно писать на С (без плюсов) в AVRStudio, CodeVisionAVR, AtmelStudio. Для загрузки полученного кода в МК потребуется внешний программатор, для него почти на всех платах есть разъем ISP (6pin).
Также нужно учитывать, что язык в Arduino IDE понимает классы и формально основан на С/С++. Искать что-то еще другое не имеет смысла.
Если нужно соединить Arduino с ПК, то софт для компьютера можно написать на любом удобном языке программирования. Для мобильных гаджетов существует масса приложений.
Дистанционное управление умным домом
Открыть платформе доступ в интернет можно через:
Для управления с телефона пригодятся приложения:
- Blynk;
- Virtuino;
- Bluino Loader – Arduino IDE;
- Arduino Bluetooth Control;
- RemoteXY: Arduino Control;
- Bluetooth Controller 8 Lamp;
- BT Voice Control for Arduino;
- IoT Wi-Fi контроллер.
Для управления платой Умный дом данные системы размещаются на самостоятельно созданном веб-сервере.
На платформу добавляется разъем RJ-45 на Arduino Ethernet Shield.
Плата с помощью кабелей подключается к USB-разъему и роутеру. Потом в среде разработки IDE прописать код для создания сервера и передачи информации на сервер.
Подробнее о том, что представляет собой система умный дом, читайте здесь.
Источник