Use Alexa para controlar sua TV!
Componentes e suprimentos
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Ferramentas e máquinas necessárias
|
Aplicativos e serviços online
|
Sobre este projeto
Usando Alexa para controlar sua TV!
Introdução: Portanto, este projeto mostra como usar sua Alexa para enviar comandos e controlar sua TV falando com ela. Tudo o que o controle remoto da TV pode fazer, a Alexa pode fazer. O que vamos fazer é gravar os sinais de infravermelho remotos e usar o Alexa para reenviar esses mesmos sinais quando comandado por voz. Aqui estão as etapas necessárias para que isso aconteça ou assista a este vídeo no YouTube:
Etapa 1:Baixe as bibliotecas de pré-requisitos
Baixe as seguintes bibliotecas e coloque-as em suas bibliotecas do IDE do Arduino:
- ESPAsyncTCP - https://github.com/me-no-dev/ESPAsyncTCP
- ESPAsyncUDP - https://github.com/me-no-dev/ESPAsyncUDP
- FauxMoESP - https://bitbucket.org/xoseperez/fauxmoesp> Downloads> Baixar repositório
Etapa 2:NodeMCU de programação (módulo Wi-Fi)
Abra o esboço ESP8266-Alexa.ino e carregue-o em seu NodeMCU (baixe as informações da placa do Board Manager no Arduino IDE). Tudo o que você precisa alterar são as credenciais do Wi-Fi e os nomes dos dispositivos.
Você pode personalizar os nomes dos dispositivos no esboço ESP8266-Alexa.ino e os sinais que saem no esboço IR-Alexa-Send.ino:
Etapa 3:leitura dos sinais de infravermelho do controle remoto da TV
Faça upload do esboço IR_REMOTE_read.ino para o seu Arduino para ler os acessos do sinal remoto e registrar os sinais IR recebidos para referência posteriormente, conforme visto neste tutorial:
Etapa 4:Programação do Arduino para enviar sinais de TV IR via Alexa
Em seguida, abra IR-Alexa-Send.ino no Arduino IDE e carregue-o no seu Arduino Uno (certifique-se de alterar as informações da placa de upload para UNO).
Conecte a alimentação a ambos os módulos e conecte os fios entre eles. Certifique-se de que o transmissor IR esteja conectado ao Terminal 3 do UNO. Consulte o esquema em anexo para obter mais informações:
Etapa 5:Testar o projeto com Alexa
Agora vá para o aplicativo Amazon Alexa em seu dispositivo móvel ou PC, vá para sua casa inteligente e pressione "Adicionar dispositivos" para encontrar cada um dos comandos que você definiu no esboço ESP8266-Alexa.ino.
Assim que forem encontrados, você pode testá-los usando uma das seguintes estruturas de comando:
- "Alexa, ligue NOME DO DISPOSITIVO "
- "Alexa, vire NOME DO DISPOSITIVO em "
- "Alexa, gire o NOME DO DISPOSITIVO em "
- "Alexa, ligue o NOME DO DISPOSITIVO "
Código
- ESP8266-Alexa.ino
- IR-Alexa-Send.ino
- IR_REMOTE_read.ino
ESP8266-Alexa.ino C / C ++
Isso deve ser gravado no chip NodeMCU para emular um dispositivo "WEMO" via Arduino IDE#include#include #include "fauxmoESP.h" // ----- -------------------------------------------------- ---------------------- // Wifi Credentials // ---------------------- -------------------------------------------------- ----- # define WIFI_SSID "linksys" #define WIFI_PASS "" #define SERIAL_BAUDRATE 115200fauxmoESP fauxmo; // -------------------------- -------------------------------------------------- -// Wi-fi// -------------------------------------------- --------------------------------- void wifiSetup () {// Defina o módulo WIFI para o modo STA WiFi.mode ( WIFI_STA); // Conecte Serial.printf ("[WIFI] Conectando a% s", WIFI_SSID); WiFi.begin (WIFI_SSID, WIFI_PASS); // Aguarde enquanto (WiFi.status ()! =WL_CONNECTED) {Serial.print ("."); atraso (100); } Serial.println (); // Conectado! Serial.printf ("[WIFI] Modo STATION, SSID:% s, endereço IP:% s \ n", WiFi.SSID (). C_str (), WiFi.localIP (). ToString (). C_str ()); } // ----------------------------------------------- ------------------------------ // Iniciar pinos // -------------- -------------------------------------------------- ------------- # define RELAY_PIN1 13 # define RELAY_PIN2 2 # define RELAY_PIN3 14 # define RELAY_PIN4 15void setup () {// inicializa os pinos do relé pinMode (RELAY_PIN1, OUTPUT); digitalWrite (RELAY_PIN1, LOW); pinMode (RELAY_PIN2, OUTPUT); digitalWrite (RELAY_PIN2, LOW); pinMode (RELAY_PIN3, OUTPUT); digitalWrite (RELAY_PIN3, LOW); pinMode (RELAY_PIN4, OUTPUT); digitalWrite (RELAY_PIN4, LOW); // Inicia a porta serial e limpa o lixo Serial.begin (SERIAL_BAUDRATE); Serial.println (); Serial.println (); Serial.println ("esboço de demonstração FauxMo"); Serial.println ("Após a conexão, peça a Alexa / Echo para 'ligar os pixels' ou 'desligar' ou 'ligar o relé' ou 'desligar'"); // Wifi wifiSetup (); // ----------------------------------------- ------------------------------------ // Nomes de dispositivos Alexa // ------- -------------------------------------------------- -------------------- // Fauxmo fauxmo.addDevice ("TV"); fauxmo.addDevice ("GregsNetflix"); fauxmo.addDevice ("Sleep"); fauxmo.addDevice ("Office"); fauxmo.onMessage (callback);} // ---------------------------------------- ------------------------------------- // Chamadas de operação Alexa // ------ -------------------------------------------------- --------------------- retorno de chamada vazio (uint8_t device_id, const char * device_name, bool state) {Serial.printf ("[MAIN]% s state:% s \ n ", device_name, state?" ON ":" OFF "); if ((strcmp (device_name, "TV") ==0)) {// ajuste o relé imediatamente! if (estado) {digitalWrite (RELAY_PIN1, HIGH); } else {digitalWrite (RELAY_PIN1, HIGH); }} if ((strcmp (device_name, "GregsNetflix") ==0)) {// ajuste o relé imediatamente! if (estado) {digitalWrite (RELAY_PIN2, HIGH); } else {digitalWrite (RELAY_PIN2, LOW); }} if ((strcmp (device_name, "Sleep") ==0)) {// ajuste o relé imediatamente! if (estado) {digitalWrite (RELAY_PIN3, HIGH); } else {digitalWrite (RELAY_PIN3, LOW); }} if ((strcmp (device_name, "Office") ==0)) {// ajuste o relé imediatamente! if (estado) {digitalWrite (RELAY_PIN4, HIGH); } else {digitalWrite (RELAY_PIN4, LOW); }}} void loop () {fauxmo.handle (); atraso (500); digitalWrite (RELAY_PIN1, LOW); digitalWrite (RELAY_PIN2, LOW); digitalWrite (RELAY_PIN3, LOW); digitalWrite (RELAY_PIN4, LOW);}
IR-Alexa-Send.ino C / C ++
Isso é carregado para o Arduino UNO para ler os sinais do NodeMCU e enviar os sinais de IR apropriados por meio do diodo transmissor de IR#includeIRsend irsend; #define a 4 # define b 5 # define c 6 # define d 7void setup () {Serial.begin (9600); pinMode (a, INPUT); pinMode (b, INPUT); pinMode (c, INPUT); pinMode (d, INPUT);} void loop () {if (digitalRead (a) ==HIGH) {irsend.sendNEC (0x57E3E817, 32); // Código de alimentação Serial.println ("TV"); atraso (500); } if (digitalRead (b) ==HIGH) {irsend.sendNEC (0x57E354AB, 32); // Insira o atraso da chave (2000); irsend.sendNEC (0x57E39867, 32); // Up Key delay (1000); irsend.sendNEC (0x57E39867, 32); // Up Key delay (1000); irsend.sendNEC (0x57E39867, 32); // Up Key delay (1000); irsend.sendNEC (0x57E3B44B, 32); // Atraso da tecla direita (1000); irsend.sendNEC (0x57E354AB, 32); // Insira atraso (2000); irsend.sendNEC (0x57E354AB, 32); // Insira Serial.println ("The Office"); atraso (500); } if (digitalRead (c) ==HIGH) {irsend.sendNEC (0x57E38679, 32); // Botão de opções delay (1500); irsend.sendNEC (0x57E3CC33, 32); // Down key delay (700); irsend.sendNEC (0x57E3CC33, 32); // Down key delay (700); irsend.sendNEC (0x57E3CC33, 32); // Down key delay (700); irsend.sendNEC (0x57E3CC33, 32); // Down key delay (700); irsend.sendNEC (0x57E3B44B, 32); // Atraso da tecla direita (700); irsend.sendNEC (0x57E3B44B, 32); // Atraso da tecla direita (900); irsend.sendNEC (0x57E38679, 32); // Botão Opções Serial.println ("Sleep Timer"); atraso (500); } if (digitalRead (d) ==HIGH) {irsend.sendNEC (0x57E34AB5, 32); // Netflix Code Serial.println ("Greg's Netflix"); atraso (500); }}
IR_REMOTE_read.ino C / C ++
Use este código em seu Arduino para ler os acessos do Clicker vindos de seu remoto para o receptor de IV.//2017.06.22#include#include / * COMO CONECTAR A TELA LCD PINO DA ESQUERDA PARA A DIREITA COM PINOS NO LADO SUPERIOR * * GND - VCC - POT MEIO - 12 - GND - 11 - NENHUMA - NENHUMA - NENHUMA - NENHUMA - 5 - 4 - 9 - 2 - VCC - GND * * POT DEVE TER 5V E GND SOBRE ELE E PODE RODAR O BOTÃO PARA ALTERAR O CONTRASTE LCD * / LiquidCrystal lcd (12, 11, 5, 4, 9, 2); // 9 em vez de 3 (NECESSIDADE DE TRANSMISSOR) int receiverpin =10; IRrecv irrecv (receiverpin); decode_results results; void setup () {lcd.begin (16, 2); pinMode (receiverpin, INPUT); Serial.begin (9600); irrecv.enableIRIn ();} void loop () {if (irrecv.decode (&resultados)) {Serial.println (resultados.valor, HEX); irrecv.resume (); lcd.clear (); lcd.print (resultados.valor, HEX); atraso (150); }}
Esquemas
Este é o Esquema Final Conectando o Arduino ao NodeMCU (Módulo Wi-Fi)Processo de manufatura
- Pílula anticoncepcional
- Movendo seu sistema de controle industrial para sem fio
- Razões para usar compostos termofixos em seu produto
- Reparar ou substituir o controle da tela sensível ao toque danificado?
- Habilite o controle Alexa para o seu ventilador de teto
- Assumindo o controle de seus próprios reparos de veículos
- Protegendo seu sistema de controle industrial
- Como usar sua máquina de perfuração para perfurar metal
- 8 etapas para depurar seu sistema de controle de processos
- Use PLC ao lado de WakeOnLan (WoL) Seu PC