Realizzazioni Software

Multipresa telecomandata IR con Arduino
Prototipo e software

Dopo aver formalizzato tutti i requisiti del progetto della multipresa telecomandata a infrarossi e aver definito la piattaforma hardware necessaria per implementarli si può passare alla costruzione del prototipo su breadboard e alla prima stesura dello sketch Arduino che ne costituirà il software di controllo.

Componenti necessari

Riassumiamo qui di seguito i componenti necessari per realizzare il prototipo della piattaforma hardware:

  • 1 Arduino
  • 5 relay HF115F-H
  • 5 diodi 1N4003
  • 5 transistor 2N2222
  • 6 resistenze 220Ohm 1/4W
  • 1 resistenza 470Ohm 1/4W
  • 1 resistenza 1KOhm 1/4W
  • 1 led
  • 2 pulsanti
  • 1 connettore RCA

 

Per passare dal prototipo alla versione definitiva sarà necessario anche:

  • 1 ATmega328p
  • 1 quarzo 16MHz
  • 2 condensatori ceramici 22pF
  • 1 alimentatore 5V cc stabilizzato
  • 1 piastra millefori di dimensioni adeguate
  • 1 Multipresa GBC a 6 posizioni

 

Montaggio prototipo su breadboard

Iniziamo dunque a montare i componenti sulla breadboard. Per verificare il funzionamento utilizzeremo un solo canale (cioè 1 realy e relativo ‘driver’ costituito da transistor, resistenza di base e diodo di protezione) che replicheremo esattamente uguale per cinque volte sulla scheda finale.

 Breadboard test multipresa IR
Figura 1: Setup della breadbord per il prototipo

 

Caricamento dello sketch

Terminato il collegamento di tutti i componenti su breadboard è giunto il momento di caricare sull’Arduino lo sketch che trasformerà una semplice “ciabatta” in una vera e propria multipresa telecomandata a infrarossi.

Scaricamento librerie

Per poter compilare correttamente lo sketch è necessario che siano disponibili due librerie:

  • IRremote
  • TVout (ho usato la versione nel file TVoutBeta1.zip)

Le versioni originali di queste librerie le potete scaricare dai seguenti link:

  • https://github.com/shirriff/Arduino-IRremote
  • https://code.google.com/p/arduino-tvout/downloads/list

Per installarle consiglio di creare una cartella “libraries” nella propria cartella degli sketches e al suo interno andare a scompattare gli zip scaricati.

Modifica libreria TVout

Qui arriva la parte un po’ più complicata del progetto: far convivere la libreria TVout con la libreria IRremote. Entrambe le librerie utilizzano infatti gli interrupt dell’ATmega 328 per temporizzare le operazioni di sincronizzazione e disegno l’una e di interpretazione degli IR l’altra.

L’ideale sarebbe probabilmente riscriversi le librerie in modo da ottimizzare l’utilizzo degli interrupt ma, onestamente, ho trovato la cosa un po’ al di sopra delle mie attuali possibilità, soprattutto in termini di tempo da poterci dedicare.

Sono allora andato alla ricerca di un compromesso: quando il ricevitore IR è attivo, il TV out viene disattivato; quando è necessario visualizzare immagini tramite TV out, il ricevitore IR viene disattivato.

Per ottenere questo risultato ho dovuto modifica la libreria TV out aggiungendo due metodi alla classe TVout:

  • stop();
  • resume();

Le modifiche da apportare sono piuttosto semplici: nel file TVout.h si devono aggiungere due righe subito dopo la dichiarazione del metodo end():

/*
TVout.cpp contains a brief expenation of each function.
*/
class TVout {
public:
 uint8_t * screen;
 
