Raspberry Pi als infrarood afstandsbediening gebruiken (LIRC)

Met behulp van LIRC (Linux Infrared Remote Control) is het mogelijk om infrarood signalen te verzenden en ontvangen met je Raspberry Pi (RPI). Hiervoor heb je naast de LIRC applicatie ook enkele componenten nodig, hieronder leggen we stap voor stap uit hoe je LIRC moet installeren onder Raspbian Stretch en hoe je zelf een IR transmitter maakt.

Na het doorlopen van de stappen kun je bijna ieder infrarood apparaat aansturen vanaf je Raspberry Pi.

Gebruikte componenten

IR Emitter LED 940 nm
NPN Transistor BC547
10K weerstand
Breadboard
3x Dupont verbindingskabels Male/Female

De totale kosten van de gebruikte componenten ligt rond de € 3,00.

Raspberry Pi Zero, Raspberry Pi 2, Raspberry Pi 3
Raspbian Stretch (2017-11-29 kernel 4.9)

Aansluitschema

Het is mogelijk om een IR LED direct aan te sluiten op een GPIO pin van de Raspberry Pi. Wanneer je dit doet dan zal het signaal dat wordt verstuurd zeer zwak zijn en het apparaat dat je wilt bedienen niet bereiken. Met behulp van een transistor (NPN BC547) kunnen we het bereik vergroten.

