26.02.2014 Aufrufe

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!