Inviare un segnale IR – infrarosso con ESP8266

Inviare un segnale IR (infrarosso) con ESP8266 è un’operazione utilissima; perché grazie ad esso è possibile gestire molti elettrodomestici come TV; radio; HiFi ma anche condizionatori o addirittura in alcuni case cappe o caminetti.

Con molta probabilità se vogliamo inviare un comando sfruttando gli infrarossi avremo bisogno di copiare il segnare ed il codice infrarosso originale come già spiegato nella guida dal titolo: IR e ESP8266: come leggere i codici infrarosso di un telecomando.

Arrivati quindi al codice di ciascun pulsante che vogliamo replicare e che abbiamo annotato su un file vediamo ora come istruire la nostra scheda ESP8266 per inviare il codice all’elettrodomestico.

Per fare questo esperimento ed inviare segnali IR con ESP8266 ci serviranno:

  • Una scheda ESP8266 di tipo NodeMCU che reputo sempre la più duttile per fare questi esperimenti
  • L’IDE per programmare lo sketch
  • Un cavo USB per collegare la scheda NodeMcu al computer
  • Cavi jumper per collegare la scheda al sensore di trasmissione IR.
  • Un sensore IR trasmitter 38Khz (per Arduino) che potete trovare ad un paio di euro su Ebay o altri negozi di elettronica.

Di questi sensori/led ne esistono di diverso tipo andiamo dai super economici LED (meno di un’euro l’uno) a soluzioni montate su basetta che arrivano a circa 2 euro e che offrono già i piedini/PIN per un più semplice collegamento.

 

In totale il costo di questo esperimento è di poco sotto ai 10 euro; ovviamente i pezzi più costosi come la scheda possono essere riutilizzati all’infinito in altri esperimenti.

 

Tempo richiesto: 10 minuti

Difficoltà: bassa

 

Primo passo:  la scheda NodeMcu va flashata. Il flash serve a caricare sulla scheda il firmware che ci consentirà di programmarla; se hai già fatto il flash di  NodeMcu vai allo step2 altrimenti clicca sul link e vai all’apposita guida.

 

Secondo passo: a questo punto apriamo il nostro IDE Arduino (nel caso non l’avessi mai usato o devi ancora installare l’IDE ecco il link alla guida per istallare l’IDE di Arduino che ne spiega il funzionamento e le funzionalità).

Andiamo nella sezione Sketch >> Aggiungi libreria da File .Zip e aggiungiamo la libreria IRsender per ESP8266.

 

Attenzione: se utilizziamo una scheda ESP8266 è tassativo utilizzare questa libreria; quella per Arduino non è compatibile.

 

La libreria può essere scaricata dal sito ufficiale. Nel link che vi ho appena indicato trovare diversi codici di esempio che mostrano le diverse opzioni di utilizzo.

Nel momento in cui carichiamo la libreria assicuriamoci che il nome della libreria sia identico a quello che utilizzeremo al momento dell’inclusione nel codice. Se la libreria è stata aggiunta nella cartella Pipp0 l’inclusione nel codice dovrà essere #Pipp0 se scriviamo #Pippo ovviamente lo sketch andrà in errore.

Ecco i link alle guide per chiarivi le idee su: a cosa servono le librerie e come installare una libreria in Arduino IDE.

Terzo Passo: carichiamo il codice nell’ide. Vi consiglio come primo test di utilizzare l’esempio proposto su Git hub: IRremoteESP8266/examples/IRsendDemo/IRsendDemo.ino

 

/*
 	* IRremoteESP8266: IRsendDemo - demonstrates sending IR codes with IRsend
 	* An IR LED must be connected to ESP8266 pin 0.
 	* Version 0.1 June, 2015
 	* Based on Ken Shirriff's IrsendDemo Version 0.1 July, 2009, Copyright 2009 Ken Shirriff, http://arcfn.com
 	*/
 	 
 	#include <IRremoteESP8266.h>
 	 
 	IRsend irsend(0); //an IR led is connected to GPIO pin 0
 	 
 	void setup()
 	{
 	irsend.begin();
 	Serial.begin(9600);
 	}
 	 
 	void loop() {
 	Serial.println("NEC");
 	irsend.sendNEC(0x00FFE01F, 36);
 	delay(2000);
 	Serial.println("Sony");
 	irsend.sendSony(0xa90, 12);
 	delay(2000);
 	}

