Sommario:

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

Video: ESP-12 Infra Red Blaster: 7 passaggi

Video: ESP-12 Infra Red Blaster: 7 passaggi
Video: Control your CADIO devices with infrared remote controller (ESP8266 - ESP32) | CADIO Home Automation 2024, Dicembre
Anonim
ESP-12 Infrarossi Blaster
ESP-12 Infrarossi Blaster

Blaster con telecomando a infrarossi che utilizza esp8266

Trasmette i codici di controllo remoto ricevuti dal Web supportando più dispositivi di output.

Costruito in una semplice pagina web principalmente per i test.

Il normale utilizzo avviene tramite messaggi POST che possono provenire da pagine web o dal controllo vocale IFTTT/Alexa.

Supporta un rilevatore di attivazione Amazon Echo/Dot per disattivare l'audio non appena viene pronunciata la parola di attivazione.

I comandi sono singoli comandi o sequenze. Le sequenze possono essere memorizzate come macro con nome che possono poi essere utilizzate come comandi o in altre sequenze.

La cronologia recente e l'elenco delle macro possono essere ottenuti tramite l'interfaccia web

Supporta il caricamento OTA del nuovo firmware e utilizza la libreria WifiManager per la configurazione Wi-Fi iniziale

Passaggio 1: hardware

Hardware
Hardware
Hardware
Hardware

Utilizza i seguenti componenti

  • Modulo ESP-12F
  • Regolatore 3,3V (mini regolatore buck MP2307)
  • Interruttori MOSFET (AO3400)
  • Emettitore di infrarossi (3 mm)
  • Resistenza dipendente dalla luce GL2258 (rilevatore di attività Alexa opzionale)
  • resistori
  • Condensatore di disaccoppiamento (20uF)
  • Presa USB femmina (preferibilmente a saldare con manicotto)
  • Ciabatta IC a 3 pin per rilevatore Alexa
  • Parti meccaniche (possono essere stampate in 3D)

Può essere assemblato nella scatola del progetto ESP-12F

  • Collegare il regolatore al connettore USB e inserirlo nella scatola
  • Crea driver IR su un piccolo pezzo di scheda vero (3 fili, +5V, ingresso gate 0V)
  • Collegare il driver IR a USB +5V, 0V
  • Inserire la presa IC a 3 pin nella scatola del progetto se si utilizza il rilevatore Alexa. Collegare a +3,3 V, 0 V e collegare per l'ingresso
  • Make up ESP-12F con 2.2K da GPIO15 a GND, EN a Vdd, 4K7 GPIO13 a Vdd, ingresso Alexa a GPIO13, driver IR a GPIO14, 0V e Vdd a 3.3V
  • Crea il rilevatore Alexa e supporta il buffer, se necessario.

Si noti che può essere più semplice programmare prima ESP-12F se si dispone di una sorta di struttura di programmazione seriale o di una struttura di breadboard temporanea come questa per connettersi alle porte seriali.

La programmazione successiva può essere eseguita utilizzando l'aggiornamento OTA integrato.

Passaggio 2: software

ir Blaster utilizza uno sketch Arduino disponibile su github

Questo deve essere regolato per adattarsi alle condizioni locali e quindi compilato in un ambiente Arduino esp8266.

Sono necessarie le seguenti librerie, la maggior parte sono standard o possono essere aggiunte. Gli ultimi due sono inclusi nel git.

  • ESP8266WiFi
  • ESP8266WebServer
  • FS.h
  • DNSServer
  • ESP8266mDNS
  • ESP8266HTTPUpdateServer
  • ArduinoJson
  • BitTx (incluso in Git)
  • BitMessage (incluso in Git)

Gli elementi nello schizzo da modificare includono

  • Codice di autorizzazione per l'accesso al web AP_AUTHID
  • Password del gestore Wi-Fi WM_PASSWORD
  • firmware OTA password update_password
  • Nuovi dispositivi IR/codici pulsanti (vedi oltre)

Una volta fatto, dovrebbe essere prima caricato utilizzando il caricamento seriale convenzionale.

Poiché viene utilizzato SPIFFS, la memoria deve essere preparata installando e utilizzando lo strumento di caricamento dei dati di schizzo di arduino ESP8266. Questo caricherà la cartella dei dati come contenuto SPIFFS iniziale

Quando il dispositivo non riesce a connettersi alla rete locale (come accadrà la prima volta), Wifi Manager creerà un punto di accesso (192.168.4.1). Connettiti a questa rete da un telefono o tablet, quindi vai a 192.168.4.1 Otterrai un'interfaccia web per connetterti al wifi locale. Gli accessi successivi utilizzeranno questo. Se la rete locale cambia, tornerà a questa modalità di configurazione.

