Taula de continguts:

ESP-12 Infra Red Blaster: 7 passos
ESP-12 Infra Red Blaster: 7 passos

Vídeo: ESP-12 Infra Red Blaster: 7 passos

Vídeo: ESP-12 Infra Red Blaster: 7 passos
Vídeo: How to Use Infrared Remotes and Receivers on the Arduino - Ultimate Guide to the Arduino #26 2024, Juliol
Anonim
ESP-12 Infra Red Blaster
ESP-12 Infra Red Blaster

Control remot Infra Red blaster amb esp8266

Transmet els codis de control remot rebuts de la web que admeten diversos dispositius de sortida.

Construït en una pàgina web senzilla principalment per a proves.

L’ús normal es fa mitjançant missatges POST que poden provenir de pàgines web o del control de veu IFTTT / Alexa.

Admet un detector d'activació d'Amazon Echo / Dot per silenciar / silenciar tan aviat com es digui activar la paraula.

Els ordres són ordres simples o seqüències. Les seqüències es poden emmagatzemar com a macros amb nom que després es poden utilitzar com a ordres o en altres seqüències.

La història recent i la llista de macros es poden obtenir a través de la interfície web

Admet la càrrega OTA de firmware nou i utilitza la biblioteca WifiManager per a la configuració inicial del wifi

Pas 1: maquinari

Maquinari
Maquinari
Maquinari
Maquinari

