Arduino || ESP32

Arduino IR code reader

Come leggere i codici dei telecomandi IR con Arduino

Con Arduino è possibile leggere i codici inviati tramite Infrarossi dai telecomandi dei vari dispositivi: TV, DVD, condizionatori d’aria, ecc.

Realizzare l’hardware ed il software è estremamente semplice, sarà necessario usare un solo componente, non servono neanche resistenze, ma solo il sensore IR, collegato ad uno dei pin digitali di Arduino.

Lo sketch è anche esso molto semplice, si importa la libreria specifica IRremote.h, si definisce un pin sul quale collegare il ricevitore IR (nel mio caso il 5), nel setup si abilita il monitor seriale e l’oggetto che demodula gli impulsi IR, nel loop poi si legge di continuo il contenuto dell’oggetto, se non è nullo si può stampare a video tramite monitor seriale; è altresì possibile implementando un display, visualizzare il codice ricevuto su un display oled o lcd.

#include <IRremote.h>

int IRPIN = 5;
IRrecv irrecv(IRPIN);
decode_results result;

void setup() {
  Serial.begin(9600);
  Serial.println("Sistema avviato!");
  irrecv.enableIRIn();
  delay(500);
  Serial.println("Inizio la lattura dei codici IR");
  delay(500);
}

void loop() {
  if (irrecv.decode(&amp;result))
  {
    Serial.println(result.value, HEX);
    irrecv.resume();
  }
  delay(500);
}

Il protocollo NEC

Di solito viene impiegato il protoccolo NEC, che usa una codifica a distanza di impulsi per inviare i bit. Gli impulsi sono lunghi 562.5µs, modulati su frequenza portante di 38kHz (26.3µs). I bit sono codificati nel seguente modo:

  • ‘0’ Logico – un impulso di 562.5µs seguito da uno spazio di 562.5µs, la trasmissione è lunga 1.125ms in totale.
  • ‘1’ Logico – un impulso di 562.5µs seguito da uno spazio di 1.6875ms, la trasmissione è lunga 2.25ms in totale.

Quando si preme il tasto sul telecomando viene trasmesso il dato:

  • impulso continuo di lunghezza 9ms (16 volte la lunghezza di un bit)
  • 4.5ms di pausa
  • indirizzo a 8-bit del dispositivo che deve ricevere
  • indirizzo a 8-bit logicalmente invertito
  • 8-bit per il comando
  • 8-bit per il comando logicalmente complementato
  • impulso di 562.5µs che chiude le trasmissioni

Il bit meno significativo (LSB) è inviato per primo

Si il tasto viene mantenuto premuto, ogni 40ms circa viene inviato uno specifico codice, che indica al dispositivo ricevente di ripetere l’ultimo comando ricevuto (0xFFFFFF).

Siti di riferimento e fonti

https://techdocs.altium.com/display/FPGA/NEC+Infrared+Transmission+Protocol

https://en.wikipedia.org/wiki/Consumer_IR

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.