58

Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

  • Upload
    lyminh

  • View
    212

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins
Page 2: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Inhaltsverzeichnis

Vorwort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ixEinleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi

1. Konfigurations-Hacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1Hack 01. Die richtige SD-Karte auswählen und sie formatieren . . . . . . . . . . 1Hack 02.Die SD-Karte mounten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3Hack 03.Die LEDs entschlüsseln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7Hack 04.Die Firmware aktualisieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9Hack 05.Die Hardware des Raspberry Pi überwachen . . . . . . . . . . . . . . . . 14Hack 06.Den Pi übertakten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18Hack 07. Overvolting für eine bessere Leistung . . . . . . . . . . . . . . . . . . . . . 22Hack 08.Mehr USB-Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23Hack 09.Probleme mit der Stromversorgung beheben . . . . . . . . . . . . . . . . 26Hack 10. Reparieren Sie Ihren Raspberry Pi . . . . . . . . . . . . . . . . . . . . . . . . 30Hack 11. Kopflos ins Glück . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32Hack 12. Per SSH verbinden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34Hack 13. Verpassen Sie Ihrem Pi eine statische IP-Adresse . . . . . . . . . . . . . 36Hack 14. Sprechen Sie GPIO? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38Hack 15. Die GPIO-Pins mit einer Steckplatine verbinden . . . . . . . . . . . . . . 41Hack 16. Per USB eine serielle Konsole hinzufügen . . . . . . . . . . . . . . . . . . 49Hack 17. Einen Reset-Taster hinzufügen . . . . . . . . . . . . . . . . . . . . . . . . . . . 56Hack 18. Strom für unterwegs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58Hack 19. Testen Sie Ihre Macht (in Volt) . . . . . . . . . . . . . . . . . . . . . . . . . . . 59Hack 20.Zusätzlichen Speicher durch Swappen erhalten . . . . . . . . . . . . . . 63

2. Linux für den Raspberry Pi hacken . . . . . . . . . . . . . . . . . . . . . . . . . . 65Hack 21. Eine Cross-Compiler Toolchain erstellen . . . . . . . . . . . . . . . . . . . 65Hack 22.Einen eigenen Kernel bauen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78Hack 23.Auf den neuesten vorgefertigten Kernel aktualisieren . . . . . . . . . . 89Hack 24.Speicher zwischen GPU und Linux Userspace aufteilen . . . . . . . . 93

v

Page 3: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Hack 25.Firmware und vorgefertigten Kernel ganz einfach aktualisieren . . . 98Hack 26.Den Pi emulieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99Hack 27. Occidentalis: Die Raspberry Pi-Distribution zum

(fortgeschrittenen) Lernen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102Hack 28.Die IP-Adresse des Pi anzeigen . . . . . . . . . . . . . . . . . . . . . . . . . . 105Hack 29.Android auf dem Raspberry Pi laufen lassen . . . . . . . . . . . . . . . . 109

3. Der Raspberry Pi im Haus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113Hack 30.Dateien über Samba bereitstellen . . . . . . . . . . . . . . . . . . . . . . . . 113Hack 31. Setzen Sie Ihren Raspberry Pi als Printserver ein . . . . . . . . . . . . . 119Hack 32.Mit einem Raspberry-Pi-Asterisk-Telefonsystem anrufen . . . . . . . 123Hack 33.Bauen Sie sich Ihren eigenen Webserver . . . . . . . . . . . . . . . . . . . 129Hack 34.Einen LEGO-Roboter steuern . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136Hack 35.Eine klaffende Thoraxwunde überleben . . . . . . . . . . . . . . . . . . . . 152Hack 36.Halten Sie Ausschau nach Aliens . . . . . . . . . . . . . . . . . . . . . . . . . 160

4. Draußen hacken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167Hack 37. Wie kalt ist es draußen? (Ich will aber nicht raus!) . . . . . . . . . . . . 167Hack 38.Kontrollieren Sie Ihre Pflanzen . . . . . . . . . . . . . . . . . . . . . . . . . . . 173Hack 39.Machen Sie Ihren Pi wasserfest (mit einem Gehäuse) . . . . . . . . . 179Hack 40.Machen Sie Ihren Pi wasserfest (ohne ein Gehäuse) . . . . . . . . . . . 180Hack 41. Geocaches aus Ihrem Auto heraus finden . . . . . . . . . . . . . . . . . . 184Hack 42.Licht! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191Hack 43.Flugzeug-Transpondern zuhören . . . . . . . . . . . . . . . . . . . . . . . . . 199Hack 44.Luftaufnahmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205

5. Multimedia-Hacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221Hack 45.Videos abspielen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221Hack 46.Zusätzliche Video-Codecs aktivieren . . . . . . . . . . . . . . . . . . . . . . 225Hack 47. Eine Pi-MusicBox bauen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226Hack 48.Verwandeln Sie Ihren Pi in einen Radiosender . . . . . . . . . . . . . . . 239Hack 49.Den Pi per Touchscreen steuern . . . . . . . . . . . . . . . . . . . . . . . . . 241Hack 50.Klassische Videospiel-Konsolen emulieren . . . . . . . . . . . . . . . . . . 250Hack 51. Eine digitale Spiegelreflexkamera anschließen . . . . . . . . . . . . . . . 253Hack 52.Ein Fotoautomat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256Hack 53.Verwandeln Sie Ihren Pi in ein kleines Mediacenter . . . . . . . . . . . . 263Hack 54.Filme auf der Rückbank Ihres Autos ansehen . . . . . . . . . . . . . . . . 271

6. Erweitern Sie Ihren Pi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281Hack 55.Steuern Sie die GPIO-Pins über einenWebbrowser . . . . . . . . . . . 281Hack 56.Einen kleinen Bildschirm anschließen . . . . . . . . . . . . . . . . . . . . . 283Hack 57. Arduino Shields mit Ihrem Raspberry Pi verbinden . . . . . . . . . . . . 284Hack 58.Einen 3D-Drucker steuern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304Hack 59.Einen Ziffernblock hinzufügen . . . . . . . . . . . . . . . . . . . . . . . . . . . 309

vi INHALTSVERZEICHNIS

Page 4: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Hack 60.Einen Kühlkörper hinzufügen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314Hack 61. Die Raspberry Pi-Kamera unter Pidora einsetzen . . . . . . . . . . . . . 317Hack 62.Ein solarbetriebenes Computerlabor bauen . . . . . . . . . . . . . . . . . 318Hack 63.Einen MIDI-Controller bauen (ganz preisgünstig!) . . . . . . . . . . . . 322Hack 64.Einen Raspberry Pi Supercomputer bauen . . . . . . . . . . . . . . . . . . 329

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337

INHALTSVERZEICHNIS vii

Page 5: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 167 — le-tex

4Draußen hacken

