LIRC: controlla il tuo Raspberry con un telecomando

English version here!

Dopo alcuni mesi di utilizzo del mio Raspberry come dispositivo Spotify Connect ho pensato che potesse essermi molto utile poter controllare la riproduzione della musica con il telecomando dello stereo.
Sfrutteremo quindi un sensore a infrarossi collegato ai pin GPIO disponibili sul Raspberry, interpretando gli input con lo strumento LIRC.
Per poter arrivare a una configurazione funzionante ho dovuto procedere per (numerosi) tentativi perché la maggior parte delle informazioni che si trovano sui forum non sono aggiornate per poter funzionare anche su Raspbian Buster, che è l’ultima versione rilasciata al momento. Infatti il supporto a LIRC (lo strumento che useremo per interpretare l’input del nostro telecomando) è in corso di modifica dagli sviluppatori di Raspbian.

Per prima cosa parliamo del materiale necessario:

Per prima cosa effettuiamo i collegamenti necessari usando i cavetti jumper.
Il sensore IR che ho usato ha due pin per l’alimentazione (Vs, pin 3, e GND, pin 2), che collegheremo al pin 3.3V e a quello GND, e un pin per la comunicazione (pin 1), che collegheremo al pin GPIO 17. Prima di effettuare i collegamenti controlla sul datasheet del tuo sensore che tutto sia corretto.
Crediti immagine

Ora collega gli altri capi dei cavetti jumper in questo modo:


Comunicazione (pin 1)
GPIO17 (pin 11)
GND (pin 2)
GND (pin 6)
Vs (pin 3)
3.3V (pin 1)

Crediti immagine


Perfetto! Ora l’hardware è pronto, non ci resta che accendere il Raspberry e occuparci del software.

Come dicevo nell’introduzione, dall’introduzione di Raspbian Buster la procedura per rendere LIRC completamente funzionante è diventata un po’ più complessa. Segui passo passo le istruzioni riportate per non avere problemi.
Per prima cosa prepariamo l’ambiente per l’installazione:

sudo su -c "grep '^deb ' /etc/apt/sources.list | sed 's/^deb/deb-src/g' > /etc/apt/sources.list.d/deb-src.list"
sudo apt update
sudo apt install devscripts


Se dovessi aver già installato LIRC per qualche motivo disinstallalo:

sudo apt remove lirc liblirc0 liblirc-client0

Ora procediamo all’installazione della versione corretta e funzionante di LIRC.
Attenzione! Sul mio Pi2 questo passaggio ha impiegato quasi 45 minuti.

sudo apt install dh-exec doxygen expect libasound2-dev libftdi1-dev libsystemd-dev libudev-dev libusb-1.0-0-dev libusb-dev man2html-base portaudio19-dev socat xsltproc python3-yaml dh-python libx11-dev python3-dev python3-setuptools
mkdir build
cd build
apt source lirc
wget https://raw.githubusercontent.com/neuralassembly/raspi/master/lirc-gpio-ir-0.10.patch
patch -p0 -i lirc-gpio-ir-0.10.patch
cd lirc-0.10.1
debuild -uc -us -b
cd ..
sudo apt install ./liblirc0_0.10.1-5.2_armhf.deb ./liblircclient0_0.10.1-5.2_armhf.deb ./lirc_0.10.1-5.2_armhf.deb


L’ultimo comando di installazione dovrebbe fallire, è normale.
Ora aggiungi al file /boot/config.txt le seguenti righe

dtoverlay=gpio-ir,gpio_pin=17
dtoverlay=gpio-ir-tx,gpio_pin=18

(se hai cambiato il pin GPIO a cui il tuo sensore è collegato metti qui in numero corrispondente)

Poi esegui questi comandi

sudo cp /etc/lirc/lirc_options.conf.dist /etc/lirc/lirc_options.conf
sudo cp /etc/lirc/lircd.conf.dist /etc/lirc/lircd.conf
sudo mv /etc/lirc/lircd.conf.d/devinput.lircd.conf /etc/lirc/lircd.conf.d/devinput.lircd.conf.dist


Ora puoi riprovare il comando di installazione (che riporto qui sotto)

sudo apt install ./liblirc0_0.10.1-5.2_armhf.deb ./liblircclient0_0.10.1-5.2_armhf.deb ./lirc_0.10.1-5.2_armhf.deb

La procedura ora dovrebbe andare a buon fine.
Per concludere modifica il file /etc/lirc/lirc_options.conf con i seguenti valori

driver = default
device = /dev/lirc1


Per verificare che effettivamente il sensore IR funzioni esegui il comando mode2, sullo schermo dovrebbe apparire

Using driver default on device /dev/lirc1
Trying device: /dev/lirc1
Using device: /dev/lirc1


Premendo dei tasti qualsiasi sul telecomando dovresti vedere una situazione del genere:

pulse 2393
space 602
pulse 1201
space 601
pulse 1209
space 596
pulse 595
space 605
pulse 595
space 604
pulse 1198


Benissimo! Ora è tutto pronto per configurare il nostro telecomando.
Con il comando irrecord andremo ad abbinare alla sequenza di pulse e space caratteristica di ogni pulsante un significato. Segui le indicazioni che il programma riporta e prendi nota del nome che darai al telecomando: ci servirà in seguito. Fa’ attenzione: non tutti i nomi dei pulsanti sono validi. Devono infatti appartenere alla lista che puoi trovare qui: https://www.ocinside.de/modding_en/linux_ir_irrecord_list/

Una volta conclusa tutta la procedura copia il file nome-telecomando.lirc.conf nella cartella di LIRC:

sudo cp nome-telecomando.lirc.conf /etc/lircd/lircd.conf

Riavvia il Raspberry.

Ora, lanciando il comando irw e premendo dei tasti sul tuo telecomando dovresti vedere una cosa del genere:

000000000009cb9c 00 KEY_PAUSE nome-telecomando
000000000009cb9c 01 KEY_PAUSE nome-telecomando
000000000009cb9c 02 KEY_PAUSE nome-telecomando
000000000009cb9c 03 KEY_PAUSE nome-telecomando
000000000004cb9c 00 KEY_PLAY nome-telecomando
000000000004cb9c 01 KEY_PLAY nome-telecomando
000000000004cb9c 02 KEY_PLAY nome-telecomando
000000000004cb9c 03 KEY_PLAY nome-telecomando


Questo significa che la procedura di riconoscimento dei tasti è stata completata con successo!

E ora? Ultimo passaggio, tieni duro!

Adesso dobbiamo configurare irexec in modo che, quando un tasto viene premuto, il nostro Raspberry sappia cosa fare.

Vai alla cartella home e crea (o modifica) il file .lircrc

cd ~/
nano .lircrc


Per ogni pulsante crea una sezione simile a questa

begin
 remote = nome-telecomando
 prog = irexec
 button = KEY_NEXTSONG
 config = echo “Avanti”
 repeat = 0
end


Dove nel campo button metti il nome del pulsante da configurare e nel campo config il comando che deve scattare quando il bottone viene premuto.
Salva il file e abilita l’esecuzione di irexec come servizio:

sudo systemctl enable irexec.service

Se non dovesse funzionare copia il file .lircrc in /etc/lirc con il nome irexec.lircrc

sudo cp ~/.lircrc /etc/lirc/irexec.lircrc

Riavvia il Raspberry e… fine! Ora dovrebbe rispondere ai tuoi tele-comandi 😁

Ora è la base è pronta: segui la prossima guida per preparare dei semplici script che ti permetteranno di controllare la riproduzione di Spotify con il telecomando appena configurato!

In futuro racconterò invece come creare dei semplici script che dicano a Spotify che tasto hai premuto sul telecomando, facendo in modo che risponda ai tuoi ordini.

Commenti

Post popolari in questo blog

Spotify Web Api: controllare la riproduzione musicale con semplici script

Chi sono