Автоматизация умного дома с использованием ESP32, Alexa и Google Assistant


Если вы новичок в автоматизации умного дома и хотите создать свой первый проект по управлению освещением и вентиляторами с помощью голосовых команд, то эта статья для вас. В этом проекте Интернета вещей (IoT) мы рассмотрим создание системы «Умный дом», которой можно будет управлять с помощью сервисов Google Assistant и Alexa. Электронная часть проекта реализована на микроконтроллере ESP32, а интеллектуальная часть будет управляться с помощью платформы Sinric Pro.

Автоматизация умного дома с использованием ESP32, Alexa и Google Assistant

Ранее на нашем сайте мы уже рассматривали достаточно много различных проектов автоматизации дома на основе различных микроконтроллеров (плат), наиболее популярными среди которых являются следующие:

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

Необходимые компоненты

  • Модуль ESP32 (купить на AliExpress).
  • 1-канальный релейный модуль SPDT 5 В.
  • Ручной переключатель.
  • AC/DC SMPS 5 В – 2 А (импульсный источник питания переменного/постоянного тока).
  • Лампочка.
  • Соединительные провода или печатная плата.

Основные принципы работы проекта

Для создания системы умного дома нам нужна будет платформа, которая сможет связать наш модуль ESP32 с сервисами Google Assistant и Alexa, и для этого мы использовали нечто под названием Sinric Pro. Эту платформу очень легко использовать, и она бесплатна для ограниченного использования. Для целей этого проекта вы можете просто использовать бесплатный план Sinric Pro, но если вы хотите управлять большим количеством устройств из одного приложения, вы можете рассмотреть возможность перехода на платный план. В этом проекте умного дома на основе модуля ESP32 мы собираемся управлять лампочкой переменного тока с помощью Google Assistant, Alexa и ручным переключателем с помощью Sinric Pro.

Принципы управления в нашем проекте умного дома

Это означает, что у вас есть возможность контролировать свою нагрузку с помощью Google Home и приложения Amazon Alexa, независимо от вашего местоположения. А даже если Интернета нет, вы все равно можете управлять своими устройствами с помощью ручных переключателей без необходимости использования дополнительных устройств, таких как Google Nest или Amazon Echo Dot. Этот проект приносит удобство автоматизации умного дома на "кончиках ваших пальцев".

Схема проекта умного дома

Схема проекта автоматизация умного дома с использованием ESP32, Alexa и Google Assistant представлена на следующем рисунке.

Схема проекта автоматизация умного дома с использованием ESP32, Alexa и Google Assistant

Мы использовали контакт D22 модуля ESP32 для управления релейным модулем и контакт D12, подключенный к ручному переключателю, для ручного управления релейным модулем.

Также мы использовали импульсный источник питания (SMPS) 5 В, 2 А для преобразования переменного тока в постоянный, и этот источник питания 5 В подается как на ESP32, так и на модуль реле. Согласно предоставленному коду программы, когда управляющие контакты модуля реле получают НИЗКИЙ сигнал, соответствующее реле включится. И наоборот, реле выключится, когда на управляющий контакт подается ВЫСОКИЙ сигнал. Если вы предпочитаете использовать кнопки, просто подключите кнопки между контактами GPIO (контактами ввода/вывода) модуля ESP32 и GND вместо использования переключателей.

Вид сзади на собранную конструкцию умного дома

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

На следующем рисунке показана собранная конструкция проекта.

Собранная конструкция проекта умного дома

Настройка Sinric Pro для автоматизации умного дома

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

Еще одна платформа, похожая на Sinric Pro — это Blynk. Ранее мы также создавали множество проектов с использованием Blynk, например интеллектуальная ирригационная система на ESP8266 и умный дом на ESP12 с управлением жестами и компьютерном зрении. Но в последнее время Blynk наложил ограничения на бесплатные учетные записи, поэтому в данном проекте мы использовали Sinric Pro.

С Sinric Pro вы можете легко подключиться к Google Home и приложению Amazon Alexa с микроконтроллером ESP8266, NodeMCU или ESP32, чтобы управлять любым устройством с помощью Google Assistant и Alexa. Таким образом, вы можете легко реализовать любой проект домашней автоматизации на основе Интернета вещей с помощью Sinric Pro. Согласно их текущему плану вы получите управление 3 устройствами бесплатно. Сначала зарегистрируйтесь на их сайте - sinric.pro/register

Страница регистрации на платформе Sinric Pro

На странице регистрации введите все необходимые данные и нажмите «Зарегистрироваться». Затем введите адрес электронной почты и пароль и нажмите «Войти».

Создание комнаты в Sinric Pro

Прежде чем добавлять устройства, сначала необходимо создать себе комнату в Sinric Pro.

Создание комнаты в Sinric Pro

Чтобы создать комнату в своей учетной записи Sinric Pro, выполните следующие действия. Перейдите в Rooms («Комнаты») в левом боковом меню. Нажмите  кнопку Add Room («Добавить комнату»). После этого введите название и описание комнаты. Нажмите «Сохранить».

Созданная новая комната в Sinric Pro

Таким образом, вы можете создать несколько комнат в соответствии с вашими требованиями.

Как добавить устройства в Sinric Pro

Если вы используете бесплатную учетную запись Sinric Pro, вы можете бесплатно добавить 3 устройства.

Страница для добавления устройств в Sinric Pro

Выполните следующие шаги, чтобы добавить устройства в свою учетную запись Sinric Pro.

Сначала выберите Devices («Устройства») в меню слева, затем нажмите  кнопку Add Device («Добавить устройство»).

Кнопка для добавления устройства в Sinric Pro

Введите имя и описание устройства. Затем выберите тип устройства в соответствии с требованиями. Здесь я выбрал тип устройства Switch, так как буду управлять реле SPDT. Затем выберите комнату для устройства. После этого нажмите Next (Далее).

Страница для ввода обязательных настроек устройства в Sinric Pro

Следующее поле является необязательным. Если вы хотите получать push-уведомления, связанные с этим устройством, вы можете включить их. Нажмите Next (Далее).

Страница для ввода опциональных настроек устройства в Sinric Pro

Следующее поле также является необязательным. Если вы хотите установить какой-либо таймер на автоматическое включение или автоматическое выключение устройства по истечении заданного времени, вы можете установить его на этой странице. Нажмите Next (Далее).

Страница для ввода настроек автоматического включения/выключения устройства в Sinric Pro

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

Страница для ввода настроек энергопотребления устройства в Sinric Pro

Как получить API-ключ Sinric Pro, API SECRET и Device_ID

Прежде чем загружать какой-либо скетч (программу) в ESP8266 или ESP32, вам необходимо ввести Sinric API KEY и API SECRET. Чтобы их получить вам нужно перейти в раздел Credentials («Учетные данные») в меню слева.

Получение API KEY и API SECRET в Sinric Pro

После этого скопируйте API KEY и API SECRET и вставьте их в код своей программы. Также введите идентификатор устройства в код. Вы найдете идентификатор устройства (Device ID) в меню «Устройства» (Devices menu). Этот идентификатор устройства уникален для каждого устройства. Если вы создадите 3 устройства, то у вас будет 3 уникальных идентификатора устройства.

Страница с добавленным устройством в Sinric Pro

Подготовка к написанию кода программы

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

Обновите Preferences –> Additional boards Manager («Настройки» -> «Диспетчер дополнительных плат»), указав URL-адрес ниже.

URL-адреса: https://dl.espressif.com/dl/package_esp32_index.json , http://arduino.esp8266.com/stable/package_esp8266com_index.json.

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

  • Sinric Pro от Бориса Йегера (откройте диспетчер библиотек, найдите Sinric Pro и нажмите «Установить» для ESP8266 и ESP32)
  • WebSockets от Маркуса Саттлера (минимальная версия 2.3.5)
  • ArduinoJson от Бенуа Бланшона (минимальная версия 6.12.0)

Примечание. Загрузите последние версии библиотек по предоставленным ссылкам. После этого установите библиотеки, перейдя в Arduino IDE -> Sketch -> Include Library -> Add Zip Library.

Вы также можете скачать все это со страницы Github авторов проекта по следующей ссылке.

Объяснение кода программы

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Код нашего проекта умного дома основе модуля ESP32 для Google Home и Alexa достаточно прост. Когда мы отправляем команды «включить» и «выключить» с помощью смартфона, сигналы передаются на релейный модуль, который, в свою очередь, управляет лампочкой, включая и выключая ее. Мы использовали функцию INPUT_PULLUP в Arduino IDE вместо подтягивающего резистора с переключателем.

Обязательно замените «YourWiFiSSID», «YourWiFiPassword», «YourAppKey» и «YourAppSecret» своими фактическими учетными данными.

Кроме того, замените «yourDeviceId» фактическим идентификатором устройства. Вы найдете идентификатор устройства в меню «Устройства» в учетной записи Sinric Pro. Когда вы добавляете устройство в Sinric Pro, этому устройству присваивается уникальный идентификатор.

Страница с идентификатором устройства в Sinric Pro

