Lirc

Er is al veel geschreven over lirc. Waarom dan een howto? Deze behandelt de bouw van een ontvanger, het leren van een afstandbediening en het configureren.
De ontvanger is goed te bouwen voor wie met een soldeerbout kan omgaan. Het aantal onderdelen is minimaal en de kosten zitten onder de tien euro. Exclusief een afstandbediening. Elke (oude) afstandbediening kan gebruikt worden hiervoor. Veel universele afstandbedieningen kunnen meerdere apparaten bedienen door eerst met een paar knoppen te bepalen welk apparaat bediend moet worden. Als niet elk apparaat gebruikt wordt kan die functie gebruikt worden hiervoor.
Wat kun je er dan mee? Mplayer bedienen bijvoorbeeld. Met name bij muziek en films is het gebruik van een afstandbediening wel handig.

De ontvanger

De ontvanger bestaat uit een infrarood oog, een kleine spanningsregelaar, een weerstand, een condensator en een diode. Het geheel wordt via een drie aderige kabel verbonden met een DB9 connector voor de seriele poort.
  • diode 1N4148
  • weerstand 4K7 (geel-paars-rood)
  • elco 4.7uF (>10V)
  • spanningsregelaar 78L05
  • IR receiver TSOP1738
De bovenste 3 onderdelen kun je uit elke sloopprint halen, de 78L05 zullen de meeste moeten kopen. De IR receiver kan ergens uit gehaald worden maar uiteraard ook gekocht worden. De IR receiver is niet heel kritisch ook al zijn er vele typen. Het verschil is voornamelijk de frequentie maar een IR receiver van 36KHz en een afstandbediening van 38KHz werkt ook, misschien iets minder gevoelig op langere afstanden.
Als extra kan in de schakeling een led opgenomen met een weerstand van 1K5 (bruin-groen-rood) in serie geschakeld over pen 7 en 5 van de DB9 connector. Denk aan de polariteit van de led, plus aan pin 7. Deze led gaat dan branden als de schakeling aan de compoort is aangesloten EN de lirc daemon draait (die zet de spanning op pin 7).
Ik had toevallig een IR ontvanger van een HP4000 printer waar ik de inhoud uitgesloopt heb en deze schakeling ingebouwd heb en daar zat een led in.


Het schema



visuele weergave van de schakeling



78L05 pinout



pinout IR ontvanger, links tsop17xx en rechts tsop18xx



alternatieve schakeling zonder 78l05 regelaar (ongetest!)



De software

Allereerst lirc installeren:
 sudo apt-get install lirc
Er worden na de installatie wat vragen gesteld over ontvanger en afstandbediening. Geef op een "serial TV receiver" en een "custom" afstandbediening.
Test of er zowiezo signaal uit de ontvanger komt door:
 cat /dev/lirc0
Wanneer nu de afstandbediening gericht wordt op de ontvanger en er worden knoppen gedrukt dan zal er puin op het scherm moeten komen. de IR ontvanger werkt !!


configuratie

De afstandbediening. Op de link http://lirc.sourceforge.net/remotes/ staan de config files van heel veel (oude) afstandsbedieningen. Ik heb alleen lang naar een storing gezocht omdat de file van mijn sony RM-D190 cdspeler afstandbediening niet klopte.
Vind je een config van je afstandbediening kopieer deze dan naar /etc/lircd.conf (deze bestaat al maar er staat nog niks zinnigs in). In deze file staan alle toetsen van je afstandbediening met de codes erin; verder weinig interessant.

Vind je geen file of blijkt het verderop niet te werken maak dan een eigen config file. Start hiervoor het programma irrecord als volgt:
 sudo irrecord -d /dev/lirc0 pioneer
