Используйте Alexa для управления телевизором!
Компоненты и расходные материалы
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Необходимые инструменты и машины
|
Приложения и онлайн-сервисы
|
Об этом проекте
Использование Alexa для управления телевизором!
Введение: Итак, в этом проекте рассказывается, как использовать Alexa для отправки команд и управления телевизором, разговаривая с ним. Все, что может делать ваш пульт от телевизора, может делать и ваш Alexa. Что мы собираемся сделать, так это записать удаленные ИК-сигналы и использовать Alexa для повторной отправки тех же сигналов по голосовой команде. Вот шаги, которые вам нужно сделать, чтобы это произошло, или посмотрите это видео на YouTube:
Шаг 1. Загрузите необходимые библиотеки
Загрузите следующие библиотеки и поместите их в свои библиотеки IDE Arduino:
- ESPAsyncTCP - https://github.com/me-no-dev/ESPAsyncTCP
- ESPAsyncUDP - https://github.com/me-no-dev/ESPAsyncUDP
- FauxMoESP - https://bitbucket.org/xoseperez/fauxmoesp> Загрузки> Загрузить репозиторий
Шаг 2. Программирование NodeMCU (модуля Wi-Fi)
Откройте эскиз ESP8266-Alexa.ino и загрузите его в свой NodeMCU (загрузите информацию о плате из Board Manager в Arduino IDE). Все, что вам нужно изменить, - это учетные данные Wi-Fi и имена устройств.
Вы можете настроить имена устройств в эскизе ESP8266-Alexa.ino и сигналы, которые выходят в эскизе IR-Alexa-Send.ino:
Шаг 3. Считывание ИК-сигналов с пульта ДУ
Загрузите скетч IR_REMOTE_read.ino на свой Arduino, чтобы считывать попадания удаленного сигнала и записывать полученные ИК-сигналы для дальнейшего использования, как показано в этом руководстве:
Шаг 4. Программирование Arduino для отправки телевизионных ИК-сигналов через Alexa
Затем откройте IR-Alexa-Send.ino в среде Arduino IDE и загрузите его на свой Arduino Uno (убедитесь, что вы изменили информацию о загрузочной плате на UNO).
Подключите питание к обоим модулям и соедините провода между собой. Убедитесь, что ИК-передатчик подключен к клемме 3 UNO. См. Прилагаемую схему для получения дополнительной информации:
Шаг 5. Тестирование проекта с помощью Alexa
Теперь войдите в приложение Amazon Alexa на мобильном устройстве или ПК, перейдите в «Умный дом» и нажмите «Добавить устройства», чтобы найти все команды, которые вы установили в эскизе ESP8266-Alexa.ino.
Как только они будут обнаружены, вы можете протестировать его, используя одну из следующих структур команд:
- "Алекса, включи НАЗВАНИЕ УСТРОЙСТВА "
- "Алекса, включи НАЗВАНИЕ УСТРОЙСТВА на "
- "Алекса, поверните НАЗВАНИЕ УСТРОЙСТВА на "
- "Алекса, включи НАЗВАНИЕ УСТРОЙСТВА "
Код
- ESP8266-Alexa.ino
- IR-Alexa-Send.ino
- IR_REMOTE_read.ino
ESP8266-Alexa.ino C / C ++
Это должно быть записано в чип NodeMCU для эмуляции устройства "WEMO" через Arduino IDE#include#include #include "fauxmoESP.h" // ----- -------------------------------------------------- ---------------------- // Учетные данные Wi-Fi // ---------------------- -------------------------------------------------- ----- # определить WIFI_SSID "linksys" #define WIFI_PASS "" #define SERIAL_BAUDRATE 115200fauxmoESP fauxmo; // -------------------------- -------------------------------------------------- -// Вай-фай// -------------------------------------------- --------------------------------- void wifiSetup () {// Установить модуль WIFI в режим STA WiFi.mode ( WIFI_STA); // Подключение Serial.printf ("[WIFI] Подключение к% s", WIFI_SSID); WiFi.begin (WIFI_SSID, WIFI_PASS); // Ждем пока (WiFi.status ()! =WL_CONNECTED) {Serial.print ("."); задержка (100); } Serial.println (); // Связанный! Serial.printf ("[WIFI] STATION Mode, SSID:% s, IP address:% s \ n", WiFi.SSID (). C_str (), WiFi.localIP (). ToString (). C_str ()); } // ----------------------------------------------- ------------------------------ // Инициализация контактов // -------------- -------------------------------------------------- ------------- # определить RELAY_PIN1 13 # определить RELAY_PIN2 2 # определить RELAY_PIN3 14 # определить RELAY_PIN4 15void setup () {// инициализировать контакты реле pinMode (RELAY_PIN1, OUTPUT); digitalWrite (RELAY_PIN1, LOW); pinMode (RELAY_PIN2, ВЫХОД); digitalWrite (RELAY_PIN2, LOW); pinMode (RELAY_PIN3, ВЫХОД); digitalWrite (RELAY_PIN3, LOW); pinMode (RELAY_PIN4, ВЫХОД); digitalWrite (RELAY_PIN4, LOW); // Запуск последовательного порта и очистка мусора Serial.begin (SERIAL_BAUDRATE); Serial.println (); Serial.println (); Serial.println («Демо-скетч FauxMo»); Serial.println («После подключения попросите Alexa / Echo« включить или выключить пиксели »или« включить реле »или« выключить »); // Wi-Fi wifiSetup (); // ----------------------------------------- ------------------------------------ // Имена устройств Alexa // ------- -------------------------------------------------- -------------------- // Fauxmo fauxmo.addDevice ("TV"); fauxmo.addDevice ("GregsNetflix"); fauxmo.addDevice («Сон»); fauxmo.addDevice («Офис»); fauxmo.onMessage (callback);} // ---------------------------------------- ------------------------------------- // Вызовы операций Alexa // ------ -------------------------------------------------- --------------------- void callback (uint8_t device_id, const char * device_name, bool state) {Serial.printf ("[MAIN]% s state:% s \ n ", имя_устройства, состояние?" ВКЛ ":" ВЫКЛ "); if ((strcmp (device_name, "TV") ==0)) {// немедленно настраиваем реле! если (состояние) {digitalWrite (RELAY_PIN1, HIGH); } еще {digitalWrite (RELAY_PIN1, HIGH); }} if ((strcmp (device_name, "GregsNetflix") ==0)) {// немедленно настройте реле! если (состояние) {digitalWrite (RELAY_PIN2, HIGH); } еще {digitalWrite (RELAY_PIN2, LOW); }} if ((strcmp (device_name, "Sleep") ==0)) {// немедленно настраиваем реле! если (состояние) {digitalWrite (RELAY_PIN3, HIGH); } еще {digitalWrite (RELAY_PIN3, LOW); }} if ((strcmp (device_name, "Office") ==0)) {// немедленно настраиваем реле! если (состояние) {digitalWrite (RELAY_PIN4, HIGH); } еще {digitalWrite (RELAY_PIN4, LOW); }}} void loop () {fauxmo.handle (); задержка (500); digitalWrite (RELAY_PIN1, LOW); digitalWrite (RELAY_PIN2, LOW); digitalWrite (RELAY_PIN3, LOW); digitalWrite (RELAY_PIN4, LOW);}
IR-Alexa-Send.ino C / C ++
Он загружается в Arduino UNO для чтения сигналов от NodeMCU и отправки соответствующих ИК-сигналов через передающий ИК-диод#includeIRsend irsend; #define a 4 # define b 5 # define c 6 # определить 7void setup () {Serial.begin (9600); pinMode (а, ВХОД); pinMode (b, ВХОД); pinMode (c, ВХОД); pinMode (d, INPUT);} void loop () {if (digitalRead (a) ==HIGH) {irsend.sendNEC (0x57E3E817, 32); // Код питания Serial.println ("TV"); задержка (500); } если (digitalRead (b) ==ВЫСОКИЙ) {irsend.sendNEC (0x57E354AB, 32); // Вводим задержку ключа (2000); irsend.sendNEC (0x57E39867, 32); // Задержка клавиши вверх (1000); irsend.sendNEC (0x57E39867, 32); // Задержка клавиши вверх (1000); irsend.sendNEC (0x57E39867, 32); // Задержка клавиши вверх (1000); irsend.sendNEC (0x57E3B44B, 32); // Задержка правой клавиши (1000); irsend.sendNEC (0x57E354AB, 32); // Вводим задержку (2000); irsend.sendNEC (0x57E354AB, 32); // Введите Serial.println ("Офис"); задержка (500); } если (digitalRead (c) ==ВЫСОКИЙ) {irsend.sendNEC (0x57E38679, 32); // Задержка кнопки опций (1500); irsend.sendNEC (0x57E3CC33, 32); // Задержка клавиши вниз (700); irsend.sendNEC (0x57E3CC33, 32); // Задержка клавиши вниз (700); irsend.sendNEC (0x57E3CC33, 32); // Задержка клавиши вниз (700); irsend.sendNEC (0x57E3CC33, 32); // Задержка клавиши вниз (700); irsend.sendNEC (0x57E3B44B, 32); // Задержка правой клавиши (700); irsend.sendNEC (0x57E3B44B, 32); // Задержка правой клавиши (900); irsend.sendNEC (0x57E38679, 32); // Кнопка параметров Serial.println ("Таймер сна"); задержка (500); } если (digitalRead (d) ==ВЫСОКИЙ) {irsend.sendNEC (0x57E34AB5, 32); // Код Netflix Serial.println («Netflix Грега»); задержка (500); }}
IR_REMOTE_read.ino C / C ++
Используйте этот код на своем Arduino, чтобы прочитать количество кликеров, поступающих с пульта дистанционного управления на ИК-приемник.//2017.06.22#include#include / * КАК ПОДКЛЮЧИТЬ ЖК-ЭКРАН ПИН СЛЕВА НАПРАВО С ШТИФТАМИ НА ВЕРХНЕЙ СТОРОНЕ * * GND - VCC - POT MIDDLE - 12 - GND - 11 - NONE - NONE - NONE - NONE - 5 - 4 - 9 - 2 - VCC - GND * * POT ДОЛЖЕН ИМЕТЬ 5 В И ЗАЗЕМЛЕНИЕ И МОЖНО ВРАЩАТЬ РУЧКУ, ЧТОБЫ ИЗМЕНИТЬ КОНТРАСТ ЖК-дисплея * / LiquidCrystal lcd (12, 11, 5, 4, 9, 2); // 9 вместо 3 (НЕОБХОДИМО ПЕРЕДАТЧИК) int Receiverpin =10; IRrecv irrecv (Receiverpin); decode_results results; void setup () {lcd.begin (16, 2); pinMode (Receiverpin, ВХОД); Serial.begin (9600); irrecv.enableIRIn ();} цикл void () {if (irrecv.decode (&results)) {Serial.println (results.value, HEX); irrecv.resume (); lcd.clear (); lcd.print (results.value, HEX); задержка (150); }}
Схема
Это окончательная схема подключения Arduino к NodeMCU (модуль Wi-Fi).Производственный процесс
- Противозачаточные таблетки
- Перевод вашей промышленной системы управления на беспроводную связь
- Причины использования термореактивных композитов в вашем продукте
- Отремонтировать или заменить поврежденный элемент управления сенсорным экраном?
- Включение Alexa Control для потолочного вентилятора
- Возьмите под свой контроль ремонт вашего автомобиля
- Защита вашей промышленной системы управления
- Как использовать сверлильный станок для сверления металла
- 8 шагов для отладки вашей системы управления технологическим процессом
- Используйте PLCnext для WakeOnLan (WoL) вашего ПК