Сначала в коде программы подключим все необходимые библиотеки. Arduino.h - основная библиотека для Arduino. WiFi.h - библиотека для подключения к Wi-Fi. SinricPro.h - основная библиотека SinricPro для интеграции IoT. SinricProSwitch.h - библиотека для создания устройства переключения с помощью SinricPro.

В следующем фрагменте кода вы определяете свои учетные данные для подключения к сети Wi-Fi ( WiFi_SSID и WiFi_PASS ) и учетные данные для вашего приложения SinricPro IoT ( APP_KEY и APP_SECRET ). А также вы определяете идентификатор устройства (device_ID), который представляет идентификатор устройства, связанный с вашим коммутатором на платформе SinricPro. Обязательно замените его фактическим идентификатором (device ID) устройства, который вы создали.

Следующий блок кода определяет контакты GPIO, используемые для реле, переключателя и светодиодного индикатора Wi-Fi. RELAY_PIN — это контакт, подключенный к реле, SWITCH_PIN — это контакт, подключенный к ручному переключателю, а wifiLed — это контакт, используемый для индикации состояния соединения Wi-Fi.

Далее мы объявляем глобальные переменные, которые будут использоваться во всем скетче. LastSwitchState отслеживает предыдущее состояние ручного переключения. LastSwitchChange записывает время последнего изменения состояния переключателя. RelayState представляет текущее состояние реле.

Следующая функция представляет собой обратный вызов, который вызывается при изменении состояния питания коммутатора вручную или через службу SinricPro. Он переключает состояние реле ( relayState ) и возвращает true.

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

Функция setupWiFi отвечает за подключение к вашей сети Wi-Fi. Она печатает сообщение о ходе подключения. Она ждет пока будет установлено успешное соединение, а затем печатает IP-адрес устройства.

Следующая функция отвечает за настройку сервиса Sinric Pro для вашего IoT-проекта. Вот что она делает. SinricProSwitch&mySwitch = SinricPro[device_ID] - эта строка создает экземпляр класса SinricProSwitch с предоставленным идентификатором устройства. Этот класс представляет переключатель, которым вы хотите управлять с помощью Sinric Pro.

mySwitch.onPowerState(onPowerState) - здесь вы регистрируете функцию onPowerState как обратный вызов для обработки изменений состояния питания. Когда отправляется команда на включение или выключение выключателя, будет вызываться эта функция. SinricPro.begin (APP_KEY, APP_SECRET) - инициализирует службу Sinric Pro с помощью ваших APP_KEY и APP_SECRET, которые являются уникальными идентификаторами вашей учетной записи Sinric Pro. SinricPro.restoreDeviceStates(true) - эта строка сообщает Sinric Pro восстановить состояние устройства при подключении.

Следующая функция предназначена для настройки вывода реле. pinMode(RELAY_PIN, OUTPUT) - настраиваем контакт, к которому подключено реле, для работы на вывод данных. digitalWrite(RELAY_PIN, HIGH) -  инициализирует реле в состоянии ВЫКЛ, устанавливая вывод в положение HIGH.

Следующая функция предназначена для настройки вывода ручного переключения. PinMode(SWITCH_PIN, INPUT_PULLUP) - она настраивает SWITCH_PIN как входной вывод с подтягивающим резистором. Эта настройка является общей для ручных переключателей.

Функция setup() — это место, где происходит первоначальная настройка вашего проекта IoT. Вот что в ней происходит. Serial.begin(BAUD_RATE) - инициализируем последовательную связь для отладки программы. pinMode(wifiLed, OUTPUT) - настраиваем светодиодный индикатор wifiLed для индикации состояния соединения Wi-Fi. Вызываем setupRelay() для настройки вывода реле. Вызываем setupSwitch() для настройки контакта ручного переключения. Вызываем setupWiFi() для подключения к сети Wi-Fi. Вызываем setupSinricPro() для инициализации службы Sinric Pro.

Функция loop() — это основной цикл выполнения вашего проекта Интернета вещей. Она выполняет вызовы SinricPro.handle() для обработки входящих сообщений от Sinric Pro. Вызывает handleSwitch() для отслеживания состояния ручного переключателя и соответствующего обновления реле. Эта функция не определена явно в предоставленном вами фрагменте кода, но, скорее всего, она определена где-то в вашем коде для управления вводом ручного переключателя.

Этот код настраивает ваш проект домашней автоматизации ESP32 для работы с Sinric Pro, управляет реле и отслеживает изменения состояния ручного переключателя. Он позволяет управлять подключенным устройством как с помощью Sinric Pro, так и с помощью ручного переключателя.

