Bauanleitung RaspberryPi - openv/openv GitHub Wiki

Ich hatte mir die anderen Bauanleitungen alle angeschaut und immer wieder überlegt, ob man das nicht alles auch direkt mit den Raspberry Pi PINs umsetzen kann. Strom und RX,TX sind da. Aus meiner Sicht war der Schaltplan von Reiner Ziegler für einen LAN-Ethernet-Adapter am besten geeignet ihn auf den UART vom Raspberry Pi zu adaptieren. Gesagt getan und es funktioniert. Im Folgenden mein Schaltplan, welcher im Original von Reiner Ziegler stammt. RaspberryPiOptoLink.png(file:RaspberryPiOptoLink.png) Ich hab die Stromversorgung (die kommt jetzt vom Pi) entfernt und dann alles mit den entsprechenden PINs verknüpft. Etwas weiteres was ich gelernt habe ist, man sollte wirklich exakt die ausgewiesen IR-Sender (SFH487-2) und -Empfänger (SFH309FA) verwenden. Alle anderen funktionierten bei mir nicht. Ich hatte mich von einem Verkäufer die Variante des SFH309FA ohne schwarzes Gehäuse aufzuschwatzen lassen. Schlechte Idee. Die grün leuchtende LED der Heizung hat das IR-Signal überdeckt. Für den SFH309FA hatte ich erst eine Variante mit einem breiterem Streuwinkel. Da kam dann zu wenig IR bei der Heizung an. Die angegeben Elemente sind wirklich die die man braucht.

Um das dann alles auf eine Platine zu bringen und richtig anzuordnen, habe ich mich dann weitestgehend wieder an die Bauanleitungen für den LAN-Ethernet-Adapter gehalten. Die hat gut funktioniert. Später hat mir dann ein Kumpel aus einem Plastikblock eine Front mit eine "V" und den passenden Löchern für die Sender und Empfänger gefräst. Das ist auch eine feine Sache.

Ergänzung durch HaukeDE: Statt der SFH487-2, welche nicht mehr produziert wird, habe ich erfolgreich eine IRL81A mit 100Ω Vorwiderstand eingesetzt. Die IRL81A hat einen deutlich anderen Formfaktor (Flaches Gehäuse mit seitlicher Abstrahlung), der für schmale Gehäuse aber sehr nützlich ist. Meine Umsetzung, die sich im Wesentlichen an diese Anleitung hält, ist in meinem Blog zu finden. Dort auch die Beschreibung, wie ich mit Heißkleber das "V" gebastelt habe.


An dieser Stelle eine kleine Ergänzung: Ein „normaler“ Schaltplan sieht so aus: Raspberry_Pi_Streifenplatine.png(@file:Raspberry_Pi_Streifenplatine.pdf) Folgende Bauteile werden benötigt:

  • 3 x Widerstand 10 kΩ
  • 1 x Widerstand 180 Ω
  • 1 x Kondensator 100 nF
  • 1 x Elektrolyt-Kondensator 100 µF
  • 1 x Transistor 2 N 3906 (hier gibt es verschiedene Versionen, das betrifft vermutlich aber nur die Gehäuseform? Die genaue Bezeichnung des hier Verwendeten ist „2 N 3906 BU TO92 FSC“)
  • 1 x Transistor BC 547 B
  • 1 x IR-Emitter SFH 487-2
  • 1 x Phototransistor SFH 309 FA

Dazu eine Lochrasterplatine. Durchgezogene Streifen bieten sich an, der Schaltplan ist so gezeichnet, dass er 1:1 auf eine Lochrasterplatine mit durchgezogenen Kupferstreifen gelötet werden kann – man muss nur noch die Unterbrechungen an der richtigen Stelle machen. Wenn man die Bauteile richtig anordnet, dann passt die Platine hinterher auch in das hier oft verwendete Gehäuse Teco 10006. Das sieht dann so aus: Rasperry_Pi_Adapter_Streifenplatine.jpg


Auf dem Raspberry Pi (mit Raspbian) hab ich dann vcontrold installiert und ein kleines Ruby-Skript geschrieben, das mir in 5min-Intervallen alle Temperaturen ausliest. Mit gnuplot lasse ich mir am Ende des Tages eine schönes Diagramm erstellen, auf dass ich dann über den Webserver des Raspberry Pi von überall zugreifen kann.

