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()

Exercice : Télécommande
Proposer un programme en Python permettant de télécommander le robot avec la télécommande fournie.

Vous aimerez aussi...

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.