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 ist da. RX,TX ist da. Alles 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
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.



An dieser Stelle eine kleine Ergänzung: Ein „normaler“ Schaltplan sieht so aus:
Raspberry_Pi_Streifenplatine.png
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.

Raspberry 1 & 2:
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.

Und hier der Anfang von meiner /etc/vcontrold/vcontrold.xml :
<?xml version="1.0"?><V-Control xmlns:vcontrol="http://www.openv.de/vcontrol"><unix><config><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"/></config></unix>[...]
Raspberry 3 (Linux raspberrypi 4.4.38-v7+ #938):
Beim Raspberry 3 hat sich die serielle Schnittstelle geändert, da das Bluetoothmodul hinzukam:
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 neuer, nicht vollwertiger “mini uart” zur Verfügung.
  • Um die plattformübergreifende Entwicklung zu ermöglichen wurden die Aliases /dev/serial0 und /dev/serial1 eingeführt.

Mit dem neuen "mini uart" war es mir leider nicht möglich Befehle an eine Vitotronic zu senden, ich konnte lediglich die periodischen "0x05" der Vitotronic empfangen - heimtückischer Fehler! 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:
<?xml version="1.0"?><V-Control xmlns:vcontrol="http://www.openv.de/vcontrol"><unix><config><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></unix>[...]