Damit Sie die Möglichkeit haben, als normaler User am I2C-Bus Transaktionen vorzunehmen, gilt es noch die zugehörigen Werkzeuge zu installieren und die Rechte für die Gruppen zu setzen:
$ sudo apt-get install i2c-tools $ sudo addgroup pi i2c
An welchen Adressen Sie die Bausteine finden, erfahren Sie durch die Werte in der Ausgabe von i2cdetect -y 0. Je nachdem, wie Sie die drei Adress-Pins des LM75 angeschlossen haben, taucht in der Ausgabe genau ein Wert im hexadezimalen Zahlenbereich 0x48 bis 0x4F auf. Das 2-Byte-Temperaturwort des LM75 lesen Sie dann an der Registeradresse 0 mit folgendem Befehl aus:
$ i2cget -y 0 I2C-Busaddresse Registeradresse w
Beim Umwandeln des kryptischen Rückgabewerts (Beispiel: 0x8015) in den entsprechenden Temperaturwert hilft dann das Datenblatt des Bausteins.
Als Software-Umgebung für den Prozessrechner eignet sich Python, da für den Raspberry Pi bereits Klassenbibliotheken für den Zugriff auf den I2C-Bus und die GPIO-Pins existieren. Darüber hinaus handelt es sich bei Python um eine weit verbreitete Programmiersprache mit einer großen Community. Für dieses Beispiel kamen zwei Bibliotheken zum Einsatz ([10],[11]). Listing 7 zeigt die Installation der notwendigen Pakete und der Bibliotheken.
Listing 7
$ sudo apt-get install git python3 python-pip python-virtualenv $ git clone https://github.com/quick2wire/quick2wire-gpio-admin.git $ git clone https://github.com/quick2wire/quick2wire-python-api.git $ cd quick2wire-gpio-admin $ make $ sudo make install $ sudo adduser pi gpio $ virtualenv TEMPCONTROL $ source TEMPCONTROL/bin/activate $ cd quick2wire-python-api $ sudo python3 setup.py install
Das eigentliche Programm fällt sehr einfach aus (Listing 8): In einem Zyklus von fünf Sekunden liest es den Sensorwert aus (Zeile 15) und wandelt diesen in den Temperaturwert um (Zeile 16). Anschließend schaltet es die beiden LEDs entsprechend.
Listing 8
#!/usr/bin/env python3
import quick2wire.i2c as i2c
import time
from quick2wire.gpio import Pin, exported
busaddr = 0x48
regaddr = 0x00
redLED = Pin(16, Pin.Out)
greenLED = Pin(18, Pin.Out)
with exported(Pin(16, Pin.Out)) as redLED, \
exported(Pin(18, Pin.Out)) as greenLED, \
i2c.I2CMaster() as bus:
while True:
temp_hib, temp_lob = bus.transaction(i2c.writing_bytes(busaddr, regaddr),i2c.reading(address, 2))[0]
temp = (temp_hib << 1 | temp_lob >> 7) / 2.
if temp > 25:
redLED.value = 1
greenLED.value = 0
elif temp < 22:
redLED.value = 0
greenLED.value = 1
else:
redLED.value = 1
greenLED.value = 1
print ("%02.01f" % temp)
redLED.value = 0
greenLED.value = 0
time.sleep(5)
Etwas verwirrend fällt die unterschiedliche Bezeichnung der GPIO-Pins aus. So sind die rote und die grüne LED laut Stiftleistenbild an GPIO23/GPIO24, aber auch an P1-16/P1-18 angeschlossen. Die erste Bezeichnung entspricht der BCM2835-Dokumentation und den Werten aus dem Kernel. Die verwendeten Python-Bibliotheken jedoch halten sich an die zweite Nomenklatur.
Versehen Sie das Skript mit entsprechenden Rechten zum Ausführen. Nach dem Start gibt es laufend, mit jedem Aktualisieren der LEDs, die gemessenen Werte auf der Konsole aus.
Fazit
Das Offensichtliche gleich vornweg: Beim Raspberry Pi handelt es sich nicht um ein Desktop-System. Wem der Umgang mit Konsole und Terminal zu ungewohnt und kryptisch erscheinen mag, der sollte anfangs mit dem Desktop beginnen, aber das Arbeiten mit der Kommandozeile als Ziel im Auge haben.
Der Einsatz als energiesparender PC im Multimedia-Einsatz wurde dem Winzling praktisch in die Wiege gelegt, eindeutig ist die Positionierung im Embedded-Bereich. Die Hardware eignet sich bestens als Server, Prozessrechner oder zum Steuern für nicht zu leistungshungrige Aufgaben im Hobbybereich.
Die Ausstattung genügt, um die notwendige Peripherie anzuschließen, und die Stiftleiste fordert geradezu dazu auf, sich zusätzliche Funktionen nach eigenen Bedürfnissen zusammenzustellen. Auch gibt es vernünftig abgestimmte Linux-Distributionen, die dem Einsteiger die ersten Schritte erleichtern.
Das ursprüngliche Ziel, Computertechnik für Interessierte – vor allem Jugendliche – (be-)greifbar zu machen, haben die Entwickler jedenfalls erreicht. Der Winter naht, und das neue Schuljahr hat begonnen. Für das nächste Projekt im Hobbykeller oder EDV-Unterricht, bei dem mal was blinkt, rattert oder sich bewegt, kann man den Raspberry Pi nur wärmstens empfehlen.
Infos
- Raspberry Pi: http://www.raspberrypi.org
- Einkaufshilfe: http://elinux.org/RPi_Hardware_Basic_Setup#Typical_Hardware_You_Will_Need
- Mehr Einkaufshilfe: http://elinux.org/RPi_VerifiedPeripherals
- Premier Farnell: http://de.farnell.com
- RS Components: http://de.rs-online.com
- Zentrale Anlaufstelle für Fragen: http://elinux.org/RaspberryPiBoard
- Raspbian “Wheezy”: http://www.raspbian.org
- Audio/Video-Player Omxplayer: https://github.com/huceke/omxplayer
- Hostapd: http://hostap.epitest.fi/hostapd
- Python-API Quick2Wire: https://github.com/quick2wire/quick2wire-python-api
- GPIO Admin: https://github.com/quick2wire/quick2wire-gpio-admin





