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).
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:
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.
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”?
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)
Hoe moet het met een onbekend afstandsbediening die ik toch wil gebruiken???
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