L'aggiornamento successivo può essere effettuato compilando un binario di esportazione in ambiente Arduino e quindi accedendo all'interfaccia OTA su ip/firmware.

Passaggio 3: aggiungi codici dispositivo/pulsante

Nota: questa sezione è stata modificata rispetto al metodo precedente in cui la configurazione era stata precedentemente compilata nel codice. Ora utilizza file che vengono caricati dal sistema di archiviazione SPIFF. Questo rende molto più facile caricare nuove definizioni.

Le definizioni dei pulsanti sono incluse nel file buttonnames.txt. È un elenco globale di nomi in tutti i telecomandi in uso poiché molti nomi tendono ad essere comuni. Come fornito, questo contiene i dettagli per i telecomandi che uso. È possibile aggiungere nuove voci. C'è spazio per un totale di 160 nomi, ma questo può essere aumentato regolando le costanti in bitMessages.he ricompilando. I nomi definiti qui sono i nomi da utilizzare quando si inviano i comandi.

Ogni dispositivo remoto è definito in un file chiamato dev_remotename. Consiste in una sezione di configurazione in alto e quindi una tabella di mappatura dai nomi dei pulsanti ai codici che sono stringhe esadecimali contenenti i bit da inviare. È necessario definire solo i nomi dei pulsanti richiesti.

La sezione config all'inizio di un file di dispositivo contiene i parametri da utilizzare quando si invia un codice. La prima voce è il nome del dispositivo utilizzato quando si invia un comando. Altri parametri sono descritti nel readme sul sito del codice.

La maggior parte dei telecomandi appartiene a una delle 3 categorie di protocollo (nec, rc5 e rc6). nec è probabilmente il più comune e ha una semplice struttura di intestazione e tempi di bit. C'è una leggera variante di questo che differisce solo nella temporizzazione dell'impulso dell'intestazione. rc5 e rc6 sono protocolli definiti da Philips ma utilizzati anche da altri produttori. Sono un po' più complicati e rc6 in particolare ha un requisito di temporizzazione speciale per uno dei bit.

Per acquisire i codici per un nuovo telecomando, utilizzo un ricevitore IR (TSOP) comunemente utilizzato con i ricevitori remoti plug-in. Questo esegue la decodifica di base e fornisce un'uscita a livello logico. Normalmente sono dotati di un jack da 3,5 mm con connessioni +5V, GND, DATA. Ne ho sacrificato uno, ho accorciato il cavo e l'ho fatto passare attraverso un buffer invertente da 3,3 V per alimentare un pin GPIO su un Raspberry Pi.

Quindi uso uno strumento Python rxir.py (nella cartella git tools) per acquisire i codici. Per semplificare l'utilizzo per acquisire un numero elevato di pulsanti, lo strumento utilizza un file di definizione del testo per definire i pulsanti sul telecomando e sono solo i nomi dei pulsanti in un gruppo sul telecomando. Ad esempio, si potrebbe avere un nuovo telecomando Sony e si possono impostare 3 file di testo chiamati sonytv-cursor, sonytv-numbers, sonytv-playcontrols ciascuno con i relativi nomi dei pulsanti. Lo strumento richiederà il dispositivo (sonytv), la sezione (cursore) e quale protocollo utilizzare (nec, nec1, rc5, rc6). Verrà quindi richiesto in sequenza per ogni pressione di un pulsante e scriverà i risultati in un file sonytv-ircodes. Le sezioni possono essere ripetute se necessario per verificare che le acquisizioni siano buone. I bit del file.ircodes possono essere modificati nelle tabelle BitDevices.

Passaggio 4: controllo Web e macro

Il controllo web di base è un singolo get o un post json che può contenere una sequenza.

L'accesso a /ir ha 6 parametri

  • auth - contenente il codice di autorizzazione
  • dispositivo - il nome del dispositivo remoto
  • parametro - il nome del pulsante
  • bit - un conteggio di bit opzionale
  • ripeti - un conteggio delle ripetizioni opzionale
  • wait - un ritardo in msecondi prima che il comando successivo possa essere eseguito.

Il dispositivo può anche essere "null" per ottenere solo un ritardo, "macro" per utilizzare la macro a cui fa riferimento il parametro o "detect" per utilizzare la funzione di rilevamento di Alexa (vedi più avanti).

Il post in /irjson consiste in una struttura json come

{

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

}

