Tabla de contenido:

Blaster infrarrojo ESP-12: 7 pasos
Blaster infrarrojo ESP-12: 7 pasos
Anonim
Blaster infrarrojo ESP-12
Blaster infrarrojo ESP-12

Blaster de control remoto por infrarrojos con esp8266

Transmite códigos de control remoto recibidos de la Web que admiten múltiples dispositivos de salida.

Construido en una página web simple principalmente para pruebas.

El uso normal es a través de mensajes POST que pueden provenir de páginas web o del control de voz IFTTT / Alexa.

Admite un detector de activación de Amazon Echo / Dot para silenciar / silenciar tan pronto como se pronuncie la palabra de activación.

Los comandos son comandos únicos o secuencias. Las secuencias se pueden almacenar como macros con nombre que luego se pueden usar como comandos o en otras secuencias.

El historial reciente y la lista de macros se pueden obtener a través de la interfaz web

Admite la carga OTA de nuevo firmware y utiliza la biblioteca WifiManager para la configuración inicial de wifi

Paso 1: hardware

Hardware
Hardware
Hardware
Hardware

Utiliza los siguientes componentes

  • Módulo ESP-12F
  • Regulador de 3.3V (regulador mini buck MP2307)
  • Interruptores MOSFET (AO3400)
  • Emisor de infrarrojos (3 mm)
  • Resistencia dependiente de la luz GL2258 (detector de actividad Alexa opcional)
  • Resistencias
  • Condensador de desacoplamiento (20uF)
  • Toma hembra USB (preferiblemente soldable con funda
  • Tira de enchufes IC de 3 pines para detector Alexa
  • Piezas mecánicas (se pueden imprimir en 3D)

Se puede ensamblar en la caja del proyecto ESP-12F

  • Conecte el regulador al conector USB e insértelo en la caja
  • Componga el controlador IR en una pequeña pieza de la placa vero (3 cables, + 5 V, entrada de puerta 0 V)
  • Conecte el controlador IR a USB + 5V, 0V
  • Inserte la toma IC de 3 pines en la caja del proyecto si usa el detector Alexa. Conecte a + 3.3V, 0V y cable para entrada
  • Componga ESP-12F con 2.2K de GPIO15 a GND, EN a Vdd, 4K7 GPIO13 a Vdd, entrada de Alexa a GPIO13, controlador IR a GPIO14, 0V y Vdd a 3.3V
  • Prepare el detector de Alexa y el búfer de soporte si es necesario.

Tenga en cuenta que puede ser más fácil programar el ESP-12F primero si tiene algún tipo de instalación de programación en serie o instalación de placa temporal como esta para conectarse a los puertos en serie.

La programación posterior se puede realizar utilizando la actualización OTA incorporada.

Paso 2: software

El ir Blaster usa un boceto de Arduino disponible en github

Esto debe ajustarse para adaptarse a las condiciones locales y luego compilarse en un entorno Arduino esp8266.

Se necesitan las siguientes bibliotecas, la mayoría son estándar o se pueden agregar. Los dos últimos están incluidos en el git.

  • ESP8266WiFi
  • ESP8266WebServer
  • FS.h
  • Servidor DNS
  • ESP8266mDNS
  • ESP8266HTTPUpdateServer
  • ArduinoJson
  • BitTx (incluido en Git)
  • BitMessages (incluido en Git)

Los elementos del boceto que se cambiarán incluyen

  • Código de autorización para acceso web AP_AUTHID
  • Contraseña del administrador de Wfi WM_PASSWORD
  • firmware OTA contraseña update_password
  • Nuevos dispositivos IR / códigos de botones (ver más adelante)

Una vez hecho esto, primero debe cargarse mediante la carga en serie convencional.

A medida que se usa SPIFFS, la memoria debe prepararse instalando y utilizando la herramienta de carga de datos de bocetos arduino ESP8266. Esto cargará la carpeta de datos como contenido SPIFFS inicial

Cuando el dispositivo no puede conectarse a la red local (como sucederá la primera vez), el administrador de Wifi creará un punto de acceso (192.168.4.1). Conéctese a esta red desde un teléfono o tableta y luego navegue hasta 192.168.4.1. Obtendrá una interfaz web para conectarse a la red wifi local. Los accesos posteriores lo utilizarán. Si la red local cambia, volverá a este modo de configuración.

La actualización posterior se puede realizar compilando un binario de exportación en el entorno Arduino y luego accediendo a la interfaz OTA en ip / firmware.

Paso 3: agregar códigos de dispositivo / botón

Nota: Esta sección ha cambiado con respecto al método anterior donde la configuración que se compiló previamente en el código. Ahora usa archivos que se cargan desde el sistema de archivo SPIFF. Esto hace que sea mucho más fácil cargar nuevas definiciones.

Las definiciones de los botones se incluyen en el archivo buttonnames.txt. Es una lista global de nombres en todos los controles remotos en uso, ya que muchos nombres tienden a ser comunes. Tal como se suministra, contiene detalles de los controles remotos que utilizo. Se pueden agregar nuevas entradas. Hay espacio para un total de 160 nombres, pero esto se puede aumentar ajustando las constantes en bitMessages.hy recompilando. Los nombres definidos aquí son los nombres que se utilizarán al enviar comandos.

Cada dispositivo remoto se define en un archivo llamado dev_remotename. Consiste en una sección de configuración en la parte superior y luego una tabla de mapeo desde los nombres de los botones hasta los códigos que son cadenas hexadecimales que contienen los bits que se enviarán. Solo es necesario definir los nombres de los botones necesarios.

La sección de configuración al comienzo de un archivo de dispositivo contiene parámetros que se utilizarán al enviar un código. La primera entrada es el nombre del dispositivo que se utiliza al enviar un comando. Otros parámetros se describen en el archivo Léame del sitio de código.

La mayoría de los controles remotos pertenecen a una de las 3 categorías de protocolo (nec, rc5 y rc6). nec es probablemente el más común y tiene una estructura de encabezado y una sincronización de bits simples. Hay una ligera variante de esto que difiere solo en la sincronización del pulso del encabezado. rc5 y rc6 son protocolos definidos por Philips pero también utilizados por otros fabricantes. Son un poco más complicados y rc6 en particular tiene un requisito de tiempo especial para uno de los bits.

Para capturar los códigos de un nuevo control remoto, utilizo un receptor de infrarrojos (TSOP) que se usa comúnmente con receptores remotos enchufables. Esto realiza la decodificación básica y proporciona una salida de nivel lógico. Normalmente vienen con un conector de 3,5 mm con conexiones de + 5V, GND, DATA. Sacrifiqué uno, acorté el cable y lo pasé por un búfer inversor de 3.3V para alimentar un pin GPIO en una Raspberry Pi.

Luego uso una herramienta de Python rxir.py (en la carpeta de herramientas de git) para capturar códigos. Para facilitar el uso de la captura de una gran cantidad de botones, la herramienta utiliza un archivo de definición de texto para definir los botones en el control remoto y son solo los nombres de los botones en un grupo en el control remoto. Por ejemplo, uno podría tener un nuevo control remoto de Sony y configurar 3 archivos de texto llamados sonytv-cursor, sonytv-numbers, sonytv-playcontrols, cada uno con los nombres de los botones relevantes. La herramienta solicitará el dispositivo (sonytv), la sección (cursor) y qué protocolo utilizar (nec, nec1, rc5, rc6). A continuación, solicitará secuencialmente cada vez que presione un botón y escribirá los resultados en un archivo sonytv-ircodes. Las secciones se pueden repetir si es necesario para comprobar que las capturas son buenas. Los bits del archivo.ircodes se pueden editar en las tablas de BitDevices.

Paso 4: Control web y macros

El control web básico es un solo get o una publicación json que puede contener una secuencia.

El get to / ir tiene 6 parámetros

  • auth - que contiene el código de autorización
  • dispositivo: el nombre del dispositivo remoto
  • parámetro - el nombre del botón
  • bits: un recuento de bits opcional
  • repetir: un recuento de repetición opcional
  • esperar: un retraso en milisegundos antes de que se pueda ejecutar el siguiente comando.

El dispositivo también puede ser 'nulo' para obtener solo un retraso, 'macro' para usar la macro a la que se refiere el parámetro o 'detectar' para usar la función de detección de Alexa (ver más adelante).

La publicación en / irjson consta de una estructura json como

{

"auth": "1234", "comandos": [{"dispositivo": "yamahaAV", "parámetro": "hdmi4", "esperar": "5000", "bits": "0", "repetir": "1"}, {"dispositivo": "yamahaAV", "parámetro": "silenciar", "esperar": "100", "bits": "0", "repetir": "1"}]

}

La secuencia puede tener cualquier longitud y los dispositivos pueden ser referencias macro.

Se puede utilizar la misma estructura para definir macros. Solo incluya la macro: "macroname", en el nivel superior, p. Ej. después de la autenticación El contenido real se almacena en un archivo llamado macroname.txt

Las macros se pueden eliminar definiéndolas sin "comandos".

Otros comandos web

  • / reciente (enumera la actividad reciente)
  • / check (muestra el estado básico)
  • / (carga un formulario web para enviar comandos manualmente)
  • / editar (carga un formulario web para ver la lista de archivos y eliminar / cargar archivos)
  • / edit? file = filename (ver el contenido de un archivo específico)
  • / reload (recarga los nombres de los botones y los archivos del dispositivo. Úselo después de cambiar cualquiera de estos)

Paso 5: Control de voz de Alexa usando IFTTT

La forma más sencilla de utilizar el ir Blaster con Alexa es utilizar IFTTT como puerta de enlace.

Primero reenvíe el puerto utilizado para su blaster en su enrutador para que sea accesible desde Internet. Puede ser bueno usar un servicio dns como freedns para darle un nombre a la ip externa de sus enrutadores y facilitar su manejo si esta ip cambia.

Configure una cuenta IFTTT y habilite el canal Maker Webhooks y el canal Alexa. Deberá iniciar sesión en el sitio de Amazon cuando haga esto para habilitar el acceso IFTT.

Cree un disparador IF usando el canal IFTTT Alexa, elija la acción basada en una frase e ingrese la frase que desee (por ejemplo, subir volumen).

Cree la acción eligiendo el canal de webhooks de Maker. Ingrese en el campo de URL algo como

myip: port / irjson? plain = {"auth": "1234", "comm…

Esta acción se enviará al blaster ir donde intentará ejecutar la macro volumeup. Uno puede ser un dispositivo / botones específicos aquí si lo desea, pero me parece mejor definir y usar macros porque entonces la secuencia de acción se puede cambiar fácilmente simplemente redefiniendo la macro.

Se necesita un subprograma IFTTT separado para cada comando.

Paso 6: Habilidad de voz nativa de Alexa

En lugar de IFTTT, se puede desarrollar una habilidad personalizada dentro del desarrollo de Alexa. Esto centraliza todo el procesamiento en un solo lugar y significa que no tiene que crear acciones separadas para cada botón.

Debe registrarse como desarrollador de Amazon Alexa y debe registrarse con el servicio lambda de la consola de Amazon AWS. También deberá consultar los tutoriales para comprender un poco el proceso.

En el lado del desarrollador de Alexa, debe crear una nueva habilidad personalizada, ingresar su palabra de activación y crear una lista de palabras de comando como subir volumen, guía, etc.

Luego, Alexa envía la frase a un programa que se ejecuta en el servicio lamda que interpreta la frase y realiza una llamada URL al blaster Ir para activarla.

He incluido el esquema de intención de Alexa y la función lambda de la consola que uso en git. La URL deberá modificarse para hacer referencia a la ip apropiada y tener la autorización correcta. Para mantenerlo simple, las funciones lambda llaman a una macro que tiene una versión en minúscula sin espacios de la frase. También intenta eliminar la palabra clave desencadenante que a veces se puede incluir. P.ej. blaster VOLUME up llamará a una macro llamada volumeup si la palabra de activación fue blaster.

Paso 7: Detector de activación de Alexa

Aunque el reconocimiento de voz Echo / Dot es bueno, a veces puede confundirse si el sonido se reproduce desde, por ejemplo, un televisor, a menos que se acerque y hable en voz alta.

Para mejorar esto, agregué un detector de activación a mi Dot. Tan pronto como se dice la palabra clave (se dice Alexa), el anillo de LED se enciende. El detector alimenta esto al blaster donde usará la macro alexaon para silenciar el televisor, de manera similar, al final de procesar un comando, las luces se apagan y la macro alexaoff restaura el sonido.

El comando 'detectar' también se puede utilizar para activarlo y desactivarlo. Entonces, por ejemplo, utilizo la macro de activación inicial para habilitar la detección y la macro de desactivación para deshabilitarla. Esto también se puede utilizar dentro de las macros de acción para admitir un cambio real de silencio y activación de silencio, lo que de otro modo sería problemático.

El detector físico es una resistencia dependiente de la luz que admite el circuito. Monto el mío en el Dot con un soporte impreso en 3D

Recomendado: