- Требования к оборудованию
- Ход проекта для светодиодного индикатора с голосовым управлением Alexa
- Настройка учетной записи Adafruit для общения
- Свяжите Alexa с Adafruit IO с помощью IFTTT
- Расшифровка кода ESP12
- За работой:
В предыдущих уроках мы видели, как создать динамик Amazon Echo Speaker, а затем как мы можем управлять любым GPIO Raspberry Pi с помощью Alexa Voice. Сейчас мы делаем проект IoT для управления бытовой техникой из любой точки мира с помощью AlexaPi и ESP-12E (или любой другой платы ESP).
Требования к оборудованию
- Raspberry Pi с установленной в нем AVS
- USB 2.0 микрофон / веб-камера
- ESP-12E
- Модуль реле
- LED / лампа переменного тока
У вас должен быть готов Raspberry Pi с установленной в нем голосовой службой Alexa с правильно настроенной учетной записью разработчика Amazon. Чтобы подготовить сервисы Alexa, просмотрите руководство ниже.
- Создайте свое собственное Amazon Echo с помощью Raspberry Pi
Ход проекта для светодиодного индикатора с голосовым управлением Alexa
Мы будем следовать этой блок-схеме для этого проекта светодиодов, контролируемых IoT:
Итак, процесс примерно такой. Сначала вход подается на Raspberry Pi через USB- микрофон. Теперь эта запись отправляется в голосовые службы Alexa, и после распознавания голоса AVS отправляет данные в IFTTT, и это вызывает условие в IFTTT. Согласно рецепту, IFTTT отправит команду Adafruit IO, который является брокером MQTT, для выполнения действия. Затем ESP 12e получит данные от Adafruit IO по протоколу MQTT, и светодиод будет включаться / выключаться в соответствии с командой.
Здесь мы использовали USB-камеру для микрофона. Мы уже использовали сервис Alexa Voice для включения лампочки, но он может работать только с устройствами, подключенными локально.
Поскольку мы предполагаем, что у вас уже есть Raspberry Pi с установленными сервисами Alexa Voice, нам остается выполнить два следующих шага, которые мы объясним один за другим:
- Настройка учетной записи Adafruit для общения
- Свяжите Alexa с Adafruit IO с помощью IFTTT
- Загрузить код в ESP12
Настройка учетной записи Adafruit для общения
Сначала сделаем фид в Adafruit IO. Feed хранит данные, отправленные IFTTT. Чтобы сделать фид, выполните следующие действия:
Шаг 1: - Войдите в Adafruit IO со своими учетными данными или зарегистрируйтесь, если у вас нет учетной записи.
Шаг 2: - Нажмите « Моя учетная запись» -> «Панель управления».
Шаг 3: - Щелкните Действия и создайте новую панель мониторинга .
Шаг 4: - Дайте название и описание своей ленте и нажмите « Создать» .
Шаг 5: - Нажмите кнопку Key и запишите ключи AIO, мы будем использовать этот ключ в нашем коде.
Шаг 6: - Нажмите кнопку «+», чтобы создать новый блок, и нажмите кнопку «Переключить».
Шаг 7: - Теперь введите имя канала и нажмите « Создать» . Затем выберите канал и нажмите «Следующий шаг».
Шаг 8: - В настройках блока введите «1» в текстовое поле « Кнопка ВКЛ» и «0» в текстовое поле « Кнопка ВЫКЛ .».
Шаг 9: - Ваш канал успешно создан.
Свяжите Alexa с Adafruit IO с помощью IFTTT
Выполните следующие действия, чтобы создать апплет / рецепт в IFTTT:
Шаг 1: - Войти в IFTTT с учетными данными или Зарегистрируйтесь , если у вас нет учетной записи на нем.
Шаг 2: - В «Моих апплетах» нажмите « Новый апплет».
Шаг 3: - Нажмите + это
Шаг 4: - Найдите Amazon Alexa и нажмите на нее, войдите в систему, указав данные своей учетной записи разработчика Amazon.
Шаг 5: - Выберите триггер, произнесите определенную фразу
Шаг 6: - Укажите фразу « включи свет» и нажмите « Создать триггер».
Шаг 7: - Нажмите на + это
Шаг 8: - Найдите Adafruit и щелкните по нему.
Шаг 9: - Войдите в учетную запись Adafruit, используя свои учетные данные. Щелкните Отправить данные в Adafruit .
Выберите имя канала, который вы только что создали в Adafruit IO. Теперь введите «1» в данные для сохранения, это означает, что светодиод будет включен. Щелкните " Создать действие" .
Шаг 10: - Выполните те же действия, чтобы сделать апплеты для выключения светодиода . Просто введите «0» в поле «Данные для сохранения». Все шаги остаются прежними.
Вы сделали половину своей работы. Пришло время запрограммировать ESP-12E.
Расшифровка кода ESP12
Мы запрограммируем ESP12 с помощью Arduino IDE. Полный код приведен в конце этого руководства.
Во-первых, нам нужна библиотека Adafruit Mqtt, которую можно скачать по этой ссылке. Просто откройте Arduino IDE. Перейдите к примерам -> библиотека adafruit mqtt -> mqtt_esp8266
Мы отредактируем этот код в соответствии с нашими ключами AIO и учетными данными Wi-Fi.
Во-первых, мы включили все библиотеки для ESP8266WIFI и Adafruit MQTT .
#включают
Мы определили SSID и пароль для вашего Wi-Fi, к которому вы хотите подключить ESP-12e.
#define WLAN_SSID "xxxxxxxx" #define WLAN_PASS "xxxxxxxxxxx"
В этом разделе определяется сервер Adafruit и порт сервера, фиксированные как « io.adafruit.com » и « 1883 » соответственно.
#define AIO_SERVER "io.adafruit.com" #define AIO_SERVERPORT 1883
Замените поля ниже своим именем пользователя и ключами AIO, которые вы скопировали с сайта Adafruit при создании фида.
#define AIO_USERNAME "********" #define AIO_KEY "*****************************"
Затем создайте класс ESP8266 WiFiClient для подключения к серверу MQTT.
Клиент WiFiClient;
Настройте класс клиента MQTT, передав клиент WiFi и сервер MQTT, а также данные для входа.
Adafruit_MQTT_Client mqtt (& клиент, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
Настройте канал под названием «свет» для подписки на изменения.
Adafruit_MQTT_Subscribe light = Adafruit_MQTT_Subscribe (& mqtt, AIO_USERNAME "/ feeds / light");
В функции настройки мы объявляем PIN-код ESP-12e, на котором вы хотите получить вывод. Я использую вывод D0 в качестве выхода. Затем подключаем ESP-12e к точке доступа Wi-Fi.
void setup () { Serial.begin (115200); задержка (10); pinMode (D0, ВЫХОД); Serial.println (F («Демо Adafruit MQTT»)); // Подключаемся к точке доступа WiFi. Serial.println (); Serial.println (); Serial.print («Подключение к»); Serial.println (WLAN_SSID); WiFi.begin (WLAN_SSID, WLAN_PASS); while (WiFi.status ()! = WL_CONNECTED) { …. …. …
Настройте подписку MQTT для светового потока.
mqtt.subscribe (& light); }
В функции цикла мы гарантируем, что соединение с сервером MQTT живо, используя MQTT_connect (); функция.
недействительный цикл () { MQTT_connect ();
Теперь мы подписываемся на наш «легкий» фид, получаем строку от adafruit IO и конвертируем эту строку в число с помощью atoi (); функцию и запишите это число в PIND0 с помощью digitalWrite (); функция.
Adafruit_MQTT_Subscribe * подписка; while ((подписка = mqtt.readSubscription (5000))) { если (подписка == & light) { Serial.print (F ("Got_light:")); Serial.println ((char *) light.lastread); uint16_t num = atoi ((char *) light.lastread); digitalWrite (16, число); }
За работой:
Подключите ESP-12E к ноутбуку и загрузите приведенный ниже код (не забудьте отредактировать свои учетные данные в коде).
Подключите светодиод или реле к контакту D0. Теперь убедитесь, что ваш сервис Alexa работает на вашем RPi.
Чтобы дать любую команду, вам нужно разбудить службу Alexa, вызывая «Alexa» каждый раз, когда вы хотите отправить команду. Вы услышите звуковой сигнал. Как только вы услышите звуковой сигнал, произнесите « Alexa Trigger, включите свет. «Вы можете видеть, как через мгновение загорается свет. А затем, если вы скажете « Alexa Trigger Turn off the Light », свет должен погаснуть.
Это оно…. Вы можете добавить больше устройств в приведенный выше код, добавив контакты GPIO ESP-12E и создав разные апплеты с разными фразами в IFTTT.
Проверьте полный код и демонстрационное видео ниже. Также ознакомьтесь со всеми нашими проектами домашней автоматизации здесь