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