9 Aprile 2025

INFO4BLOG.IT

Recensioni Informatiche e Tecnologiche

ESP8266 e Arduino IDE: infrarossi e telecomandi

Controllare l'ESP8266 e processori similari con qualsiasi telecomando ad infrarossi, grazie ad un piccolo fotodiodo

In questo breve ‘tutorial’, mostreremo come sarà facile utilizzare qualsiasi telecomando ad infrarossi per gestire un vostro progetto esistente con l’ESP8266 o microprocessori compatibili. Utilizzeremo la comodissima interfaccia di Arduino IDE. Indispensabile anche un piccolo diodo a 3 pin recuperabile a pochissimi euro su Amazon. Vediamo, quindi, nel dettaglio ‘ESP8266 e Arduino IDE: infrarossi e telecomandi’.

ESP8266 e Arduino IDE: infrarossi e telecomandi
ATTENZIONE: I tre PIN del fotodiodo di default sono OUT,GND,VCC ma non sempre sono in questa posizione. Verificate la piedinatura corretta dal tipo di modello utilizzato.

Sarà necessario appunto un fotodiodo ‘ricevente’ con il quale è possibile ricevere i segnali di qualsiasi telecomando ad infrarossi. Questo risulta interessante, per fare un esempio, nell’utilizzo anche di telecomandi RGB per le luci colorate con un ESP8266 collegato ai led RGB. O comunque per riutilizzare un vecchio telecomando in disuso.

ESP8266 e Arduino IDE: infrarossi e telecomandi

Utilizzare qualsiasi telecomando IR con l’ESP8266 (ESP8266 e Arduino IDE: infrarossi e telecomandi)

Per poter riceve qualsiasi segnale IR è necessario un piccolo fotodiodo ricevente a infrarossi. Noi abbiamo utilizzato un vecchio TSOP2236, ma sono compatibili anche il modulo KY-022 o TSOP38238. Questi modelli hanno in comune i 3 pin.

Semplice il collegamento

Guardando il diodo frontalmente, il primo pin viene utilizzato per collegarlo ad uno dei GPIO del microprocessore (dipenderà da voi, nel nostro prossimo esempio lo collegheremo al pin D5, che corrisponde al pin 14 del ESP8266), il secondo pin alla GND, mentre il terzo va collegato alla VCC. Questo è valido per i modelli elencati, ma sono presenti altri fotodiodi infrarossi sempre con 3 pin ma con altre piedinature. Verificate attentamente il pinout del vostro modello.

La programmazione è estremamente semplice, non solo in Arduino IDE esiste una libreria adatta, ma ci sono anche vari programmi di esempio per testare i nostri telecomandi.

Arduino IDE

Aprendo il programma, nel menu ‘Strumenti’ cliccando sulla voce ‘Gestione Risorse’ si aprira la scheda relativa alle librerie. Nel campo di ricerca basterà inserire il testo ‘IRremote’. Cliccando poi sul pulsante installa di fianco alla relativa libreria, verrà installato tutto il pacchetto insieme agli esempi.

ESP8266 e Arduino IDE: infrarossi e telecomandi

Nel Menù ‘File’, sotto la voce ‘Esempi’ troveremo fra gli altri la voce ‘IRRemote’, all’interno del quale troveremo i relativi esempi.

ESP8266 e Arduino IDE: infrarossi e telecomandi

Il programma più esplicativo è ‘MinimalReceiver’ dove si potrà gestire semplicemente tutte le informazioni che vedremo a schermo tramite ‘Strumenti => Monitor Seriale’.

Il codice è davvero semplice: una volta avviato, sul monitor seriale verranno visualizzate le informazioni dei relativi tasti premuti di qualsiasi telecomando.

Questi codici associati ai tasti (Es.:’0x72′ o ‘0x61’) saranno il risultato del tasto premuto. All’interno della funzione handleReceivedTinyIRData si potrà gestire ogni pulsante.

#include <Arduino.h>

#include "TinyIRReceiver.cpp.h"

#define IR_INPUT_PIN    14 // Primo Pin del diodo infrarossi ricevente a 3 gambette


#define STR_HELPER(x) #x
#define STR(x) STR_HELPER(x)

void setup() {
    Serial.begin(115200);

    Serial.println();

    Serial.println(F("START " __FILE__ " from " __DATE__));
    initPCIInterruptForTinyReceiver();
    Serial.println(F("Ready to receive NEC IR signals at pin " STR(IR_INPUT_PIN)));
}

void loop() {
    /*
     * Inserire il codice del Vostro programma
     */
}

/*
 * Funzione richiamata quando viene premuto un pulsante su un telecomando IR
 */
#if defined(ESP8266)
ICACHE_RAM_ATTR
#elif defined(ESP32)
IRAM_ATTR
#endif
void handleReceivedTinyIRData(uint16_t aAddress, uint8_t aCommand, bool isRepeat) {
    /*
     * Scrive sul monitor seriale il codice essenziale di riconoscimento del tasto
     */
    Serial.print(F("A=0x"));
    Serial.print(aAddress, HEX);
    Serial.print(F(" C=0x"));
    Serial.print(aCommand, HEX);
    Serial.print(F(" R="));
    Serial.print(isRepeat);
    Serial.println();

//esempio:   
   if (aCommand == 0x72) Serial.print(F(" Tasto Rosso del telecomando"));
   if (aCommand == 0x71) Serial.print(F(" Tasto Verde del telecomando"));
   if (aCommand == 0x63) Serial.print(F(" Tasto Giallo del telecomando"));
   if (aCommand == 0x61) Serial.print(F(" Tasto Blu del telecomando"));

    
}

Saranno quindi poche righe da aggiungere al vostro codice, per poter inserire l’interazione con qualsiasi telecomando infrarossi.

WLED di Aircoookie e Telecomandi Infrarossi

Nel nostro tutorial per controllare le luci RGB, abbiamo installato le strisce led con il NodeMCU, la celebre scheda con l’ESP8266, usando il software WLed.

Striscia Led RGB

Questo software permette anche di creare delle Ambient Light, ossia cambiano tonalità rispetto al quello che viene visionato sullo schermo del PC.

Grazie a questo software, si possono inoltre controllare le luci tramite un telecomando IR grazie al Fotodiodo Led Infrarossi a 3 pin, collegandolo in modo appropriato al NodeMCU.

Il software è infatti già predisposto per la configurazione.

In questa sezione (https://github.com/Aircoookie/WLED/wiki/Infrared-Control) della Wiki di WLed di Aircoookie è spiegato dettagliamente ogni cosa.

Sono consigliati led infrarossi come il KY-022 o TSOP38238.

Il pin del sensore predefinito è GPIO4. Può essere modificato nelle impostazioni di Wled.

Fotodiodo
ATTENZIONE: I tre PIN del fotodiodo di default sono OUT,GND,VCC ma non sempre sono in questa posizione. Verificate il PinOut del tipo di modello utilizzato. In questo caso il GPI04 è di Default per WLED, nell’esempio precedente andava invece inserito nel Pin D5 (GPI014)

Telecomandi IR supportati

Basterà abilitarlo tramite il menù ‘Config’ di configurazione e poi in ‘Sync Interfaces’ tramite una spunta e selezionare nel menù a tendina di ‘Infrared remote’ fra i telecomandi IR specifici:

  • 1 Telecomando IR bianco a 24 tasti con R, G, B + 12 tonalità di colore
  • 2 Telecomando IR bianco a 24 tasti con pulsanti CT+ / CT-
  • 3 Telecomando IR a 40 tasti blu con tasti per 25%, 50%, 75% e 100%
  • 4 Telecomando IR bianco 44 tasti con frecce su/giù per i colori R,G e B
  • 5 Telecomando IR bianco a 21 tasti con R, G, B + 9 tonalità di colore
  • 6 Telecomando IR a 6 tasti nero con CH su/giù + Vol su/giù

JSON IR: si può addirittura configurare e utilizzare facilmente qualsiasi telecomando IR. Più informazioni anche in kno.wled.ge (https://kno.wled.ge/interfaces/json-ir/json_infrared/)

Come aggiungere codici personalizzati in WLED (difficoltà medio/alta)

Innanzitutto, collegare il proprio ESP8266 a un PC e aprire il monitor seriale Arduino IDE. Provare a premere i pulsanti che si desidera programmare. Se il led ricevitore è collegato correttamente, si dovrebbero vedere le informazioni sul monitor seriale (es.:):

IR recv
0xFFDE10

In questo esempio, 0xFFDE10 è il codice a infrarossi in HEX (esadecimale). Se si riceve il codice 0xFFFFFFFF, e lo stesso codice è stato ricevuto più volte: provate a toccare il pulsante del telecomando per un periodo di tempo minore.

Nel progetto originale di Wled per Arduino IDE si può modificare il file ir_codes.h, aggiungendo il vostro codice IR, per esempio #define IRCUSTOM_MACRO1 0xFFDE10.

In conclusione aprendo il file ir.cpp, si dovrà aggiungere il codice IR nella struttura di scelta, nel metodo decodeIRCustom() del programma. Dovreste essere in grado di seguire il codice esistente per programmare e inserire l’azione desiderata. Ad esempio, potresti inserire “case IRCUSTOM_MACRO1: bri = 255; break;” per impostare la massima luminosità. Ricordo che IRCUSTOM_MACRO1 è il tasto IR definito precedentemente.

Questo ultimo passaggio, per i comandi personalizzati su WLed è consigliabile solo agli utenti che hanno già avuto esperienza nel modificare il programma WLed su Arduino IDE.

Finisce qui questa breve infarinatura di ESP8266 e Arduino IDE: infrarossi e telecomandi. Rimanete sintonizzati per altri interessanti tutorial.