GPIO Pin Zuordnung

Auf der Suche nach einer einfachen Lösung um die Raspberry PI GPIO Pins direkt aus perl heraus anzusprechen fand ich das wiringPi Framework von Gordon, für das Gadgetoid einen perl Wrapper wiringPi-Perl erstellt hat. Gordon hat auch eine sehr nützliche PIN Zuordnung erstellt, die ich als Vorlage für die unten gezeigte Tabelle diente. Ich habe sie lediglich um eine Zuordnung der Adafruit T-Cobbler Pins ergänzt.
PIN Mapping

Sensoren für den Raspberry Pi

Angeregt von Nest® dem lernenden Thermostat möchte ich die Haussteuerungsfähigkeiten des Raspberry Pi mit ein paar Sensoren deutlich verbessern.

Temperature and humidity sensor
Wird eingesetzt um Temperatur und Luftfeuchtigkeit eines Raumes zu messen und das Heizungsventil entsprechend zu regeln. Der Grund warum hier der DHT22 und nicht der preiswertere DHT11 zum Einsatz kommt, ist die viel höhere Präzision, zum Beispiel für die Temperatur: ±0,5°C Abweichung (DHT22) gegenüber ±2°C Abweichung (DHT11). Nach meinem Verständnis sind ±2°C für die Temperatursteuerung in einem bewohnten Raum nicht akzeptabel.
Temp/Hum Sensor
Temperatur/Luftfeuchte Sensor (auf der rechten Seite) bereits komplett verkabelt.

PIR
Der Raspberry Pi soll erkennen ob sich Personen in einem Raum aufhalten und die Temperatur entsprechend steuern. Über die Zeit soll er in der Lage sein sich einen Zeitplan aufzubauen und ihn auch zu pflegen. Ich benutze diesen Sensor von adafruit.com
PIR Sensor

IR Abstand / Annäherung
Mit diesem Sensor sollte der Server in der Lage sein eine Person in der Nähe zu erkennen und das Userinterface zur Verfügung zu stellen. Zunächst einmal werde ich mit einem Sharp GP2Y0A21YK0F arbeiten und vielleicht später zu einer Eigenbau Lösung wechseln.
IR Distance Sensor

Adafruit T-Cobbler

Eine der besten Eigenschaften des Raspberry Pi ist für mich die Erweiterbarkeit über die GPIO Pins. Ich benutze normalerweise ein Gehäuse für meinen Raspberry. Während das eine gute Möglichkeit ist um Kurzschlüsse oder ähnliches zu verhindern, so gibt es doch Probleme beim Zugriff auf die GPIO Pins. Das Gehäuse jedes Mal zu zerlegen kommt für mich nicht in Betracht, da die Fertigungstoleranzen sehr niedrig sind und das Gehäuse sehr empfindlich auf Druck- oder Zugkräfte reagiert.  Zum Glück stolperte ich über die für mich perfekte Lösung auf der Webseite von adafruit.com. Es handelt sich dabei um den sogenannten Adafruit Pi T-Cobbler Breakout Kit for Raspberry Pi.

Wie die Beschreibung schon sagt, kommt der T-Cobbler als Bausatz.
Adafruit T-Cobbler Kit

Dieser enthält ein 26er Flachkabel, eine entsprechende Platine, eine Buchse für 26er Flachbandkabel und die benötigten Header Pins.
Adafruit T-Cobbler Kit unpacked

Wenn man die Platine näher betrachtet, sieht man wie schön die Beschriftung der GPIO Pins hier gelöst wurde. Für mich ist diese bessere Übersicht der Hauptvorteil des T-Cobblers im Vergleich zum Standard Verbinder von Adafruit. Sogar die Raspberry Pi Generationsunterschiede [PIN #21 (v1) / PIN #27 (v2)] sind deutlich zu erkennen.
T-Cobbler PCB

Um die Buchse für das Flachbandkabel beim Löten in der richtigen Position zu halten habe ich es mit etwas Klebeband an der Platine befestigt.
T-Cobbler soldering

Dann wurden die Header Pins auf dem Steckbrett verteilt und die Platine daran festgelötet.
T-Cobbler soldering 2

Abschließend noch einmal (hoffentlich zum letzten Mal) das Gehäuse zerlegt, die GPIO Pins auf dem Raspberry Pi mit dem T-Cobbler durch das Flachbandkabel verbunden und das Ganze dann auf das Experimentierbrett gesteckt.
Raspberry Pi Breadboard

Raspberry Pi als Server für die Haussteuerung

Endlich ist er da, mein Raspberry Pi. Ich möchte ihn als Server für den perl basierten Hausautomatisierungsserver fhem nutzenhttp://fhem.de/fhem.html.

Dafür habe ich meinen Pi mit einem Mini USB WLAN Stick und einem CUL Device von Busware http://busware.de/tiki-index.php?page=CUL mit der culfw Firmware http://culfw.de/culfw.html erweitert
Raspberry Pi overview

Für die Installation des fhem Servers habe ich einfach die Anleitung unter http://www.fhemwiki.de/wiki/Raspberry_Pi befolgt.

Die Installation der culfw Firmware war etwas schwieriger, aber ließ sich mit den folgenden Schritten doch erfolgreich bewerkstelligen.

Die Firmware herunterladen
sudo wget http://culfw.de/culfw-1.46.tar.gz
entpacken
sudo tar -zxvf culfw-1.46.tar.gz

in das Device Verzeichnis wechseln (e.g. Devices/CUL)
cd /home/pi/CUL_VER_146/culfw/Devices/CUL
das Paket dfu-programmer installieren
sudo apt-get install dfu-programmer
Das Device mit gedrücktem Taster in die USB Buchse stecken
Abschließend
sudo make usbprogram_v3 V3 bei der Verwendung eines CUL V3
ausführen.
Danach sollte ein neues USB Gerät auftauchen: „03eb:204b Atmel Corp.“. Falls nicht das Gerät noch einmal einstecken, aber diesmal ohne den Taster gedrückt zu halten.

Mittlerweile läuft der Server seit einigen Tagen, tut aber noch nichts anders als den FS20 Verkehr abzuhören und zu protokollieren.

T4F4C00B600F7
T430D00362601
K51913145FC
T52396702FE
T52396782FD
K7114323738
T52396782FD

Ich benutze den S300TH Temperatur/Luftfeuchte Sensor im Arbeitszimmer für Test Zwecke, außerdem habe ich mir einen FHT80TF-2 Tür/Fenster Sensor und einen FHT8v elektrischen Ventilantrieb als Test Geräte zugelegt.
Breadboard and test devices

Ich will in Zukunft die FHT8v direkt vom Server aus steuern ohne die Notwendigkeit eine FHT80b einsetzen zu müssen. Normalerweise sollte das relativ einfach umzusetzen sein, allerdings war ein erster Test nicht erfolgreich.