- Вимоги до обладнання
- Потік проекту для голосового світлодіода, керованого 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
- Модуль реле
- Світлодіодна / лампочка змінного струму
У вас повинен бути готовий ваш 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. Фід зберігає дані, надіслані 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, яку можна завантажити за цим посиланням. Просто відкрийте IDE Arduino. Перейдіть до прикладів -> бібліотека 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); поки (WiFi.status ()! = WL_CONNECTED) { …. ... ...
Налаштування підписки на MQTT для легкої подачі.
mqtt.subscribe (& light); }
У функції циклу ми переконаємося, що з'єднання з сервером MQTT є активним, використовуючи MQTT_connect (); функція.
недійсний цикл () { MQTT_connect ();
Тепер ми підписуємося на наш «легкий» канал і отримуємо рядок з Adafruit IO і перетворюємо цей рядок на число за допомогою atoi (); функціонувати та записати цей номер у PIND0 за допомогою digitalWrite (); функція.
Передплата Adafruit_MQTT_Subscribe *; while ((subscription = mqtt.readSubscription (5000))) { if (subscription == & 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.
Перевірте повний код та демонстраційне відео нижче. Також перегляньте всі наші проекти з автоматизації будинку тут