- Хардуерни изисквания
- Проект поток за гласово управляван светодиод Alexa
- Създаване на акаунт в Adafruit за комуникация
- Свържете Alexa към Adafruit IO, използвайки IFTTT
- Обяснение на кода ESP12
- Работа:
В предишни уроци видяхме как можем да изградим говорител на Amazon Echo и след това как можем да контролираме всеки Raspberry Pi GPIO с помощта на Alexa Voice. Сега правим IoT проект за управление на домакински уреди от всяка точка на света, използвайки AlexaPi и ESP-12E (или всяка ESP платка).
Хардуерни изисквания
- Raspberry Pi с инсталиран AVS в него
- USB 2.0 микрофон / уеб камера
- ESP-12E
- Релеен модул
- LED / AC крушка
Трябва да имате своя 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, така че оставаме с по-долу две стъпки, които ще обясним една по една:
- Създаване на акаунт в 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“ в полето Data to save. Всички стъпки остават същите.
Извършихте половината от работата си. Сега е време да програмирате вашия ESP-12E.
Обяснение на кода ESP12
Ще програмираме ESP12 с Arduino IDE. Пълният код е даден в края на този урок.
Първо, имаме нужда от библиотека Adafruit Mqtt, която може да бъде изтеглена от тази връзка. Просто отворете Arduino IDE. Отидете на примери -> библиотека на adafruit mqtt -> mqtt_esp8266
Ще редактираме този код според нашите AIO ключове и идентификационни данни за Wi-Fi.
Първо, включихме всички библиотеки за ESP8266WIFI и Adafruit MQTT .
#include
Ние определено на SSID и парола за достъп до Wi-Fi интернет, от която искате да се свържете вашия ESP-12д.
#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, докато правите Feed.
#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 "/ емисии / светлина");
Във функцията за настройка декларираме ПИН на ESP-12e, на който искате да получите изход. Използвам D0 пин като изход. След това свързваме ESP-12e с Wi-fi точка за достъп.
void setup () { Serial.begin (115200); забавяне (10); pinMode (D0, OUTPUT); Serial.println (F ("Demofruit MQTT демонстрация")); // Свързване към WiFi точка за достъп. Serial.println (); Serial.println (); Serial.print ("Свързване с"); Serial.println (WLAN_SSID); WiFi.begin (WLAN_SSID, WLAN_PASS); докато (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))) { if (абонамент == & 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 Turn the Light. ”Можете да видите, че светлината се включва в рамките на един момент. И тогава, ако кажете „ Alexa Trigger Turn off the Light “, светлината трябва да се изключи.
Това е…. Можете да добавите още уреди в горния код, като добавите GPIO щифтовете на ESP-12E и като направите различни аплети с различни фрази в IFTTT.
Проверете пълния код и демонстрационното видео по-долу. Също така проверете всички наши проекти за домашна автоматизация тук