Utilitza els components següents

  • Mòdul ESP-12F
  • Regulador de 3,3 V (mini regulador MP2307)
  • Commutadors MOSFET (AO3400)
  • Emissor infraroig (3 mm)
  • Resistència dependent de la llum GL2258 (detector d'activitat Alexa opcional)
  • Resistències
  • Condensador de desacoblament (20uF)
  • Presa USB femella (preferiblement soldable amb màniga
  • Tira de sòcol IC de 3 pins per al detector Alexa
  • Peces mecàniques (es poden imprimir en 3D)

Es pot muntar a la caixa del projecte ESP-12F

  • Connecteu el regulador al connector USB i introduïu-lo a la caixa
  • Incorporeu el controlador IR a una petita placa de vero (3 cables, + 5V, 0V entrada de porta)
  • Connecteu el controlador IR a USB + 5V, 0V
  • Inseriu el sòcol IC de 3 pins a la caixa del projecte si utilitzeu el detector Alexa. Connecteu-vos a + 3,3 V, 0 V i cable per a l'entrada
  • Composeu ESP-12F amb 2.2K de GPIO15 a GND, EN a Vdd, 4K7 GPIO13 a Vdd, entrada Alexa a GPIO13, controlador IR a GPIO14, 0V i Vdd a 3.3V
  • Configureu el detector Alexa i ajusteu el buffer si cal.

Tingueu en compte que pot ser més fàcil programar ESP-12F primer si teniu algun tipus de programa de programació en sèrie o instal·lació de panellatge temporal com aquest per connectar-vos als ports sèrie.

La programació posterior es pot fer mitjançant l'actualització OTA integrada.

Pas 2: programari

L'ir Blaster utilitza un esbós Arduino disponible a github

Cal ajustar-lo per adaptar-se a les condicions locals i després compilar-lo en un entorn Arduino esp8266.

Es necessiten les biblioteques següents, la majoria són estàndard o es poden afegir. Els dos darrers s’inclouen al git.

  • ESP8266WiFi
  • ESP8266WebServer
  • FS.h
  • Servidor DNS
  • ESP8266mDNS
  • ESP8266HTTPUpdateServer
  • ArduinoJson
  • BitTx (inclòs a Git)
  • BitMessages (inclosos a Git)

Els elements de l'esbós que es canviaran inclouen

  • Codi d'autorització per a l'accés web AP_AUTHID
  • Contrasenya de gestor de Wfi WM_PASSWORD
  • contrasenya OTA del microprogramari update_password
  • Nous dispositius IR / codis de botons (vegeu més endavant)

Un cop fet això, primer s’ha de carregar mitjançant la càrrega en sèrie convencional.

A mesura que s’utilitza SPIFFS, la memòria s’ha de preparar instal·lant i utilitzant l’eina de càrrega de dades Sketch ESP8266 arduino. Això carregarà la carpeta de dades com a contingut SPIFFS inicial

Quan el dispositiu no es pugui connectar a la xarxa local (com passarà la primera vegada), el gestor de Wifi crearà un punt d'accés (192.168.4.1). Connecteu-vos a aquesta xarxa des d'un telèfon o tauleta i, a continuació, aneu a 192.168.4.1. Obteniu una interfície web per connectar-vos al wifi local. Els accessos posteriors ho faran servir. Si la xarxa local canvia, tornarà a aquest mode de configuració.

L'actualització posterior es pot fer compilant un binari d'exportació a l'entorn Arduino i accedint a la interfície OTA a ip / firmware.

Pas 3: afegiu codis de botó o dispositiu

Nota: Aquesta secció ha canviat respecte al mètode anterior on es configurava la configuració prèviament al codi. Ara fa servir fitxers que es carreguen des del sistema de fitxers SPIFF. Això fa que sigui molt més fàcil penjar definicions noves.

Les definicions de botons s’inclouen al fitxer buttonnames.txt. És una llista global de noms de tots els comandaments a distància que s’utilitzen, ja que molts noms solen ser comuns. Tal com es proporciona, conté detalls dels comandaments a distància que faig servir. Es poden afegir noves entrades. Hi ha espai per a un total de 160 noms, però es pot augmentar ajustant constants a bitMessages.h i recompilant. Els noms definits aquí són els noms que s’utilitzaran en enviar comandes.

Cada dispositiu remot es defineix en un fitxer anomenat dev_remotename. Consisteix en una secció de configuració a la part superior i després una taula de mapatge des de noms de botons fins a codis que són cadenes hexadecimals que contenen els bits a enviar. Només cal definir els noms de botó requerits.

La secció de configuració de l’inici d’un fitxer de dispositiu conté paràmetres que s’utilitzaran en enviar un codi. La primera entrada és el nom de dispositiu que s’utilitza quan s’envia una ordre. Altres paràmetres es descriuen al readme al lloc del codi.

La majoria de comandaments a distància pertanyen a una de les 3 categories de protocols (nec, rc5 i rc6). nec és probablement el més comú i té una estructura de capçalera senzilla i un temps de bits. Hi ha una lleugera variant que només es diferencia en el moment del pols de la capçalera. rc5 i rc6 són protocols definits per Philips, però també utilitzats per altres fabricants. Són una mica més complicats i, en concret, rc6 té un requisit de temps especial per a un dels bits.

Per capturar els codis d’un comandament a distància nou, faig servir un receptor d’IR (TSOP) que s’utilitza habitualment amb connectors de receptors remots. Això fa la descodificació bàsica i proporciona una sortida de nivell lògic. Normalment vénen amb un jack de 3,5 mm amb connexions de + 5V, GND i DATA. N’he sacrificat un, he escurçat el plom i l’he posat a través d’una memòria intermèdia inversora de 3,3 V per alimentar un pin GPIO en un Raspberry Pi.

Després faig servir una eina python rxir.py (a la carpeta git tools) per capturar codis. Per facilitar la captura d'un gran nombre de botons, l'eina utilitza un fitxer de definició de text per definir els botons del comandament a distància i és només el nom dels botons d'un grup del comandament a distància. Per exemple, es pot tenir un control remot de Sony nou i es configuren 3 fitxers de text anomenats sonytv-cursor, sonytv-numbers, sonytv-playcontrols cadascun amb els noms de botó corresponents. L'eina sol·licitarà el dispositiu (sonytv), la secció (cursor) i quin protocol utilitzar (nec, nec1, rc5, rc6). A continuació, demanarà seqüencialment que cada botó premi i escrigui els resultats en un fitxer sonytv-ircodes. Les seccions es poden repetir si es requereix per comprovar que les captures són bones. Els bits del fitxer.ircodes es poden editar a les taules BitDevices.

Pas 4: control web i macros

El control web bàsic és un sol get o un post json que pot contenir una seqüència.

El get to / ir té 6 paràmetres

  • auth - que conté el codi d'autorització
  • dispositiu: el nom del dispositiu remot
  • paràmetre: el nom del botó
  • bits: un recompte de bits opcional
  • repetir: un recompte de repeticions opcional
  • espera: un retard en ms segons abans de poder executar la següent ordre.

El dispositiu també pot ser "nul" per obtenir només un retard, "macro" per utilitzar la macro a què fa referència el paràmetre o "detectar" per utilitzar la funció de detecció Alexa (vegeu més endavant).

La publicació a / irjson consisteix en una estructura json com

{

"auth": "1234", "ordres": [{"device": "yamahaAV", "parameter": "hdmi4", "wait": "5000", "bits": "0", "repeat": "1"}, {"device": "yamahaAV", "parameter": "silencia", "wait": "100", "bits": "0", "repeat": "1"}]

}

La seqüència pot tenir qualsevol longitud i els dispositius poden ser referències macro.

Es pot utilitzar la mateixa estructura per definir macros. Només cal que inclogueu la macro: "macroname", al nivell superior, per exemple. després de l'autenticació El contingut real s’emmagatzema en un fitxer anomenat macroname.txt

Les macros es poden esborrar definint-les sense "ordres".

Altres ordres web

  • / recent (llista de l'activitat recent)
  • / check (mostra l'estat bàsic)
  • / (carrega un formulari web per enviar ordres manualment)
  • / edit (carrega un formulari web per veure la llista de fitxers i suprimir / penjar fitxers)
  • / edit? file = nom_fitxer (visualitza el contingut d'un fitxer específic)
  • / reload (recarrega noms de botons i fitxers de dispositiu. Utilitzeu-los després de canviar-ne algun)

Pas 5: control de veu Alexa mitjançant IFTTT

La forma més senzilla d’utilitzar l’I Blaster amb Alexa és fer servir IFTTT com a passarel·la.

Primer port reenviar el port utilitzat al blaster al router perquè sigui accessible des d'Internet. Pot ser bo utilitzar un servei dns com freedns per donar un nom als vostres enrutadors i facilitar-ne la manipulació si canvia aquest IP.

Configureu un compte IFTTT i activeu el canal Maker Webhooks i el canal Alexa. Haureu d’iniciar sessió al lloc d’Amazon quan feu això per habilitar l’accés IFTT.

Creeu un activador IF mitjançant el canal Alexa IFTTT, trieu l'acció en funció d'una frase i introduïu la frase que vulgueu (per exemple, augmentar el volum).

Creeu l'acció triant el canal de webhooks de Maker. Introduïu alguna cosa així al camp URL

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

Aquesta acció s'enviarà a l'ir blaster on intentarà executar la pujada de macro. Un pot ser un dispositiu / botons específics aquí si es vol, però trobo millor definir i utilitzar macros perquè llavors la seqüència d'accions es pot canviar fàcilment només redefinint la macro.

Es necessita una miniaplicació IFTTT per a cada ordre.

Pas 6: habilitat de veu nativa d'Alexa

En lloc d'IFTTT, es pot construir una habilitat personalitzada dins del desenvolupament d'Alexa. Això centralitza tot el processament en un sol lloc i significa que no haureu de crear accions separades per a cada botó.

Cal registrar-se com a desenvolupador d’Amazon Alexa i registrar-se al servei lambda de la consola Amazon AWS. També haureu de mirar els tutorials per entendre una mica el procés.

Pel que fa al desenvolupador d'Alexa, heu de crear una nova habilitat personalitzada, introduir la seva paraula activadora i crear una llista de paraules d'ordres, com ara augmentar el volum, guiar-les, etc.

A continuació, Alexa envia la frase a un programa que s’executa al servei lamda que interpreta la frase i fa una crida d’URL al blaster Ir per accionar-la.

He inclòs l’esquema d’Anly intent i la funció lambda de la consola que faig servir al git. Caldrà modificar l’URL per fer referència a la IP adequada i tenir l’autorització adequada. Per simplificar-ho, les funcions lambda criden a una macro que té una versió minúscula de la frase despullada. També intenta eliminar la paraula clau activadora que de vegades es pot incloure. Per exemple. blaster VOLUME up cridarà una macro anomenada augment de volum si la paraula activadora era blaster.

Pas 7: activar el detector Alexa

Tot i que el reconeixement de veu Echo / Dot és bo, de vegades es pot confondre si es reprodueix el so des d’un televisor, tret que s’acosti i parli en veu alta.

Per millorar això, he afegit un detector d'activació al meu Dot. Tan bon punt la paraula clau (es diu Alexa) s’encén l’anell dels LED. El detector introdueix això al blaster, on utilitzarà la macro alexaon per silenciar el televisor, de manera similar al final del processament d'una ordre, els llums s'apagaran i la macro alexaoff restablirà el so.

L'ordre "detectar" també es pot utilitzar per activar i desactivar això. Per exemple, faig servir la macro turnon inicial per habilitar la detecció i la macro de desactivació per desactivar-la. Això també es pot utilitzar dins de les macros d'acció per donar suport a una comanda real de silenci i silenci que d'una altra manera seria problemàtica.

El detector físic és una resistència dependent de la llum que suporta el circuit. Munto la meva al Dot amb un suport imprès en 3D

Recomanat: