Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Controle su TV con Alexa: Arduino y ESP8266

Componentes y materiales

ComponenteCantidadNotas
Arduino UNO1Usado con diodo IR para enviar comandos a la TV
NodeMCU ESP82661Módulo WiFi que emula dispositivo "WEMO" para Alexa
Emisor/receptor IR1En serie con resistencia 100 Ω para enviar comandos IR

Herramientas necesarias

Aplicaciones y servicios

Descripción del proyecto

Usar Alexa para controlar su TV

Introducción: Este proyecto explica cómo usar Alexa para enviar comandos y controlar la TV por voz. Todo lo que hace el mando a distancia, puede hacerlo Alexa. Grabaremos las señales IR del mando y Alexa las reenviará cuando se lo pidamos por voz.

Paso 1: Descargar librerías previas

Instale en Arduino IDE:

Paso 2: Programar NodeMCU (módulo WiFi)

Abra ESP8266-Alexa.ino y súbalo al NodeMCU (instale soporte ESP8266 en Board Manager). Solo cambie credenciales WiFi y nombres de dispositivos.

Personalice nombres de dispositivos en ESP8266-Alexa.ino y señales IR en IR-Alexa-Send.ino.

Controle su TV con Alexa: Arduino y ESP8266
Configuración de dispositivos en el código

Paso 3: Leer señales IR del mando de la TV

Suba IR_REMOTE_read.ino al Arduino para leer y registrar las señales IR recibidas (véase tutorial).

Paso 4: Programar Arduino para enviar señales IR vía Alexa

Abra IR-Alexa-Send.ino en Arduino IDE y súbalo al Arduino Uno (cambie board a UNO).

Alimente ambos módulos y conecte cables entre ellos. El emisor IR va al pin 3 del UNO. Vea esquema adjunto.

Controle su TV con Alexa: Arduino y ESP8266
Esquema final Arduino + NodeMCU

Paso 5: Probar con Alexa

En app Amazon Alexa (móvil/PC), vaya a Smart Home → Add Devices para encontrar los comandos definidos en ESP8266-Alexa.ino.

Controle su TV con Alexa: Arduino y ESP8266
Dispositivos detectados por Alexa

Estructuras de comando válidas:

Código

ESP8266-Alexa.ino (NodeMCU)

#include <Arduino.h>
#include <ESP8266WiFi.h>
#include "fauxmoESP.h"

#define WIFI_SSID "linksys"
#define WIFI_PASS ""
#define SERIAL_BAUDRATE 115200

fauxmoESP fauxmo;

void wifiSetup() {
  WiFi.mode(WIFI_STA);
  Serial.printf("[WIFI] Conectando a %s ", WIFI_SSID);
  WiFi.begin(WIFI_SSID, WIFI_PASS);
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print("."); delay(100);
  }
  Serial.println();
  Serial.printf("[WIFI] STATION Mode, SSID: %s, IP: %s\n", WiFi.SSID().c_str(), WiFi.localIP().toString().c_str());
}

#define RELAY_PIN1 13
#define RELAY_PIN2 2
#define RELAY_PIN3 14
#define RELAY_PIN4 15

void setup() {
  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);

  Serial.begin(SERIAL_BAUDRATE);
  Serial.println("FauxMo demo sketch");
  Serial.println("Pida a Alexa 'encender pixels' o 'apagar relay'");

  wifiSetup();

  fauxmo.addDevice("TV");
  fauxmo.addDevice("NetflixDeGreg");
  fauxmo.addDevice("Sleep");
  fauxmo.addDevice("Office");
  fauxmo.onMessage(callback);
}

void callback(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) {
    digitalWrite(RELAY_PIN1, state ? HIGH : HIGH); // Pulso HIGH en ambos casos
  }
  if (strcmp(device_name, "NetflixDeGreg") == 0) {
    digitalWrite(RELAY_PIN2, state ? HIGH : LOW);
  }
  if (strcmp(device_name, "Sleep") == 0) {
    digitalWrite(RELAY_PIN3, state ? HIGH : LOW);
  }
  if (strcmp(device_name, "Office") == 0) {
    digitalWrite(RELAY_PIN4, state ? HIGH : LOW);
  }
}

void loop() {
  fauxmo.handle();
  delay(500);
  digitalWrite(RELAY_PIN1, LOW);
  digitalWrite(RELAY_PIN2, LOW);
  digitalWrite(RELAY_PIN3, LOW);
  digitalWrite(RELAY_PIN4, LOW);
}

IR-Alexa-Send.ino (Arduino UNO)

#include <IRremote.h>
IRsend irsend;
#define a 4
#define b 5
#define c 6
#define d 7

void 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); // Power
    Serial.println("TV"); delay(500);
  }
  if (digitalRead(b) == HIGH) {
    irsend.sendNEC(0x57E354AB, 32); // Enter
    delay(2000);
    irsend.sendNEC(0x57E39867, 32); // Up x3
    delay(1000);
    irsend.sendNEC(0x57E39867, 32);
    delay(1000);
    irsend.sendNEC(0x57E39867, 32);
    delay(1000);
    irsend.sendNEC(0x57E3B44B, 32); // Right
    delay(1000);
    irsend.sendNEC(0x57E354AB, 32); // Enter x2
    delay(2000);
    irsend.sendNEC(0x57E354AB, 32);
    Serial.println("The Office"); delay(500);
  }
  if (digitalRead(c) == HIGH) {
    irsend.sendNEC(0x57E38679, 32); // Options
    delay(1500);
    irsend.sendNEC(0x57E3CC33, 32); // Down x4
    delay(700);
    irsend.sendNEC(0x57E3CC33, 32); delay(700);
    irsend.sendNEC(0x57E3CC33, 32); delay(700);
    irsend.sendNEC(0x57E3CC33, 32); delay(700);
    irsend.sendNEC(0x57E3B44B, 32); // Right x2
    delay(700);
    irsend.sendNEC(0x57E3B44B, 32); delay(900);
    irsend.sendNEC(0x57E38679, 32); // Options
    Serial.println("Sleep Timer"); delay(500);
  }
  if (digitalRead(d) == HIGH) {
    irsend.sendNEC(0x57E34AB5, 32); // Netflix
    Serial.println("Netflix de Greg"); delay(500);
  }
}

IR_REMOTE_read.ino (Leer códigos IR)

// 2017.06.22
#include <IRremote.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 9, 2);
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(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume();
    lcd.clear();
    lcd.print(results.value, HEX);
    delay(150);
  }
}

Esquemático

Controle su TV con Alexa: Arduino y ESP8266
Conexión final Arduino UNO + NodeMCU + emisor IR

Proceso de manufactura

  1. Reparar o reemplazar su pantalla táctil industrial: Guía experta para decidir
  2. Pastillas Anticonceptivas: Historia, Beneficios, Riesgos y Producción
  3. Controla tu Ventilador de Techo con Alexa: Guía Paso a Paso
  4. Controlar un LED de Arduino con Cortana vía Bluetooth en Windows 10
  5. Guía Pro: Taladrado de Metal con tu Máquina – Consejos de Experto
  6. Domina las reparaciones de tu coche: Consejos DIY para fiabilidad y ahorro
  7. Protección de Sistemas de Control Industrial: Estrategias y Mejores Prácticas Comprobadas
  8. Ocho Pasos Comprobados para Diagnosticar y Reparar su Sistema de Control de Procesos
  9. Encender su PC remotamente con PLCnext vía Wake-on-LAN
  10. Transición de sistemas de control industrial a redes inalámbricas
  11. Por Qué los Compuestos Termofijos Son la Elección Ideal para la Manufactura Moderna