Raspberry Pi sterowane pilotem

Konfiguracja pilota IR na Rasbperry Pi z Raspbianem

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.

Podłączenie odbiornika IR na płytce stykowej

Jak wspomnieliśmy wcześniej w naszym projekcie został użyty TSOP4838, którego opis znajdziecie poniżej.

Opis wyprowadzeń TSOP4838

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

Nagrywanie sekwencji

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.

Test przycisku 1 na pilocie

Skojarzenie przycisków z poleceniami

Za pomocą np. nano tworzymy plik lircrc:

nano ~/lircrc

I tworzymy konfigurację w sposób pokazany na zdjęciu:

Skojarzenie poleceń z przyciskami

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.