Récepteur de télécommande IR
Nous allons utiliser LIRC (Linux Infrared Remote Control)
Commencer par installer lirc
sudo apt-get install lirc liblircclient-dev
Nous allons ensuite lancer le service Lirc au démarrage en définissant le port ou est branché le capteur IR
sudo nano /boot/config.txt
Modifier la ligne (enlever le # devant dtoverlay ) :
# Uncomment this to enable the lirc-rpi module dtoverlay=lirc-rpi,gpio_in_pin=18
Modifier le fichier de configuration :
sudo nano /etc/lirc/lirc_options.conf
changer les lignes :
driver = devinput
en
driver = default
et
device = auto
en
device = /dev/lirc0
On redémarre :
sudo reboot
Pour tester la télécommande :
On arrête le service Lirc :
sudo /etc/init.d/lircd stop
Ensuite :
sudo mode2 -d /dev/lirc0
En appuyant sur les boutons de la télécommande on voit apparaitre les longueurs des pauses et des impulsions IR :
pulse 575 space 581 pulse 579 space 587 pulse 578 space 1656 pulse 581 space 1656 pulse 576 space 1655 pulse 580 space 39262 pulse 9138 space 2230 pulse 580 space 95526 pulse 9140 space 2227 pulse 585
Modifier ensuite le fichier de configuration de la télécommande :
sudo leafpad /etc/lirc/lircd.conf.d/devinput.lircd.conf
Remplacer par :
# Please make this file available to others # by sending it to lirc@bartelmus.de # # this config file was automatically generated # using lirc-0.9.0-pre1(default) on Tue Sep 19 19:32:37 2017 # # contributed by # # brand: CARMP3 # model no. of remote control: # devices being controlled by this remote: # begin remote name CARMP3 bits 16 flags SPACE_ENC|CONST_LENGTH eps 30 aeps 100 header 9102 4472 one 617 1625 zero 617 544 ptrail 616 repeat 9104 2204 pre_data_bits 16 pre_data 0xFF gap 108163 toggle_bit_mask 0x0 begin codes KEY_CHANNELDOWN 0xA25D KEY_CHANNEL 0x629D KEY_CHANNELUP 0xE21D KEY_PREVIOUS 0x22DD KEY_NEXT 0x02FD KEY_PLAYPAUSE 0xC23D KEY_KPMINUS 0xE01F KEY_KPPLUS 0xA857 KEY_FN 0x906F KEY_0 0x6897 KEY_1 0x30CF KEY_2 0x18E7 KEY_3 0x7A85 KEY_4 0x10EF KEY_5 0x38C7 KEY_6 0x5AA5 KEY_7 0x42BD KEY_8 0x4AB5 KEY_9 0x52AD KEY_FN_1 0x9867 KEY_FN_2 0xB04F end codes end remote
(Ce fichier peut être créé par la commande : irrecord -d /dev/lirc0 ~/devinput.lircd.conf )
On relance le service lirc :
sudo /etc/init.d/lircd start
On teste notre fichier de configuration de la télécommande :
irw
On installe python-lirc :
sudo apt-get install python3-lirc
On crée un fichier de configuration des touches utilisées dans notre programme et qui appellera le programme Python associé :
sudo nano /home/pi/alphabot_lirc
Par exemple :
begin prog = alphabot_IR button = KEY_2 config = AVANT repeat = 1 end begin prog = alphabot_IR button = KEY_8 config = ARRIERE repeat = 1 end begin prog = alphabot_IR button = KEY_6 config = DROITE repeat = 1 end begin prog = alphabot_IR button = KEY_4 config = GAUCHE repeat = 1 end begin prog = alphabot_IR button = KEY_9 config = ARRET repeat = 0 end
Ensuite le programme python alphabot_IR.py :
import lirc lirc.init('alphabot_IR','alphabot_lirc') while True: ircode = lirc.nextcode() print(ircode) if ircode[0] == 'ARRET': break lirc.deinit()