Работа с Alexa

Сначала загрузите и установите приложение Amazon Alexa из Google Play Store или App Store.

Перед подключением Alexa необходимо включить устройства в платформу Sinric Pro. В приложении Alexa нажмите More («Еще»), затем выберите Skills & Games («Навыки и игры»). Найдите Sinric Pro и выберите Sinric Pro из результатов. Включите ее использование, нажав ENABLE TO USE (ВКЛЮЧИТЬ ИСПОЛЬЗОВАНИЕ). Введите адрес электронной почты и пароль, связанные с учетной записью Sinric, а затем нажмите Sign in («Войти»).

Подключение в Alexa учетной записи Sinric Pro

После подключения учетной записи Sinric Pro выполните следующие действия для добавления устройств.

Нажмите CLOSE (ЗАКРЫТЬ). Нажмите DISCOVER DEVICES («ОБНАРУЖИТЬ УСТРОЙСТВА»). Теперь Алекса будет искать новые устройства. Это может занять некоторое время. После этого перейдите в Devices («Устройства»), затем выберите Plug («Подключить»). Вы найдете все подключенные устройства.

Подключение устройств в Alexa

Теперь, если ESP32 подключен к Wi-Fi, вы можете управлять приборами из приложения Alexa . Вы также можете сказать “Alexa, Turn ON light” («Алекса, включи свет»), чтобы управлять приборами с помощью голосовых команд.

Интеграция с Google Home

Сначала загрузите и установите приложение Google Home из Google Play Store или App Store.

В приложении Google Home выполните следующие действия, чтобы создать дом. Нажмите на значок «+» (левый верхний угол). Нажмите Create new home («Создать новый дом»). Введите домашний псевдоним и адрес. Затем нажмите Continue («Продолжить»). Дом создан. Теперь снова нажмите на значок «+», чтобы добавить устройства.

Создание нового дома в Google Home

После настройки вашего дома в приложении Google Home вы можете установить соединение между Sinric Pro и приложением Google Home. Прежде чем подключаться к Google Home, убедитесь, что вы добавили устройства в Sinric Pro. Следуйте инструкциям ниже, чтобы добавить устройства в Google Home.

Нажмите значок «+», затем выберите Set up device («Настроить устройство»). Выберите Works with Google («Работает с Google») и найдите Sinric Pro, затем нажмите Sinric Pro. Введите идентификатор электронной почты и пароль, связанные с вашей учетной записью Sinric, затем нажмите Sign in («Войти»). После этого вернитесь на главный экран приложения Google Home. Теперь вы сможете просматривать все устройства в приложении Google Home.

Настройка нового устройства и связывание с Sinric Pro в Google Home

После привязки Sinric Pro перейдите на домашнюю страницу приложения Google Home. Вы найдете подключенные устройства от Sinric Pro. Если ESP32 подключен к Wi-Fi, вы можете управлять приборами через приложение Google Home. Вы также можете дать команду Google Assistant, сказав: “Hey Google, Turn ON light” («Эй, Google, включи свет»), чтобы управлять бытовой техникой.

Тестирование работы проекта

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

Для управления лампочкой с помощью выключателя или кнопки просто включите и выключите кнопку. А если ESP32 подключен к Wi-Fi, вы можете отслеживать статус в режиме реального времени в Google Home и приложении Alexa.

Управление лампочкой с помощью выключателя

Если ESP32 подключен к Wi-Fi, вы можете попросить Алексу включить свет [«Alexa, Turn ON Light»]. Таким образом, вы можете управлять светом с помощью голосовых команд с помощью приложения Amazon Alexa, а также отслеживать текущее состояние выключателей из любой точки мира с помощью приложения Alexa.

Управление светом с помощью голосовых команд с помощью приложения Amazon Alexa

Вы также можете попросить Google Ассистента включить свет [“Hey Google, Turn ON the Light“ (Эй, Google, включи свет)]. Таким образом, вы можете управлять светом голосовыми командами с помощью Google Assistant, а также следить за текущим состоянием выключателей из любой точки мира из приложения Google Home.

Управление светом голосовыми командами с помощью Google Assistant

Исходный код программы

Видео, демонстрирующее работу проекта

Источник статьи

(Проголосуй первым!)
Загрузка...
181 просмотров

Комментарии

Автоматизация умного дома с использованием ESP32, Alexa и Google Assistant — 4 комментария

        • На нашем сайте мы рассматривали уже достаточно много систем умного дома, но вот до tuya.com пока еще не добрались. Поэтому, к сожалению, пока не могу помочь вам в этом вопросе

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *