Zdalne sterowanie przez podczerwień

 

Zdalne sterowanie (LIRC)



Lirc jest to biblioteka służąca do obsługi zdalnego sterowania działającego w zakresie podczerwieni. W celu przetestowania tej biblioteki do wyprowadzenia GPIO Raspberrego należy dołączyć odbiornik podczerwieni. Ja do testów wykorzystałem zaprojektowaną przez siebie płytkę P130502 „frontanel”. Następnie należy tą bibliotekę zainstalować poleceniem:
sudo apt-get install lirc

Po poprawnym zainstalowaniu i skonfigurowaniu pakietu lirc wraz z zależnościami należy dokonać modyfikacji pliku /etc/modules dodając następujące linie:
lirc_dev
lirc_rpi gpio_in_pin=18 gpio_out_pin=8

Należy zwrócić uwagę na fakt, że aby wyedytować powyższy plik edytor powinien zostać uruchomiony z prawami root-a czyli np:
sudo nano /etc/modules

Plik /etc/lirc/hardware.conf powinien wyglądać w następujący sposób:

########################################################
# /etc/lirc/hardware.conf
#
# Arguments which will be used when launching lircd
LIRCD_ARGS=”–uinput”

# Don’t start lircmd even if there seems to be a good config file
# START_LIRCMD=false

# Don’t start irexec, even if a good config file seems to exist.
# START_IREXEC=false

# Try to load appropriate kernel modules
LOAD_MODULES=true

# Run „lircd –driver=help” for a list of supported drivers.
DRIVER=”default”
# usually /dev/lirc0 is the correct setting for systems using udev
DEVICE=”/dev/lirc0″
MODULES=”lirc_rpi”

# Default configuration files for your hardware if any
LIRCD_CONF=””
LIRCMD_CONF=””
########################################################

Po restarcie komputerka Raspberry Pi możemy wystartować usługę wydając polecenie:
sudo /etc/init.d/lirc stop
sudo /etc/init.d/lirc start

Aby sprawdzić czy nasza usługa wystartowała prawidłowo wydajemy polecenie:
dmesg | grep lirc

Odpowiedź powinna być podobna do poniższej:
[   15.036008] lirc_dev: IR Remote Control driver registered, major 248
[   15.137018] lirc_rpi: module is from the staging directory, the quality is unknown, you have been warned.
[   15.147286] lirc_rpi lirc_rpi.0: lirc_dev: driver lirc_rpi registered at minor = 0
[   15.150384] lirc_rpi: driver registered!
[   16.106830] lirc_rpi: auto-detected active low receiver on GPIO pin 18

Teraz możemy sprawdzić odbiór danych z dowolnego pilota. W terminalu wpisujemy komendę zatrzymującą usługę:
sudo /etc/init.d/lirc stop

Uruchamiamy program:
mode2 -d /dev/lirc0

Naciskamy dowolny przycisk na pilocie zdalnego sterowania. W oknie terminala powinniśmy zobaczyć coś podobnego:
space 16777215
pulse 925
space 848
pulse 1809
space 837
pulse 903
space 867
pulse 928
space 848
pulse 918
space 844
pulse 926
space 843
pulse 899
space 1749

Kolejnym elementem konfiguracyjnym jest plik lircd.conf.
Ja zmieniłem nazwę pliku lircd.conf na dowolnie inną np: lircd.old zaś nazwę pliku zawierającego komendy systemu RC5 a opisany jako Philips-29PT5507 zmieniłem na lircd.conf. Po wystartowaniu usługi lirc i wydaniu komendy:
irw

możemy obserwować na ekranie terminala zdekodowane komendy:
0000000000001003 00 3 Philips-29PT5507
0000000000001003 01 3 Philips-29PT5507
0000000000001003 00 3 Philips-29PT5507
0000000000001003 01 3 Philips-29PT5507
000000000000100c 00 power Philips-29PT5507
000000000000100c 00 power Philips-29PT5507
0000000000001020 00 prog_up Philips-29PT5507
0000000000001020 01 prog_up Philips-29PT5507
0000000000001021 00 prog_down Philips-29PT5507
0000000000001024 00 unknown_5 Philips-29PT5507
0000000000001024 01 unknown_5 Philips-29PT5507
0000000000001011 00 vol_down Philips-29PT5507
0000000000001010 00 vol_up Philips-29PT5507

Świadczy to o prawidłowym działaniu odbiornika podczerwieni oraz dekodowaniu rozkazów.

copyright: systemypomiarowe.pl