La sequenza può essere di qualsiasi lunghezza e i dispositivi possono essere riferimenti macro.

La stessa struttura può essere utilizzata per definire le macro. Includi semplicemente la macro:"macroname", al livello più alto, ad es. dopo aut. I contenuti effettivi sono memorizzati in un file chiamato macroname.txt

Le macro possono essere eliminate definendole senza "comandi".

Altri comandi web

  • /recent (elenca le attività recenti)
  • /check (mostra lo stato di base)
  • / (carica un modulo web per inviare comandi manualmente)
  • /edit (carica un modulo web per visualizzare l'elenco dei file ed eliminare/caricare i file)
  • /edit?file=nomefile (visualizza il contenuto di un file specifico)
  • /reload (ricarica i nomi dei pulsanti e i file dei dispositivi. Utilizzare dopo averli modificati)

Passaggio 5: controllo vocale Alexa tramite IFTTT

Il modo più semplice per utilizzare ir Blaster con Alexa è utilizzare IFTTT come gateway.

Prima porta la porta utilizzata per il tuo blaster nel tuo router in modo che sia accessibile da Internet. Può essere utile utilizzare un servizio DNS come freedns per dare un nome all'ip esterno del tuo router e renderlo più facile da gestire se questo IP cambia.

Configura un account IFTTT e abilita il canale Maker Webhooks e il canale Alexa. Dovrai accedere al sito Amazon quando lo fai per abilitare l'accesso IFTT.

Crea un trigger IF utilizzando il canale IFTTT Alexa, scegli l'azione in base a una frase e inserisci la frase che desideri (ad es. Volume su).

Crea l'azione scegliendo il canale dei webhook Maker. Inserisci nel campo URL qualcosa del tipo

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

Questa azione verrà inviata all'ir blaster dove tenterà di eseguire il macro volumeup. Uno può essere un dispositivo/pulsante specifico qui, se lo si desidera, ma trovo che sia meglio definire e utilizzare le macro perché la sequenza di azioni può essere facilmente modificata semplicemente ridefinendo la macro.

È necessaria un'applet IFTTT separata per ogni comando.

Passaggio 6: abilità vocale nativa di Alexa

Invece di IFTTT si può costruire un'abilità personalizzata all'interno dello sviluppo di Alexa. Questo centralizza tutta l'elaborazione in un unico posto e significa che non devi creare azioni separate per ogni pulsante.

Devi registrarti come sviluppatore Amazon Alexa e devi registrarti con il servizio lambda della console Amazon AWS. Dovrai anche guardare i tutorial per capire un po' il processo.

Dal lato sviluppatore di Alexa devi creare una nuova abilità personalizzata, inserire la sua parola di attivazione e creare un elenco di parole di comando come volume su, guida, ecc.

Alexa quindi invia la frase a un programma in esecuzione sul servizio lamda che interpreta la frase ed effettua una chiamata URL al blaster Ir per attivarla.

Ho incluso lo schema di intent di Alexa e la funzione lambda della console che uso nel git. L'URL dovrà essere modificato per fare riferimento all'ip appropriato e avere la giusta autorizzazione. Per semplificare, le funzioni lambda chiamano una macro che ha una versione minuscola della frase priva di spazi. Tenta anche di rimuovere la parola chiave trigger che a volte può essere inclusa. Per esempio. blaster VOLUME up chiamerà una macro chiamata volumeup se la parola trigger era blaster.

Passaggio 7: Alexa Attiva il rilevatore

Sebbene il riconoscimento vocale Echo / Dot sia buono, a volte può essere confuso se il suono viene riprodotto da una TV a meno che non ti avvicini e parli ad alta voce.

Per migliorare questo ho aggiunto un rilevatore di attivazione al mio Dot. Non appena la parola chiave (si dice Alexa) l'anello di LED si accende. Il rilevatore lo immette nel blaster dove utilizzerà la macro alexaon per disattivare l'audio della TV, allo stesso modo alla fine dell'elaborazione di un comando le luci si spengono e la macro alexaoff ripristina il suono.

Il comando 'rileva' può essere utilizzato anche per attivarlo e disattivarlo. Quindi, ad esempio, utilizzo la macro di accensione iniziale per abilitare il rilevamento e la macro di spegnimento per disabilitarla. Questo può essere utilizzato anche all'interno delle macro di azioni per supportare un vero comando di attivazione e disattivazione dell'audio che altrimenti sarebbe problematico.

Il rivelatore fisico è un resistore dipendente dalla luce che il circuito supporta. Monto il mio sul Dot con una staffa stampata in 3D

Consigliato: