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

Control total de su televisor con Alexa y Arduino IoT Cloud

Componentes y suministros

Arduino Nano 33 IoT
× 1
Resistencia de 330 ohmios
× 1
Receptor de infrarrojos (genérico)
ej. VS1838B
× 1
Transmisor de infrarrojos (genérico)
× 1
Cables de puente (genéricos)
× 1
Breadboard (genérico)
× 1

Aplicaciones y servicios en línea

Arduino Web Editor
Arduino IoT Cloud
Arduino Amazon Alexa Official Arduino Skill

Acerca de este proyecto

Nota:este tutorial podría estar desactualizado, vaya aquí para una versión más actual.

Introducción:Arduino IoT Cloud

Arduino IoT Cloud es una plataforma que permite a cualquier persona construir objetos conectados a IoT con facilidad. Para controlar nuestro televisor con Alexa, también usaremos la habilidad oficial de Arduino Alexa.

Si es nuevo en Arduino IoT Cloud, le recomendamos que primero eche un vistazo a este proyecto introductorio, que le dará una descripción general y lo guiará a través del proceso de configuración de una de las placas compatibles, IoT Cloud Things y Propiedades y conseguirle a bordo.

Parte 1:Cómo controlar un televisor

La forma más sencilla de controlar cualquier tipo de televisión es actuar como si fuéramos su propio mando a distancia por infrarrojos. Para hacerlo, tendremos que escuchar para las señales que enviará el control remoto, capture los datos e imítelos con nuestra placa Arduino. Una vez ensamblado el circuito, cargaremos este boceto en nuestra placa. Trasladará las ráfagas de señales de infrarrojos generadas por las pulsaciones de botones remotos en una serie de enteros sin firmar. Apuntemos el control remoto al Receptor IR de Arduino que construimos y presionamos los siguientes botones:

  • ALIMENTACIÓN / ESPERA
  • CANALES DEL 1 AL 9
  • SUBIR VOLUMEN
  • BAJAR VOLUMEN
  • SILENCIO
  • CANAL ARRIBA
  • CANAL ABAJO

Veremos los valores que vienen a través del Serial Monitor , informado como rawData . Tomemos nota de ellos en un archivo de texto por ahora, y asignemos a cada lista su propio nombre de matriz ( chan1 , chan2 y así). Los siguientes valores son solo para referencia y son generados por un control remoto de TV de Samsung.

  CANAL 1unsigned int chan1 [67] ={4450,4500, 550,1700, 500,1700, 550,1700, 550,550, 550,600, 500,600, 550,550, 550,600, 500,1700, 550,1700, 550 , 1700, 500,600, 500,600, 550,550, 550,600, 500,600, 550,550, 550,600, 500,1700, 550,600, 500,600, 550,550, 550,600, 500,600, 550,1700, 500,1700, 550,600, 500,1700, 550,1700, 550 , 1700, 500,1700, 550,1700, 500}; CANAL 2unsigned int chan2 [67] ={4500,4500, 550,1700, 500,1700, 550,1700, 550,550, 550,550, 550,600, 500,600, 550,600, 500 , 1700, 550,1700, 500,1700, 550,600, 500,600, 550,550, 550,600, 500,600, 550,1700, 500,600, 550,1700, 500,600, 550,550, 550,600, 500,600, 550,550, 550,650, 450,1700, 550,600, 500 , 1700, 550,1700, 500,1700, 550,1700, 550,1700, 500}; CANAL 3unsigned int chan3 [67] ={4500,4500, 500,1700, 550,1700, 550,1700, 500,600, 550,550 , 550,600, 500,600, 550,550, 550,1700, 500,1700, 550,1700, 550,550, 550,600, 500,600, 550,550, 550,600, 500,600, 550,1700, 500,1700, 550,600, 550,550, 550,550, 550,600, 550,550, 550 , 1700, 500 , 600, 550,550, 550,1700, 550,1650, 550,1700, 550,1700, 500,1700, 600}; CANAL 4unsigned int chan4 [67] ={4450,4450, 550,1700, 550,1700, 500 , 1700, 550,600, 500,600, 550,550, 600,550, 500,600, 550,1700, 500,1700, 550,1700, 550,550, 550,600, 500,600, 550,550, 550,600, 500,600, 550,550, 550,600, 500,1700, 550,600, 500,600, 550,550 , 550,600, 500,1700, 550,1700, 550,1700, 500,600, 550,1700, 500,1700, 550,1700, 550,1700, 500}; CANAL 5unsigned int chan5 [67] ={4500,4500, 500,1700, 550,1700, 550,1700, 550,550, 550,550, 550,550, 600,550, 550,550, 550,1700, 550,1650, 550,1700, 550,550, 550,600 , 500,600, 550,550, 550,600, 500,1700, 550,600, 500,600, 550,1700, 500,600, 550,550, 550,600, 550,550, 550,550, 550,1700, 550,1700, 500,600, 550,1700, 500,1700, 550,1700 , 550,1700, 500}; CANAL 6unsigned int chan6 [67] ={4500,4500, 550,1650, 550,1700, 550,1700, 500,600, 550,550, 550,600, 500,600, 500,600, 550,1700, 500,1700, 550,1700, 550,550, 600,550 , 500,600, 550,550, 600,550, 550,550, 550,1700, 500,600, 550,1700, 500,600, 550,550, 550,600, 500,600, 550,1700, 500,600, 550,1700, 500,600, 550,1650, 600,1650, 550,1700 , 550,1650, 600}; CANAL 7unsigned int chan7 [67] ={4500,4500, 550,1700, 500,1700, 550,1750, 500,550, 550,600, 500,650, 500,550, 550,550, 550,1750, 500,1700, 500,1700, 550,650, 450,650 , 500,550, 550,600, 500,650, 500,550, 550,600, 500,1700, 550,1750, 500,600, 500,550, 550,600, 500,650, 500,1750, 450,1700, 550,600, 500,650, 500,1700, 500,1700, 550,1750 , 500,1700, 500}; CANAL 8unsigned int chan8 [67] ={4450,4550, 500,1700, 550,1700, 550,1650, 550,600, 500,600, 550,550, 550,600, 500,600, 550,1700, 500,1700, 550,1700, 550,550, 550,600 , 500,600, 550,550, 550,600, 500,1700, 550,600, 500,1700, 550,1700, 500,600, 550,550, 550,650, 450,600, 550,550, 550,1700, 550,550, 550,600, 500,1700, 550,1700, 550,1700 , 500,1700, 550}; CANAL 9unsigned int chan9 [67] ={4450,4500, 550,1700, 550,1700, 500,1700, 550,600, 500,600, 550,550, 550,600, 500,600, 550,1700, 500,1700, 550,1700, 500,600, 550,550 , 550,600, 500,600, 550,550, 550,600, 500,1700, 550,1700, 550,1700, 500,600, 550,550, 550,550, 550,600, 500,1700, 550,600, 500,600, 550,550, 550,1700, 550,1700, 500,1700 , 550,1700, 550}; VOLUME UPunsigned int volUp [67] ={4500,4500, 550,1700, 500,1750, 500,1700, 550,600, 500,600, 500,600, 550,550, 550,600, 500,1700, 550,1700, 550,1700, 500,650, 450,600 , 550,600, 500,650, 450,650, 500,1700, 500,1750, 500,1750, 500,550, 550,600, 500,650, 500,550, 550,600, 500,650, 500,600, 500,600, 500,1700, 550,1750, 450,1750, 500,1700 , 550,1700, 500}; VOLUME DOWNunsigned int volDown [67] ={4450,4550, 500,1700, 550,1700, 550,1650, 550,600, 550,550, 550,600, 500,600, 500,600, 550,1700, 500,1700, 550,1700, 550,550, 550,600 , 500,600, 550,550, 550,600, 500,1700, 550,1700, 550,600, 500,1700, 550,600, 500,600, 500,600, 550,550, 550,600, 500,650, 500,1700, 500,650, 500,1700, 500,1750, 500,1700 , 550,1700, 500}; CANAL UPunsigned int chanUp [67] ={4500,4450, 550,1700, 550,1650, 550,1700, 550,550, 550,600, 550,550, 550,550, 600,550, 550,1650, 550,1700, 550,1650, 600,550, 550,550 , 550,600, 500,600, 550,550, 550,550, 550,1700, 550,550, 600,550, 550,1650, 550,600, 550,550, 550,550, 550,1700, 550,550, 550,1700, 550,1700, 550,550, 550,1650, 600,1650 , 550,1700, 550}; CANAL DOWNunsigned int chanDown [67] ={4500,4450, 600,1650, 550,1700, 550,1650, 550,600, 550,550, 550,550, 550,600, 500,600, 550,1700, 500,1700, 550,1700, 550,550, 550,600 , 550,550, 550,550, 550,550, 600,550, 550,550, 550,600, 500,600, 550,1650, 600,550, 550,550, 550,550, 600,1650, 550,1700, 500,1700, 600,1650, 550,550, 600,1650, 550,1700 , 500,1700, 550};  

Parte 2:Arduino IoT Cloud

Desde la Arduino IoT Cloud principal página, crearemos una nueva cosa y asígnele un nombre significativo. Llamémoslo TVRemoteController . Luego seleccionaremos el tablero que vamos a usar. Para este tutorial usamos un Arduino Nano 33 IoT, pero si tiene otra placa compatible también estará bien, solo tenga en cuenta que el pinout y el comportamiento de la biblioteca IR pueden cambiar. Si en este punto no puede ver su tablero, es posible que se haya saltado el Introducción procedimiento que mencionamos anteriormente, si este es el caso, vuelva a través de ese proceso.

Una vez hecho esto, agregaremos una Propiedad a nuestra cosa , representará nuestro televisor. Debajo de Smart Home categoría, seleccione "TV" como Tipo de propiedad, configúrelo como "Lectura y escritura", y en "Actualizar" seleccione "Cuando cambie el valor".

Aquí está lo que las Propiedades La vista de nuestra Cosa debería verse así en este punto:

Parte 3:Editor web Arduino

Ha llegado el momento de hacer clic en el botón "EDITAR SKETCH", que nos llevará al Editor Web, donde podremos agregar algún código personalizado al Sketch generado automáticamente por IoT Cloud.

Lo primero que tenemos que incluir es la biblioteca IR Remote, de Ken Shirriff.

  #include   

Luego tenemos que configurar una matriz bidimensional para nuestros canales y 6 matrices para los comandos que necesitamos. Si recuerda, en la Parte 1 capturamos algunos datos IR que ahora usaremos para llenar nuestras matrices

  const unsigned int chan [9] [67] ={{chan1}, {chan2}, {chan3}, {chan4}, {chan5}, {chan6}, {chan7}, {chan8}, {chan9}}; const unsigned int volUp [67] ={...}; const unsigned int volDown [67] ={...}; const unsigned int chanUp [67] ={...}; const unsigned int chanDown [67] ={...}; const unsigned int onoff [67] ={...}; const unsigned int mute [67] ={...};  

A continuación, configuremos la biblioteca de infrarrojos y la frecuencia requerida (para este tipo de aplicación siempre será de 38 KHz)

  IRsend irsend; const int freq =38;  

También necesitaremos una función para enviar comandos de infrarrojos y hacer parpadear el LED integrado (en esta etapa, principalmente con fines de depuración). El valor de retardo utilizado dependerá de la marca y el modelo de su televisor, así que siéntase libre de modificarlo si las cosas no funcionan como se esperaba (comandos incorrectos o no se reciben comandos).

  void sendIR (const unsigned int buf []) {digitalWrite (LED_BUILTIN, HIGH); irsend.sendRaw (buf, 67, frecuencia); retraso (300); digitalWrite (LED_BUILTIN, BAJO);}  

