Wielu z nas znajduje się w posiadaniu starego pilota od TV lub magnetowidu. Teoretycznie taki pilot nie przyda się do niczego. Teoretycznie, bo możemy go wykorzystac np. z naszym Raspberry Pi do uruchamiania poleceń.
Oprócz Raspberry Pi będziemy potrzebowali oczywiście pilota, do tego przydadzą się kabelki i płyka stykowa.
Podłączenie odbiornika IR
Do odbierania sygnałów posłuży nam układ TSOP4838, sterowany jednym pinem GPIO. Do Raspberry podłączamy go według poniższego rysunku.
Jak wspomnieliśmy wcześniej w naszym projekcie został użyty TSOP4838, którego opis znajdziecie poniżej.
Należy zwrócić szczególną uwagę na numery pinów, aby przez pomyłkę nie podłączyć odwrotnie np. zasilania, w takim przypadku istnieje duże ryzyko uszkodzenia odbiornika.
Po podłączeniu odbiornika uruchamiamy Raspberry i czekamy aż system się załaduje. Nożkę 1 (OUT) podłączamy do pinu 12 (GPIO18), pin 2 podłączamy do GND, a pin 3 do pinu 3.3V
Uruchomienie odbiornika IR
Żeby móc uruchomić odbiornik podczerwieni potrzebujemy w pliku /boot/config.txt dodać linijkę:
dtoverlay=lirc-rpi
i uruchomić ponownie Raspberry (reboot
).
Nasz plik /etc/lirc/hardware.conf
powinien wyglądać następująco:
Możemy go wyedytować poleceniem: nano /etc/lirc/hardware.conf
Teraz możemy zrestartować LIRCa…
sudo /etc/init.d/lirc restart
Testowanie odbiornika podczerwieni:
sudo /etc/init.d/lirc stop
mode2 -d /dev/lirc0
Po naciśnięciu przycisków na pilocie program powinien wypisywać kody odczytane z odbiornika. Brak odpowiedzi programu sugeruje, że nasze połączenie nie jest w porządku, spradź jeszcze raz kable.
Nadawanie nazw przyciskom
Zatrzymujemy LIRCa (jeżeli nie zrobiliśmy tego wcześniej):
sudo /etc/init.d/lirc stop
I w kolejnym punkcie przechodzimy do przypisania przyciskom nazw. Zostaną one zapisane w pliku lircd.conf
w katalogu domowym.
irrecord -d /dev/lirc0 ~/lircd.conf --disable-namespace
Program najpier poinformuje nas, że powinnismy przez pewien czas naciskac rózne przyciski na pilocie. Ma to na celu wykrycie sposobu, w jakim dany pilot nadaje.
Następnie zostaniemy poproszeni o wpisanie nazwy przycisku i naciśnięcie odpowiadającego mu przycisku na pilocie. Powtarzamy ten krok aż nadamy wszystkim intersujących nas przyciskom funkcje.
Teraz zrobimy kopię starej konfiguracji i utworzoną krok wcześniej konfigurację skopiujemy we właściwe miejsce:
sudo cp /etc/lirc/lircd.conf /etc/lirc/lircd.conf.bak
sudo cp ~/lircd.conf /etc/lirc/lircd.conf
Uruchamiamy LIRCa, który odczytuje dane z odbiornika IR:
sudo /etc/init.d/lirc start
…i sprawdzamy czy wszystko działa jak należy. Uruchamiamy program irw
Wciskamy przypisane przyciski i sprawdzamy czy pokazują się ich nazwy.
Skojarzenie przycisków z poleceniami
Za pomocą np. nano tworzymy plik lircrc
:
nano ~/lircrc
I tworzymy konfigurację w sposób pokazany na zdjęciu:
Takie same sekcje tworzymy dla każdego przycisku, który chemy przypisać.
"prog = irexec" zostawiamy, za "button = " dopisujemy nazwę przycisku którą ustawiliśmy. za "config = " wpisujemy nazwę programu który chcemy uruchomić.
Przykład na powyższym zdjęciu dla przycisku, któremu wcześniej nadaliśmy nazwę power
przypisaliśmy komendę sudo poweroff
. Czyli, jak naciśniemy power
na pilocie na Raspberry zostanie wywołane sudo poweroff
.
Pozostało nam tylko przenieć konfigurację:
sudo mv ~/lircrc /etc/lirc/lircrc
I na końcu pliku /etc/rc.local
dopisać:
irexec &
Po następnym restarcie, nasze Raspberry będzie reagowało na polecenia wydane pilotem, zgodnie z tym co przygotowaliśmy.