Achteraan staat de naam van de afstandbediening.
Er wordt nu gevraagd zo veel mogelijk toetsen in te drukken tot er twee regels aan code zijn ontvangen. De software probeert dan de data te ontcijferen en vast te stellen hoeveel bits de code is en wat de data is. Als dat gelukt is kun je elke toets laten leren. Geef hiervoor steeds een naam en druk de overeenkomstige toets in. Als alle toesten geleerd zijn druk je nogmaals op enter. Nu moet alleen nog een enkele toets snel achter elkaar ingedrukt worden om een repeat vast te stellen.
De file pioneer, of welke naam je opgegeven hebt wordt in de huidige directory weggeschreven. Kopieer deze file naar /etc/lircd.conf of, als er al een andere afstandbediening in staat, voeg deze toe aan de bestaande file.

De volgende stap is het koppelen van toetsen aan programma's. Dit gebeurt per user in de ~/.lircrc (file .lircrc in de home dir. van de user).
Deze file bevat, als je lekker op weg bent, vele entries zoals deze:
 # ~/.lircrc
 begin
   remote = 
   button = 
   prog = 
   config =
   repeat = 
 end
De eerste optie is alleen nodig als je meer afstandbedieningen programmeert, zet hier dan steeds de naam van de afstandsbediening (zoals in /etc/lircd.conf gedefinieerd).
De button is de naam van de button zoals in de /etc/lircd.conf staat benoemd.
Prog is het programma waar je de functie aan wilt koppelen. Dit programma moet dan wel lirc ondersteunen. Soms is dat direct (mplayer) en soms via een plugin (xmms). Ook kan het programma irexec gebruikt worden. Er wordt dan een commando naar keuze uitgevoerd. irexec moet dan wel aktief zijn (gestart of daemon).
config is het commando dat uitgevoerd wordt. Dit kan een commando van het bewuste programma zijn of een shell commando als prog=irexec. De commando's moeten per programma uitgezocht worden. Zo geeft mplayer alle commando's weer door: mplayer -input cmdlist
Deze commando's zijn bijvoorbeeld: pause, stop, quit, volume 1, volume -1, pt_step 1, seek 10.

Een voorbeeld:
 # ~/.lircrc
 begin
   remote = pioneer
   button = pause
   prog = mplayer
   config = pause
   repeat = 0
 end
 begin
   remote = pioneer
   button = volplus
   prog = mplayer
   config = volume 1
   repeat = 1
 end
 begin
   remote = pioneer
   button = fader
   prog = irexec
   config = gnome-terminal
   repeat = 0
 end
De pause toets zal nu voor een onderbreking zorgen als mplayer iets afspeelt en de volume plus toets zal het volume doen toenemen. Als irexec aktief is dan zal op de "fader" button drukken een nieuwe terminal openen.
Bedenk wel dat na elke wijziging in de file ~/.lircrc de lirc daemon opnieuw gestart moet worden. In ubuntu gaat dat als volgt:
  sudo /etc/init.d/lirc restart


troubleshooting

Werkt er niets controleer dan nogmaals of de ir ontvanger wel wat binnen krijgt. Is dat niet zo dan is er iets mis met de ontvanger (of de afstandbediening doet het niet). Komt er wel wat binnen dan moet de config van de afstandbediening in /etc/lircd.conf onjuist zijn. Controleer of /etc/lircd.conf wel echt een link is naar /etc/lirc/lircd.conf. De laatste file is de echte config en de eerste is slechts een softlink. Dit betekent dat als de echte config in een harde file /etc/lircd.conf staat en de file /etc/lirc/lircd.conf geen goede config bevat het niet gaat werken.


links

www.lirc.org lirc homepage
http://lirc.sourceforge.net/remotes/ ondersteunde afstandbedieningen





Geef hieronder uw commentaar, mening of aanvullingen op deze pagina en lees de eventuele meldingen van andere lezers.

datum: 2009-02-11 21:57:08     naam: sjaak    
Met het commando: mode2 -d /dev/lirc0 kan getest worden of de lircd daemon zowiezo data ontvangt van de ontvanger en de afstandbediening.

Met het commando: irw kan getest worden of alle knoppen werken en hoe ze heten (nadat de lircd.conf gemaakt is) zonder een .lircrc te maken en ze daarmee al aan applicaties te hangen.

naam:
email:
spamcheck: 1999+1=...
opmerking:
   











Website door Wouter Barendsen, 2005-2016