Aus Raspberry Pi Geek 05/2015

Der Raspberry Pi übernimmt die Kontrolle im Gewächshaus (Seite 2)

Das eigentliche Spannungsversorgungsmodul besteht im Kern aus zwei vorgefertigten Schaltregler-Platinen (regelbares Stepdown-Modul LM2596S). Das erste Modul erzeugt die für den Raspberry Pi benötigten 5 Volt, das zweite liefert die für manche Komponenten notwendigen 3,3 Volt. Die technischen Daten führt die Tabelle “LM2596S” auf. Als Bezugsquelle bietet sich in Deutschland Ex-store [2] an. Bei Ebay-Händlern sollten Sie auf die oft sehr langen Lieferzeiten aus China achten.

LM2596S

Größe

Wert

Eingangsspannung

3,2 bis 40 V

Ausgangsspannung

1,25 bis 35 V (regelbar, abhängig von der Eingangsspannung)

Max. Ausgangsstrom

< 3 A

Effizienz

92 Prozent (bestmöglicher Wert)

Ripple

< 30 mV (Restwilligkeit der Ausgangsspannung)

Frequenz

65 KHz

Temperaturbereich

-45 bis +85 Grad

Größe

43 x 21 mm

Die LEDs zur Spannungsanzeige müssen Sie nicht zwingend anbringen. Auf die Sicherung sollten Sie hingegen keinesfalls verzichten, da bei Fehlern sehr hohe Ströme auftreten können. Bevor die Spannungsplatine ihren Platz auf der Backplane findet, gleichen Sie die Ausgangsspannungen des Moduls über die blauen Potenziometer mit der Messingschraube ab (Abbildung 3).

Abbildung 3: Die Sicherung auf dem Spannungsversorgungsmodul begrenzt potenzielle Schäden.

Abbildung 3: Die Sicherung auf dem Spannungsversorgungsmodul begrenzt potenzielle Schäden.

I/O, I<+>2<+>C und Sensoren

Das CPU-Modul besteht lediglich aus einem auf einer halben Europlatine montierten Raspberry Pi der ersten Generation (Abbildung 4). Die Pins für die I2C-Kommunikation führen vom RasPi auf den Bus. Sollte die CPU-Leistung eines Tages nicht mehr ausreichen, lässt sich das Modul sehr einfach abziehen und der Raspberry Pi gegen einen RasPi 2 tauschen. Zur Steuerung des Gartenhauses dient ein einfaches Web-Frontend. Damit es sich ohne zusätzliche Verkabelung erreichen lässt, meldet sich der Gartenhaus-RasPi über einen WLAN-Adapter (siehe Kasten “Edimax EW-7711UAN”) im heimischen WLAN-Netzwerk an.

Abbildung 4: Auch der Raspberry Pi der ersten Generation findet auf einem eigenen Modul seinen Platz.

Abbildung 4: Auch der Raspberry Pi der ersten Generation findet auf einem eigenen Modul seinen Platz.

Edimax EW-7711UAN

Vom WLAN-Adapter Edimax EW-7711UAN finden sich aktuell zwei unterschiedliche Versionen im Handel. Version 1 erkennt der Raspbian-Kernel ohne Probleme. Die Version 2 des WLAN-Adapters hat vom Hersteller jedoch einen neuen Chipsatz spendiert bekommen, mit dem Raspbian aktuell noch nicht zurechtkommt, sodass der Adapter ohne Funktion bleibt. Der von Edimax angebotene Quellcode des entsprechenden Kernel-Moduls [6] ließe sich zwar auch auf dem Raspberry Pi kompilieren; falls Sie diesen Aufwand jedoch scheuen, beschaffen Sie besser einen von Haus aus mit Raspbian funktionierenden WLAN-Adapter.

