RaspberryPI: controlliamo il Media Center con un comune telecomando IR!

IMG_5622

In un articolo precedente, grazie anche al concorso Review4u, abbiamo visto come rendere Smart una TV con RaspberryPI e le varie distribuzioni messe a disposizione dagli sviluppatori. Per controllare il Mediacenter realizzato avevamo bisogno del mouse oppure della tastiera, a dire il vero un po’ scomodo. In quest’articolo vedremo come utilizzare Raspbmc per realizzare un MediaCenter integrando il controllo remoto tramite un comune telecomando IR che tutti abbiamo in casa!

 

Raspbmc
Andiamo per gradi, prima di addentrarci nella ricezione dei comandi impartiti da un telecomando IR, dobbiamo necessariamente prendere confidenza con la distribuzione che andremo ad utilizzare: Raspbmc.
Raspbmc è una distribuzione basata su Debian come anche Raspbian, la quale porta sulla nostra piccola schedina il più diffuso programma per MediaCenter: XBMC. Insieme a XBMC, arriva la quasi totale compatibilità con gli Add-on per esso messi a disposizione, possiamo quindi vedere direttamente sul televisore in streaming tutte le puntate dei più famosi programmi televisivi, film, e molto altro.
Procediamo quindi con l’installazione di Raspbmc! Sul sito ufficiale troviamo tre Download, il primo si riferisce ad un programma con una semplice interfaccia grafica il quale ci guiderà nell’installazione di Raspbmc in un supporto esterno da noi scelto, il secondo ed il terzo fanno rifermento al classico file .img da scaricare e scrivere successivamente su Memory Card con lo stesso procedimento con cui, negli articoli precedenti, abbiamo installato Raspbian. I due file .img messi a disposizione differiscono nel fatto che il primo è un file molto leggero il quale, dopo averlo scritto su Memory ed avviato in Rpi, scaricherà tutto il necessario dalla rete Internet. Il secondo invece contiene l’intera distribuzione Raspbian la quale richiede solo di esser scritta su Memory e poi avviata.

Dopo aver preso un po’ di confidenza con questa distribuzione, possiamo passare alla “lista della spesa”. Per permettere a Rpi di ricevere i segnali IR avremo bisogno di:
– Un telecomando IR, possibilmente non già utilizzato da un altro dispositivo per evitare conflitti
– Un sensore IR siglato TSOPxxxx
– Semplici cavetti per collegare il sensore ai pin di I/O di Rpi

Come avrete notato, il punto forte è sicuramente l’esiguo numero di componenti necessari, oltre al fatto che un TSOPxxx non costa più di 1,5€ ed è reperibile in quasi tutti i negozi di componentistica elettronica. Il telecomando IR che andremo ad utilizzare non deve avere particolari caratteristiche, ma per una più facile interazione tra noi e Raspbmc l’ideale sarebbe un telecomando con le quattro frecce direzionali ed il tasto OK centrale, per poterci muovere agevolmente nel menù.
Per quanto riguarda il sensore TSOP invece, c’è da fare una piccola precisazione prima di procedere all’acquisto. Vi sono svariati sensori con tale sigla, i quali differiscono in tensione di alimentazione, frequenze captate e tipo di segnale in uscita.
Come già saprete, su Rpi sono presenti dei pin di I/O per il collegamento di sensori, pulsanti, relè e per far interagire RPI con il “mondo esterno”. Tali pin, se utilizzati come ingressi per la ricezione di un segnale, accettano come tensione massima in ingresso 3.3V, dovremo quindi scegliere un sensore IR in grado di ricevere fedelmente i comandi impartiti dal telecomando con una tensione inferiore ai classici 5V dei segnali TTL.
Tra questi, vi è il TSOP34138 il quale presenta proprio le caratteristiche e l’affidabilità da noi ricercate, potrete utilizzare anche modelli differenti, ma non sempre la ricezione del comando avverrà in modo corretto ne verrà garantita una buona distanza tra il ricevitore ed il telecomando. Le prove iniziali le ho realizzate con un sensore IR recuperato da un vecchio registratore, ed infatti dopo il metro e mezzo mi era impossibile impartire i comandi dal telecomando e ho quindi dovuto acquistare un sensore più adatto allo scopo.

