Hier habe ich ja schon mal erläutert, wie man eine externe Relaiskarte (zB die K8IO von Pollin) an den Raspberry anschließen kann. Damit habe ich mir eine einfache Alarmanlage realisiert.
Zwischenzeitlich habe ich jedoch festgestellt, dass ich aufgrund der Netzwerkanbindung eigentlich gar keine Relais steuern muss/will. Ich sende mir über ein per USB/RS485 angeschlossenes GSM Modem im Alarmfall SMS und gebe über einen Audioverstärker Alarmsounds (Sirene etc.) aus. Also kein Bedarf, per Relais eine Hupe oder ein Blinklicht zu steuern. Der Platz im Gehäuse kann sinnvoller genutzt werden.

Was liegt also näher, als sich eigene Breakoutboards für die Alarmgeber (Reedschalter für Türen, IR Bewegungsmelder, etc.) zu bauen, die nur die nötigen Schnittstellen nach außen führen? Im Zuge der Entwicklung soll auch noch ein LCD zur Anzeige von Infos mit eingebunden werden.
Also los!

Zunächst sollte man versuchen herauszufinden, wieviele Alarmgeber man anschließen will. Ich nutze gegenwärtig einen IR Bewegungsmelder und diverse Reedschalter für Fenster und Türen. Letztere sind in Reihe geschaltet, werden also als ein Alarmgeber behandelt. Eins hin, eins im Sinn macht zwei, noch einen als Reserve und siehe da, man braucht Anschlussmöglichkeiten für drei Alarmgeber. Dann braucht man natürlich noch einen Eingang, um die Anlage „unscharf“ schalten zu können, sonst löst man selbst beim Eintreten etc. den Alarm aus. Es muss also eine Anschlussmöglichkeit für 3 Alarmgeber und 1 Unscharfschalter geben. Das entspricht 4 zu belegenden GPIO Pins.
Weiterhin soll ein beleuchtetes LC Display angeschlossen werden. Dort kann man dann die Uhrzeit, die Anzahl der Alarme oder sonstwas anzeigen lassen. Ich will bzgl. des LCDs nicht zu weit ausholen, aber es gibt serielle oder parallel zu betreibende Displays. Serielle benötigen in der Regel 4 Signalleitungen, parallele deren 8. Das war mir immernoch zu viel. GPIO Pins sind knapp! Also entschloss ich mich dazu, das Display per I²C anzusteuern, das sind immerhin nur zwei Leitungen. Dafür gibt es fertige Module in denen der I²C Portexpander gleich verbaut ist. Ich hatte jedoch gerade ein LCD 1602er Modul mit HD44780 und den passenden Expander (PCF8574) rumliegen, also habe ich alles gleich selbst gemacht.

Der Masterplan war also:

1. Entwicklung einer kleinen Breakoutplatine mit 4 Anschlussklemmen für 3 Alarmgeber/1 Unscharfschalter, mit Anschlussmöglichkeit für eine LCD Platine (I²C).
2. Entwicklung einer LCD Platine mit I²C Portexpander zum Anschluss an das Breakoutboard.

Punkt eins ist ganz simpel, eine Platine mit 2x13pol. Pinheader, über 4 Pullupwiderstände mit 10k Ohm liegen an den 4 GPIO Pins immer 3.3V an. Alarmgeber sind in der Regel „Normally Closed (NC)“, d.h. über 4 Pulldownwiderstände mit 100 Ohm liegen an den GPIO Pins 0V/GND an. Bei „Normally Open (NO)“ Gebern würden dann logischerweise die 3.3V anliegen 😉
Auf der Platine gibt es einen 2x3pol. Pinheader über den die beiden I²C Pins des Raspberry (SDA + SCL) sowie 5V und GND herausgeführt werden.  Mein LCD Display verfügt über eine direkt mit 5V zu schaltende Hintergrundbeleuchtung.

Punkt zwei ist nur wenig komplizierter. Auf der LCD Platine gibt es dann ebenfalls einen passenden 2x3pol. Pinheader, die beiden I²C Leitungen gehen zum IC, dem bereits erwähnten PCF8574.  Dessen Ausgänge (nicht alle, ich nutze das DIsplay im 4bit seriellen Modus) steuern dann das Display. In der aktuellen WiringPi Version gibt es einen passenden Treiber um Displays mit dem PCF8574 anzusprechen.  Dann noch kleinkrams wie ein 10k Drehpoti zur Kontrastregelung, Lötpads um einen Schalter anzuschließen, der die Beleuchtung des Displays steuert. Wäre ja Unsinn, da dauernd das Licht brennen zu lassen. Der PCF8574 ist im Layout übrigens auf Adresse 0x21 konfiguriert!

Und fertig. Beide Platinen habe ich mit der Freewareversion von Eagle entworfen und gleich mit meiner selbstgebauten Ätzküvette und dem optimierten Tonertransferverfahren hergestellt.

PS: Die in Bild eins zu sehende RaspiCam ist übrigens mit ins Alarmschema eingebungen und macht im Alarmfall tolle Bilder 🙂

Download Layouts

Alarmgebermodul