Sluit de anode (lange pin) van de IR LED aan op RPI 3.3v (pin #1), de cathode (korte pin) sluit je aan op de emitter pin van de transistor. Dat is de linker pin als je de transistor met de vlakke kant naar je toe houd.

De middelste pin (base) van de transistor sluit je via een 10K weerstand aan op RPI GPIO 22 (pin #15).

De rechter pin van de transistor (collector) verbind je direct op de RPI GND (pin #6).

infrarood sensor lirc raspberry pi raspbian

LIRC installeren onder Raspbian Stretch

Met behulp van de onderstaande stappen gaan we LIRC installeren onder Raspbian. Let op deze stappen werken alleen onder Raspbian Stretch, de op dit moment meest recente versie van Raspbian.

Zorg ervoor dat je Raspberry Pi volledig up te date is:

sudo apt-get update; sudo apt-get upgrade

1. Installeer LIRC met apt.

sudo apt-get install lirc

2. Open het bestand /etc/modules met de nano editor

sudo nano /etc/modules

2A. Voeg de onderstaande twee regels toe aan het bestand.

lirc_dev
lirc_rpi gpio_out_pin=22

Sluit de nano editor af en bewaar de wijzigingen (control X, Y, enter).

3. Open het bestand /etc/lirc/hardware.conf met de nano editor

sudo nano /etc/lirc/hardware.conf

3A. Voeg de onderstaande regels toe aan het bestand.

LIRCD_ARGS="--uinput --listen"
LOAD_MODULES=true
DRIVER="default"
DEVICE="/dev/lirc0"
MODULES="lirc_rpi"

4. Open het bestand /boot/config.txt met de nano editor

sudo nano /boot/config.txt

4A. Wijzig de regel dtoverlay=lirc-rpi naar:

dtoverlay=lirc-rpi,gpio_out_pin=22

5. Open het bestand /etc/lirc/lirc_options.conf met de nano editor

sudo nano /etc/lirc/lirc_options.conf

5A. Wijzig de volgende regels:

driver    = default
device    = /dev/lirc0

6. Stop en herstart LIRC

sudo /etc/init.d/lircd stop
sudo /etc/init.d/lircd start

7. Controleer of LIRC is gestart:

sudo /etc/init.d/lircd status

In je terminal venster moet een dergelijk melding verschijnen:

infrarood sensor lirc raspberry pi raspbian

Verschijnt er ‘Failed’ controleer dan alle bovenstaande stappen!

8. Herstart de Raspberry Pi:

sudo reboot -h 0

Commando’s versturen via LIRC

Nadat we de IR transmitter hebben aangesloten en de LIRC software hebben geïnstalleerd kunnen we infrarood signalen gaan verzenden. Als voorbeeld gaan we een Philips TV aansturen. Maar dat kan ook een ander apparaat of merk zijn, daarover later meer.

De infrarood commando’s die je wilt gebruiken dien toe te voegen aan het LIRC configuratie bestand /etc/lirc/lircd.conf.
Voor een Philips TV kunnen de onderstaande basisset codes worden toegevoegd:

begin remote

  name  PHILIPS_TV
  bits            6
  flags SHIFT_ENC
  eps            20
  aeps            0

  header          0     0
  one           940   840
  zero          940   840
  ptrail          0
  plead         940
  foot            0     0
  repeat          0     0
  pre_data_bits   7
  pre_data       0x40
  post_data_bits  0
  post_data      0x0
  pre             0     0
  post            0     0
  gap          90000
  repeat_bit      2

      begin codes
          KEY_1                    0x0000000000000001 
          KEY_2                    0x0000000000000002  
          KEY_3                    0x0000000000000003 
          KEY_4                    0x0000000000000004 
          KEY_5                    0x0000000000000005 
          KEY_6                    0x0000000000000006 
          KEY_7                    0x0000000000000007  
          KEY_8                    0x0000000000000008  
          KEY_9                    0x0000000000000009  
          KEY_0                    0x0000000000000000   
          A/V                      0x0000000000000038
          TEXT_TV                  0x000000000000003C
          KEY_TV                   0x000000000000003F   
          KEY_POWER                0x000000000000000C   
          KEY_102ND                0x000000000000000A   
          KEY_VOLUMEUP             0x0000000000000010   
          KEY_VOLUMEDOWN           0x0000000000000011  
          KEY_CHANNELUP            0x0000000000000020   
          KEY_CHANNELDOWN          0x0000000000000021      
          KEY_MUTE                 0x000000000000000D      
      end codes

end remote

Open het LIRC configuratie bestand met de nano editor voeg het bovenstaande toe.

sudo nano /etc/lirc/lircd.conf

Herstart hierna LIRC:

sudo /etc/init.d/lircd restart

De configuratie is nu door LIRC ingeladen, tijd om infrarood commando’s te gaan verzenden.

Je kunt meerdere remote configs toevoegen aan het lircd.conf bestand, zorg er wel voor dat ieder config blok start met begin remote en eindigt met end remote

Commando’s verzenden via LIRC

De commando die zijn gedefineerd in de config kunnen we met het irsend SEND_ONCE commando uitvoeren.

irsend SEND_ONCE [device-name] [commando]

Bij [device-name] geef je de naam op van de remote die je heb toegevoegd in het config bestand bij de parameter name in dit geval dus PHILIPS_TV.

[commando] is het label van de commando’s tussen begin codes en end codes is opgegeven.

Als we het volume van de Philips TV harder willen zetten gebruiken we commando: KEY_VOLUMEUP

irsend SEND_ONCE PHILIPS_TV KEY_VOLUMEUP

Je kunt ook meerdere commando’s achter elkaar uitvoeren,voorbeeld: Teletext inschakelen een pagina 101 openen:

irsend SEND_ONCE PHILIPS_TV TEXT_TV KEY_1 KEY_0 KEY_1

Tussen de verschillende commando’s wordt automatisch een pauze toegevoegd.

Database met LIRC codes voor apparaten

Voor veel apparaten zijn kant en klare configuratie bestanden beschikbaar. Deze bestanden kun je terugvinden in de LIRC database. Vaak zijn de infrarood commando’s per merk het zelfde voor verschillende apparaten, zoek dus niet op type maar op merk. Per merk zijn er verschillende configuratie bestanden beschikbaar, het is even uitproberen welke het beste werkt met een bepaald apparaat.

KPN Mediabox LIRC codes

Maak je gebruik van een KPN of Telfort media box (Motorola, Arcadyan of Arris) voor digitale TV dan kun je de LIRC config hier downloaden. Alle knoppen van de afstandsbediening staan in het configuratie bestand.

4 gedachten over “Raspberry Pi als infrarood afstandsbediening gebruiken (LIRC)”

  1. Wat moet je doen als je de melding “transmission failed
    Error running command: Input/output error” krijgt als je “irsend SEND_ONCE remote KEY_1”?

    Beantwoorden
  2. Ik wil een afstandsbediening maken voor mijn moeder die ik kan bedienen vanuit een andere locatie via internet.
    Kan ik de raspberry ook aansturen vanaf het internet?

    Welke versie van raspberry kan ik het best nemen (ben een leek qua versies)

    Beantwoorden
  3. Ik wil een afstandsbediening maken voor mijn airco’s
    zodat ik die via wifi kan uitschakelen type airco alaska
    omdat ze nogal is een keer vergeten uit te zetten als met
    weg gaat.
    A.v.o.b
    Arie

    Beantwoorden

Plaats een reactie