Passiamo al lato pratico e iniziamo quindi a predisporre “l’hardware” per la ricezione degli infrarossi. Per il collegamento del sensore al connettore presente sul PCB di Rpi, potete utilizzare dei connettori facilmente reperibili in vecchi PC in quanto utilizzati per il collegamento dei vari pulsanti/led alla scheda madre, così si eviteranno eventuali saldature.

 

Il sensore che andremo ad utilizzare, presenta tre terminali i quali fanno riferimento a GND, Vs ed il segnale in uscita, i quali andranno rispettivamente collegati pin 6,1 e 12 di Rpi.

 

Per aiutarvi nell’individuazione dei pin, potete utilizzare l’immagine qui riportata.

Controllate più volte che il collegamento avvenga nei giusti pin, un errore potrebbe portare alla rottura del vostro Rpi, come ad esempio alimentare il sensore dai 5V e non dai 3.3V. A collegamento effettuato, possiamo passare a conoscere LIRC.

LIRC
Per la decodifica dei segnali ricevuti dal telecomando, useremo il pacchetto LIRC ormai presente di default in tutte le nuove versioni di Raspbmc. LIRC è in grado di identificare ogni singola pressione sul telecomando, per poi assegnare il giusto comando al tasto premuto. Quello che andremo a fare ora, sarà innanzitutto permettere a LIRC di decodificare il segnale ricevuto e successivamente mapperemo i vari tasti del telecomando. Con il sensore collegato, avviamo Raspbmc, e successivamente dal menù dello spegnimento premiamo Esci per accedere al terminale e quindi alla linea di comando, la configurazione di LIRC verrà infatti fatta in modalità testuale.
Entrati in modalità testuale, ci verranno richiesti i dati per l’accesso, i quali come anche in Raspbian sono:

User: pi
Password: raspberry

Ora che siamo davanti alla linea di comando, come prima cosa dobbiamo assicurarci che LIRC sia presente nel Kernel di Raspbmc, quindi utilizzeremo il comando modprobe per caricarlo:

sudo modprobe lirc_rpi

successivamente chiuderemo i processi che tengono impegnato LIRC:

sudo kill $(pidof lircd)

ed ora siamo pronti per verificare che Rpi sia in grado di ricevere i segnali provenienti dal telecomando. Dopo aver dato il comando:

mode2 -d /dev/lirc0

Rpi rimarrà in attesa della pressione di un tasto sul telecomando. Se il sensore IR è correttamente collegato a Rpi, alla pressione di un qualsiasi tasto vedremo apparire una serie di dati simili a:

pulse 576
space 548
pulse 602
space 1663
pulse 549
space 549

 

Se non appare nulla, controllate che il sensore IR sia connesso sui giusti pin, ripetete la serie di comandi sopra indicati, o provate ad allontanarvi o avvicinarvi al sensore. Se vi trovate troppo vicini non sarà in grado di ricevere correttamente i comandi, posizionatevi quindi alla distanza di circa un metro.

Decodifica dei segnali
Ora che Rpi è in grado di ricevere i segnali provenienti dal telecomando, LIRC dovrà innanzitutto decifrarli, per poi permetterci di mappare il telecomando. Procediamo con i comandi:

sudo kill $(pidof lircd)

sudo irrecord -d /dev/lirc0 ~/lircd.conf

ed inizierà quindi la fase di apprendimento.

Come ci viene anche riportato sul terminale, dobbiamo premere uno ad uno i vari tasti del telecomando, premendo ogni singolo tasto per circa un secondo. Alla pressione del tasto, appariranno uno o più punti sul terminale, verranno così composte due linee da 80 punti al termine delle quali sarà possibile indicare l’esatto comando da dare ad ogni singolo tasto.

Mappatura dei tasti

Terminata la procedura di apprendimento, ci verrà ora chiesto di mappare i tasti che vogliamo utilizzare con XBMC. Se vogliamo avere un interazione base, ci bastano le sole frecette ed il tasto OK. Dovremo ora inserire testualmente il comando da assegnare al tasto premuto, dall’elenco che potete trovare allegato all’articolo trovate una lista di tutti i comandi assegnabili, qui riporto i soli comandi base:

KEY_UP
KEY_DOWN
KEY_LEFT
KEY_RIGHT
KEY_ENTER

L’inserimento è case sensitive, quindi dovrete rispettare il maiuscolo. Può succedere che durante la scrittura nel terminale, la tastiera non corrisponda per quanto riguarda i segni, per inserire l’underscore o “trattino basso” quindi, dovrete premere la combinazione Shift + ?. Per comodità, potete anche eseguire tutta la configurazione di LIRC via SSH, quindi da un qualsiasi PC connesso alla stessa rete di RPi potrete visualizzarne il terminale ed inserire tutti i comandi necessari.

 

 

Terminata la mappatura dei tasti, alla pressione del tasto Enter la procedura di configurazione terminerà, e verrà così creato un file contenente tutte le assegnazioni dei tasti con i comandi.

 

Può succedere che ci venga chiesto di premere un singolo tasto ripetutamente il più veloce possibile prima di terminare la configurazione, fate attenzione a premere sempre e solo lo stesso tasto, altrimenti verrà invalidato il processo in atto.

Non ci rimane altro dire a LIRC di utilizzare il file di configurazione appena creato. Dovremo ora andare a copiare il file contenente la nostra configurazione nella cartella di LIRC, sostituendo un file già presente ed integrato in Raspbmc:

sudo cp /home/pi/lircd.conf /etc/lirc/xbox-lircd.conf

Non avendo nessuna XBOX in casa, ho sostituito quello relativo al suo telecomando, in alternativa potete sostituire la configurazione appena creata con uno dei seguenti file preesistenti:
Nulla vieta di non sostituire un file di configurazione preesistente, e di utilizzare il file appena creato che ora si trova in /home/pi, ma copiandolo nell’apposita cartella di LIRC rimane tutto più ordinato :)

Come ultimo passaggio, dobbiamo semplicemente riavviare Raspbmc:

sudo reboot

 

Abilitiamo il telecomando

Ci rimane solo da abilitare l’utilizzo del telecomando in Raspbmc :)
Terminato il riavvio, rechiamoci in Programmi > Raspbmc Settings e nel tab IR Remote abilitiamo Enable GPIO TSOP IR Receiver.

Su GPIO IR Remote Profile scegliamo ora il profilo che abbiamo sostituito, in alternativa se non abbiamo copiato il file di configurazione nella cartella di LIRC e l’abbiamo lasciato nella home, indicheremo “Custom(lircd.conf on pi’s home folder)”.
Riavviamo, e navighiamo nel menù di Raspbmc con il nuovo telecomando :)

 

Infine, se volete rieseguire la procedura di configurazione per via di un evenutale errore nella mappatura, o per cambiare il telecomando da utilizzare, ricordatevi di rimuovere il file presente nella home, altrimenti LIRC vedendo già un file di configurazione esistente, non ci permetterà di eseguire una nuova mappatura.

sudo rm /home/pi/lircd.conf

Sono a disposizione nei commenti per ogni eventuale domanda.

 

Quello che hai appena letto è un Articolo Premium reso disponibile affinché potessi valutare la qualità dei nostri contenuti!

 

Gli Articoli Tecnici Premium sono infatti riservati agli abbonati e vengono raccolti mensilmente nella nostra rivista digitale EOS-Book in PDF, ePub e mobi.
volantino eos-book1
Vorresti accedere a tutti gli altri Articoli Premium e fare il download degli EOS-Book? Allora valuta la possibilità di sottoscrivere un abbonamento a partire da € 2,95!
Scopri di più

9 Comments

  1. Emanuele Emanuele 4 aprile 2013
  2. Piero Boccadoro Piero Boccadoro 4 aprile 2013
  3. Lucasss 4 aprile 2013
  4. Boris L. 6 aprile 2013
  5. Piero Boccadoro Piero Boccadoro 6 aprile 2013
  6. Lucasss 8 aprile 2013
  7. Piero Boccadoro Piero Boccadoro 8 aprile 2013
  8. giordy72 12 aprile 2013
  9. Piero Boccadoro Piero Boccadoro 14 aprile 2013

Leave a Reply