{"id":811,"date":"2016-02-06T23:59:09","date_gmt":"2016-02-06T22:59:09","guid":{"rendered":"http:\/\/joergnapp.de\/?p=811"},"modified":"2016-04-17T12:01:12","modified_gmt":"2016-04-17T10:01:12","slug":"infrarot-steuerung-raspberry-pi","status":"publish","type":"post","link":"https:\/\/joergnapp.de\/blog\/infrarot-steuerung-raspberry-pi\/","title":{"rendered":"Infrarot-Steuerung mit dem Raspberry Pi"},"content":{"rendered":"<p>Ein Experiment, inwieweit man den Raspberry Pi mittels Infrarot-Fernbedienung steuern kann oder gar als Universal-Fernbedienung nutzen kann.<\/p>\n<figure id=\"attachment_823\" aria-describedby=\"caption-attachment-823\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/joergnapp.de\/wp-content\/uploads\/2016\/02\/IR.jpg\" rel=\"attachment wp-att-823\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-823\" src=\"http:\/\/joergnapp.de\/wp-content\/uploads\/2016\/02\/IR-300x247.jpg\" alt=\"Der fertige Aufbau\" width=\"300\" height=\"247\" srcset=\"https:\/\/joergnapp.de\/blog\/wp-content\/uploads\/2016\/02\/IR-300x247.jpg 300w, https:\/\/joergnapp.de\/blog\/wp-content\/uploads\/2016\/02\/IR-768x633.jpg 768w, https:\/\/joergnapp.de\/blog\/wp-content\/uploads\/2016\/02\/IR.jpg 800w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-823\" class=\"wp-caption-text\">Der fertige Aufbau<\/figcaption><\/figure>\n<p><!--more--><\/p>\n<h2>1. Schritt: LIRC installieren<\/h2>\n<p>LIRC \u2013 Linux Infrared Remote Control \u2013 ist eine Bibliothek zum Zugriff auf Infrarot-Empf\u00e4nger und -Sender. Auf dem Raspberry Pi installiert man LIRC mittels<\/p>\n<pre><code>sudo apt-get install lirc<\/code><\/pre>\n<p>Vor der Nutzung m\u00fcssen noch zwei Dateien bearbeitet werden:<\/p>\n<p>Die Datei <code>\/etc\/lirc\/hardware.conf<\/code>\u00a0muss wie folgt ge\u00e4ndert werden:<\/p>\n<pre><code># \/etc\/lirc\/hardware.conf\r\n#\r\n# Arguments which will be used when launching lircd\r\nLIRCD_ARGS=\"--uinput\"\r\n\r\n# Don't start lircmd even if there seems to be a good config file\r\n# START_LIRCMD=false\r\n\r\n# Don't start irexec, even if a good config file seems to exist.\r\n# START_IREXEC=false\r\n\r\n# Try to load appropriate kernel modules\r\nLOAD_MODULES=true\r\n\r\n# Run \"lircd --driver=help\" for a list of supported drivers.\r\nDRIVER=\"default\"\r\n# usually \/dev\/lirc0 is the correct setting for systems using udev\r\nDEVICE=\"\/dev\/lirc0\"\r\nMODULES=\"lirc_rpi\"\r\n\r\n# Default configuration files for your hardware if any\r\nLIRCD_CONF=\"\"\r\nLIRCMD_CONF=\"\"<\/code><\/pre>\n<p>(Es werden also Werte <code>LIRCD_ARGS<\/code>,\u00a0<code>DRIVER<\/code>,\u00a0<code>DEVICE<\/code>\u00a0und\u00a0<code>MODULES<\/code>\u00a0ge\u00e4ndert)<\/p>\n<p>In der Datei\u00a0<code>\/boot\/config.txt<\/code>\u00a0die folgende Zeile einf\u00fcgen:<\/p>\n<pre><code>dtoverlay=lirc-rpi,gpio_in_pin=23,gpio_out_pin=22\r\n<\/code><\/pre>\n<p>Anschlie\u00dfend den Raspberry Pi einmal neustarten.<\/p>\n<h2>2. Infrarot-Empf\u00e4nger anschlie\u00dfen<\/h2>\n<p>Jetzt kann (bei ausgeschaltetem Raspberry Pi!) ein IR-Empf\u00e4nger angeschlossen werden. Ich habe einen TSOP4838 (<a href=\"https:\/\/www.conrad.de\/de\/ir-empfaenger-sonderform-axial-bedrahtet-38-khz-950-nm-vishay-tsop4838-171115.html\" target=\"_blank\">Conrad<\/a>) f\u00fcr unter 2 EUR genommen. Den Empf\u00e4nger kann man gem\u00e4\u00df dem folgenden Bild direkt an die Pins des Raspberry Pi anschlie\u00dfen. Achtung: Dabei die Anschl\u00fcsse des konkreten Modells beachten &#8211; das zugeh\u00f6rige Datenblatt hilft!<\/p>\n<p><a href=\"http:\/\/joergnapp.de\/wp-content\/uploads\/2016\/02\/ir-empfaenger.png\" rel=\"attachment wp-att-817\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-817\" src=\"http:\/\/joergnapp.de\/wp-content\/uploads\/2016\/02\/ir-empfaenger-300x223.png\" alt=\"Anschluss IR-Empf\u00e4nger\" width=\"300\" height=\"223\" srcset=\"https:\/\/joergnapp.de\/blog\/wp-content\/uploads\/2016\/02\/ir-empfaenger-300x223.png 300w, https:\/\/joergnapp.de\/blog\/wp-content\/uploads\/2016\/02\/ir-empfaenger-768x572.png 768w, https:\/\/joergnapp.de\/blog\/wp-content\/uploads\/2016\/02\/ir-empfaenger.png 941w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Der Ausgang des IR-Empf\u00e4ngers kommt in diesem Fall an GPIO 23, das ist der Wert, den wir oben in den Dateien\u00a0<code>\/etc\/modules<\/code>\u00a0und <code>\/boot\/config.txt<\/code>\u00a0eingetragen haben.<\/p>\n<p>Jetzt kann der Empf\u00e4nger ausprobiert werden. Zun\u00e4chst wird der\u00a0<code>lircd<\/code>\u00a0gestoppt, anschlie\u00dfend kann man sich die empfangenen Rohdaten anschauen:<\/p>\n<pre><code>sudo service lirc stop\r\nmode2 -d \/dev\/lirc0\r\n<\/code><\/pre>\n<p>Jetzt kann man auf\u00a0einer beliebigen Fernbedienung irgendwelche Tasten dr\u00fccken. Im Terminal m\u00fcsste nun eine Ausgabe \u00e4hnlich der folgenden erscheinen:<\/p>\n<pre><code>space 2206719\r\npulse 9085\r\nspace 4409\r\npulse 694\r\nspace 436\r\npulse 617\r\nspace 514\r\npulse 651\r\nspace 462\r\npulse 688\r\nspace 439\r\npulse 618\r\nspace 516<\/code><\/pre>\n<p>Falls nicht, ist irgendwas schief gelaufen \u2013 nochmals alles \u00fcberpr\u00fcfen, ob alles richtig verkabelt ist.<\/p>\n<p>Wenn wir irgendwas mit einer bestehenden Fernbedienung steuern wollen, ben\u00f6tigen wir eine Datei, die diese Rohdaten in Tasten &#8222;\u00fcbersetzt&#8220;. Dazu kann man in der <a href=\"http:\/\/lirc-remotes.sourceforge.net\/remotes-table.html\" target=\"_blank\">LIRC-Aufstellung<\/a> schauen, ob es bereits eine fertige Config-Datei gibt. Wenn nicht, muss man eine eigene Datei erstellen. Das tut man, indem man<\/p>\n<pre><code>irrecord -d \/dev\/lirc0 fernbedienung.conf<\/code><\/pre>\n<p>startet und den Anweisungen folgt. Die Tastenbezeichnungen sind dabei vorgegeben, diese erf\u00e4hrt man <a href=\"http:\/\/powerpi.de\/tastennamen-fuer-lirc\/\" target=\"_blank\">hier<\/a> oder \u00fcber<\/p>\n<pre><code>irrecord -l<\/code><\/pre>\n<p>Das Ganze ist ein relativ langwieriger Prozess; zum Schluss hat man jedoch eine Datei, in der alle Tasten der Fernbedienung enthalten sind. Um diese Datei verf\u00fcgbar zu machen, m\u00fcssen wir sie (nach dem Anpassen der Angaben im Kopf) an die bestehende <code>\/etc\/lirc\/lircd.conf<\/code> anh\u00e4ngen:<\/p>\n<pre><code>sudo cp fernbedienung.conf \/etc\/lirc\/lircd.conf<\/code><\/pre>\n<p>Nur beim ersten Mal sollte man die mitgelieferte <code>lircd.conf<\/code> wirklich \u00fcberschreiben, weitere Konfigurationen f\u00fcr zus\u00e4tzliche Fernbedienungen f\u00fcgt man mit<\/p>\n<pre><code>cat fernbedienung.conf | sudo tee -a \/etc\/lirc\/lircd.conf<\/code><\/pre>\n<p>hinzu.<\/p>\n<p>Jetzt kann man auch schauen, ob die Tasten korrekt erkannt werden. Der Befehl<\/p>\n<pre><code>irw<\/code><\/pre>\n<p>zeigt die jeweils an der Fernbedienung erkannten Tasten an.<\/p>\n<p>Wenn das klappt, kann der Raspberry Pi bereits ferngesteuert werden. Dazu legt man eine Datei\u00a0<code>\/etc\/lirc\/lircrc<\/code> oder \u2013 f\u00fcr den aktuellen Benutzer \u2013 eine Datei <code>~\/.lircrc<\/code> an, in der steht, was beim Tastendruck passieren soll. Ein Beispiel:<\/p>\n<pre><code>begin\r\n prog = irexec\r\n button = KEY_1\r\n config = ls -l\r\nend<\/code><\/pre>\n<p>Startet man nun<\/p>\n<pre><code>irexec<\/code><\/pre>\n<p>so wird beim Druck auf die Taste &#8222;1&#8220; der Fernbedienung das Verzeichnis aufgelistet. Nicht sehr sinnvoll, zeigt aber das Prinzip.<\/p>\n<h2>3. IR-Sendediode integrieren<\/h2>\n<p>Wir haben Infrarot-Befehle empfangen, jetzt wollen wir sie auch senden. Hierf\u00fcr brauchen wir ein paar mehr Teile, die zusammen knapp \u00fcber 1 EUR kosten:<\/p>\n<ul>\n<li data-truncate-text-character=\"120\" data-truncate-max-lines=\"2\" data-truncate-max-lines-smartphone=\"4\" data-truncate-text=\"data-truncate-text\">IR-Diode TSAL 6200 (<a href=\"https:\/\/www.conrad.de\/de\/ir-emitter-940-nm-17-5-mm-radial-bedrahtet-vishay-tsal-6200-171140.html\" target=\"_blank\">Conrad<\/a>)<\/li>\n<li data-truncate-text-character=\"120\" data-truncate-max-lines=\"2\" data-truncate-max-lines-smartphone=\"4\" data-truncate-text=\"data-truncate-text\">Transistor BC547C NPN (<a href=\"https:\/\/www.conrad.de\/de\/transistor-bipolar-diotec-bc547c-npn-gehaeuseart-to-92-i-c-100-ma-emitter-sperrspannung-u-ceo-45-v-140539.html\" target=\"_blank\">Conrad<\/a>)<\/li>\n<li data-truncate-text-character=\"120\" data-truncate-max-lines=\"2\" data-truncate-max-lines-smartphone=\"4\" data-truncate-text=\"data-truncate-text\">Widerstand 20 \u2126 (<a href=\"https:\/\/www.conrad.de\/de\/metallschicht-widerstand-20-axial-bedrahtet-0207-025-w-royalohm-mf0w4ff200ja20-1-st-1089698.html\" target=\"_blank\">Conrad<\/a>) <strong>(Achtung: vermutlich besser einen Wert zwischen 34 und 39\u00a0\u2126 w\u00e4hlen, siehe Kommentar unten!)<\/strong><\/li>\n<li data-truncate-text-character=\"120\" data-truncate-max-lines=\"2\" data-truncate-max-lines-smartphone=\"4\" data-truncate-text=\"data-truncate-text\">Widerstand 220 \u2126 (<a href=\"https:\/\/www.conrad.de\/de\/metallschicht-widerstand-220-axial-bedrahtet-0207-025-w-royalohm-mf0w4ff2200a50-1-st-1089790.html\" target=\"_blank\">Conrad<\/a>)\u00a0<strong>(Achtung: vermutlich besser einen Wert um 2,6K\u2126 w\u00e4hlen, siehe Kommentar unten!)<\/strong><\/li>\n<\/ul>\n<p>Die Schaltung nach dem folgenden Schema aufbauen:<\/p>\n<p><a href=\"http:\/\/joergnapp.de\/wp-content\/uploads\/2016\/02\/ir-sender.png\" rel=\"attachment wp-att-821\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-821\" src=\"http:\/\/joergnapp.de\/wp-content\/uploads\/2016\/02\/ir-sender-300x193.png\" alt=\"IR-Sender\" width=\"300\" height=\"193\" srcset=\"https:\/\/joergnapp.de\/blog\/wp-content\/uploads\/2016\/02\/ir-sender-300x193.png 300w, https:\/\/joergnapp.de\/blog\/wp-content\/uploads\/2016\/02\/ir-sender-768x494.png 768w, https:\/\/joergnapp.de\/blog\/wp-content\/uploads\/2016\/02\/ir-sender-1024x659.png 1024w, https:\/\/joergnapp.de\/blog\/wp-content\/uploads\/2016\/02\/ir-sender.png 1089w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Mit diesem Aufbau kann man nun mittels des Befehls<\/p>\n<pre>irsend SEND_ONCE Samsung_BN59-00861A KEY_VOLUMEUP<\/pre>\n<p>beispielsweise die &#8222;lauter&#8220;-Taste der entsprechenden Samsung-Fernbedienung an das Ger\u00e4t senden.<\/p>\n<h2>4. Fazit<\/h2>\n<p>Damit sind die Grundlagen f\u00fcr eine universelle Fernbedienung geschaffen. Mit Hilfe einer Software wie lirc_web (<a href=\"https:\/\/github.com\/alexbain\/lirc_web\" target=\"_blank\">Link<\/a>, <a href=\"http:\/\/alexba.in\/blog\/2013\/02\/23\/controlling-lirc-from-the-web\/\" target=\"_blank\">Beschreibung<\/a>) kann damit eine Web-basierte Fernbedienung erreicht werden.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ein Experiment, inwieweit man den Raspberry Pi mittels Infrarot-Fernbedienung steuern kann oder gar als Universal-Fernbedienung nutzen kann.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-811","post","type-post","status-publish","format-standard","hentry","category-allgemein"],"_links":{"self":[{"href":"https:\/\/joergnapp.de\/blog\/wp-json\/wp\/v2\/posts\/811","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/joergnapp.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/joergnapp.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/joergnapp.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/joergnapp.de\/blog\/wp-json\/wp\/v2\/comments?post=811"}],"version-history":[{"count":0,"href":"https:\/\/joergnapp.de\/blog\/wp-json\/wp\/v2\/posts\/811\/revisions"}],"wp:attachment":[{"href":"https:\/\/joergnapp.de\/blog\/wp-json\/wp\/v2\/media?parent=811"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/joergnapp.de\/blog\/wp-json\/wp\/v2\/categories?post=811"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/joergnapp.de\/blog\/wp-json\/wp\/v2\/tags?post=811"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}