El último paso es completar la devolución de llamada generada onTvChange () con un código personalizado para enviar comandos de infrarrojos cuando los comandos de Alexa cambian la propiedad del televisor. Por ejemplo, si se aumenta el volumen, tenemos que presionar virtualmente el botón Subir volumen si el canal está configurado en 7, tenemos que enviar la secuencia para el botón del canal 7, y así sucesivamente.

  void onTvChange () {Serial.println ("=================="); Serial.println ("Cambiar:" + Cadena (tv.getSwitch ())); Serial.println ("Volumen:" + Cadena (tv.getVolume ())); Serial.println ("Canal:" + Cadena (tv.getChannel ())); Serial.println ("Mute:" + String (tv.getMute ())); Serial.println ("=================="); if (primero) {prevSwitch =tv.getSwitch (); prevVolume =tv.getVolume (); prevChannel =tv.getChannel (); prevMute =tv.getMute (); primero =falso; regreso; } // Volumen cambiado if (tv.getVolume ()> prevVolume) {tv.setMute (false); prevMute =falso; para (int k =prevVolume + 1; k <=tv.getVolume (); k ++) {sendIR (volUp); Serial.println ("Volumen solicitado:" + String (tv.getVolume ()) + "Set:" + String (k)); } prevVolume =tv.getVolume (); } else if (tv.getVolume ()  =tv.getVolume (); k--) {enviarIR (volDown); Serial.println ("Volumen cambiado:" + String (tv.getVolume ()) + "Set:" + String (k)); } prevVolume =tv.getVolume (); } // Silencio cambiado if (tv.getMute ()! =PrevMute &&tv.getMute ()) {prevMute =tv.getMute (); sendIR (mudo); Serial.println ("Mute cambiado:" + String (tv.getMute ())); } más si (tv.getMute ()! =prevMute &&! tv.getMute ()) {prevMute =tv.getMute (); sendIR (mudo); Serial.println ("Mute cambiado:" + String (tv.getMute ())); } // Canal cambiado if (tv.getChannel ()! =PrevChannel) {int newChannel =tv.getChannel (); if (newChannel> 0 &&newChannel <10) {sendIR (chan [newChannel-1]); } else if (newChannel> 9) {if (newChannel> prevChannel) {for (int ch =prevChannel; ch  newChannel; ch--) {sendIR (chanDown); Serial.println ("Chan solicitado:" + String (newChannel) + "Set:" + String (ch)); }}} prevChannel =newChannel; Serial.println ("Canal cambiado:" + Cadena (tv.getChannel ())); } // Encendido / Apagado cambiado if (tv.getSwitch ()! =PrevSwitch) {prevSwitch =tv.getSwitch (); if (tv.getSwitch ()) {sendIR (chan [6]); } else {sendIR (onoff); } Serial.println ("Cambio cambiado:" + Cadena (tv.getSwitch ())); }  

Parte 4:Amazon Alexa

Ahora necesitaremos la aplicación Amazon Alexa que se puede descargar de Apple App Store o Google Play Store. Una vez instalado, inicie sesión con su cuenta existente o cree una nueva.

Repasemos los pasos necesarios para instalar Arduino Alexa Skill y configurarlo para acceder y controlar nuestro televisor. Seguiremos la secuencia de imágenes a continuación para ver todos los pasos requeridos.

Hemos terminado, ahora es el momento de controlar por voz nuestro televisor preguntando cosas como

  • "Alexa, sube el volumen de la TV".
  • "Alexa, silencia la TV" o "Alexa, deja de silenciar la TV".
  • "Alexa, próximo canal de televisión".

Diviértete jugando con Alexa e IoT Cloud. Si tiene preguntas o crea este proyecto, háganoslo saber en los comentarios a continuación.

Gracias,

El equipo de Arduino

Código

Arduino

Esquemas


Proceso de manufactura

  1. Habilita el control de Alexa en tu ventilador de techo
  2. Máquina de LEVITACIÓN ULTRASÓNICA usando ARDUINO
  3. Control remoto universal usando Arduino, 1Sheeld y Android
  4. Voltímetro de bricolaje con Arduino y un teléfono inteligente
  5. Monitor de frecuencia cardíaca con IoT
  6. Uso de IoT para controlar de forma remota un brazo robótico
  7. IOT - Smart Jar usando ESP8266, Arduino y sensor ultrasónico
  8. ¡Conoce la temperatura de tu hogar desde cualquier lugar con Arduino Cloud!
  9. Controla Arduino Rover usando Firmata y el controlador Xbox One
  10. Control del humidificador Arduino
  11. Sonda usando arduino y visualización en procesamiento IDE