Der Raspberry Pi ist ja mittlerweile ein bekannter und beliebter
Scheckkartenplatinen-Computer mit dem sich allerlei anstellen lässt. Vom
TV-Frontend mit
Kodi, über Spielekonsolenemulatoren mit
Retropi,
bis hin zum Bürorechner, ist damit fast alles möglich. In diesem
Projekt möchte ich vorstellen, wie mit Hilfe des Raspberry Pi Model2
physikalische Größen, wie Temperatur und Luftfeuchtigkeit gemessen und
auf einem Speichermedium geloggt werden. Und zwar mit einem
Feuchtesensor der Type HYT939 der am I²C Bus angeschlossen wird, genauer
gesagt: mehrere I²C Feuchtesensoren am Bus...
 |
| Raspberry PI2 mit Powerbank im Plastikgehäuse |
Wir beginnen zuallererst mit der Versorgung des Raspberry PI. Im Bild
ist ein Pi2 in ein einfaches Kunststoffgehäuse eingebaut und an eine 2Ah
USB-Powerbank von RS-Components angeschlossen. Der Ladeanschluss der
Powerbank ist vom Gehäuse nach aussen geführt. So kann der Pi wahlweise
über die Powerbank (mit einer nicht rechenintensiven Anwendung bis zu
3h) oder über eine externe USB-Versorgung (z.Bsp. einem
Handyladeadapter) betrieben werden. Der I²C Bus des PI (Pin 3 SDA und
Pin 5 SCL sowie Pin 2,4 +5V und GND an Pin 6,14...) sind auf einen
Stecker im Gehäuse ausgeführt. Um später irgendwelche Statusmeldungen
ausgeben zu können, sind zwei LEDs an die GPIOs 24 und 18 (an Pin18 und
Pin12) angeschlossen. Ein weiterer GPIO wird über einen 22k
Pulldown-Widerstand an einen Taster an 5V geschaltet. (GPIO23 an Pin16).
Für
die USB Anschlüsse, Ethernet und HDMI wurden im Gehäuse passende
Ausschnitte gemacht, an eine USB Schnittstelle ein Keyboard und an den
HDMI Port ein Monitor angeschlossen. Die LAN Verbindung mit
Internetzugang sollte auch hergestellt sein, um nach der Ersteinrichtung
die benötigten Module und Updates laden zu können.
Jetzt fehlt nur
noch das Speichermedium mit Betriebssystem. Der PI2 ist mit einem
Micro-SD Slot ausgestattet. Ich habe hier eine 4GB Micro SD mit einem
raspian-wheezy image bespielt. Um das Imagefile auf einfache Weise auf die SD-Karte zu bekommen, empfiehlt es sich, das Tool
win32diskimager zu verwenden. Ist die Speicherkarte dann fertiggestellt, kann man beginnen.
Der
Raspberry zeigt nach dem Einschalten kurz seinen Farbverlauf und dann
beginnt auch schon der Bootprozess. Ist der dann beendet, so startet das
OS am PI erstmal eine Setup Routine.
Hier sind nun folgende Schritte durchzuführen:
- im Menu internationalisation options unter I1 die entsprechenden locals einstellen -> DE_UTF_8
- in advanced options
unter A2... einen Hostname vergeben z.Bsp.:"raspisensor", in A4... SSH
enablen, in A7 ...I²C enablen und load per default und in A8 ... serial
enable und login shell aktivieren
- dann noch expand filesystem wählen damit der Speicherplatz der gesamten SD-Karte genutzt wird
- jetzt noch mit finish -> reboot neu starten
Jetzt fährt der PI wieder hoch und bleibt beim Login-Prompt stehen. Mit login:
pi und dem passwort:
raspberry loggt man sich nun ein. Mit den folgenden Kommandos werden Updates und benötigte Module installiert:
sudo apt-get update
sudo apt-get install python-smbus (installiert den system management bus)
sudo modprobe i2c_bcm2708 (kernelmodule für I²C von Hand laden)
sudo modprobe i2c_dev
lsmod (geladene Module listen)
sudo i2cdetect -y 1 (I²C ports scannen)
Es empfiehlt sich, die Kernelmodule per Autostart zu laden. Das geht wie folgt:
sudo nano /etc/modules (mit dem Nano-Editor die Datei modules öffnen ...)
dann folgende Zeilen hinzufügen:
i2c_bcm2708
i2c_dev
dann mit
STRG+X den Editor beenden und bei Speichern
JA wählen.
danach mit:
sudo nano /etc/modprobe.d/raspi-blacklist.conf
überprüfen, ob hier bereits ein Eintrag "
blacklist i2c-bcm 2708" existiert.
Falls ja, ist der auszukommentieren oder zu löschen.
jetzt wieder neustarten mit:
sudo shutdown -r now
danach wieder einloggen und mit
lsmod
überprüfen ob die gewünschten Module korrekt geladen sind.
Da
wir später die Daten von den Sensoren in eine Datei loggen wollen und
diese Datei auf einem USB-Stick gespeichert werden soll, sind folgende
Schritte notwendig:
- einen USB-Sick mit FAT32 Filesystem auf einem Windowsrechner formatieren
- auf dem PI das Filesystem FAT32 installieren
- den Stick in den PI stecken und die Mountlist um den Stick erweitern
Zuerst laden und installieren wir das Filesystem:
sudo apt-get -y install ntfs-3g hfsutils hfsprogs exfat-fuse
dann legen wir folgendes Verzeichnis an:
sudo mkdir /media/usbstick
sudo blkid -o list -w /dev/null
(listet
die IDs der Datenträger auf -> unser Stick sollte in der Liste als
vfat mit einer ID in dem Format XXXX-XXXX erscheinen)
sudo mount -t vfat -o utf8,uid=pi,gid=pi,noatime /dev/sda /media/usbstick
nun öffnen wir folgende Datei mit dem Editor:
sudo nano -w /etc/fstab
die ID des USB-Sticks von vorher tragen wir nun samt folgender Zeile ein und speichern dann wieder ab:
UUID=XXXX-XXXX /media/usbstick/ vfat utf8,uid=pi,gid=pi,noatime 0
weiter gehts mit der Einrichtung der GPIOs und den Python libraries:
sudo apt-get install python-dev
sudo apt-get install python-rpi.gpio
Noch ein paar allgemeine Einstellungen:
sudo
nano /etc/networks/interfaces (Wir wollen eine fixe IP Adresse
vergeben, um später einfach per SSH auf den PI zugreifen zu können)
folgende Zeile ersetzen:
iface eth0 inet dhcp
durch:
iface eth0 inet static
address xxx.xxx.xxx.xxx
netmask yyy.yyy.yyy.yyy
gateway zzz.zzz.zzz.zzz
und wieder speichern:
Das zu Anfang gestartete Setup Script lässt sich immer über folgenden Befehl aufrufen:
sudo raspi-config
Die Systemzeit des Raspi (für meine Anwendung benötige ich auch einen Zeitstempel) lässt sich mit folgendem Befehl stellen:
sudo date "MMTThhmmJJ"
Das war´s für den Anfang. Im zweiten Teil beschreibe ich dann die
Sensorhardware und die Python-Scripts, die die Sensoren dann auslesen…