Elektronik im Außeneinsatz? Das soll eine gute Idee sein? Wir haben ein paar Vor-schläge für einen Schutz vor Wasser (Hack#39 und Hack#40 ). Aber wir haben auchIdeen, wie Sie Ihren Pi für Outdoor-Projekte nutzen können – vom Überwachen IhresGartens (Hack#38 ) bis zu Luftaufnahmen (Hack#44 ).

HACK 37 Wie kalt ist es draußen?(Ich will aber nicht raus!)

Die Außentemperatur ist kein konstanter Wert. Sie schwankt und wirwollen, dass Sie wissen, wie kalt (oder warm) es gerade draußen ist. ObSie Ihre Pflanzen möglichst gut betreut haben wollen oder nur wissenmöchten, wie dick Sie sich anziehen müssen – dieser Hack kann Ihnendabei helfen!

Hack#05 beschreibt, dass der Raspberry Pi die Temperatur seines BCM2835System-on-Chip misst, aber das ist etwas anderes. Um die Temperatur in der Nähedes Raspberry Pi zu messen (oder gar weiter weg), müssen Sie einen Temperatur-sensor anschließen. Linux unterstützt zwar einige USB-Thermometer, aber es istgenauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen-sor an die GPIO-Pins des Raspberry Pi anzuschließen.

Dieser Hack nutzt aus folgenden Gründen den Texas-Instruments-TMP102 I2C-Temperatursensor:

• Er ist sehr klein – kleiner als eine Münze (siehe Abbildung 4-1).

• Es handelt sich um einen digitalen Sensor (womit die Verkabelung viel einfacherund die Ergebnisse viel genauer sind).

• Sparkfun verkauft ihn fertig vorbereitet auf einer kleinen Platine (https://www.sparkfun.com/products/9418).

• Er ist preisgünstig (aktuell weniger als 6 US-Dollar).

• Er misst in einem Bereich von -25 °C bis +85 °C.

Je nach verwendeter Linux-Distribution sind vielleicht nicht alle notwendigen Treiberfür den TMP102 vorhanden. Sowohl bei Raspbian als auch bei Pidora fehlen die ent-scheidenden Treiber. Sie können die Unterstützung dafür aktivieren, indem Sie einen

167

Page 6: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 168 — le-tex

Abbildung 4-1:TMP102 und ein US-Quarter

eigenen Kernel aus den Sourcen bauen (siehe Hack#22 ). Achten Sie darauf, dassSie CONFIG_I2C, CONFIG_I2C_CHARDEV und CONFIG_I2C_BCM2708 aktiviert (und einkom-piliert) haben.

Da Sie die Userspace-Komponente lm_sensors für das Auslesen des TMP102 nut-zenwerden,müssen Sie auch »HardwareMonitoring support« (CONFIG_HWMON) im Ab-schnitt »Device Drivers« aktivieren. Zudem muss CONFIG_SENSORS_TMP102 als Modulaktiviert sein. Wir gehen davon aus, dass die Unterstützung für den TMP102 als Mo-dul besser werden wird. Abbildung 4-2 zeigt ein Beispiel, wie die Optionen aussehensollten.

Abbildung 4-2:Aktiviertes Modul für die Unterstützung des Texas-Instruments-TMP102-Sensors

168 RASPBERRY PI HACKS

Page 7: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 169 — le-tex

Alternativ unterstützt Occidentalis die I2C- und TMP102-Sensoren von alleine, Siekönnten also auch darauf zurückgreifen (und sich damit das Bauen eines eigenenKernels für diesen Hack ersparen). Mehr Informationen zu dieser Distribution findenSie in Hack#27 .

Was ist I2C?

I2C (Inter-Integrated Circuit) ist ein Protokoll für das Anschließen von Gerätenmit wenig Datentransfervolumen über zwei Kabel. Es ist in Embedded Systemssehr verbreitet, speziell für Sensoren. Der Raspberry Pi besitzt zwei dedizierteGPIO-Pins (2 und 3 beim aktuellen Raspberry Pi Model B), die für den Einsatzvon I2C vorkonfiguriert wurden.

Das Breakout Board von Sparkfun sorgt dafür, dass der Anschluss an den RaspberryPi ganz einfach ist. Es gibt sechs Pins (oder Anschlüsse) auf der Platine.Sie sind aufder Rückseite beschriftet; die für Sie relevanten finden sich links.

Der erste Pin ist der Masse-Pin (GND, Ground), der zweite Serial Clock (SCL), derdritte Serial Data Line (SDA) und der vierte der Anschluss für 5 V (V+). Die SCL-und SDA-Pins sind dafür da, dass der Sensor Daten über den I2C-Bus senden undempfangen kann.

Sie sollten die Pins mit der Beschriftung ALT und ADD0 nicht verwenden (sie findensich auf der Platine rechts), sofern Sie nicht schon ein konkurrierendes Gerät aufdem gleichen I2C-Bus haben und die Gerätenummer ändern müssen. Für diesenHack ist der Temperatursensor das einzige Gerät am GPIO-I2C-Bus des RaspberryPi, daher können Sie diese Pins in Ruhe lassen. Die Beschriftung sehen Sie in Abbil-dung 4-3.

Aber das Datenblatt sagt doch. . .

Haben Sie sich das von Sparkfun bereitgestellte Datenblatt (https://www.sparkfun.com/datasheets/Sensors/Temperature/tmp102.pdf) angeschaut,ist Ihnen vielleicht aufgefallen, dass sich die Reihenfolge der Pins unterscheidet.Das liegt daran, dass auf dem Datenblatt die Pins wie vom TMP102-Sensorselbst kommend aufgezählt sind und nicht so, wie sie auf dem Breakout Boardzu sehen sind. Der TMP102-Sensor ist dieser kleine schwarze Chip in der Mitteder Platine. Wenn Sie genau hinschauen (notfalls mit einer Lupe), sehen Sie dieVerbindungen von den Chips zu den Pins. Die Reihenfolge ist unterschiedlich,aber weil es sinnvoller ist, diejenigen auf der Platine zu nutzen, werden wir siehier verwenden.

Die Verbindung zwischen denPins des TMP102 BreakoutBoards unddemRaspberryPi GPIO ist ziemlich offensichtlich (siehe Tabelle 4-1).

KAPITEL 4: DRAUßEN HACKEN 169

Page 8: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 170 — le-tex

Abbildung 4-3:Beschriftung des TMP102

Tabelle 4-1: Verbindung der TMP-Pins mit dem Pi

TMP102 Breakout Pin-Beschriftung Raspberry Pi BCM GPIO-Pin

GND GND

SCL 3 (SCL)

SDA 2 (SDA)

V+ 5 V

Denken Sie daran, dass sich die Bezeichnungen in Tabelle 4-1 auf die BCM GPIOPin-Labels bezieht. Werfen Sie im Zweifel nochmal einen Blick auf Hack#14 .

Um dieses Gerät mit dem Raspberry Pi zu verbinden, müssen Sie erst Kabel an diePins des TMP102 Breakout Boards löten, die Sie verwenden (GND, SCL, SDA undV+).

In »Erinnern Sie sich noch ans Löten?« auf Seite 44 erhalten Sie einige grundle-gende Tipps zum Löten.

Wenn Sie es sich bequemmachen wollen, können Sie Stecker einer Steckleiste neh-men und sie in die Löcher drücken, aber das ist sehr schludrig und hingepfriemelt– selbst für ein Hacks-Buch. Wie auch immer, sobald Sie Kabel am TMP102 Break-out Board angebracht haben, müssen Sie sie mit dem Raspberry Pi verbinden. Dazu

170 RASPBERRY PI HACKS

Page 9: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 171 — le-tex

können Sie entweder Jumper-Kabel verwenden, die Sie direkt auf die entsprechen-den GPIO-Pins stecken, oder einen Pi Cobbler und eine Steckplatine einsetzen (inHack#15 finden Sie mehr Informationen zum Pi Cobbler).

Um Ihren TMP102-Sensor verwenden zu können (und sicherzustellen, dass er amI2C-Bus des Raspberry Pi arbeitet), müssen Sie zusätzliche Software installieren.Um i2ctools und lm-sensors auf Ihren Pi zu bekommen, führen Sie diese Anweisungauf Pidora aus:

$ su -c 'yum install i2c-tools lm_sensors -y'

Unter Raspbian ist das:

$ su -c 'apt-get install i2c-tools lm-sensors'

Jetzt wollen wir unser Gerät am I2C-Bus des Pi finden. Dazu müssen Sie i2cdetect

für Bus 1 laufen lassen. Auf demursprünglichenRaspberry PiModel Bwar dies Bus0,aber bei der aktuellen Hardware ist es Bus 1. Bus 0 existiert auch bei den aktuellenVersionen desRaspberry PiModel B, Siemüssen sichmit ihmaber über denKamera-Anschluss verbinden. Dies ist die Anweisung für i2cdetect :

$ su -c 'i2cdetect -y 1'

Die Ausgabe sollte in etwas so aussehen:

0 1 2 3 4 5 6 7 8 9 a b c d e f

00: -- -- -- -- -- -- -- -- -- -- -- -- --

10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --

50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

70: -- -- -- -- -- -- -- --

So wissen Sie, dass es ein Gerät am I2C-Bus 1mit der numerischenKennung 48 gibt.Das ist Ihr TMP102-Sensor!

He, das hat nicht funktioniert!

Wenn Sie versuchen, i2ctools und lm-sensors auf einer Standard-Installa-tion von Raspbian zu installieren, erhalten Sie dieses Ergebnis:

$ su -c 'i2cdetect -y 1'

Error: Could not open file ‘/dev/i2c-1' or ‘/dev/i2c/1': No such file or di-

rectory

Warum? Beim Raspbian-Kernel sind CONFIG_I2C_CHARDEV undCONFIG_I2C_BCM2708 als Module aktiviert, aber nicht wie bei Pidora di-

KAPITEL 4: DRAUßEN HACKEN 171

Page 10: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 172 — le-tex

rekt in den Kernel eingebaut (was wir besser finden). Erhalten Sie diesenFehler, haben Sie keinen eigenen Kernel gebaut, wie wir es in Hack#22

empfohlen haben. Holen Sie das jetzt nach. Tun Sie das nicht und ladenSie nur die Module, werden Sie beim Zugriff auf den TMP102 trotzdemProbleme haben, weil der Treiber in Raspbian überhaupt nicht vorhandenist.

Haben Sie einen eigenen Kernel gebaut, aber aus welchen Gründen auchimmer CONFIG_I2C_BCM2708als Modul eingebunden, können Sie das Moduli2c-dev mit diesem Befehl nachladen:

$ su -c 'modprobe i2c-bcm2708'

Dann erscheint auch /dev/i2c-1 , und Ihr Aufruf von i2cdetectwird erfolg-reich sein.

Sie wissen jetzt, dass unser TMP102 das Gerät mit der Nummer 48 am I2C-Bus 1 ist,aber Sie müssen den Linux-Kernel noch darüber informieren, dass es existiert:

$ su -c 'echo tmp102 0x48 > /sys/class/i2c-adapter/i2c-1/new_device'

Jetzt könnenSie die Temperaturdaten vom TMP102 auslesen. Das Standard-Tool da-für unter Linux (lm_sensors) bringt eine Bibliothek mit (libsensors), die von vielenTools unterstützt wird, aber als Ausgangspunkt werden wir nur das enthaltene sen-

sors nutzen:

$ sensors

bcm2835_thermal-virtual-0

Adapter: Virtual device

temp1: +42.8°C

tmp102-i2c-1-48

Adapter: bcm2708_i2c.1

temp1: +24.8°C (high = +160.0°C, hyst = +150.0°C)

In dieser Ausgabe sehen Sie Informationen zu zwei Sensoren:

bcm2835_thermal-virtual-0Dies ist der Temperatursensor im Broadcom BCM2835 System on Chip – demHerz des Raspberry Pi. Das ist das gleiche Ergebnis, das Sie auch mit vcgencmderhalten können (siehe »Temperatur messen« auf Seite 16).

tmp102-i2c-1-48Dies ist Ihr TMP102-Sensor.

Sie erfahren hier auch, dass Ihr TMP102 eine angenehme Temperatur von 24,8 °Cmeldet. DerWert high ist die Temperatur, bei demder TMP102 wegen zu großer Hitzeden Dienst quittiert (also bei 160,0 °C).

172 RASPBERRY PI HACKS

Page 11: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 173 — le-tex

Es gibt noch einen Wert hyst – das »Temperature Hysteresis Limit« (leider nicht daslegendäre Album Hysteria von Def Leppard). Diese Temperatur ist die Grenze, ab derder Sensor keine höheren Werte mehr liefert, weil er sich langsam der Grenztempe-ratur nähert.

Wollen Sie nur die Werte für den TMP102 erhalten, müssen Sie den lm_sensors-»Chipnamen« als Option mitgeben. Bei der gegebenen Konfiguration hat der tmp102-i2c-1-48 den Namen ($sensortype-$bustype-$busnumber-$devicenumber). Wollen Siedie Werte in Fahrenheit erhalten, übergeben Sie einfach -f:

$ sensors -f tmp102-i2c-1-48

tmp102-i2c-1-48

Adapter: bcm2708_i2c.1

temp1: +76.5°F (high = +320.0°F, hyst = +302.0°F)

Wollen Sie die Sensordaten direkt auswerten, können Sie entweder die schon er-wähnte Bibliothek libsensors nutzen oder die Daten über /sys auslesen. /sys/class/i2c-dev/i2c-1/device/1-0048/ ist der Device-Node, in dem Sie alle Daten in speziel-len /sys-Dateien finden. Diese Dateien werden regelmäßig aktualisiert. Brauchen Sieeinen neuerenWert, öffnen Sie einfach eine der folgenden Dateien:

$ cd /sys/class/i2c-dev/i2c-1/device/1-0048/

$ ls

driver modalias power temp1_input temp1_max_hyst

hwmon name subsystem temp1_max uevent

$ cat temp1_input

23312

Um diesen Wert in Celsius umzuwandeln, dividieren Sie ihn einfach durch 1000. Fürandere Temperatureinheiten sei auf »Spaß mit Mathe und Physik« auf Seite 16 ver-weisen.

HACK 38 Kontrollieren Sie Ihre Pflanzen

Pflanzen sind ein entscheidender Bestandteil des Ökosystems auf unse-rem Planeten. Vielleicht sind sie Ihnen aber auch nur als leckere Auflageauf Ihrem Burger wichtig. In beiden Fällen können Sie Ihren RaspberryPi verwenden, um den Pflanzen dabei zu helfen, mehr zu wachsen undmöglichst gesund zu bleiben.

Gärtnern ist nicht immer einfach. Pflanzen könnennicht reden, daherweißman nichtso genau, was sie brauchen. Beim Gärtnern ist es in vielen Dingen wie beim Hacken:Man lernt vieles durch Übung, sammelt Erfahrung, wie Pflanzen wachsen, wo mansie anpflanzt, wasman ihnen bietenmuss undwelcheMusik sie gerne hören (hey, ichhabe gelesen, dass sieMusik lieben). ImKern von allemgeht es umdas Sammeln vonDaten. Durchdedizierte Temperatur- undFeuchte-Sensoren, angeschlossen aneinenRaspberry Pi, können wir nützliche Daten über den Zustand des Gartens sammeln.

KAPITEL 4: DRAUßEN HACKEN 173

Page 12: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 174 — le-tex

Die meisten Pflanzen brauchen ein paar Dinge, damit sie gut wachsen:

ErdeDamit wird die Pflanze gehalten und sie kann ihre Wurzeln dort schlagen. DieWurzel ziehen das Wasser und die Mineralien daraus. Sie werden eine gute Erdenehmen wollen, mit den richtigen Mineralien und anderen Stoffen. Blumenerdeistmeist ein guter Anfang, aber es gibt ganze Bücher darüber, wie Sie die richtigeErde für Ihre Pflanzen finden.

SonnenlichtPflanzen führen Photosynthese durch: Sie wandeln mit Hilfe von Licht die Stoffeum, mit denen sie ihren Stoffwechsel betreiben. Alle Grünpflanzen benöti-gen Licht, nur die Menge hängt von der Art der Pflanze ab. Manche Pflanzenbrauchen viel Licht, andere viel weniger.

LuftInsbesondere Kohlendioxid. Ist die Luft um Ihre Pflanzen sehr verschmutzt, wirdIhre Pflanze nicht gut wachsen.

WasserAlles, was lebt, braucht Wasser. (Zumindest alles, was wir kennen.) Pflanzensind da nicht anders, aber die nötige Wassermenge ist ebenfalls je nach Pflan-zentyp unterschiedlich. Denken Sie nur an einen Kaktus in der Wüste und einePalme in einer Oase. Beides sind Pflanzen, beide benötigen Wasser, aber derKaktus braucht viel weniger zum Überleben (und könnte auch gar nicht vielmehr davon nutzen).

PlatzPflanzen brauchen Platz zumWachsen – im Allgemeinen nach oben, manchmalaber auch zur Seite.

Optimale TemperaturAuch sie ist je nach Pflanze verschieden, aber alle haben einen Temperatur-bereich, den sie bevorzugen. Das US-Landwirtschaftsministerium nennt dies»Plant Hardiness« und definiert Zonen für die USA. Jede Zone ist durch dieübliche Minimaltemperatur definiert und durch eine Kennung bezeichnet. Soist die Hardiness Zone von Toms Pflanzen 5b, während die von Ruth 7a ist. Inhttp://planthardiness.ars.usda.gov finden Sie eine Karte aller US-Zonen. Man-che Pflanzen kommen mit Frost und Eis besser klar als andere, daher kann eineTemperatur unter 0 °C dazu führen, dass Ihre Pflanzen sterben.

Der Platz, die Erde und die Luft lassen sich schwermessen, aber wir können die Luft-feuchtigkeit und die Temperatur im Garten messen. Sie können auch mit den Licht-sensoren aus Hack#42 die Helligkeit in der Nähe der Pflanzen messen, aber dieserHack konzentriert sich auf Temperatur undWasser (Luftfeuchtigkeit).

174 RASPBERRY PI HACKS

Page 13: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 175 — le-tex

Fortgeschrittene Gärtner

Sind Sie ein Hardcore-Gärtner, werden Sie vielleicht darauf hinweisen wollen,dass die Luftfeuchtigkeit zwar interessant, die Regenmenge aber viel wichtigerist (sofern sich Ihre Pflanzen nicht in einem Gewächshaus mit entsprechenderAusrüstung befinden). Dann müssen Sie einen Niederschlagsmesser anschlie-ßen.

Es gibt eine Reihe verschiedener Niederschlagsmesser, aber ihr Anschluss aneinen Raspberry Pi und das Auslesen der Daten ist ein bisschen schwieriger.Es gibt ein paar 1-Wire-Sensoren, aber der Pi besitzt keinen entsprechendenAnschluss. Sie können das Problem beheben, indem Sie eine kleine Schaltungbauen, mit der Sie die Brücke zum GPIO herstellen (entweder über den w1-gpio-Treiber oder den I2C-Bus). Oder Sie kaufen einen 1-Wire-to-USB-Konverter (wieden Maxim Integrated DS9490R).

Von Software-Seite aus können Sie die Daten des 1-Wire-Geräts mit OWFS(http://owfs.org/) auslesen. Das kann schnell kompliziert werden, daherüberlassen wir es dem motivierten und ernsthaft interessierten Gärtner alsHausaufgabe. Der Rest von uns wird mit der Luftfeuchtigkeit beginnen und sichdann voranarbeiten.

Rein technisch gesehen wachsen Ihre Pflanzen natürlich, aber sie tun es so langsam,dass Sie sie über eine sehr lange Zeit beobachten müssen, um dieses Wachsen se-hen zu können. (Suchen Sie auf YouTube nach »Time Lapse of Plants«, das ist ziem-lich cool.) Daher brauchenwir keine Echtzeit-Messungen von Temperatur und Feuch-te und der Einsatz eines Sensors wie des TMP102 (siehe Hack#37 ) ist übertrieben.Stattdessen können wir einen »All-in-One«-Sensor für Temperatur und Feuchte ver-wenden. Adafruit hat solch einen ausgezeichneten Sensor von Adsong im Angebot:den AM2302 (http://www.adafruit.com/products/393).

Dies sind die wichtigsten Gründe für den Einsatz des AM2302-Sensors in diesemHack:

• Er ist in einer Kunststoffhülle untergebracht, was ihn vor den Unbillen vonMutterNatur schützt. Zudem besitzt die Hülle ein Befestigungsloch, so dass Sie denSensor an einer geschützten Stelle in Ihrem Garten anbringen können (indemSie ihn dort aufhängen oder festschrauben).

• Es handelt sich um einen digitalen Sensor – er ist damit recht genau und lässtsich einfach anschließen.

• Er ermittelt alle zwei Sekunden neueWerte. Das ist zwar weit weg von einer Echt-zeitermittlung, aber für das Überwachen von Pflanzen in einem Garten bei wei-tem ausreichend.

KAPITEL 4: DRAUßEN HACKEN 175

Page 14: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 176 — le-tex

• Er nutzt drei Kabel und nur eines für die Kommunikation! Es werden also nurdrei wertvolle GPIO-Pins auf Ihrem Pi verwendet (und nur einer der allgemeineinsetzbaren Datenpins muss reserviert werden).

Der einzige echte Nachteil des AM2302 ist, das es (aktuell) keinen eigenen Linux-Kernel-Treiber für ihn gibt. Wir können ihn also nicht einfach in die Infrastruktur vonlm_sensors einhängen (siehe Hack#37 ).

Den AM2302 zum Linux-Kernel hinzufügen

Der AM2302 besitzt einen DHT22-Sensor für Temperatur und Luftfeuchtigkeit.Mit ein wenig grundlegendem Wissen über C und den Linux-Kernel sollte es garnicht so schwierig sein, einen hwmon-Treiber für den DHT22 zu schreiben. SindSie auf der Suche nach einem guten Einstiegsprojekt für die Kernel-Entwicklung,könnte das ein Vorschlag sein! Wir hoffen, dass dieser Hinweis eines Tages nichtmehr notwendig sein wird, weil jemand diesen Code geschrieben hat. Dann wirdder Hack für alle viel einfacher umzusetzen sein!

Auch hier hilft uns Adafruit wieder aus der Patsche. Sie bieten ein Open-Source-C-Programm für das Auslesen der Temperatur- und Luftfeuchtigkeits-Werte desAD2302. Wir kümmern uns gleich darum, aber zuerst werden Sie den Sensor mitIhremRaspberry Pi verbinden wollen. Der AD2302 besitzt drei Kabel, die aus seinemGehäuse kommen:

Rotfür die Stromversorgung mit 3,3 V

Schwarzfür den Masseanschluss (GND)

Gelbfür die Daten

Technisch gesehen, können Sie einen beliebigen der allgemeinen I/O-Pins verwen-den, aber wir wissen schon, dass Sie uns fragen wollen, welchen Pin Sie einsetzensollen. Also schließen Sie das gelbe Kabel an BCM Pin 4 an (P1-07). Warum? Nun,es ist der erste allgemeine I/O-Pin unterhalb des 3,3-V-Anschlusses (die beiden Pinsdarüber sind die I2C-Pins).

Verbinden Sie das rote Kabel mit dem 3,3-V-Pin (P1-01) und das schwarze mit einemMasse-Pin (GND). Wenn Sie nicht sicher sind, was all diese GPIO-Begriffe bedeuten,werfen Sie einen Blick in Hack#14 . Am einfachsten schließen Sie diese Pins am Piüber eine Steckplatine und einen Pi Cobbler an (Hack#15 ). Die Kabel vom AD2302sind ein bisschen zu dünn, um sie in das Breadboard zu stecken, daher werden Siesie zuerst mit etwas dickeren Kabeln verbinden wollen. Dazu gibt es verschiedeneMöglichkeiten:

176 RASPBERRY PI HACKS

Page 15: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 177 — le-tex

• Löten Sie die Kabel an dickere Kabel.

• VerdrehenSiedie Enden der beiden Kabelmiteinander und schützenSie sie dannmit Isolierband (oder Heißkleber).

• Crimpen Sie die Kabel mit einer Crimpzange zusammen.

Egal wie Sie esmachen –Sie werden vermutlich einen Teil der Kabelisolierung entfer-nenmüssen. Dazu sollten Sie auf jeden Fall eine Abisolierzange verwenden und nichtversuchen, das mit einer Schere oder dem scharfen Teil einer Zange zu erledigen,denn dann ist die Gefahr zu groß, dass Sie das Kabel selbst abtrennen.

Sind alle drei Kabel sauber mit der Steckplatine verbunden (und von dort über einenPi Cobbler mit den GPIO-Ports Ihres Raspberry Pi), könnenSie die Software installie-ren, um den Sensor zu testen.

Klonen Sie auf Ihrem Raspberry Pi eine Kopie des Adafruit Git Raspberry Pi Reposi-tory:

$ git clone git://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code.git

$ cd Adafruit-Raspberry-Pi-Python-Code/Adafruit_DHT_Driver

Auch wenn der Name dieses Repositorys Adafruit-Raspberry-Pi-Python-Code ist,wird Ihnen vielleicht auffallen, dass der Code in diesem Verzeichnis in C geschriebenist. Adafruit hat C-Code für die Kommunikationmit demAM2302-Sensor genutzt, dahier ein außerordentlich schnelles Timing beim Auslesen notwendig ist und Pythonfür diese Aufgabe nicht geeignet wäre.

Adafruit hat auch ein vorkompiliertes Binary mitgeliefert, das auf allen Linux-Distri-butionen für den Raspberry Pi laufen sollte. WennSie deren Binary nicht trauen (oderes aus irgendwelchenGründen nicht läuft), könnenSie es selbst bauen. Bei installier-tem gcc und make rufen Sie auf:

$ rm -f Adafruit_DHT

$ make Adafruit_DHT

Wie auch immer Sie an Ihr Adafruit_DHT-Binary gekommen sind, Sie müssen es jetztaufrufen. Für ein Auslesen des AM2302-Sensors an BCM Pin 4 geben Sie ein:

$ su -c './Adafruit_DHT 2302 4'

Using pin #4

Data (40): 0x2 0x16 0x0 0xe6 0xfe

Temp = 23.0 *C, Hum = 53.4 %

Die erste übergebene Option ist der Sensortyp (dieser Code unterstützt neben demAM2302 [2302] direkt den DHT11 [11] und den DHT22 [22]). Die zweite Option istder GPIO-Pin, an dem der Sensor angeschlossen ist. Wie Sie sehen, wurde eine Tem-peratur von 23,0 °C und eine Luftfeuchtigkeit von 53,4% gemessen.

KAPITEL 4: DRAUßEN HACKEN 177

Page 16: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 178 — le-tex

Sie haben jetzt einen zuverlässigen Weg, die Daten des AM2302 auszulesen. VonAdafruit gibt es auch ein Python-Skript (Adafruit_DHT_googledocs.ex.py), das alle30 Sekunden das Adafruit_DHT-Binary ausführt und die Werte für Luftfeuchtigkeitund Temperatur in ein Google-Docs-Spreadsheet hochlädt.

Dazu müssen Sie das Skript allerdings um die Details Ihres Google-Docs-Accountsergänzen.ÖffnenSie Adafruit_DHT_googledocs.ex.py in IhremTexteditor und suchenSie nach dem folgenden Codeabschnitt:

# Account details for google docs

email = '[email protected]'

password = '$hhh!'

spreadsheet = 'SpreadsheetName'

Ändern Sie die Werte für email, password und spreadsheet, achten Sie darauf, dassdie Werte in einfachen Anführungszeichen stehen, und sichern Sie die Datei. ZumAusführen des Skripts geben Sie in einem Terminal Folgendes ein:

$ ./Adafruit_DHT_googledocs.ex.py

Nutzen Sie dazu eventuell eine screen-Session, damit das Terminal nicht geöffnetbleiben muss. Dazu führen Sie vor dem Starten des Python-Skripts einfach den Be-fehl screen aus und drücken nach dem Aufruf des Skripts Strg-A-D, um sich von derscreen-Session zu trennen. Später können Sie sich wieder damit verbinden, indemSie screen -r ausführen.

Jetzt können Sie in einem Webbrowser Ihr Google-Docs-Konto aufrufen und sehen,wie die Daten mit der Zeit hochgeladen werden.

Dies ist nur ein ganz einfacher Aufbau zum Kontrollieren der Umgebungsparameter,aber Sie können ihn natürlich noch erweitern:

• Schreiben Sie ein Wrapper-Skript, das die Daten auf das Überschreiten vonGrenzwerten prüft (wenn es zumBeispiel zu kalt wird) und verschicken Sie dannBenachrichtigungs-E-Mails (oder Tweets).

• Nutzen Sie den AM2302 als Datenquelle für das automatische Bewässern IhresGartens.

• Und wenn Sie Pflanzen richtig lieben, könnte der Sensor Teil einer selbstgebau-tenWetterstation sein. Oder Sie überwachen Ihr selbst gebrautes Bier oder IhrenWeinkeller.

Alles, was empfindlich auf Temperatur- oder Luftfeuchtigkeitsänderungen reagiert,ist eine ideale Umgebung für den Einsatz dieses Hacks.

178 RASPBERRY PI HACKS

Page 17: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 179 — le-tex

HACK 39 Machen Sie Ihren Pi wasserfest(mit einem Gehäuse)

Wollen Sie Ihren Raspberry Pi draußen einsetzen, müssen Sie ihn in ei-nem wasserfesten Gehäuse unterbringen. In diesem Hack beschreibenwir eine Möglichkeit, wie Sie solch ein Gehäuse erhalten.

Wenn Sie an einem Projekt arbeiten, bei dem es um das Ermitteln vonWerten außer-halb des Hauses geht, ist der Pi immer noch am besten drinnen aufgehoben. Das istaber nicht immer praktikabel oder überhaupt möglich. Wenn Sie Pflanzen im Gartenüberwachenwollen, Ihren Briefkasten automatisieren – in solchen Fällenmüssen SieIhren Raspberry Pi schützen:

WasserDazu gehören Regen, Schnee, Graupel, Hagel, Tau, Nieselregen und, nun ja,Flüssigkeiten von Tieren (Aufzählung nicht vollständig).

NaturSchmutz schadet zwar Kindern nicht, Elektronik kann sich aber nicht mit ihmanfreunden. Viele Tiere lieben die Wärme und der Raspberry Pi ist in einer kaltenNacht ein magischer Anziehungspunkt. Es kann dabei auch Schimmel entste-hen, was ebenfalls nicht gut für den Pi ist. Ach ja, Insekten dürfen wir auch nichtvergessen.

WetterWir machen uns hier keine Sorgen um einen Wirbelsturm oder Hurrikan. Wenndas passiert, haben Sie andere Probleme als einen zerstörten oder verloren-gegangenen Linux-PC für 40 Euro. Wir wollen aber nicht, dass er schon beinormalenWetterbedingungen wegfliegt oder kaputt geht.

So bauen Sie ein wasserfestes Gehäuse für den Außeneinsatz Ihres Raspberry Pi.Organisieren Sie sich einen wasserdichten Plastik-Container mit Deckel. (Oder wennSie es richtig krachen lassen wollen, nehmen Sie eine wasserdichte Munitionskisteder Armee.) Achten Sie auf die Größe – der Pi muss schließlich vollständig hinein-passen.

Der Plastik-Container dient als Schutz vor denmeisten der oben aufgeführtenGefah-ren. Bei einem größeren Container können Sie innen zusätzlich Gewichte unterbrin-gen, damit er nicht so schnell weggeweht wird, und es ist auchmehr Luft vorhanden,die die vom Pi erzeugte Hitze aufnehmen kann.

Sie werden sehr wahrscheinlich Kabel mit dem Pi verbinden wollen, also müssen Sieein paar Löcher in den Container machen. Versuchen Sie, mit so wenig Löchern wiemöglich auszukommen und sie möglichst klein zu machen. Es bringt allerdings auchnichts, nur ein großes Loch zumachen und alle Kabel dort durchlaufen zu lassen.

KAPITEL 4: DRAUßEN HACKEN 179

Page 18: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 180 — le-tex

Der Trick ist, ein Loch zu bohren, das Kabel durchzuführen und das Loch dann mitSilikonmasse abzudichten, so dass das Kabel im Loch gehalten wird und keinWassereindringen kann. Bei mehreren Kabeln im gleichen Loch kann es schwierig sein, dieAbstände zwischen den Kabeln ordentlich abzudichten. Bei einer Metallbox benöti-gen Sie spezielle Abdichtmasse (und einen wirklich guten Bohrer für die Löcher).

Mit einem größeren Container haben Sie außerdem die Möglichkeit, den Stecker fürdie USB-Stromversorgung innerhalb des Containers mit einem wasserfesten Verlän-gerungskabel zu verbinden. Dann könnenSie das Verlängerungskabel durch ein Lochnach draußen führen und müssen das USB-Kabel gar nicht den Launen der Naturaussetzen.

Dieser Aufbau ist gut, aber nicht perfekt. Es wird sich Kondenswasser bilden. PackenSie daher noch ein paar Silica Gel Packs mit in die Box. Silica Gel Packs erhalten Sieziemlich günstig, unter anderem bei Amazon. Das Silikat zieht die Feuchtigkeit ausder Luft und ist ungiftig.

Silica Gel Packs sind im Allgemeinen mit einer Warnung beschriftet, sie nicht zuessen. Denn sie dehydrieren ihre Umgebung und sind meist mit anderen Chemi-kalien kombiniert, damit sie ihre Farbe ändern können, wenn sie »vollgesogen«sind. Diese Chemikalien gelten als karzinogen.

Abhängig davon, wie wasserfest (oder tiersicher) Sie das Gehäuse machen wollen,können Sie den Deckel des Containers zusätzlich versiegeln oder verkleben, wenndrinnen alles zu Ihrer Zufriedenheit läuft.

Wir empfehlen Ihnen, sich (neben den eigentlichen Sensoren oder anderen An-schlüssen außerhalb) über den Einsatz eines Temperatursensors (und vielleichtauch Luftfeuchtigkeitssensors) innerhalb des Containers Gedanken zu machen(siehe die Hacks Hack#37 und Hack#38 ).

Zusätzlich könnten Sie diesen Hack auch als Basis für einen ausgefeilteren interakti-ven Geocache mit einem Raspberry Pi machen (siehe Hack#41 ).

HACK 40 Machen Sie Ihren Pi wasserfest(ohne ein Gehäuse)

Hatten Sie je das Bedürfnis, Ihren Raspberry Pi ohne ein Gehäuse imWasser laufen zu lassen? Dieser Hack kann das bewerkstelligen (zumin-dest für einige Zeit).

Normalerweise führt die Kombination von jeglicher Elektronik und Wasser zu demberühmten magischen Rauch und einer toten Elektronik. Komponenten, die in derNähe von Wasser verwendet werden, sind sorgfältig versiegelt (denken Sie zum Bei-spiel an Unterwasserkameras), aber der Raspberry Pi ist nur eine Platine.

180 RASPBERRY PI HACKS

Page 19: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 181 — le-tex

Sie könnten ihn mit einem Gehäuse wasserfest machen (wie in Hack#39 beschrie-ben), aber das kann teuer werden und aktuell gibt es nicht viele wasserfeste Gehäusefür den Raspberry Pi. Sie könnten auch den gesamten Raspberry Pi in transparentemKunstharz vergießen, aber das ist nichts, was die meisten von uns gerade zur Handhaben.

SicherheitshinweisDieser Hack ist nichts für schwache Nerven. Er kann durchaus zu einem kaput-ten Raspberry Pi und ernsthaften Schmerzen führen. Es sollte klar sein, dass derRaspberry Pi nicht für einen Einsatz im Wasser gedacht ist. Lassen Sie Elektri-zität und Wasser zusammen spielen, riskieren Sie durchaus auch einen (tödli-chen) Stromschlag. Sofern Sie bei diesem Hack nicht wirklich sicher und sorg-fältig vorgehen, sollten Sie ihn lieber nicht nachbauen und sich mit etwas ande-rem beschäftigen. Wir wollen nicht, dass Sie sich verletzen, denn kein Hack istso etwas wert.

Hier kommt NeverWet ins Spiel. NeverWet ist ein Spray der Firma Rustoleum, daseine Oberfläche nach demAuftragen extrem hydrophobmacht (wie der Name schonsagt). Die Beschichtung sorgt dafür, dass sich auftreffendes Wasser zu nahezu per-fekten Kügelchen formt, die von der Oberfläche abrollen und die darunterliegendenElemente trocken und sauber lassen. In den USA erhalten Sie dieses Produkt imBaumarkt für etwa 20 US-$, in Deutschland soll es beim Erscheinen dieses Buchesonline bestellbar sein. Das Set besteht aus zwei Spraydosen: einer Grundierung unddem eigentlichen Spray für die hydrophobe Schicht.

Was Rustoleum von diesem Hack hält

Wir sollten Ihnen wohl sagen, was Rustoleum über den Einsatz von NeverWet aufElektronikkomponenten hält. Von ihrer FAQ-Seite (http://www.rustoleum.com/homeowner/faqs/neverwet-faqs/):

F: Kann NeverWet auf Elektronikkomponenten angewendet werden? A: Nein,NeverWet sollte nicht für Elektronik genutzt werden.

Okay, Sie haben das gelesen, ja? Rustoleum möchte nichts davon hören, dassdieser Hack bei Ihnen nicht funktioniert hat und Sie einen Minicomputer für 40Euro zerstört haben. (Fürs Protokoll: Wir wollen davon auch nichts hören.) InOrdnung, dann machen wir weiter. Unabhängig vom Inhalt der FAQ wissen wir,dass das funktioniert (zumindest einige Zeit). Wir haben das schon ausprobiert.

Es gibt einen ästhetischen Nachteil bei diesem Hack. NeverWet ist nicht transparent.Nach dem Trocknen sieht es so aus, als ob jemand die Oberfläche des Raspberry Pimit einer Kreideschicht abgedeckt hat. (Nun gut, Sie haben ja auch wiederholt eineArt Farbe aufgetragen.) Es sieht – freundlich gesagt – seltsam aus.

KAPITEL 4: DRAUßEN HACKEN 181

Page 20: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 182 — le-tex

Das brauchen Sie für diesen Hack:

• Einen Raspberry Pi, für den Sie keine sentimentalen Gefühle hegen. Die 40 Eurowerden Sie nicht zurückbekommen.

• Eine SD-Karte, die Sie auch nie wieder woanders einsetzen wollen. Wir empfeh-len eine echte SD-Karte, keine Micro-Karte mit Adapter, da dadurch nur nochmehr Spalten vor Wasser geschützt werden müssen.

• Kabel, die Sie nie wieder einsetzen wollen. Wir haben ein USB-Kabel zur Strom-versorgung und ein USB-to-TTL-Serial-Kabel genutzt – zur minimalen Versor-gung des Pi, aber Sie könnenauch ein Ethernet- undHDMI-Kabel anstecken odereinenWLAN-Adapter nutzen.

• Ein NeverWet-Set.

SuchenSie sich für diesen Hack einen trockenen, kühlen, gut belüfteten Ort. (Bei unswar es die Terrasse im Herbst.) Ihre SD-Karte sollte schon mit einem Linux-Imagebestückt sein. Nutzen Sie eine Konsole über die serielle UART-Schnittstelle, konfigu-rieren Sie sie zuvor wie in Hack#16 beschrieben.

Stecken Sie die SD-Karte und die gewünschten Kabel komplett in den Raspberry Pi.Kontrollieren Sie, dass das System so auf jeden Fall funktioniert, dann lassen Sie alleKabel amPi angesteckt, entfernen sie aber am anderen Ende von allen Steckern oderÄhnlichem (Elektrizität!).

Jetzt kommt NeverWet ins Spiel. Das Set enthält zwar eine Anleitung, aber hier sindnochmals die grundlegenden Schritte aufgeführt:

1. Bereiten Sie Ihren Raspberry Pi und die Kabel für die Sprühaktion vor. Wir habenden Pi an seinen Kabeln aufgehängt, Sie können ihn aber auch auf einen (abge-deckten) Tisch legen. Es ist im Allgemeinen keine gute Idee, Elektronikkompo-nenten an ihren Kabeln hängen zu lassen, aber was tut man nicht alles für einesauber abgedichtete Oberfläche.

2. Schütteln Sie Dose Nr. 1 (die Grundierung) für ein paar Minuten.

3. Halten Sie die Dose 15 bis 30 cm vom Pi entfernt und besprühen Sie den Rasp-berry Pi mit der NeverWet-Grundierung zügig (und vollständig). Bedecken Siealle Oberflächen und ein paar Zentimeter jedes Kabels (siehe Abbildung 4-4).Sprühen Sie in alle Ecken und Winkel, auch in Buchsen hinein, die Sie nicht ver-wenden, und um alle Anschlüsse herum, die Sie verwenden. Vergessen Sie nichtdie Ränder und die GPIO-Pins.

4. Lassen Sie die Grundierung 30 bis 60 Minuten trocknen.

5. Schütteln Sie nun Dose Nr. 2 (die super-hydrophobe Farbe) für ein paar Minuten.

6. Wiederholen Sie den Vorgang von Punkt 3 mit Dose Nr. 2. Seien Sie großzügig,aber verschwenden Sie keine Farbe. Sie brauchen eine vollständige Abdeckungaller Oberflächen, die möglicherweise mit Wasser in Kontakt kommen, aber Siewollen keine tropfende Platine haben. Sprühen Sie gleichmäßig.

182 RASPBERRY PI HACKS

Page 21: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 183 — le-tex

Abbildung 4-4:Der Raspberry Pi wird mit der Grundierung eingesprüht

7. Lassen Sie die Farbe fünf Minuten trocknen, dann sprühen Sie die Platine erneutmit der Farbe ein. Wiederholen Sie das Ganze drei- bis viermal.

8. Sind alle Schichten aufgetragen, lassen Sie den Raspberry Pi für 12 bis 24 Stun-den trocknen.

KAPITEL 4: DRAUßEN HACKEN 183

Page 22: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 184 — le-tex

Nach dem letzten Trocknen ist Ihr Raspberry Pi bereit für seinen Einsatz. VersorgenSie ihn mit Strom, um herauszufinden, ob er nicht schon durch die Sprühaktion seinLeben ausgehaucht hat – noch bevor er mit Wasser in Kontakt kam.

Wollen Sie Ihren Raspberry Pi ganz ins Wasser tauchen, sollten Sie ihn nicht mit blo-ßen Händen halten (aus hoffentlich offensichtlichen Sicherheitsaspekten). Stattdes-sen halten Sie ihn amKabel fest und lassen ihn langsam in ein kleines Gefäß voll Was-ser gleiten (an- oder ausgeschaltet). Legen Sie ihn ausgeschaltet ins Wasser, soll-ten Sie beim Versorgen mit Strom ausreichend Abstand halten. Wird der Pi über einUSB-Kabel mit Strom versorgt, das wiederum in einer Verlängerungsschnur endet,ist ein schaltbares Stromkabel eine sehr gute Idee, denn so können Sie ihn aus derFerne einschalten. Und immer, wenn Wasser im Spiel ist, sollten Sie sich über dasVorhandensein eines Fehlerstromschutzschalters (RCD oder FI-Schalter) Gedankenmachen. Solch eine Sicherung ist meist im Sicherungskasten eingebaut, das mussaber gerade bei älteren Häusern nicht unbedingt der Fall sein.

Das Mittel kann nicht zaubern. Eventuell klappt es nicht. Wenn Sie nicht ordentlichgearbeitet haben, macht es vielleicht sofort »Zapp« und der Pi ist tot. Das kann so-gar passieren, wenn Sie den besten Sprühjob der Menschheitsgeschichte hingelegthaben.

Aber auch wenn Sie es schaffen, Ihren Pi mit dieser Methode wasserfest zu machen,sollten Sie nicht davon ausgehen, dass Sie ihn in ein Aquariumauf IhremSchreibtischtauchen und dort immer und ewig einsetzen können. Die Beschichtung ist nicht dau-erhaft, sie wird sich mit der Zeit (und wegen eventueller Belastung durch Reibung)abnutzen. Rustoleum weist darauf hin, dass NeverWet aufgrund einer Luftschichtfunktioniert, die sich auf der Oberfläche des Objekts bildet. Tauchen Sie ein entspre-chend behandeltes Objekt lange unter, wird diese Schicht aber verschwinden.

Soll Ihr Raspberry Pi in einer Umgebung überleben, in der die Luftfeuchtigkeit sehrhoch sein kann, ist diese Beschichtung eine Versicherung gegen einzelne Tropfen,die ansonsten Ihr Projekt in Rauch aufgehen lassen könnten. Aber wir geben zu, dassdieser Hack mehr eine Spaßaktion ist, nach der Sie sagen können, dass Sie Linuxunter Wasser eingesetzt haben – ganz ohne Gehäuse.

HACK 41 Geocaches aus Ihrem Auto heraus finden

Geocaching ist eine tolleMöglichkeit, ein Geek zu sein und sich trotzdemdraußenaufzuhalten.Warumverwandelnwir nicht einenRaspberry Pi ineinen Cacheberry Pi?

BeimGeocaching geht es darum, etwasVerborgenes zu finden, auf eine Schatzsuchezu gehen. Falls Sie noch nie zuvor vonGeocaching gehört haben:Die Idee ist ganz ein-fach. Jemand versteckt eine Box an einer frei zugänglichen Stelle (wenn auch nichtunbedingt einfach zugänglich) und lädt die GPS-Koordinaten des Ortes im Internethoch.

184 RASPBERRY PI HACKS

Page 23: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 185 — le-tex

Die Größe der Box kann sehr unterschiedlich sein. Das reicht von einem winzigenKästchen, in demgeradePlatz für einen kurzenStift undein darumgewickeltes StückPapier ist, über Film- oder Pfefferminz-Dosen bis hin zu großen Boxen wie zum Bei-spiel einer Munitionskiste. Diese Container werden dann irgendwo in der Landschaftversteckt, zum Beispiel unter einer Parkbank, in einem Baum hängend oder zwi-schen Steinen untergebracht. Ein besonders bemerkenswerter Geocache ist in ei-nem großen, hohlen Baumstamm verborgen und an einem Seilsystem befestigt. Siegreifen in den Stamm, ziehen an einemRing und die Box erscheint. Ziehen Sie erneutam Ring, verschwindet sie auch wieder.

Die Idee hinter demGeocaching ist nicht neu. Schon vor vielen Jahren gab es Schatz-suchen für Erwachsene. Aber als GPS im Jahr 1991 der breiten Öffentlichkeit zugäng-lich gemacht wurde, im Laufe der Zeit sehr genaue GPS-Geräte herauskamen unddas Internet Verbreitung fand, konnte diese neue Art der Schatzsuche ihrenWeg fin-den.

Aktuell finden sich auf http://geocaching.com (der wichtigsten Website für dasProtokollieren und Hinzufügen von Geocaches) mehr als zwei Millionen aktive Geo-caches und über sechsMillionen registrierte Geocacher. Es ist ein Spiel, das in jedemAlter gespielt werden kann – man braucht nur ein Smartphone und Geduld. DieRegeln sind einfach. Finden Sie so viele Caches wie möglich, seien Sie zurückhaltendbei der Suche, hinterlassen Sie den Cache besser, als Sie ihn vorgefunden haben,und dokumentieren Sie Ihre Funde (oder Fehlschläge), so dass die Aktivität desCaches verfolgt werden kann.

Es gibt noch andere Elemente des Spiels, die es komplexer machen:

TauschgegenständeKleinigkeiten, Spielzeug und »Schätze«, die von Geocachern in den Cacheszurückgelassen werden (sofern der Platz ausreicht). Wenn Sie einen solchenTauschgegenstand herausnehmen,müssen Sie auch einen hineinlegen.

Travel Bugs und GeocoinsObjekte, die Geocacher von einem Cache zum nächsten mitnehmen.

Travel bug HotelsGeocaches, die extra für Travel Bugs eingerichtet wurden. Meist finden sie sichin der Nähe von Verkehrsknotenpunkten, zum Beispiel Flughäfen, so dass dieGeocacher dabei helfen können, die Travel Bugs um die Welt reisen zu lassen.

Mystery CachesGeocaches, bei denen die GPS-Koordinaten erst aus einem Rätsel ermitteltwerdenmüssen.

Multi CachesFolgen von Caches, bei denen nur die GPS-Koordinaten des ersten Cachesbekannt sind. Dort finden sich die Koordinaten des folgenden Caches, bis manschließlich den abschließenden Cache erreicht (meist ein größerer Cache mitTauschgegenständen).

KAPITEL 4: DRAUßEN HACKEN 185

Page 24: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 186 — le-tex

Es gibt eine ganze Reihe von Smartphone-Apps (oder Addons für GPS-Systeme imAuto), mit denen Sie Geocaches in Ihrer Nähe finden können. Jeff Clement hat aberden Cacheberry Pi entwickelt (Abbildung 4-5), der im Auto untergebracht wird. Die-ses Projekt ist vor allem dazu gedacht, Ihnen zu zeigen, wo sich der nächste Geo-cache befindet (und zwar möglichst offensichtlich, nicht durch das Anstarren winzi-ger Symbole auf einem GPS-Gerät). So müssen Sie sich nicht so sehr vorbereiten,sondern können einfach Ihr Auto besteigen und in eine Richtung fahren.

Abbildung 4-5:Cacheberry Pi (Foto von Jeff Clement, http://cacheberrypi.jclement.ca)

Dieser Hack ist besonders pfiffig darin, wie er die Caches präsentiert. Steht das Au-to, führt er den nächstgelegenen Cache innerhalb von 3 km Umkreis auf. Bemerktder Cacheberry Pi, dass Sie anscheinend auf einer Autobahn unterwegs sind (an-hand der Geschwindigkeit), zeigt er nur den nächsten Cache in Fahrtrichtung an. Erkann eine Datenbank mit mehr als 20 000 Geocaches verwalten und dokumentie-ren, welche Sie schon besucht haben (und das entsprechende Protokoll über einenUSB-Stick übertragen). Er zeigt für den nächsten Geocache Abstand und Richtungan.

Die Hardware

Um den Cacheberry Pi zu bauen, brauchen Sie neben dem Raspberry Pi zusätzlicheHardware.

GPS-Empfänger

Das Cacheberry-Pi-Projekt geht davon aus, dass Sie einen per USB mit Stromversorgten GPS-Receiver (GPSr) nutzen. Empfohlen wird der Holux M-215 (http://dx.com/p/genuine-holux-usb-gps-receiver-black-106778?item=8), aber auchandere standardkonforme GPS-Empfänger sollten funktionieren.

186 RASPBERRY PI HACKS

Page 25: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 187 — le-tex

Sie können auch das Adafruit Ultimate GPS Module (http://www.adafruit.com/products/746) nutzen, aber dann müssen Sie die serielle Konsole deaktivieren,damit das GPS-Modul sie verwenden kann (siehe Hack#16 ). Entscheiden Sie sich fürdiese Hardware, müssen Sie zudem im Cacheberry Pi Linux OS gpsd umkonfigurie-ren, damit das richtige Gerät eingesetzt wird:

$ sudo dpkg-reconfigure gpsd

Dieser Schritt ist nicht nötig, wenn Sie eines der unterstützen USB-GPSr-Geräte nut-zen.

LCD-Bildschirm

Auf dem LCD-Bildschirm wird der Cacheberry Pi seine Geocache-Informationenanzeigen, während Sie auf der Jagd sind. Das Cacheberry-Pi-Projekt empfiehltden IIC/I2C/TWI SPI Serial LCD 1602 Module Electronic Building Block for Ardui-no (http://dx.com/p/arduino-iic-i2c-twi-spi-serial-lcd-1602-module-electronic-building-block-136922?item=4).

Sie können auch die Sainsmart 1602 ICD LCD Unit (http://www.amazon.com/gp/product/B0085J9996/) verwenden, aber dannmüssen Sie den Treiber in der Code-base des Cacheberry Pi anpassen. Steve Whitcher hat beschrieben, wie er dasgeschafft hat (http://www.neighborgeek.net/2013/02/using-16x2-lcd-with-i2c-on-raspberry-pi.html).

Es könnte auch möglich sein, andere 16 x 2 LCD Units zu verwenden (wie die auf derAdafruit LCD Pi Plate, siehe Hack#28 ), aber wir haben sie nicht getestet.

Stromkabel

Da der Cacheberry Pi für die Nutzung im Auto gedacht ist, können Sie ihn aneinen normalen 12-V-Zigarettenanzünder anschließen. In Hack#54 ist dies genauerbeschrieben.

Da das einzige Gerät, dass an den USB-Bus des Cacheberry Pi angeschlossen wird,der GPSr ist (und ein USB-Stick, wenn die Geocache-Datenbank aktualisiert wird),sollte ein USB-Hubmit externer Stromversorgung nicht notwendig sein.

Serielle Konsole

Sie ist optional (undnicht verfügbar, wennSie das Adafruit Ultimate GPSModule nut-zen), aber der Cacheberry Pi ist standardmäßig für die Unterstützung einer seriellenKonsole über die GPIO-Pins des Raspberry Pi eingerichtet.

Wollen Sie eine serielleKonsole nutzen,werfenSie einenBlick in Hack#16 undbohrenSie noch ein Loch in das Gehäuse, um die Kabel nach draußen führen zu können.

Indicator-LED

Sie können optional noch eine Indicator-LED anschließen. Sie blinkt, wenn sich einGeocache in der Nähe befindet, aber die LED ist eigentlich nur dann richtig sinnvoll,wenn es in Ihrem Teil der Welt nur wenige Geocaches befinden (oder Sie nur ein paarin der Datenbank stehen haben).

KAPITEL 4: DRAUßEN HACKEN 187

Page 26: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 188 — le-tex

Projektbox

Zugegeben, das ist ein rein ästhetischer Aspekt, aber Sie können sich ein schickesGehäuse für den Pi holen, ein Loch für das Display hineinschneiden und den Pi danndort unterbringen. Löcher für die Stromversorgung unddie beiden USB-Ports rundendas Ganze ab, dann könnenSie IhrenCacheberry Pi (in der Box) auf demArmaturen-brett Ihres Autos befestigen.

Das Software-Image vorbereiten

Das Cacheberry-Pi-Projekt stellt ein vorbereitetes Image bereit (basierend aufRaspbian). Stecken Sie eine leere SD-Karte in Ihren Linux-Computer, laden Sie sicheine Kopie des Cacheberry-Pi-Images herunter und entpacken Sie sie:

$ wget http://cdn.jclement.ca/cacheberrypi/cacheberrypi.img.20120921.bz2

$ tar xf cacheberrypi.img.20120921.bz2

Eventuell gibt es schon ein neueres Image als das vom 21.9.2012. Schauen Sieauf der Website des Cacheberry-Pi-Projekts (http://cacheberrypi.jclement.ca)nach.

Nach dem erfolgreichen Herunterladen und Entpacken verwenden Sie den Befehl dd,um das Cacheberry-Pi-Image auf die SD-Karte zu schreiben. Achten Sie darauf, wel-ches Gerät Ihre eingesteckte SD-Karte ist (in Hack#02 ist beschrieben, wie Sie dasherausfinden). In Fedora ist das fast immer /dev/mmcblk0, auf anderenDistributionenaber eines aus dem Bereich /dev/sd*. Mit dd können Sie sich sonst nämlich auch dieFestplatte Ihres Laptops überschreiben!

Sind Sie sicher, dass Sie den richtigen Gerätenamen der SD-Karte kennen, rufen Siedd als root auf und passen im folgenden Befehl den Wert von of= an Ihren Geräte-namen an:

$ sudo dd bs=4M if=cacheberrypi.img.20120921 of=/dev/mmcblk0

Wenn das fertig ist, rufen Sie ein paar Mal sync auf, um sicherzustellen, dass dasImage vollständig auf der SD-Karte landet (und nicht nur im Speicherpuffer):

$ sync;sync;sync

Schließlich entfernen Sie die SD-Karte aus Ihrem Laptop und stecken Sie in IhrenRaspberry Pi.

Den Cacheberry Pi verkabeln

Dieser Hack geht davon aus, dass Sie die für das Cacheberry-Pi-Projekt empfohle-nen Komponenten einsetzen. Nutzen Sie andere, müssen Sie entsprechend andersvorgehen.

188 RASPBERRY PI HACKS

Page 27: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 189 — le-tex

Stecken Sie das USB-GPSr direkt in einen USB-Port des Raspberry Pi. Der LCD-Bildschirm besitzt vier Pins mit den Beschriftungen SCL, SDA, VCC und GND. Die-se Pins müssen Sie mit den passenden GPIO-Pins des Raspberry Pi verbinden – ambesten über Female-to-Female-Jumperkabel. In Tabelle 4-2 ist aufgeführt, welcherPin mit welchem verbunden werdenmuss.

Tabelle 4-2: LCD-Pin-Anschlüsse für den Cacheberry Pi

Pin-Bezeichnung des LCD Raspberry-Pi-BCM-GPIO-Pin

GND GND

SCL 3 (SCL)

SDA 2 (SDA)

VCC 5 V

Wollen Sie eine Indicator-LED anschließen, nutzen Sie dafür den BCM-Pin 25 (P1-22), wobei Sie noch einen passenden Widerstand zwischen dem BCM-Pin 25 unddem positiven Anschluss der LED benötigen. Die Art des Widerstands hängt davonab, welche LED Sie einsetzen. Verwenden Sie zumBeispiel eine rote LED mit 2 V und15 mA, braucht der 5-V-Schaltkreis einenWiderstand mit 220 Ω. Sie können den Wi-derstandswert auf dieserWebsite berechnen: http://led.linear1.org/1led.wiz. Das ne-gative Beinchen der LED sollte mit einem verfügbaren Masse-Pin (GND) verbundenwerden.

Wenn Sie nun den Raspberry Pi mit der Stromversorgung über Mini-USB (aus dem12-V-Zigarettenanzünder) verbinden, sollte das Betriebssystem hochfahren.

Cache-Daten laden

Da derCacheberryPi nicht in einemNetzwerk hängt,müssenSiedieGeocaches übereinen USB-Stick laden. Der Cacheberry Pi ist so konfiguriert, dass er dauerhaft dar-auf lauert, dass ein USB-Laufwerk angesteckt wird. Ist das der Fall (und hat es dierichtige Verzeichnisstruktur), wird die Geocache-Datenbank automatisch vom USB-Stick importiert. Zudemwird die eigene Track History vom Pi auf den Stick kopiert.

Um einen USB-Stick richtig vorzubereiten, stecken Sie ihn in Ihren Linux-Computerund achten darauf, dass er gemountet ist. Die meisten Linux-Distributionen moun-ten USB-Laufwerke automatisch beim Anschließen. Überprüfen Sie die Ausgabe vonmount auf ein Gerät /dev/sdb oder /dev/sdc (/dev/sda ist meist die Festplatte des Lap-tops) und wechseln Sie dann in das Verzeichnis, in dem das USB-Laufwerk gemoun-tet ist.

Laden Sie die Beispiel-ZIP-Datei für das USB-Dateisystem-Layout des Cacheberry Piherunter. Dann kopieren Sie die Dateien in das gemountete USB-Laufwerk (in diesemBeispiel gehen wir davon aus, dass es als /mnt/usbdrive gemountet ist):

KAPITEL 4: DRAUßEN HACKEN 189

Page 28: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 190 — le-tex

$ cd ~

$ wget http://cdn.jclement.ca/cacheberrypi/cacheberrypi_usbstick_sample.zip

$ unzip cacheberrypi_usbstick_sample.zip

$ cp -a cacheberrypi_usbstick_sample/* /mnt/usbdrive

Das USB-Laufwerk kann jetzt verwendet werden, aber Sie sollten noch ein paarCache-Einträge hinzufügen. Der Cacheberry Pi sucht nach einer Datei namensnav.csv im Verzeichnis cacheberrypi/. Diese Komma-separierte (CSV-)Datei enthältdie Liste der Geocaches im Format »Microsoft Streets and Trips«.

Am einfachsten erzeugen Sie diese CSV-Datei mittels GSAK (http://www.gsak.net)unter Windows oder Open Cache Manager (http://opencachemanage.sourceforge.net) unter Linux/OSX. Sie können solch eineDatei auch direkt auf http://geocaching.com erzeugen, wenn Sie einen Premium-Account haben und eine »Pocket Query«einrichten.

SichernSie die Datei nav.csv auf demUSB-Stick, unmounten Sie ihn und stecken Sieihn in den laufenden Cacheberry Pi. Dieser sollte den Stick erkennen, und auf demLCD-Bildschirm wird ein Fortschrittsbalken zu sehen sein, während die Geocache-Datenbank aktualisiert wird (Abbildung 4-6).

Abbildung 4-6:Cacheberry Pi (Foto von Jeff Clement, http://cacheberrypi.jclement.ca)

190 RASPBERRY PI HACKS

Page 29: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 191 — le-tex

HACK 42 Licht!

Wenn Sie die Anwesenheit (und Intensität) von Licht erkennen können,hilft das bei vielen Automatisierungsaufgaben – im Garten, im Hausaber auch an vielen anderen Orten. Hacken Sie Ihren Raspberry Pi,damit er das Licht sieht!

Es gibt nurwenige Konstanten auf unsererWelt, aber der Sonnenauf- und -unterganggehört dazu – zumindest für die nächsten fünf Milliarden Jahre oder so. Durch dasÜberwachen der Anwesenheit und Intensität von Licht können Sie erkennen, ob esTag oder Nacht ist, sonnig oder bewölkt oder ob jemand in einem Raum das Lichtangelassen hat. Für all das benötigen Sie einen Helligkeitssensor.

Es gibt viele verschiedene Helligkeitssensoren, aber weil Sie Ihren mit dem Rasp-berry Pi verbinden wollen, sollten Sie einen auswählen, der sich vom Pi aus gut aus-lesen lässt. Da der Raspberry Pi keine analogen Eingabewert verarbeitet (ohne sievorher durch einen Konverter zu jagen), brauchen Sie einen digitalen Helligkeitssen-sor, wobei eine Unterstützung durch den Linux-Kernel natürlich besonders nett wä-re. Adafruit hat da genau das Richtige im Angebot: den Taos TSL2561 (http://www.adafruit.com/products/439) Digital Luminosity/Lux/Light Sensor.

Was ist Lux?

Lux (Abkürzung lx) ist die SI-Einheit für das Messen der Lichtintensitätin Lumen pro Quadratmeter. Sie lässt sich mit einem Gerät messen, dasnaheliegenderweise »Lux-Meter« heißt, auch als Belichtungsmesser be-kannt. Der Vollmond hat etwa 1 Lux, direktes Sonnenlicht liegt im Bereichvon 10 000 bis über 100 000 Lux.

Warum ist dieser Sensor ideal? Dafür gibt es ein paar Gründe:

• Es handelt sich um einen digitalen Sensor, Sie können ihn also ohne komplizierteSchaltung direkt an einen der GPIO-Pins des Raspberry Pi anschließen.

• Er ist genau und kann so konfiguriert werden, dass er die Lichtintensität im Be-reich von 0,1 bis über 40 000 Lux misst.

• Er besitzt Dioden für Infrarotlicht und das vollständige Spektrum. Die meistenHelligkeitssensoren haben nur eine Diode für einen Wellenlängenbereich, aberder TSL2561 kann wahlweise Infrarot, das vollständige Spektrum oder das fürMenschen sichtbare Licht messen.

• Er unterstützt I2C (siehe »Was ist I2C?« auf Seite 169). Sie können ihn deshalbmit nur vier Kabeln an den Raspberry Pi anschließen.

• Er verbraucht wenig Strom. Beim Messen sind es etwa 0,5 mA, im Powerdown-Modus weniger als 15 µA.

• Er ist kleiner als eine Münze (siehe Abbildung 4-7).

KAPITEL 4: DRAUßEN HACKEN 191

Page 30: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 192 — le-tex

Abbildung 4-7:The tiny TSL2561

Kaufen Sie das TSL2561 Sensor Kit, erhalten Sie den Helligkeitssensor schon fertigauf einer Platine mit sechs Pins vorbereitet (und eine entsprechende Steckleiste).SteckenSie die Leiste in eineSteckplatine, mit dem langen Ende der Pins nach unten,und drücken Sie die Platine mit dem Sensor von oben auf die Leiste. Löten Sie dieLeiste dann an der Platine fest (einen kleinen Auffrischungskurs zum Löten findenSie in »Erinnern Sie sich noch ans Löten?« auf Seite 44).

Dann müssen Sie vier der sechs Pins auf der TSL2561-Platine mit den GPIO-Portsdes Raspberry Pi verbinden (siehe Tabelle 4-3).

Das TS2561 wirdmit 3,3 V Spannung versorgt, achten Sie also darauf, es nicht unab-sichtlich an den 5-V-Pin des Pi anzuschließen, sonst landet es im Elektronikhimmel.Der Pi Cobbler erleichtert das Verkabeln (siehe Hack#15 ), aber Sie können die Plati-ne des TSL2561 natürlich auch direktmit den GPIO-Pins des Raspberry Pi verbinden.

Wie üblich bezieht sich diese Beschreibung auf die BCM-GPIO-Pin-Bezeichnungen(siehe Hack#14 ).

192 RASPBERRY PI HACKS

Page 31: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 193 — le-tex

Tabelle 4-3: Anschluss der Pins des TSL2561 an den Raspberry Pi

Platinenanschlüsse des TSL2561 Raspberry-Pi-BCM-GPIO-Pin

GND GND

SCL 3 (SCL)

SDA 2 (SDA)

VCC 3.3 V

Ist die Platine des TSL2561 mit dem Raspberry Pi verbunden, können Sie die I2C-Tools der Linux-Distribution verwenden, um zu prüfen, ob sie auch richtig mit demI2C-Bus verbunden ist – sofern Ihr Kernel für I2C-Unterstützung konfiguriert wurde.Haben Sie einen eigenen Kernel wie in Hack#22 beschrieben konfiguriert, ist auchI2C eingerichtet. Wenn nicht, müssen Sie die folgenden Module laden, bevor Sie aufI2C-Geräte zugreifen können:

$ su -c 'modprobe i2c-bcm2708'

$ su -c 'modprobe i2c-dev'

Zudemmüssen Sie die folgenden zusätzlichen Optionen aktivieren:

Industrial IO support (CONFIG_IIO)Diese Option findet sich auch im »Device Drivers«-Menü. Das Industrial I/O-Sub-system stellt ein einheitliches Framework für Treiber für viele verschiedeneArten von Embedded Sensoren bereit, mit denen die unterschiedlichsten Datengemessen werden können. Sie können auch in dieses Menü wechseln und dieUnterstützung für beliebige Geräte einbauen, die Sie dort finden und in IhremProjekt einsetzen wollen. Achten Sie darauf, den IIO-Support auf oberster Ebe-ne einzukompilieren, wie dies in Abbildung 4-8 zu sehen ist (Sie können dieSensoren modularisieren, wenn Sie das möchten). Achten Sie auch darauf, dieOptionen »Enable buffer support within IIO« (CONFIG_IIO_BUFFER), »Industri-al I/O buffering based on kfifo« (CONFIG_IIO_KFIFO_BUF) und »Enable triggeredsampling support« (CONFIG_IIO_TRIGGER) im Menü »Industrial IO Support«auszuwählen undmit einzukompilieren.

TAOS light sensors (CONFIG_SENSORS_TSL2563)Dieser Treiber befindet sich momentan im staging-Bereich der Gerätetreiberdes Linux-Kernels. Dort finden sich Treiber, die neu sind oder noch nicht so um-fassend getestet wurden wie die anderen Treiber. Zum Aktivieren wechseln Siein das Menü »Device Drivers« und dann in »Staging drivers« (Sie müssen es erstaktivieren). Dort wechseln Sie in das Untermenü »IIO staging drivers« und dortnach »Light sensors«. CONFIG_SENSORS_TSL2563 ist in diesem Menü als »TAOSTSL2560, TSL2561, TSL2562 and TSL2563 ambient light sensors« bezeichnet.Aktivieren Sie dies als Modul (siehe Abbildung 4-9). Sie müssen auch »Hwmondriver that uses channels specified via iio maps« (CONFIG_IIO_ST_HWMON) akti-vieren, damit IIO-Geräte die grundlegende hwmon-Funktionalität bereitstellen

KAPITEL 4: DRAUßEN HACKEN 193

Page 32: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 194 — le-tex

Abbildung 4-8:Industrial IO Support aktivieren (CONFIG_IIO)

Abbildung 4-9:TAOS TSL2561 Light Sensor Support als Modul aktiviert

194 RASPBERRY PI HACKS

Page 33: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 195 — le-tex

können. Dieser Eintrag findet sich im Menü Device Drivers → Staging drivers →IIO staging drivers. Sie sollten diesen Treiber in den Linux-Kernel kompilieren, sodass Sie dieses Feature automatisch erhalten, wenn Sie IIO-Geräte verwenden.

Um die nötige Software für den Userspace (i2c-tools) unter Pidora zu installieren,geben Sie ein:

$ su -c 'yum install i2c-tools -y'

Zum Installieren der i2c-tools unter Raspbian geben Sie ein:

$ su -c 'apt-get install i2c-tools'

Um nach dem Gerät zu suchen, müssen Siei2cdetect für Bus 1 laufen lassen (alsroot). So sieht die Befehlszeile aus:

$ su -c 'i2cdetect -y 1'

Ist die Verkabelung korrekt, wird die Ausgabe wie folgt aussehen:

0 1 2 3 4 5 6 7 8 9 a b c d e f

00: -- -- -- -- -- -- -- -- -- -- -- -- --

10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

30: -- -- -- -- -- -- -- -- -- 39 -- -- -- -- -- --

40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

70: -- -- -- -- -- -- -- --

Der TSL2561-Sensor meldet als Geräteadresse am I2C-Bus die 0x39 und i2cdetect

sieht dies natürlich. Wollen Sie die Geräteadresse ändern, können Sie ein Kabel anden ADDR-Pin der TSL2561-Platine anschließen. Verbinden Sie es mit einem Masse-Pin (GND), um die Adresse auf 0x29 zu setzen, oder mit einem 3,3-V-Pin, um dieAdresse auf 0x49 zu setzen.

Den Sensor per Python auslesen

Am einfachsten lesen Sie den TSL2561-Sensor über das Adafruit I2C Python-Modulaus. Am leichtesten lässt sich das Ergebnis in Lux interpretieren, aber der TSL2561liefert diesen Wert nicht direkt – Sie müssen Code schreiben, um ihn zu errechnen.

Dazu kommt, dass Sie den Verstärkungsfaktor des TSL2561 beeinflussen können. Ister niedrig (1), ermittelt der Sensor genauereWerte bei hellemLicht, umeine Übersät-tigung zu vermeiden. Ist er hoch (16), ermittelt der Sensor genauereWerte bei wenigLicht, indem er die Empfindlichkeit erhöht. Sie können die Werte auchmit einem au-tomatischen Faktor berechnen lassen, wobei zwischen einem hohen und niedrigenFaktor gewechselt wird.

KAPITEL 4: DRAUßEN HACKEN 195

Page 34: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 196 — le-tex

Sie müssen die Bibliotheken python-smbus und Adafruit_I2C installieren. Die Biblio-thek python-smbus ist in den Paket-Repositories von Pidora und Raspbian enthalten,daher können Sie sie ganz normal installieren. Für Pidora:

$ su -c 'yum install python-smbus'

Für Raspbian:

$ su -c 'apt-get install python-smbus'

Der Code für Adafruit_I2C findet sich im Adafruit Raspberry Pi Python CodeGitHub-Repository. Klonen Sie es auf Ihren Pi und wechseln Sie in das Verzeich-nis Adafruit_I2C:

$ git clone https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code

$ cd Adafruit-Raspberry-Pi-Python-Code/Adafruit_I2C

In diesem Verzeichnis können Sie ein Python-Skript ausführen, um den Lux-Wert zuerrechnen, der vom TSL2561 gemessen wurde. Dieses Skript wurde von Ty Brown(http://medicforlife.blogspot.com) geschrieben und wird hier mit seiner Genehmi-gung aufgeführt:

#!/usr/bin/python

import sys

import smbus

import time

from Adafruit_I2C import Adafruit_I2C

### Written for Python 2 <-!!!

### Big thanks to bryand, who wrote the code that I borrowed heavily from/

was inspired by

### More thanks pandring who kind of kickstarted my work on the TSL2561

sensor

### A great big huge thanks to driverblock and the Adafruit team (Congrats

on your many succeses

### Ladyada). Without you folks I would just be a guy sitting somewhere

thinking about cool stuff

### Now I'm a guy building cool stuff.

### If any of this code proves useful, drop me a line at

medicforlife.blogspot.com

class Luxmeter:

i2c = None

def __init__(self, address=0x39, debug=0, pause=0.8):

self.i2c = Adafruit_I2C(address)

self.address = address

self.pause = pause

196 RASPBERRY PI HACKS

Page 35: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 197 — le-tex

self.debug = debug

self.gain = 0 # no gain preselected

self.i2c.write8(0x80, 0x03) # enable the device

def setGain(self,gain=1):

""" Set the gain """

if (gain != self.gain):

if (gain==1):

self.i2c.write8(0x81, 0x02) # set gain =

1X and timing = 402 mSec

if (self.debug):

print "Setting low gain"

else:

self.i2c.write8(0x81, 0x12) # set gain

= 16X and timing = 402 mSec

if (self.debug):

print "Setting high gain"

self.gain=gain; # safe

gain for calculation

time.sleep(self.pause) # pause

for integration (self.pause must be bigger than integration time)

def readWord(self, reg):

"""Reads a word from the I2C device"""

try:

wordval = self.i2c.readU16(reg)

newval = self.i2c.reverseByteOrder(wordval)

if (self.debug):

print("I2C: Device 0x%02X returned 0x%04X from reg 0x%02X"

% (self.address, wordval & 0xFFFF, reg))

return newval

except IOError:

print("Error accessing 0x%02X: Check your I2C address" % self.address)

return -1

def readFull(self, reg=0x8C):

"""Reads visible+IR diode from the I2C device"""

return self.readWord(reg);

def readIR(self, reg=0x8E):

"""Reads IR only diode from the I2C device"""

return self.readWord(reg);

def getLux(self, gain = 0):

"""Grabs a lux reading either with autoranging (gain=0) or with

a specified gain (1, 16)"""

if (gain == 1 or gain == 16):

KAPITEL 4: DRAUßEN HACKEN 197

Page 36: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 198 — le-tex

self.setGain(gain) # low/highGain

ambient = self.readFull()

IR = self.readIR()

elif (gain==0): # auto gain

self.setGain(16) # first try highGain

ambient = self.readFull()

if (ambient < 65535):

IR = self.readIR()

if (ambient >= 65535 or IR >= 65535): # value(s)

exeed(s) datarange

self.setGain(1) # set lowGain

ambient = self.readFull()

IR = self.readIR()

if (self.gain==1):

ambient *= 16 # scale 1x to 16x

IR *= 16 # scale 1x to 16x

ratio = (IR / float(ambient)) # changed to make it run under python 2

if (self.debug):

print "IR Result", IR

print "Ambient Result", ambient

if ((ratio >= 0) & (ratio <= 0.52)):

lux = (0.0315 * ambient) - (0.0593 * ambient * (ratio**1.4))

elif (ratio <= 0.65):

lux = (0.0229 * ambient) - (0.0291 * IR)

elif (ratio <= 0.80):

lux = (0.0157 * ambient) - (0.018 * IR)

elif (ratio <= 1.3):

lux = (0.00338 * ambient) - (0.0026 * IR)

elif (ratio > 1.3):

lux = 0

return lux

oLuxmeter=Luxmeter()

print "LUX HIGH GAIN ", oLuxmeter.getLux(16)

print "LUX LOW GAIN ", oLuxmeter.getLux(1)

print "LUX AUTO GAIN ", oLuxmeter.getLux()

Eine Kopie dieses Skripts finden Sie auch im GitHub-Repository zu diesem Buch(https://github.com/spotrh/rpihacks). Achten Sie darauf, diese Datei in das Ver-zeichnis Adafruit_I2C zu kopieren. ZumAuslesen der Lux-Werte starten Sie:

$ chmod +x tsl2561-lux.py

$ su -c './tsl2561-lux.py'

198 RASPBERRY PI HACKS

Page 37: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 199 — le-tex

Dieses Skript nimmt uns die ganze schwere Arbeit ab. Es liest die Werte aus demSensor mit verschiedenen Verstärkunsfaktoren und berechnet daraus das Ergebnisin Lux.

Den Sensor direkt aus dem Kernel ansprechen

Es ist auchmöglich, über den I2C-Bus auf Kernel-Ebenemit demTSL2561-Sensor zukommunizieren, sofern Sie dessen Unterstützung in einem eigenen Kernel aktivierthaben (siehe Hack#22 ). Zunächst müssen Sie den Kernel (als root) anweisen, denTSL2561-Treiber mit dem I2C-Gerät bei 0x39 zu verbinden (oder 0x29/0x49, wennSie die Adresse über den ADDR-Pin geändert haben):

$ su -

$ echo tsl2563 0x39 > /sys/class/i2c-adapter/i2c-1/new_device

Dann erhalten Sie in dmesg eine Ausgabe wie die folgende:

[ 522.400407] tsl2563 1-0039: model 5, rev. 0

[ 522.402650] i2c i2c-1: new_device: Instantiated device tsl2563 at 0x39

Es gibt einen neuenGeräteknoten (1-0039) in /sys/class/i2c-adapter/i2c-1/. In die-sem Knoten gibt es eine Abbildung iio:device0 und innerhalb dieses Mapping-Ver-zeichnisses findet sich eine Reihe von Geräten, über die Sie die Werte auslesen kön-nen:

$ ls -l /sys/class/i2c-adapter/i2c-1/1-0039/iio\:device0/

...

-rw-r--r-- 1 root root 4096 Sep 16 20:37 in_illuminance0_input

-rw-r--r-- 1 root root 4096 Sep 16 20:37 in_intensity_both_calibscale

-rw-r--r-- 1 root root 4096 Sep 16 20:37 in_intensity_both_raw

-rw-r--r-- 1 root root 4096 Sep 16 20:37 in_intensity_ir_calibscale

-rw-r--r-- 1 root root 4096 Sep 16 20:37 in_intensity_ir_raw

...

Diese Dateien enthalten die rohen Sensorwerte für die Kalibrier-Skala sowiedie Infrarot-Werte und die kombinierten Helligkeitswerte. Um damit etwas an-zustellen, müssen Sie sie mit den Formeln aus dem TSL2561 Datasheet (http://www.adafruit.com/datasheets/TSL2561.pdf) umrechnen.

HACK 43 Flugzeug-Transpondern zuhören

Tagtäglich sind tausende Flugzeuge in der Luft. Manche davon fliegenvielleicht gerade jetzt über Sie hinweg! Mit einem USB-TV-Tuner und ei-nemRaspberry Pi können Sie den Flugzeug-Transpondern zuhören undherausfinden, wer da oben gerade unterwegs ist.

Ein Flugzeug-Transponder ist das Gerät an Bord des Flugzeugs, das auf Funksignalereagiert und dabei hilft, das Flugzeug für verschiedene Systeme, unter anderem denRadar, erkennbar zu machen. Der Transponder übermittelt ein paar Informationen,

KAPITEL 4: DRAUßEN HACKEN 199

Page 38: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 200 — le-tex

unter anderem die Höhe, die Position und einen »Sqawk«-Code mit einer Kennungfür den Flug. Wollen Sie auch die Informationen von Flugzeug-Transpondern mitbe-kommen, ist es natürlich sinnvoll, sich in der Nähe eines Flughafens zu befinden (ineinem Radius von acht bis zehn Kilometern), aber auch so können Sie auf die gele-gentlich über Sie hinwegfliegenden Flugzeuge lauschen – Sie bekommen halt nichtso viele Ergebnisse.

Das brauchen Sie für diesen Hack:

• Raspbian

• NooElec R820T (http://www.nooelec.com/store/computer-peripherals/usb-ota-receivers/dvb-t-receivers.html): Diese Geräte finden sich unter anderemauf eBay, achten Sie aber darauf, die Variante mit dem E4000-Chipset zu er-halten. Schauen Sie also in der Beschreibung nach dem Begriff »E4000«, umsicherzustellen, dass sich der Stick einsetzen lässt. Oder Sie werfen einen Blickin die Liste der unterstützten Hardware (http://sdr.osmocom.org/trac/wiki/rtl-sdr#SupportedHardware). Dieses Gerät wird auch als RTL-SDR oder RealTekSoftware Defined Radio bezeichnet (nach dem Hersteller des eingesetzten Ana-log-Digital-Chips). Es sieht aus wie ein USB-Stick (siehe Abbildung 4-10), istaber viel, viel mehr.

• Dump1090: Open-Source-Code für das Einstellen der RTL-SDR-Hardware unddas Dekodieren der Daten.

Verlängern Sie Ihre Antenne

Die Antenne, die dem NooElec R820T beiliegt, ist ziemlich kurz. Sie können einelängere Antenne auf einem Fensterbrett auslegen oder sich das Tutorial unterhttp://www.balarad.net anschauen. Für die meisten Zwecke ist die mitgelieferteAntenne allerdings ausreichend.

Abbildung 4-10:NooElec R820T

200 RASPBERRY PI HACKS

Page 39: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 201 — le-tex

Den Code vorbereiten

Als Erstes aktualisieren Sie Raspbian und installieren die Dependencies, die zumBauen von Dump1090 notwendig sind:

$ sudo apt-get update

$ sudo apt-get upgrade

$ sudo apt-get install git-core git make cmake libusb-1.0-0-dev build-

essential pkg-config

Danach klonen Sie sich eine Kopie des Quellcodes des Treibers für das RTL-SDR-Gerät und bauen und installieren ihn auf Ihrem Raspberry Pi:

cd /opt/

git clone git://git.osmocom.org/rtl-sdr.git

cd rtl-sdr

sudo mkdir build

cd build

sudo cmake ../ -DINSTALL_UDEV_RULES=ON

sudo make

sudo make install

sudo ldconfig

Der Build-Prozess, der hier ausgelöst wird, kann auf demPimehrereMinuten dauern.Das Build-Skript wird Sie aber auf dem Laufenden halten.

Ist die Installation abgeschlossen, müssen Sie Device-Regeln für den RTL-SDR in dasudev-Konfigurationsverzeichnis kopieren:

$ cd /opt/rtl-sdr/

$ sudo cp rtl-sdr.rules /etc/udev/rules.d/

Diese Regeln stellen sicher, dass Ihr RTL-SDR-Gerät beimEinstecken in den Pi sauberkonfiguriert ist.

Stecken Sie nun Ihr RTL-SDR-Gerät ein. Dann booten Sie den Raspberry Pi neu, umsicherzustellen, dass das System sauber ist und die Treiber beim Start korrekt gela-den werden:

$ sudo reboot

Jetzt sollten Sie ein Testskript laufen lassen, um sicherzustellen, dass Raspbian denTreiber nutzt und Daten vom RTL-SDR empfängt:

$ rtl_test -t

Wenn alles richtig verlief, sollten positive Nachrichten erscheinen und alle Modi desRTL-SDR getestet werden:

$ rtl_test -t

KAPITEL 4: DRAUßEN HACKEN 201

Page 40: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 202 — le-tex

Found 1 device(s):

0: Generic RTL2832U (e.g. hama nano)

Using device 0: Generic RTL2832U (e.g. hama nano)

Found Elonics E4000 tuner

Supported gain values (18): -1.0 1.5 4.0 6.5 9.0 11.5 14.0 16.5 19.0 21.5

24.0 29.0 34.0 42.0 43.0 45.0 47.0 49.0

Benchmarking E4000 PLL...

[E4K] PLL not locked for 51000000 Hz!

[E4K] PLL not locked for 2204000000 Hz!

[E4K] PLL not locked for 1102000000 Hz!

[E4K] PLL not locked for 1241000000 Hz!

E4K range: 52 to 2203 MHz

E4K L-band gap: 1102 to 1241 MHz

Lassen Sie dieses Skript bis zum Ende laufen oder brechen Sie es mit Strg+C ab.

Wechseln Sie zurück in das Verzeichnis /opt/ , um Dump1090, unser Signal-Deko-dierskript, vorzubereiten:

$ cd /opt/

Dann erstellen Sie das Verzeichnis /dump1090 mit Git:

$ git clone git://github.com/MalcolmRobb/dump1090.git

Cloning into 'dump1090'...

remote: Counting objects: 687, done.

remote: Compressing objects: 100% (420/420), done.

remote: Total 687 (delta 411), reused 521 (delta 259)

Receiving objects: 100% (687/687), 712.00 KiB | 72 KiB/s, done.

Resolving deltas: 100% (411/411), done.

Wechseln Sie in dump1090:

$ cd dump1090

Rufen Sie make auf. Das wird etwas Zeit benötigen, machen Sie also eine kleine Pause.(Wir empfehlen, Himbeerkuchen zu essen.)

Wenn make fertig ist, können Sie die Anwendung laufen lassen. Haben Sie sich dieIP-Adresse Ihres Raspberry Pi noch nicht notiert, sollten Sie das jetzt mit Hilfe vonifconfig tun. Sie erhalten dann eine Ausgabe wie diese:

eth0 Link encap:Ethernet HWaddr b8:27:eb:81:54:dc

inet addr:192.168.1.17 Bcast:192.168.1.255 Mask:255.255.255.0

UP BROADCAST MULTICAST MTU:1500 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

202 RASPBERRY PI HACKS

Page 41: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 203 — le-tex

lo Link encap:Local Loopback

inet addr:127.0.0.1 Mask:255.0.0.0

UP LOOPBACK RUNNING MTU:16436 Metric:1

RX packets:17 errors:0 dropped:0 overruns:0 frame:0

TX packets:17 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:2042 (1.9 KiB) TX bytes:2042 (1.9 KiB)

Die Adresse nach inet addr: ist die IP-Adresse, die Sie verwenden, um sich den Flug-verkehr nach dem Starten des Skripts in einemWebbrowser anzuschauen.

Das Skript ausführen

Vor dem Ausführen des Skripts wechseln Sie in das Verzeichnis dump1090:

$ cd /opt/dump1090

Dann starten Sie das Skript:

$ ./dump1090 --net --net-http-port 8080

Sie werden nicht viel sehen, aber wenn Sie keine Fehlermeldung erhalten, wird dasSkript sehr wahrscheinlich erfolgreich laufen. Befinden sich kommerzielle Flugzeugein der Nähe, sehen Sie ab und zu seltsame Hex-Codes. Es kann ein paar Minutendauern, aber wenn die Flugzeuge ihre Daten aussenden, wird das Skript Zeilen wie inAbbildung 4-11 ausgeben.

Abbildung 4-11:Informationen von vorbeifliegenden Flugzeugen

Öffnen Sie auf einem anderen PC in Ihrem lokalen Netzwerk einen Webbrowserund geben Sie die IP-Adresse des Pi mit einem folgenden :8080 ein (zum Beispielhttp://192.168.1.17:8080). Beim ersten Laden der Seite wird alles recht langsamsein, da der Pi die Google Maps API erst initialisieren muss.

Nach ein paar Momenten werden Sie eine schicke Karte sehen, die wie in Abbil-dung 4-12 aussieht. Verschieben Sie sie so, dass sich Ihre Region im Mittelpunkt be-findet, oder klicken Sie doppelt in die Karte hinein, bis Sie in Ihren Bereich gezoomthaben.

KAPITEL 4: DRAUßEN HACKEN 203

Page 42: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 204 — le-tex

Abbildung 4-12:Ein Flugzeug über Florida

Sie können auch beim Starten Ihre geografische Breite und Länge angeben, damitdie Karte sich richtig zentriert. Unter http://itouchmap.com/latlong.html erfahrenSie Ihre Koordinaten. Mit ihnen könnenSie script.js in /opt/dump1090/public_html/

anpassen:

# Tragen Sie hier Ihre Koordinaten ein (vergessen Sie nicht das Semikolon

am Ende).

var Map = null;

var CenterLat = 28.08864;

var CenterLon = -80.609436;

Sichern Sie die Datei und beenden Sie den Editor. Beim nächsten Start vonDump1090 wird sich die Webseite auf Ihre Region zentrieren.

Lori Easterly

204 RASPBERRY PI HACKS

Page 43: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 205 — le-tex

HACK 44 Luftaufnahmen

Luftaufnahmen, insbesondere in großen Höhen, sind in den letzten Jah-ren sehr beliebt geworden. Mit dem Raspberry Pi ist es nun viel einfa-cher, ein geringes Transportgewicht zu erhalten und trotzdem ausrei-chendPlatz für Fotos, Videos undandereDaten zurVerfügungzuhaben.

Luftaufnahmen gibt es seit Mitte des 19. Jahrhunderts, als Gaspard-Félix TournachonParis aus einem Heißluftballon heraus fotografierte. Für manche ist es einfachKunst, andere verfolgen damit ein bestimmtes Ziel, zum Beispiel eine Gruppe, diesich mit der Louisiana Bucket Brigade zusammentat, um die Deepwater-Horizon-Ölkatastrophe im Jahr 2010 (http://opensource.com/life/10/6/mapping-oil-spill-open-source-way) zu kartografieren und zu dokumentieren.

Die Vorschläge in diesem Hack basieren auf den Starts der NC Near Space Re-search Group (http://www.ncnearspace.org/), die sich als Gruppe beim Wettbewerb»Hackerspaces in Space« zusammenfand. Der Wettbewerb wiederum wurde 2010von Chicagoer Hackerspace Workshop 88 ausgerufen. Seitdem ließ man viele Bal-lons aufsteigen und es zeigte sich, dass der Raspberry Pi für solche Projekte sehrnützlich ist.

Der Raspberry Pi benötigt zur Stromversorgung ein halbes Ampere. Warum solltenSie ihn dann an einen Ballon hängen, wo Gewicht undGröße entscheidend sind?WeilSiemit ihmanBord alles erledigt bekommen, was gemacht werdenmuss – und nochein bisschen mehr:

• Die SD-Karte als kleiner und leichter Datenspeicher nicht nur als »Festplatte«und für die Berechnungen, sondern auch für alle Daten und Fotografien;

• GPIO für den Anschluss diverser Sensoren, zum Beispiel eines Höhenmessers,Magnetometers, Gyroskops und Thermometers;

• eine Video-Ausgabe, so dass Sie einen Videosender direkt anschließen und liveam Boden verfolgen können, was passiert, statt warten zu müssen, bis die La-dung des Ballons wieder eingesammelt wurde (wenn man sie denn überhauptwiederbekommt);

• dieMöglichkeit, die aktuellen Daten während des Fluges zu übertragen, zumBei-spiel den Standort und die Höhe;

• ein optionales, leichtes Kamera-Modul, das speziell für den Raspberry Pi entwor-fen wurde;

• dieMöglichkeit, einen USB-WLAN-Adapter anzuschließen, um auch imAll WLANzu haben!

In diesem Hack werden wir das zwar nicht einsetzen, aber der Raspberry Pi kannauch als Tracking-Möglichkeit dienen, nachdem der Ballon wieder gelandet ist. DasSound-Modul des Pi kann einen modulierten APRS-(Amateur Position Reporting

KAPITEL 4: DRAUßEN HACKEN 205

Page 44: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 206 — le-tex

System-)Datenstrom erzeugen, der an den Sender übergeben und von Amateurfun-kern empfangen werden kann, so dass Sie den Ballon besser wiederfinden.

Dieses eine kreditkartengroße Gerät bietet also Kamera, Datenerfassung, Trackingund Speicher zu einem außerordentlich günstigen Preis. Wollten Sie all das auf ande-rem Weg erreichen, müssten Sie deutlich mehr investieren und müssten auch mehrGewicht aufsteigen lassen.

Für ein Projekt, bei dem Sie mit einem Ballon in der oberen Atmosphäre Aufnahmenmachen können, brauchen Sie neben dem Pi die folgenden zentralen Komponenten:

• Ballon, mit dem die Traglast aufsteigen kann

• Fallschirm, um die Traglast sicher wieder zu Boden zu bringen

• die Traglast selbst (darauf kommen wir gleich)

• eine Trackingmöglichkeit, um sie wiederzufinden

Die Traglast zusammenstellen

Der erste Schritt ist das Zusammenstellen Ihrer Traglast, denn nur so finden Sie her-aus, wie schwer sie ist. Das ist entscheidend, denn daran bemisst sich die Ballon- undFallschirmgröße und die benötigte Heliummenge.

Regeln in Deutschland

Lassen Sie einen Ballon als Sonde in Deutschland steigen, müssen Sie sichzuvor mit der Deutschen Flugsicherung (DFS) wegen einer Genehmigung inVerbindung setzen (siehe http://www.dfs.de/dfs_homepage/de/Services/Luftsport%20&amp;%20Freizeit/Sonstige%20Aktivit%C3%A4ten/). Die DFSbenötigt etwa zwei Wochen vor dem geplanten Termin Angaben zu Aufstiegsda-tum und -uhrzeit, Gewicht, Startort, Höhe von Ballon und Nutzlast (Gespannhö-he) und die ungefähre Steigrate. Abhängig vom Startort wird die Freigabe even-tuell nicht erteilt, insbesondere in der Nähe von Verkehrs- oder Militärflughäfen.Den relevanten Paragraph § 16a in der Luftverkehrsordnung finden Sie in http://www.gesetze-im-internet.de/luftvo/__16a.html. Ggf. müssen auch bundesland-rechtliche Regelungen beachtet werden.

Regeln in der Schweiz

In der Schweiz finden Sie die entscheidenden Regeln in der Verordnung desUVEK über Luftfahrzeuge besonderer Kategorien (VLK), Abschnitt 7, Artikel 16:Unbemannte Luftfahrzeuge bis 30 kg Gewicht, Einschränkungen für Freiballone(http://www.admin.ch/opc/de/classified-compilation/19940351/index.html):

• Freiballone dürfen nicht mehr als 2 kg Nutzlast und nicht mehr als 30 m3

Inhalt haben.

• Man muss mindestens 5 km Abstand zu den Pisten von Zivil- oder Militär-flugplätzen halten.

206 RASPBERRY PI HACKS

Page 45: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 207 — le-tex

Will man von diesen Regeln abweichen, muss man dies zuvor mit der Flug-sicherung skyguide (http://www.skyguide.ch/de/services/aim-services/spezialfluege-aktivitaeten-im-luftraum/) abstimmen. Eine Zusammenfassungfindet sich auch auf den Seiten des Bundesamts für Zivilluftfahrt (BAZL) (http://www.bazl.admin.ch/dienstleistungen/02007/03645/index.html?lang=de).

Regeln in Österreich

In Österreich finden Sie die entscheidenden Regeln im Luftfahrtgesetz(http://www.ris.bka.gv.at/GeltendeFassung.wxe?Abfrage=Bundesnormen%26Gesetzesnummer=10011306). Das Ganze ist recht kompliziert. Die Zustän-digkeiten sind auf die Bezirksverwaltungsbehörden (für Flugfelder und ihreUmgebung), die Austro Control GmbH (für Flughäfen und ihre Umgebung), denBundesminister für Landesverteidigung (für Militärflughäfen und ihre Umge-bung) beziehungsweise den Landeshauptmann (für den Rest) verteilt. Ohneentsprechende Rücksprache sollten Sie keine Sonde steigen lassen.

Sie sollten sich als Erstes überlegen, was Sie als Container für Ihre Traglast nutzenwollen. Was auch immer Sie wählen – sorgen Sie dafür, dass es leicht undwasserfestist. Eine Styroporbox ist eine einfache und günstige Lösung, denn Sie können miteinemMesser Veränderungen vornehmen. Plastikboxen sind auch nützlich.

Der Behälter muss auf jeden Fall groß genug sein, um den Raspberry Pi, ein Akku-pack, Ihr Tracking-Gerät und Ihre Kamera(s) aufnehmen können, dazu all die ande-ren Komponenten, die zum Projekt gehören. (Da kommt leicht etwas zusammen!)Zur Traglast in diesem Beispiel gehören neben dem Raspberry Pi diese Dinge:

• Video-Ausgabe an einen 144 MHz-Videolinx-Ham-Radio-ATV(Amateur TV)-Transmitter mit kleiner Peitschenantenne, den Trackuino (http://www.trackuino.org/), der ein GPS und einen 300 mW HX-1 144.39MHz APRS Transmitter ent-hält sowie einen Arduino zum Dekodieren und Modulieren des GPS-Signals fürden Transmitter

• GY-80 I2C 9-Axis Magnetic Acceleration Gyroscope Module

• 5000mAh USB-Mobiltelefon-Akkupack

• USB-WLAN-Adapter

• USB-Y-Stromkabel, um das WLAN direkt aus dem Akku zu betreiben und nichtauf die schwacheStromversorgung über die USB-Ports des Raspberry Pi zurück-greifen zu müssen

• Raspberry-Pi-Kameramodul

• Nikon Coolpix-Kamera (gesteuert von gphoto)

Der Trackuino ist ein auf Arduino basierendes APRS-System, zu dem ein High-Altitude-GPS-System und eine GPS-Antenne gehören. Der Arduino dekodiert dieDaten vom GPS und moduliert es, um damit einen 300-mW-HX-1-Transmitter zu

KAPITEL 4: DRAUßEN HACKEN 207

Page 46: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 208 — le-tex

füttern, der wiederum einen 8-W-Micro-Amp-3-Verstärker ansteuert, der mit einerPeitschenantenne versehen ist. Der Verstärker ist nicht unbedingt notwendig, wäh-rend sich Ihre Traglast hoch über der Erde befindet, aber wenn sie wieder auf demBoden angekommen ist, kann er sehr hilfreich sein.

TrackuinoundMicroAmp3 werden von achtAA-Lithiumbatterien versorgt (unabhän-gig von dem 5000-mAh-Mobiltelefon-Akkupack, der den Raspberry Pi versorgt), siehalten über fünf Stunden. Diese eigene Stromversorgung ist nützlich, falls demRasp-berry Pi der Strom ausgeht, bevor die Traglast wiedergefunden werden kann.

Das GPS-Signal des Trackuino kann auch an den Raspberry Pi weitergegeben wer-den, so dass die Sensordaten mit Zeitstempel, Höhe und Position des GPS verbun-den werden können (Sie müssen den Konsolen-Port der seriellen Schnittstelle dafürdeaktivieren). Das GY-80-Modul wird mit den I2C-Pins, Masse und der 3,3-V-Strom-versorgung des Raspberry Pi verbunden.

Für die Stromversorgung des Raspberry Pi schlagen wir einen Mobiltelefon-Akku-pack mit 5 000 mAh vor. Ein solches Pack kann den Pi, die Aufzeichnung der Sen-sordaten und die Kamera mehr als fünf Stunden versorgen. Sie sind leichter als Ni-ckel-Cadmium-(NiCd-)Akkus und nicht sehr teuer. Ein anderer Vorteil ist, dass solchein Akkupack zwei USB-Ports zur Stromversorgung (einen für den Raspberry Pi undeinen für das USB-WLAN-Y-Kabel) sowie einen eingebauten Ein-/Aus-Schalter (derdem Pi fehlt) besitzt.

Die Raspberry Pi-Kamera ist für die Traglast in diesem Hack die Hauptkamera, auchwenn eine durch gphoto gesteuerte Nikon Coolpix an den verbleibenden USB-Portdes Pi angeschlossen ist.

Gas, Ballon und Fallschirm

Ist die Traglast zusammengestellt, können Sie ihr Gewicht ermitteln und berechnen,wie viel Gas Sie benötigen. Sie brauchen einen Liter Helium pro Gramm Traglast. Fürzwei Kilogramm benötigen Sie also etwa 2 000 Liter Helium.

Damit haben Sie aber gerade das Gewicht der Traglast neutralisiert, damit das Ganzeauch wirklich abhebt, müssen Sie 500 bis 750 g Traglast »dazurechnen«. So errei-chen Sie eine Steigrate von etwa 300 Metern pro Minute. Für eine Traglast von 1 800Grammsind das also inWirklichkeit 2 500Gramm, was zu 2 500 Litern Helium führt.

Hersteller geben ihre Ballongröße anhand der Menge an Gas an. Bei diesem Beispielmit insgesamt 2 500 Litern Helium erreicht ein 600-Gramm-Ballon eine Höhe von20 km oder mehr. Kleinere Ballons platzen in niedrigerer, größere in höherer Höhe.Aber wenn Sie einen zu großen Ballon wählen, wird er nie platzen, und Sie habeneinen »Drifter«, der tagelang unterwegs ist. Daher ist es besser, einen kleineren Bal-lon auszuwählen, bis Sie genug Erfahrung gesammelt haben.

208 RASPBERRY PI HACKS

Page 47: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 209 — le-tex

Da Sie jetzt das Gewicht der Traglast kennen, können Sie auch die Größe des Fall-schirms berechnen, den Sie für einen langsamen und sicheren Abstieg benötigen.Fallschirm-Firmen beschreiben die Größe des Fallschirms basierend auf einer sinn-vollen Sinkrate, meist drei bis fünf Meter pro Sekunde. Wir empfehlen The Rocket-man (http://www.the-rocketman.com/), Ky Michaelson, einen früheren Hollywood-Stuntman und Designer für Stunt-Ausrüstung, der jetzt Ballons und Raketen-Fall-schirme verkauft. Mehr zu den Recovery Parachutes finden Sie auf seiner Website(http://www.the-rocketman.com/recovery.html).

Für eine Traglast mit dem angegebenen Gewicht ist ein Fallschirm mit drei bis vierFeet (90 bis 120 cm) passend. Ballon und Fallschirm sollten mit Fangleinen verbun-den sein, die 22 kg Zugbelastung oder weniger haben (laut FAA-Richtlinien).

Software installieren

Siemüssen IhrenPimit verschiedenerSoftwarebestücken, bevorSie starten können:

• I2C-Bibliotheken (für die Kommunikation mit dem Sensorboard GY-80)

• GPSd (Daemon für das Dekodieren des GPS-Datenstroms)

• GPIO-Bibliotheken (für das Ansteuern der Status-LEDs und das Einlesen von Da-ten)

• gphoto (zumAnsteuern der Nikon-Kamera– siehe »Der Einstiegmit gPhoto« aufSeite 253 für weitere Informationen)

• lighthttpd-Webserver (zumAnzeigen der Webseiten über ATV undWLAN)

• sqllite-Datenbank (zum Speichern aller Sensordaten)

• die Python-Skripten (Hauptsteuerprogramm, Sensor-Bibliotheken, Start-Skripten)

• die Webseiten (zur Anzeige über ATV undWLAN)

Das Hauptskript konfiguriert die Sensoren, dann läuft es in einer Endlosschleife undfragt fortlaufend den Status der Sensoren unddesGPS-Geräts ab,macht Fotos, spei-chert die Sensordaten in einer SQLite-Datenbank unddie Bilder in einemVerzeichnis.

Sie können die Bilder nach dem Ende der Mission mit der FFmpeg-Software zusam-menfügen (als Paket ffmpeg in Fedora oder Debian verfügbar – siehe den Kasten »WieSie ffmpeg in Fedora einrichten«), umein Video zu erzeugen. Bei einer zweistündigenTour erhalten Sie etwa 3600 Bilder, die ein mehrere Minuten langes Video ergebenkönnen.

KAPITEL 4: DRAUßEN HACKEN 209

Page 48: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 210 — le-tex

Wie Sie ffmpeg in Fedora einrichten

FFmpeg (http://ffmpeg.org) nimmt Video und Audio auf, wandelt um undstreamt. Es kann mehr als 100 Codecs einsetzen. Es wandelt in viele For-mate um, einschließlich MPEG4, avi, mjpeg und Flash. Da Fedora nurvollständig freie Software mitbringt (siehe http://fedoraproject.org/wiki/Objectives), ist FFmpeg nicht enthalten.

Das Projekt RPM Fusion (http://rpmfusion.org/) bietet ein zusätzlichesPaket-Repository mit Software, die bei Fedora nicht enthalten ist. Esgibt ein Ein-Klick-Setup aus einem Firefox-Browser (http://rpmfusion.org/Configuration), oder Sie nutzen es an der Befehlszeile:

$ su -c 'yum localinstall --nogpgcheck http://download1.rpmfusion.org/

free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm

http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-

release-$(rpm -E %fedora).noarch.rpm'

Dann können Sie dies ausführen: su -c yum install ffmpeg.

Laden Sie die Sensor-Bibliotheken, die Haupt-Steuerschleife und die Webseiten ausdem GitHub-Repository zu diesem Buch (https://github.com/spotrh/rpihacks) in einVerzeichnis auf Ihrem Raspberry Pi herunter. Dies ist die Hauptschleife des Sensor-Programms 10DOFd.py:

#!/usr/bin/python

# ==========================================================================

# 10 degree of freedom daemon for nearspace balloon telemetry

#

# Rodney Radford (AK4CH) - www.blackskytelemetry.org

#

# Interfaces to the GY-80 10DOF board, and an external GPS to log

# the sensors into a sqllite data base

# ==========================================================================

#

# Standard system libraries needed

#

import os, subprocess, sys, sh, shutil, time

import RPi.GPIO as GPIO

import sqlite3 as db

#

# Custom sensor libraries created for this project

#

from GPS import GPS # GPS lat/long/altitude/time

210 RASPBERRY PI HACKS

Page 49: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 211 — le-tex

from ADXL345 import ADXL345 # accelerometer

from BMP085 import BMP085 # pressure + temp

from HMC5883 import HMC5883 # magnetometer (compass) + temp

from L3G4200D import L3G4200D # gyroscope

#

# Camera constants

#

CAMERA_PERIOD = 15 # Number of seconds between each photo

#

# Constants that define the GPIO pins for the LEDs and the enable switch

#

SW_enable = 11 # if ON, take a photo and update dbase (else skip)

LED_status = 23 # RED (False/on, blinks at 0.5hz rate)

LED_gpsok = 24 # GREEN (False/on if GPS lock valid)

LED_camera = 25 # YELLOW (False if dbase write and camera capture enabled)

#

# Simple printable timestamp of the current time

#

def timestamp():

return time.strftime('%x %X %z')

#

# Poll each of the sensor libraries for data

#

def getSensorData():

global GPSdata

global timeG

global lat

global lon

global altG

# Get the GPS sensor data

GPSdata = gps.current_value()

if (GPSdata == None):

print "NO FIX!!"

timeG = 0

lat = 0

lon = 0

altG = 0

else:

print "RETURNED: ", GPSdata

timeG = GPSdata.time

lat = GPSdata.lat

lon = GPSdata.lon

KAPITEL 4: DRAUßEN HACKEN 211

Page 50: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 212 — le-tex

altG = GPSdata.alt

global XYZa

global roll

global pitch

# Get the accelerometer sensor data

XYZa = acc.readAccelerometer()

roll = acc.computeRoll(XYZa)

pitch = acc.computePitch(XYZa)

global XYZm

global XYZmh

# Get the compass sensor data

XYZm = compass.readCompass()

XYZmh = compass.heading(XYZm)

global XYZr

global tempG

# Get the gyroscope sensor data

XYZr = gyro.readGyro()

tempG = gyro.readTemperature()

global press

global altP

global tempP

# Get the pressure sensor data

press = pressure.readPressure()

altP = pressure.readAltitude()

tempP = pressure.readTemperature()

#

# Take a photo (and flash the photo status LED)

#

def takePhoto():

GPIO.output(LED_camera, False)

filename = time.strftime("%Y%m%d_%H%M%S.JPG")

sh.gphoto2("--capture-image-and-download", "--keep", "--force-overwrite",

"--filename", filename)

if (os.path.isfile(filename)):

sh.ln("-sf", filename, "latest.jpg")

else:

print "missing file:", filename

GPIO.output(LED_camera, True)

212 RASPBERRY PI HACKS

Page 51: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 213 — le-tex

#

# Create a brand new sqllite dbase and populate it with a dummy record

#

def createDB():

global con

DB_FILENAME = "../data/10DOF_data.db"

con = db.connect(DB_FILENAME)

with con:

cur = con.cursor()

cur.execute("CREATE TABLE Sensors("

"Lat REAL, Long REAL, AltG REAL, TimeG TEXT, "

"XA REAL, YA REAL, ZA REAL, ROLL REAL, PITCH REAL, "

"XM REAL, YM REAL, ZM REAL, XMH REAL, YMH REAL, ZMH REAL, "

"XR REAL, YR REAL, ZR REAL, TempG REAL, "

"Pressure REAL, AltP REAL, TempP REAL)")

data = [ # "Lat REAL, Long REAL, AltG REAL, TimeG TEXT, "

35.68981, -78.405353333, 84.8, '2013-05-02T01:53:41.001Z',

# XA REAL, YA REAL, ZA REAL, ROLL REAL, PITCH REAL, "

0.0, 0.0, 1.0, -1.0, 0.0,

# XM REAL, YM REAL, ZM REAL, XMH REAL, YMH REAL, ZMH REAL, "

-28.0, -96.0, -216.0, -156.037511025422, -172.613956848733,

-163.739795291688,

# XR REAL, YR REAL, ZR REAL, TempG REAL, "

0.0, -1.0, -1.0, -7.0,

# Pressure REAL, AltP REAL, TempP REAL)")

101426.0, -7.49042223835529, 16.5]

cur.execute("INSERT INTO Sensors VALUES(?" + (",?"*21) + ")", data)

#

# Write out the current sensor data to the dbase

#

def updateDB():

with con:

cur = con.cursor()

data = [lat,lon,altG,timeG,

XYZa[0],XYZa[1],XYZa[2],roll,pitch,

XYZm[0],XYZm[1],XYZm[2],XYZmh[0],XYZmh[1],XYZmh[2],

XYZr[0],XYZr[1],XYZr[2],tempG,

press,altP,tempP]

cur.execute("INSERT INTO Sensors VALUES(?" + (",?"*21) + ")", data)

KAPITEL 4: DRAUßEN HACKEN 213

Page 52: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 214 — le-tex

#

# Roll the dbase so we have the current and a series of older/backup dbases

# This allows each session to be distinct, yet protects against accidental

# erasure of all data if the payload is turned off and then back on

#

def rollDB():

# Delete the oldest snapshot

shutil.rmtree("../data/snapshot_09", True)

# Rollover snapshots 01..08 into 02..09

for version in range(8,0,-1):

os.rename("snapshot_0" + str(version), "snapshot_0" + str(version+1))

# Make a new snapshot_01 directory

os.mkdir("snapshot_01")

# Move the existing data into the new snapshot_01

os.system("mv *.JPG *.db *.log snapshot_01 > /dev/null 2>&1")

# Now create the latest.jpg link in the current data set

sh.ln("-sf", "initial.jpg", "latest.jpg")

# --------------------------------------------------------------

# Main body of the program

# --------------------------------------------------------------

os.environ['TZ'] = "EST"

# Add this project's bin path so we can pick up gphoto2 and then

# change the current directory to the data directory so we

# can deposit all the photos/data there

os.environ['PATH'] = os.environ['PATH'] + ":../bin"

os.chdir("/home/pi/balloon/data")

# Initialize the GPIO LEDs/switch

GPIO.setwarnings(False)

GPIO.setmode(GPIO.BCM)

GPIO.setup(SW_enable, GPIO.IN)

GPIO.setup(LED_status, GPIO.OUT)

GPIO.setup(LED_gpsok, GPIO.OUT)

GPIO.setup(LED_camera, GPIO.OUT)

# Make sure the LEDs are off by default (will flash them later)

GPIO.output(LED_status, True)

GPIO.output(LED_gpsok, True)

GPIO.output(LED_camera, True)

214 RASPBERRY PI HACKS

Page 53: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 215 — le-tex

# Initialize the sensor libraries

gps = GPS()

acc = ADXL345()

pressure = BMP085()

compass = HMC5883()

gyro = L3G4200D()

# Start up the background GPS thread

gps.start()

# Roll the old dbase values and create a new one for this mission

rollDB()

createDB()

# Flash the LEDs for 2 seconds - this is a good visual indication that

# the program is up and the LEDs all work, as well as it works as a

# time delay to make sure the libraries are stable (background GPS task)

for loop in range(0,4):

blink_on = ((loop & 1) == 1)

GPIO.output(LED_status, blink_on)

GPIO.output(LED_gpsok, blink_on)

GPIO.output(LED_camera, blink_on)

time.sleep (0.5)

# Acivity boolean - toggles on each loop (controls activity LED)

activity = True

# Set up the next camera time so a photo will be taken as soon as the

# enable switch is turned on

next_camera_time = 0

# Run forever

while True:

# Read from each of the sensors

getSensorData()

# Toggle the activity LED

activity = not activity

GPIO.output(LED_status, activity)

# Indicate GPS status on the green LED

GPIO.output(LED_gpsok, (GPSdata == None))

# If the enable switch is on, then update the dbase and take a picture

if (GPIO.input(SW_enable)):

KAPITEL 4: DRAUßEN HACKEN 215

Page 54: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 216 — le-tex

# Update the dbase with the latest sensor readings

updateDB()

# Is it also time for a new photo?

if (time.time() > next_camera_time):

takePhoto()

# Now calculate the time for the next photo

next_camera_time = next_camera_time + CAMERA_PERIOD

# Delay for 0.5 seconds (this controls the activity LED flash rate)

time.sleep(0.5)

Dieses Skript stationid.py generiert die Haupt-Webseite:

#!/usr/bin/python

# -*- coding: utf-8 -*-

import sqlite3 as db

import sys

import time

import cgitb

cgitb.enable()

import cgi

def openDB():

global con

DB_FILENAME = "../data/10DOF_data.db"

con = db.connect(DB_FILENAME)

try:

openDB()

except db.Error, e:

print "<!DOCTYPE html><head><meta http-equiv='refresh' content='15'>

</head>Error %s:</html>" % e.args[0]

sys.exit(1)

try:

cur = con.cursor()

cur.execute('select * from Sensors order by TimeG desc limit 1')

rows = cur.fetchall()

except db.Error, e:

print "<!DOCTYPE html><head><meta http-equiv='refresh' content='15'>

</head>Error %s:</html>" % e.args[0]

sys.exit(1)

finally:

216 RASPBERRY PI HACKS

Page 55: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 217 — le-tex

if con:

con.close()

template = "<!DOCTYPE html>\n"

template += "<html><head><meta http-equiv='refresh' content='5'>

<title>First Library in Space</title>\n" # EDIT REFRESH TIME HERE

template += "<link href='styles.css' rel='stylesheet' type='text/css'>\n"

template += "</head><body>\n"

template += '<div id="content">\n'

# ENTER CALL SIGN HERE:

template += '<div id="page-header"><h2>First Library in Space/July 10,

2013</h2></div>'

template += '<img id="idimage" src="latest.jpg">'

template += '<div id="statbox">'

template += '<p>AK4CH</p>'

template += "<br>\n"

template += '<p>'

template += (rows[0][3])[11:19] # Chopping off date

template += "</p>\n"

template += '<p>N '

template += (str(rows[0][0]))[:7] # Truncating

template += "</p>\n"

template += '<p> W '

template += (str(abs(rows[0][1])))[:7] # Truncating

template += "</p>\n"

template += '<p>A: '

template += str(int(rows[0][2]))[:10]

template += "'</p>\n"

template += '<p>T: '

template += str(int((32 + (9*rows[0][21])/5) + 0.5))

template += "&deg; F</p>\n"

template += "</div>"

template += '</div>\n'

template += "</body></html>\n"

print template

KAPITEL 4: DRAUßEN HACKEN 217

Page 56: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 218 — le-tex

Wenn Sie den vollständigen Tarball von GitHub herunterladen, finden Sie eine Reihevon Verzeichnissen vor. Nutzen Sie das Programm bin/startup.sh, um diese Skrip-ten und Programme automatisch zu starten. Die Dateien können sich an einer belie-bigen Stelle in Ihrer Dateistruktur befinden.

Die Nutzlast verfolgen

Irgendwie müssen Sie Ihre Nutzlast wiederfinden können, wenn sie wieder den Bo-den erreicht hat. Dazu gibt es viele verschiedene Möglichkeiten. Eine ist ein SPOTSatellite GPS Messenger Device. Der Vorteil ist, dass Sie keine Amateurfunkerlizenzbrauchen, allerdings ist das Ganze auch nicht billig, weil Sie nur Lizenzen für jeweilsein ganzes Jahr erwerben können. Zudem werden keine Höhendaten bereitgestelltund über 10 km Höhe keine Positionsdaten erfasst.

Eine andere Möglichkeit ist ein Amateurfunk-Bake mit einem Automatic Packet Re-porting System (APRS). Dies ist günstiger und man muss keine Gebühren entrich-ten – dafür benötigen Sie eine Amateurfunk-Lizenz. Ein weiterer Vorteil ist, dass dasAPRS beim Einsatz eines High-Altitude-GPS die Telemetriedaten während des ge-samten Flugs erfassen kann.

Eine noch bessereOption ist natürlich die redundanteVersion: Lassen Sie beidesmit-fliegen!

Vorbereitungen zum Start

Wählen Sie einen Ort außerhalb der Flugrouten der großen Fluggesellschaften. Ent-sprechende Karten finden Sie online. Halten Sie sich außerdem fern von Start- undLandebahnen oder meiden Sie besser ganz allgemein die Nähe von Flugplätzen. Ver-suchen Sie, einen Ort zu finden, an dem Sie einen guten Blick in alle Richtungen ha-ben, zudem dürfen keine Stromleitungen oder hohe Bäume in der Nähe sein. HabenSie einen Ort ausgewählt, setzen Sie sich mit der lokalen Luftsicherungs-Institutionin Verbindung, um sicherzustellen, dass es dort (und auf dem projektierten Flugweg)keine Probleme gibt.

Haben Sie einen Ort und einen Termin festgelegt, können Sie mit dem CUSF Lan-ding Predictor (http://predict.habhub.org/) die voraussichtliche Flugroute berech-nen. Hierbei werden die Daten von Wetterballonen genutzt, um die Windgeschwin-digkeit und -richtung für frei fliegende Objekte zu ermitteln.

Sie können den projezierten Kurs und die Flugdauer ausgeben lassen. So können Sieermitteln, ob der Ballon in einen stark beflogenen Luftkorridor gelangen könnte, übergrößere Wasserflächen fliegt oder andere unerwünschte Bereich durchquert. Wenndie Vorhersage nicht gut aussieht, könnenSie vielleicht einen anderenOrt oder einenanderen Startzeitpunkt ausprobieren (manchmal reicht schon ein Verschieben umein paar Stunden).

218 RASPBERRY PI HACKS

Page 57: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 219 — le-tex

Am Startplatz werden Sie Ihre Heliumflasche, das Absperrventil, den Schlauch unddas System zum Befüllen benötigen, aber auch eine große Plane, auf der Sie allesablegen können. Füllen Sie den Ballon, verbinden Sie ihn mit der Nutzlast, schaltenSie alles an Elektronik ein, was laufen soll, und lassen Sie den Ballon steigen.

Abhängig davon, was bei Ihrer Nutzlast mitfliegt, müssen Sie eventuell auch am Bo-den eine »Basisstation« einrichten. Wenn Sie einen USB-WLAN-Adapter mit auf dieReise schicken, brauchen Sie amBoden eine gute WLAN-Antenne, zumBeispiel eineParabol-WiFi-Antenne an einemMast, verbundenmit einem Laptop.

Für einen Empfang des Amateur-TV (ATV) brauchenSie eine Richtantenne (zumBei-spiel eine Yagi), um das Videosignal zu empfangen. Sie können einen Fernseher undeinen Videorecorder anschließen (es gibt sogar 12-V-Versionen für unterwegs), umdas Ganze einfach zu verfolgen und aufzuzeichnen. Verfolgen Sie Ihre Sonde schließ-lich nochmit APRS, brauchen Sie ein portables APRS-kompatibles Amateurfunksys-tem, um das Signal in der Landschaft zu erfassen.

Abbildung 4-13:Am Rand der Atmosphäre, aufgenommen mit einer durch einen Raspberry Pi gesteuerten Nutzlast(Mit freundlicher Überlassung durch Rodney Radford)

KAPITEL 4: DRAUßEN HACKEN 219

Page 58: Inhaltsverzeichnis · Linux unterstützt zwar einige USB-Thermometer, aber es ist genauso einfach (und auf jeden Fall interessanter), einen einfachen Temperatursen- sor an die GPIO-Pins

Ruth Suehle und Tom Callaway: Hacks für Raspberry Pi — 2014/4/23 — page 220 — le-tex

Ergebnis der Mission

Der hier beschriebene Ballon und die Nutzlast enthielten beim ersten Start denVideo-Transmitter, USB-WLAN, Trackuino APRS und ein SPOT-System. Die Video-verbindung hielt, bis das Ganze eta 20 000 m hoch und 30 km entfernt war. Leiderfunktionierten die APRS- und SPOT-Systeme nicht und die Nutzlast wurde nie wie-dergefunden. Ein paar Wochen später wurde ein neues System zusammengestelltund steigen gelassen. Dieses Mal entstanden mehr als 3200 Fotos mit Hilfe derRaspberry-Pi-Kamera (über 8 GB Daten!) und die Nutzlast konnte geborgen wer-den. Abbildung 4-13 zeigt, was für Fotos Sie bei einem erfolgreichen Start erhaltenkönnen.

Mehr Details zur Nutzlast, zum Aufbau und Hinweise zum Starten und Bergen sowiezukünftige Forschungsprojekte finden Sie auf der Black Sky Telemetry Site (http://www.blackskytelemetry.org).

Mit dem Raspberry Pi als Steuersystem für die Nutzlast gibt es viele potenzielle Ver-besserungsmöglichkeiten, zumBeispiel mehr Kameras, eine servogesteuerte Kame-ra, die man ausrichten kann, eine bessere Datenübertragung und natürlich mehrSensoren.

Rodney Radford

220 RASPBERRY PI HACKS