Im Inneren des digitalen I/O-Boards schlägt als Herzstück ein PCF8574 von Texas Instruments [3]. Der I2C-Baustein stellt acht digitale Ein- oder Ausgänge zur Verfügung. Vier dieser Ports übernehmen das Ansteuern des Relais-Moduls [4] von der Stange, die restlichen vier dienen als digitale Eingänge. Optokoppler trennen die Eingänge galvanisch ab, sodass sich bei Fehlfunktion der Schaden am Rest der Elektronik in Grenzen hält. Über ein “Mäuseklavier” (DIP-Schalter) stellen Sie die I2C-Adresse des PCF8574 ein: So lassen sich bei Bedarf mehrere Module am Bus betreiben (Abbildung 5).

Abbildung 5: Das digitale I/O-Modul vereinfacht das Einbinden weiterer Sensoren und Aktoren in das digitale Gartenhaus-Projekt.

Abbildung 5: Das digitale I/O-Modul vereinfacht das Einbinden weiterer Sensoren und Aktoren in das digitale Gartenhaus-Projekt.

Der Ausgangstreiber des PCF8574 wartet zudem mit einer Besonderheit auf: Er kann einen Strom von bis zu 20 mA gegen Masse fließen lassen. Schaltet man hingegen einen Ausgang auf High, liefert dieser nur 0,1 mA Strom. Dieses Verhalten rührt daher, dass der PCF8574 quasi-bidirektionale I/Os besitzt. In der Praxis bedeutet das, dass die Ausgänge der Gartenhaussteuerung mit invertierten Signalen arbeiten. Logisch “false” steht daher für ein geschaltetes Relais. Die Eingänge sind hingegen nicht invertiert.

Die Extender-Platine führt den I2C-Bus zum Anschluss externer Sensoren nach außen. Im aktuellen Aufbau funktioniert die Kommunikation mit den zwei LM75-Temperatursensoren trotz 3 Meter langer Leitungen fehlerfrei (Abbildung 6). Bei höheren Distanzen oder Störungen in der Signalübertragung lässt sich die Kommunikation mit einem zusätzlichen I2C-Bustreiber auf der Platine verbessern. Im Prinzip ist der I2C-Bus jedoch für die Kommunikation innerhalb von Geräten gedacht, nicht als Feldbus.

Abbildung 6: Der Bus-Extender mit einer 3 Meter langen Zuleitung und die zwei LM75-Temperatursensoren.

Abbildung 6: Der Bus-Extender mit einer 3 Meter langen Zuleitung und die zwei LM75-Temperatursensoren.

Erster Test

Für die ersten Tests des Versuchsaufbaus läuft auf dem Raspberry Pi wie gewohnt ein aktuelles Raspbian mitsamt I2C-Treiber und I2C-Tools. Der Treiber stammt aus der Wiring-Pi-Bibliothek (siehe Kasten “Wiring Pi installieren”). Die I2C-Tools ziehen Sie aus den herkömmlichen Paketquellen des Systems über den Aufruf sudo apt-get install i2c-tools nach.

Wiring Pi installieren

Das Wiring-Pi-Projekt [7] bietet eine Bibliothek für den Zugriff auf die GPIO des Raspberry Pi. Mithilfe einfacher Kommandos und einer C-API lassen sich die einzelnen Pins der Schnittstelle mit wenig Aufwand auslesen und beschreiben. Wiring Pi bringt zudem einen Treiber für den im Projekt genutzten I2C-Bus mit. Sie finden die pfiffige Bibliothek allerdings aktuell noch nicht in den Paketquellen von Raspian: Es gilt, die Software-Quellen gemäß Listing 1 aus dem GitHub des Projekts herunterzuladen und zu übersetzen. Anschließend lesen Sie beispielsweise mit dem Kommando gpio readall sämtliche Ports aus (Listing 2).

Listing 1

 

$ sudo apt-get update
$ sudo apt-get upgrade
$ git clone git://git.drogon.net/wiringPi
$ cd wiringPi
$ ./build

Listing 2

 

