Utilizzo del sensore a infrarossi con Arduino

Che cos'è un sensore a infrarossi (noto anche come IR)?

Un sensore IR è uno strumento elettronico che scansiona i segnali IR in specifici intervalli di frequenza definiti da standard e li converte in segnali elettrici sul suo pin di uscita (in genere chiamato pin di segnale). I segnali IR vengono utilizzati principalmente per la trasmissione di comandi via etere su brevi distanze (in genere pochi metri) come quello con cui hai già lavorato sui telecomandi TV o altri dispositivi elettronici simili.

Protocollo di comunicazione IR

Ogni segnale rappresenta un codice specifico. I segnali elettrici possono essere riconvertiti nei dati / codice effettivi inviati dal mittente. Quando si preme un pulsante sul telecomando del televisore, viene generato un segnale corrispondente al codice del pulsante (ad esempio On / Off, Volume su, ecc.) E lo invia per un ricevitore (in questo caso il televisore). Sia il mittente che il destinatario hanno concordato una serie di codici in modo che il destinatario sappia cosa fare in base a ciascun codice. Il modo in cui un codice dovrebbe essere modulato (modellato) come un segnale è definito in standard diversi e ogni produttore di sensori normalmente cerca di produrre un prodotto compatibile con loro in modo che possa essere utilizzato in diversi dispositivi. Uno dei protocolli standard più noti proviene da NEC. Puoi trovare una breve storia dei protocolli IR su Wikipedia sotto il titolo Consumer IR.

Passaggio 1: come appare un sensore IR?

I sensori IR sono disponibili su diversi pacchetti. Qui puoi vedere alcune confezioni tipiche per un ricevitore IR.

Passaggio 2: scheda / modulo breakout sensore IR

Puoi anche acquistarli come modulo IR / breakout board su eBay, Aliexpress o Amazon. Tali moduli normalmente incorporano uno dei sensori sopra menzionati con un bel pacchetto compatibile con breadboard insieme a un LED che lampeggia quando il sensore rileva un segnale. In questo modo si noterà se vengono trasferiti dati. Consiglio vivamente di iniziare con uno di questi moduli.

Nota: se si dispone di un sensore IR grezzo, non cambierebbe nulla, tranne che si dovrebbe controllare il foglio dati del sensore per assicurarsi che il cablaggio sia corretto perché altrimenti si potrebbe avere un bellissimo fumo blu con un odore che durerebbe per un ora. Sai cosa intendo ;)

Passaggio 3: Parti e componenti richiesti

Qui puoi trovare l'elenco dei componenti necessari per completare questo tutorial:

Link eBay:

  • 1 x Arduino Uno: //rover.ebay.com/rover/1/711-53200-19255-0/1 ...
  • 1 x modulo sensore IR con telecomando: //rover.ebay.com/rover/1/711 ....
  • 4 resistori da 220 ohm: //rover.ebay.com/rover/1/711-53200-19255-0 / ...
  • 4 x LED: //rover.ebay.com/rover/1/711-53200-19255-0 / ...
  • 8 x cavo Dupont: //rover.ebay.com/rover/1/711-53200-3=4&too ...
  • 1 x tagliere senza saldatura: //rover.ebay.com/rover/1/711-53200 -...
  • 1 x Mini breadboard (opzionale): //rover.ebay.com/rover/1/711-532 ...

Collegamenti Amazon.com:

  • 1 x Arduino Uno: //amzn.to/2uJfKy1
  • 1 modulo sensore IR con telecomando: //amzn.to/2uMS1eT
  • 1 x tagliere senza saldatura: //amzn.to/2uMC6gl
  • 4 resistori da 220 ohm: //amzn.to/2hbGiDs
  • 4 x LED: //amzn.to/2uMEtjy
  • 8 x cavo Dupont: //amzn.to/2eXCvbT
  • 1 x Mini breadboard (opzionale): //amzn.to/2vUelmC

Collegamenti Amazon.co.uk:

  • 1 x Arduino Uno: //amzn.to/2u8DXKD
  • 1 modulo sensore IR con telecomando: //amzn.to/2wagB8Y
  • 4 resistori da 220 ohm: //amzn.to/2uJCsGs
  • 4 x LED: //amzn.to/2u8nNRo
  • 8 x cavo Dupont: //amzn.to/2vaLDQN
  • 1 x tagliere senza saldatura: //amzn.to/2u8nkP2
  • 1 x Mini breadboard (opzionale): //amzn.to/2vaKtoc

Passaggio 4: collegamento del sensore IR ad Arduino

Configurare la connessione del sensore IR ad Arduino è molto semplice. Oltre ai pin VCC e GND, il sensore ha un solo pin di uscita che deve essere collegato a uno dei pin digitali di Arduino. In questo caso è collegato al pin 13.

Ho provato a dimostrare sia il modulo sensore IR che la configurazione del sensore IR non elaborata. Come si può vedere dalle immagini, la posizione dei pin VCC e GND sul modulo sensore è l'opposto del sensore grezzo. Tuttavia, potrebbe non essere il caso del sensore, quindi, come indicato nel passaggio precedente, in caso di utilizzo del sensore non elaborato, controllare prima la scheda tecnica.

Passaggio 5: trova il codice corrispondente a ciascun tasto sul telecomando

Per programmare Arduino in modo che faccia qualcosa quando premi un tasto sul telecomando, dovresti prima avere il codice corrispondente a quel tasto. Il codice chiave è un numero normalmente presentato come esadecimale. Ogni telecomando ha il proprio set di codici chiave mentre è possibile che due controller condividano lo stesso codice per scopi diversi. La presenza di codici chiave diversi e l'utilizzo di intervalli di frequenza diversi garantisce che due telecomandi di dispositivi diversi non subiscano interferenze. Ecco perché quando cambi canale TV, il tuo lettore DVD non reagisce affatto.

Per rilevare i codici per il tuo telecomando IR, devi prima eseguire un semplice schizzo che tenti di leggere il codice dal sensore quando premi un tasto e lo invia tramite la porta seriale al tuo computer dove puoi accedervi usando gli strumenti di Serial Monitor di Arduino IDE. Questo è ciò che fa lo schizzo allegato a questa sezione. Sarebbe meglio premere ogni pulsante per vedere il codice e scrivere l'elenco dei codici da qualche parte in modo da non dover eseguire nuovamente questo codice in futuro. L'elenco dei codici chiave che vedi come tabella nell'immagine sono in realtà i codici che ho ricevuto premendo i pulsanti sul mio telecomando IR economico.

Puoi anche accedere al codice sorgente effettivo condiviso sul mio editor Web Arduino su ir-key-code-logger.

Nota : non aver paura se vedi un codice come FFFFFF nel mezzo. Significa che hai premuto e tieni premuto un pulsante per un po '. Ci riprenderemo più tardi. Per ora basta ignorarli e concentrarsi su altri codici.

allegati

  • Scarica ir-code-logger.ino

Passaggio 6: controllare un set di LED tramite telecomando IR

Ora che abbiamo un codice per ogni pulsante, è il momento di concentrarci sul modo in cui possiamo usarli. Normalmente usi il telecomando IR per inviare comandi ad Arduino per fare qualcosa come accendere o spegnere una lampada, spostare un robot in una direzione specifica, visualizzare qualcosa su uno schermo LCD / OLED, ecc. Qui proviamo a dimostrare il processo usando un semplice circuito costituito da 4 LED di diversi colori. Vogliamo accenderli o spegnerli tutti con un pulsante dedicato del telecomando IR. Come puoi vedere nello schema, devi collegare Arduino nel modo seguente a LED e sensore:

Arduino GND -> Sensore IR GND.

Arduino VCC -> Sensore IR VCC.

Arduino 13 -> Uscita segnale sensore IR.

Arduino 2 -> Anodo del LED blu (pin più corto del LED blu)

Arduino 3 -> Anodo del LED verde (pin più corto del LED verde)

Arduino 4 -> Anodo del LED giallo (pin più corto del LED giallo)

Arduino 5 -> Anodo del LED rosso (pin più corto del LED rosso)

Arduino GND -> Catodo di tutti i LED tramite una resistenza da 220 ohm (pin più lungo dei LED)

Puoi trovare il codice corrispondente a questo circuito nel file allegato o sul mio editor web Arduino su ir-led-control.

allegati

  • Scarica ir-led-control.ino Download

Passaggio 7: risoluzione dei problemi

Durante l'impostazione del progetto e seguendo i passaggi è possibile che si verifichino molte situazioni strane. Ecco l'elenco di alcuni errori comuni che potresti riscontrare quando lavori con il sensore IR.


Ottenere FFFFFF quando si preme un tasto

Quando si preme un pulsante, è possibile notare che la maggior parte delle volte segnala un codice come FFFFFF. Ciò accade quando si preme un pulsante e lo si tiene premuto per un po ', anche per un breve periodo di tempo. Lo scenario è che quando si preme il pulsante inizialmente, il telecomando IR invia il codice del pulsante e finché si tiene premuto il pulsante, si ripete l'invio di FFFFFF, il che significa che l'utente sta ancora premendo il pulsante segnalato di recente. Sarebbe OK. Puoi semplicemente ometterli. Il codice effettivo è quello ottenuto subito prima di FFFFFF sul monitor seriale.


Il sensore IR non reagisce affatto e sembra che si stia riscaldando!

Taglia il potere !!! Se sei sicuro che lo schizzo del logger del codice chiave sia corretto, il problema potrebbe essere dovuto alla configurazione errata dei tuoi fili. Lo scenario che mi è successo è stato che per il mio modulo IR (quello attaccato alla scheda) avevo collegato VCC e GND in modo opposto (a causa del non utilizzo di colori adeguati per i miei cavi di collegamento). In questo modo il componente del sensore bruciava e veniva emesso un bel fumo blu. Ho comprato un pacchetto di sensori IR grezzi e ho provato a sostituirlo e ora funziona come un fascino :). Sfortunatamente ho fatto lo stesso errore quando stavo testando con il sensore IR grezzo e questa volta non è successo nulla, tranne che il sensore si è riscaldato. Quindi controlla sempre il circuito prima di accendere!


A volte il sensore rileva un codice che non avevo mai visto prima

Questo è uno dei problemi più comuni. Molto probabilmente è dovuto a uno dei seguenti motivi:

  • Non stai puntando il tuo telecomando IR direttamente verso il sensore

Questo porterà ad avere alcuni nuovi codici (per lo più codici più lunghi) che non hai mai ricevuto prima e normalmente non corrispondono alla lunghezza dei codici che hai già. Quindi ricorda di puntare sempre il telecomando verso il tuo sensore.

  • Stai usando un telecomando IR economico (come quello che ho usato in questo tutorial)

Invece di utilizzare telecomandi imprevedibili a basso costo, puoi provare lo stesso scenario usando il telecomando della TV o del lettore DVD o un telecomando IR di tutti i dispositivi che hai. Normalmente hanno una buona qualità segnale / hardware (e ovviamente sono più costose) e in base alla mia esperienza, funzionano normalmente anche se non si punta il telecomando direttamente verso il sensore.


Come faccio a sapere se un codice registrato non è un cestino

I codici sono normalmente presentati in formato esadecimale. Se li converti nel corrispondente valore binario, noterai che la rappresentazione binaria dell'ultimo byte è la negazione del byte precedente. Se lo sai, puoi fare questo controllo nel tuo codice per assicurarti che il codice che hai ricevuto sia effettivamente valido o meno. Ad esempio, se hai FF7A85 la sua rappresentazione binaria sarebbe come di seguito:

 1111 1111 0111 1010 1000 0101 

Da sinistra a destra, ogni lotto di 4 cifre rappresenta un carattere nel numero esadecimale originale. Come puoi vedere, il batch corrispondente a 7 è 0111 e il batch corrispondente a 8 è 1000, che è l'esatta negazione di esso. Per negazione intendo che tutti gli 0 sarebbero 1 e tutti gli 1 sarebbero sostituiti da 0. Lo stesso vale per il prossimo che è A (1010) e 5 (0101).

Passaggio 8: cosa fare dopo?

Ora è il tuo turno. Spetta alla tua immaginazione vedere cosa puoi fare con questo piccolo sensore semplice in mano. Ecco alcune idee per cominciare:

  • Usa il telecomando IR di uno dei dispositivi che hai a casa (TV, stereo, ecc.) E prova a usarlo nel tuo progetto Arduino
  • Prova ad accendere tutti i LED contemporaneamente premendo un tasto e poi spegnili usando un altro tasto
  • Utilizzare il pulsante Su / Giù del telecomando per accendere / spegnere i LED uno alla volta fino a quando tutti non si accendono / spengono
  • Crea un semaforo utilizzando i LED e controllalo tramite il telecomando
  • Se hai un piccolo motore CC a portata di mano, prova ad avviare / arrestare o cambiare la sua direzione di rotazione tramite telecomando IR
  • È possibile utilizzare il telecomando della TV per controllare il robot o abilitare / disabilitare alcuni sensori / attuatori su di esso

Fammi sapere sui commenti, cosa faresti (o hai già fatto) usando il telecomando IR.

Articoli Correlati