Vediamo il codice da vicino per comprenderne il significato ed essere poi autonomi nella modifica:

Le prime righe sono dei commenti che vale sempre la pena leggere perché danno delle nozioni utili sul funzionamento dello sketch. In questo caso l’informazione principale è quella di connettersi all’uscita PIN 0 con l’anodo o con l’uscita dati.

Passiamo poi all’inclusione della libreria nello sketch: #include <IRremoteESP8266.h>

Con l’istruzione successiva informiamo la scheda ESP8266 che il dato verrà fattro transitare sull’uscita GPIO 0.  IRsend irsend(0); //an IR led is connected to GPIO pin 0

 

Attenzione:  GPIO 0 e D0 non sono la stessa cosa!!!!! Quando guardate la vostra scheda ESP8266 o NodeMCU e volete capire a che GPIO corrispondono i diversi PIN dovete procurarvi una tabella di conversione. Questi schemi si chiamano pinout. Cercateli con google con nome scheda + pinout. Per comodità qui sotto quella di NodeMCU.

Quindi se hai utilizzato la scheda NodeMCU GPIO 0 = D3

Collegamento D3 = GPI0 su NodeMCU

Collegamento D3 = GPI0 su NodeMCU (caso con scheda sensore a 3 PIN nel caso di led senza supporto di scheda non ci sarà il jumper rosso che va alla 3.3V ma solo il grigio a GND ed il giallo a D3)

Passiamo infine al codice invocato nel loop. Qui in effetti abbiamo 2 esempi; analizzo solo il primo.

prima riga diciamo all’ide di scrivere sul monitor seriale la scritta NEC. Questo serve per informare l’utente di quale codice verrà spedito via IR.

Secondo rigo abbiamo invece l’invio del segnale ir vero e prorio con il comando: irsend

Serial.println(“NEC”);
irsend.sendNEC(0x00FFE01F, 36);
delay(2000);

 

irsend viene accompagnato da sendNEC/sendSony/sendSamsung…… esistono diverse classi che possono essere richiamate e che troverete nel momento in cui decodifichiamo / leggiamo il segnale IR come spiegato nello scorso capitolo.

il valori che trovate tra parentesi: (0x00FFE01F, 36) sono i codici univoci che vengono spediti per ciascun bottone sul telecomando.

Attenzione: il code che trovate da decodifica è privo del 0x iniziale che è un elemento fondamentale perchè il segnale funzioni. 

 

NodeMcu schema pinout

NodeMcu schema pinout

 

Quarto Passo: a questo punto occupiamoci dell’hardware collegando il led IR alla scheda.

Nel caso abbiate optato come me per la soluzione del solo led IR avrete due piedini da collegare alla scheda: quello più lungo è l’anodo (+) quello più corto è il catodo (-). Collegate l’anodo al PIN Digitale con il pin con il quale volete dialogare (nel codice di esempio sopra è il GPIO 0 = che sulla scheda NodeMCU corrisponde all’uscita D3) e il catodo con il ground (GDN).

Quinto passo: colleghiamo la scheda via usb al computer e carichiamo il codice sulla scheda e apriamo il monitor seriale sull’IDE. Nel momento in cui comparirà la scritta NEC sul monitor seriale verrà inviato un segnale decodificato per NEC mentre nel momento in cui apparirà la scritta Sony verrà inviato via IR un segnale Sony.

Ovviamente questo sketch è espandibile aggiungendo bottoni fisici o richiamando taluni pulsanti solo a fronte di determinati input ricevuti dalla tastiera ma per oggi ci fermiamo qui.

Buon esperimento!