 char begin(uint8_t mode);
 char begin(uint8_t mode, uint8_t x, uint8_t y);
 void end();
 void stop();
 void resume();

 

Nel file TVout.cpp vanno invece aggiunte le seguenti righe alla fine del file:

void TVout::stop() {
 cli();
 TIMSK1 = 0;
 sei();
}
void TVout::resume() {
 cli();
 TIMSK1 = _BV(TOIE1);
 sei();
}

 

Codice dello sketch

Terminate le operazioni di predisposizione e modifica delle librerie è il momento di aprire, compilare e caricare lo sketch della multipresa. Qui di seguito il link allo zip contenente tutto il codice:

 

Sarà sufficiente scompattarlo nella vostra cartella degli sketches per veder apparire il progetto nel menu File > Cartella degli sketch come in figura.

Menu sketches IDE Arduino
Figura 2: aprire il progetto dal menu dell’IDE

Collegamento TVout

Per iniziare la configurazione della multipresa è necessario per prima cosa collegare l’uscita video composito ad un televisore dotato di ingresso video composito.

Solitamente questo tipo di ingresso si presenta come connettore RCA femmina di colore giallo. In alternativa l’ingresso video composito è solitamente presente anche sulla presa SCART.

Adattatore breadboard TV Out
Figura 3: adattatore da breadboard a RCA

Per collegare la TV alla breadboard ho costruito un semplicissimo adattatore (Figura 3) che presenta da una parte un header a quattro pin e dall’altra, collegati con uno spezzone di cavo schermato bipolare, due connettori RCA.

Dei due connettori in questo caso ne servità uno soltanto: il polo centrale andrà collegato alle due resistenze collegate ai pin D2 e D3 di Arduino, la calza di schermatura andrà collegata a massa (GND).

Se tutto è andato bene premendo il pulsante “Enter”, quello collegato al pin D2 e montato sulla destra nel prototipo breadboard, sullo schermo dovrebbe apparire il menu principale della multipresa (Figura 4).

Screenshot menu principale
Figura 4: menu principale della multipresa

 

Configurazione minima per il test

Per effettuare il test di funzionamento sarà necessario configurare la multipresa per farle riconoscere almeno due codici del telecomando: accensione presa 1 e spegnimento presa 1.

Per farlo è sufficiente spostare il selettore del menu (il simbolo ‘>’ che si trova sulla sinistra delle voci) sulla voce TASTI TELECOMANDO ON con il tato ‘select’ (quello collegato al pin D3 e montato sulla sinistra del prototipo su breadboard) e premere il tasto ‘enter’ (quello collegato al pin D2 e montato sulla destra). Apparirà il menu riportato in Figura 5.

Menu tasti telecomando on
Figura 5: Menu “tasti telecomando on”

Verificare che sia selezionata la voce PRESA 1 e premere nuovamente enter. La multipresa spegnerà il video e accenderà il ricevitore IR in attesa della pressione del tasto del telecomando che vorrete usare per l’accensione della presa 1.

Ricevuto dal telecomando il codice, la multipresa tornerà allo stato precedente, visualizzando nuovamente il menu TASTI TELECOMANDO ON e a fianco della voce PRESA 1 mostrerà il codice appena scansionato.

Spostare ora il selettore delle voci di menu fino all’ultima voce: INDIETRO e premere il tasto enter.

Ripetere ora gli stessi passaggi per la scansione del codice di spegnimento della presa 1.

 

Test minimo

Il test minimo consiste nell’accensione e spegnimento della presa 1 e relativa verifica di funzionamento. Per effettuarlo verificare di aver eseguito tutti i passaggi della configurazione minima e di non essere in alcun menu (cioè che l’interfaccia di configurazione TV sia spenta e il ricevitore IR sia attivo).

Dal telecomando premere, puntandolo verso il ricevitore IR, il tasto configurato per l’accensione: il relay dovrebbe passare dalla posizione di riposo a quella di lavoro e il LED di segnalazione dovrebbe lampeggiare una volta per confermare l’esecuzione del comando di accensione.

Premere poi il tasto configurato per lo spegnimento: il relay dovrebbe tornare in posizione di riposo e il LED di segnalazione dovrebbe lampeggiare due volte per confermare l’esecuzione del comando di spegnimento.

 

Non dimenticate di seguirci su Twitter e Google+ per essere sempre aggiornati sui nuovi post di Sisuino Blog!

 



Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

In questo articolo abbiamo parlato di

Ne abbiamo parlato anche in...

Arduino RGB Led strip controller

Hardware Realizzazioni Software

Arduino RGB Led strip controller

29.11.2017 di Silvio Marzotto2 commenti

Dopo i primi esperimenti con le strisce Led RGB ecco un progetto completo per la realizzazione di un controller dotato di ricetivore infrarossi per la gestione tramite telecomando e una serie di effetti luminosi preprogrammati selezionabili dall’utilizzatore.

Pilotare dispositivi di potenza con Arduino

Hardware

Pilotare dispositivi di potenza con Arduino

24.05.2014 di Silvio Marzotto19 commenti

Qualche tempo fa ho cominciato a pensare di utilizzare Arduino per gestire tramite i propri pin di I/O dei dispositivi esterni. Mi sono quasi subito scontrato con un fatto del […]