Bei der vcontrold Installation Anleitung kann man den gesamten Abschnitt 4 (Schnittstelle prüfen) weglassen. Vorab: Die serielle Schnittstelle in raspi-config aktivieren, sonst geht die Kommunikation nicht. Ob die Schnittstelle aktiviert wurde sieht man in der Ausgabe von ls /dev/serial*. Es muss serial0 zu sehen sein.

Raspberry 1 & 2 sowie Raspberry Zero (OHNE W): Die serielle Schnittstelle ist immer: /dev/ttyAMA0

Zusätzlich sollte man noch:

  • in der Datei "/boot/cmdline.txt" den Eintrag "console=ttyAMA0,115200" entfernen.
  • in der Datei "/etc/inittab" alle Zeilen, die "ttyAMA0" enthalten, entfernen.

Bei einigen Modellen des Raspberry Pi wurde die Schnittstellenzuordnung geändert; insbesondere dann, wenn Bluetooth im RPi verfügbar ist. Dieser Wikieintrag im FHEM-Forum enthält unter Umständen hilfreiche Hinweise (https://wiki.fhem.de/wiki/Raspberry_Pi_3:_GPIO-Port_Module_und_Bluetooth).

Und hier der Anfang von meiner /etc/vcontrold/vcontrold.xml:

<serial><tty>/dev/ttyAMA0</tty></serial>
<net><port>3002</port>
<allow ip='127.0.0.1'/><allow ip='192.168.0.0/16'/>
</net>
<logging><file>/var/log/vcontrold.log</file>
<syslog>n</syslog>
<debug>n</debug>
</logging>
<device ID="20CB"/>

Raspberry 3 (Linux raspberrypi 4.4.38-v7+ #938) sowie Raspberry Zero W: Eigentlich müsste nach wie vor die Schnittstelle ttyAMA0 genutzt werden. Jedoch wurde, da das Bluetoothmodul hinzukam, diese Schnittstelle durch Bluetooth belegt und eine weitere Schnittstelle ttyS0 eingeführt. Dieser wiederum ist jedoch kein vollwertiger UART, sondern weist nur einen begrenzten Funktionsumfang auf (ich konnte lediglich die periodischen "0x05" der Vitotronic empfangen - heimtückischer Fehler!). Genau dieser begrenzte Funktionsumfang wird bei der Nutzung des Moduls nun zum Problem. Um eine plattformübergreifende Entwicklung zu ermöglichen wurden die Aliases /dev/serial0 und /dev/serial1 eingeführt. Damit diese genutzt werden können, sind einige Anpassungen notwendig.

Siehe auch http://spellfoundry.com/2016/05/29/configuring-gpio-serial-port-raspbian-jessie-including-pi-3/

Zusammengefasst:

  • /dev/ttyAMA0 verweist jetzt standardmäßig auf die integrierte Bluetooth-Schnittstelle.
  • Unter /dev/ttyS0 steht dafür ein nicht vollwertiger “mini uart” zur Verfügung.

Die Lösung bestand darin Bluetooth zu deaktivieren und die alte, vollwertigen serielle Schnittstelle zu aktivieren. Hierfür muss folgende Zeile in /boot/config.txt eingefügt werden:

dtoverlay=pi3-miniuart-bt

Mit dem Aufruf

ls -l /dev

kontrollieren, ob der neue Alias /dev/serial0 nun auf /dev/ttyAMA0 verweist, wo nun die alte serielle Schnittstelle zur Verfügung steht. Folgende Zeile sollte aufgeführt werden:

lrwxrwxrwx 1 root root 7 Jan 1 21:18 serial0 -> ttyAMA0

Anschließend wie bei allen anderen Raspberries:

  • in der Datei "/boot/cmdline.xt" den Eintrag "console=ttyAMA0,115200" oder "console=serial0,115200" entfernen.
  • in der Datei "/etc/inittab" (sofern vorhanden) alle Zeilen, die "ttyAMA0" oder "serial0" enthalten, entfernen.

Der neue Alias sollte fortan in /etc/vcontrold/vcontrold.xml genutzt werden:

<serial><tty>**/dev/serial0**</tty></serial>
<net><port>3002</port><allow ip='127.0.0.1'/><allow ip='192.168.0.0/16'/></net>
<logging><file>/var/log/vcontrold.log</file><syslog>n</syslog><debug>n</debug></logging>
<device ID="20CB"/></config>
⚠️ **GitHub.com Fallback** ⚠️