$ gpio readall
 +-----+-----+---------+------+---+---Pi 2---+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 |     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
 |   2 |   8 |   SDA.1 |   IN | 1 |  3 || 4  |   |      | 5V      |     |     |
 |   3 |   9 |   SCL.1 |   IN | 1 |  5 || 6  |   |      | 0v      |     |     |
 |   4 |   7 | GPIO. 7 |   IN | 1 |  7 || 8  | 1 | ALT0 | TxD     | 15  | 14  |
 |     |     |      0v |      |   |  9 || 10 | 1 | ALT0 | RxD     | 16  | 15  |
 |  17 |   0 | GPIO. 0 |   IN | 0 | 11 || 12 | 0 | IN   | GPIO. 1 | 1   | 18  |
 |  27 |   2 | GPIO. 2 |   IN | 0 | 13 || 14 |   |      | 0v      |     |     |
 |  22 |   3 | GPIO. 3 |   IN | 0 | 15 || 16 | 0 | IN   | GPIO. 4 | 4   | 23  |
 |     |     |    3.3v |      |   | 17 || 18 | 0 | IN   | GPIO. 5 | 5   | 24  |
 |  10 |  12 |    MOSI |   IN | 0 | 19 || 20 |   |      | 0v      |     |     |
 |   9 |  13 |    MISO |   IN | 0 | 21 || 22 | 0 | IN   | GPIO. 6 | 6   | 25  |
 |  11 |  14 |    SCLK |   IN | 0 | 23 || 24 | 1 | IN   | CE0     | 10  | 8   |
 |     |     |      0v |      |   | 25 || 26 | 1 | IN   | CE1     | 11  | 7   |
 |   0 |  30 |   SDA.0 |   IN | 1 | 27 || 28 | 1 | IN   | SCL.0   | 31  | 1   |
 |   5 |  21 | GPIO.21 |   IN | 1 | 29 || 30 |   |      | 0v      |     |     |
 |   6 |  22 | GPIO.22 |   IN | 1 | 31 || 32 | 0 | IN   | GPIO.26 | 26  | 12  |
 |  13 |  23 | GPIO.23 |   IN | 0 | 33 || 34 |   |      | 0v      |     |     |
 |  19 |  24 | GPIO.24 |   IN | 0 | 35 || 36 | 0 | IN   | GPIO.27 | 27  | 16  |
 |  26 |  25 | GPIO.25 |   IN | 0 | 37 || 38 | 0 | IN   | GPIO.28 | 28  | 20  |
 |     |     |      0v |      |   | 39 || 40 | 0 | IN   | GPIO.29 | 29  | 21  |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+---Pi 2---+---+------+---------+-----+-----+

Seit einiger Zeit müssen Sie den Kernel-Support des optionalen I2C-Moduls über das Raspberry-Pi-Konfigurationswerkzeug aktivieren. Rufen Sie dieses dazu mit sudo raspi-config auf und setzen Sie die Option unter 8 Advanced Options | A7 I2C auf Yes. Beenden Sie daraufhin das Tool und starten Sie mit dem Kommando sudo reboot das System neu. Anschließend laden Sie über gpio load i2c den I2C-Treiber und testen mittels i2cdetect -y 1, ob sich die an den Bus angeschlossenen Geräte korrekt melden.

Im Beispiel aus Listing 3 geben der PCF8574 (0x3f) und die zwei LM75-Temperatursensoren (0x48 und 0x49) erfolgreich eine Rückmeldung. Zum Testen der digitalen Eingänge lesen Sie diese alle zwei Sekunden mittels watch i2cget -y 1 0x3f aus. Je nachdem an welchem Eingang gerade Spannung anliegt, wird das entsprechende Bit auf 1 gesetzt. Die Eingänge entsprechen den vier niederwertigen Bits. Zum Testen der Ausgänge setzen Sie die höherwertigen Bits auf 0: Dadurch schalten Sie nach und nach die Ausgänge ein (Listing 4).

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 7 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben