Vor dem Booten sollten Sie noch testen, welcher Kernel gerade läuft (Listing 7). Es wäre ärgerlich, wenn nach dem Booten noch der alte Betriebssystemkern liefe und Sie es nicht bemerken. Nun ist der entscheidende Moment gekommen: Daumen drücken und neu booten. Nach dem Reboot führen Sie noch einmal uname -a aus, um zu sehen, ob der neue Kernel läuft. Hat das geklappt, widmen Sie sich dem Sensor.
Listing 7
$ uname -a Linux raspberrypi 3.18.11-v7+ #781 SMP PREEMPT Tue Apr 21 18:07:59 BST 2015 armv7l GNU/Linux
Sollte hingegen etwas schiefgehen, denn stecken Sie die SD-Karte aus dem RasPi in einen PC und machen die Änderungen in der Datei /boot/config.txt rückgängig. Danach bootet der Mini-PC wieder mit dem alten Kernel.
Sensor testen
Bevor Sie mit dem Test starten, schauen Sie sich am besten die aktuelle Konfiguration des I2C-Busses an. Der Sensor taucht nach wie vor unter der Adresse 0x77h auf (Listing 8). Jetzt teilen Sie dem Kernel mit, dass sich an dieser Adresse am I2C-Bus ein BMP180 befindet:
$ sudo echo bmp085 0x77 > /sys/bus/i2c/devices/i2c-1/new_device
Listing 8
$ i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- UU -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- UU -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- 77
Sehen Sie sich nun als normaler Benutzer noch einmal die Konfiguration des Busses an: An der Stelle für die Adresse 0x77h steht jetzt ein UU (Listing 9). Das bedeutet, dass der Kernel für das Gerät an dieser Adresse einen Treiber geladen hat. Die zwei anderen Geräte, die Sie in der Ausgabe sehen, sind ebenfalls vom neuen Kernel belegt. Sie interessieren jetzt erst einmal nicht.
Listing 9
$ i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- UU -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- UU -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- UU
Der Treiber erzeugt zwei Geräte, die Sie einfach auslesen können. Beachten Sie dabei, dass Sie den ermittelten Wert für die Temperatur durch 10 teilen müssen, den Wert für den Luftdruck durch 100 (Listing 10, Zeile 1 und 2). Um sich das Testen etwas zu erleichtern, verwenden Sie den Befehl aus der dritten Zeile.
Listing 10
$ cat /sys/bus/i2c/devices/1-0077/pressure0_input 99835 $ cat /sys/bus/i2c/devices/1-0077/temp0_input 256 $ watch cat /sys/bus/i2c/devices/1-0077/*_input$
Wie Sie herausbekommen, ob der ermittelte Luftdruck plausibel ist, haben Sie am Anfang des Artikels erfahren. Um den Temperatursensor zu testen, böte es sich an, einfach den Finger daraufzulegen und abzuwarten. Es gibt aber eine viel interessantere Möglichkeit: Kältespray [2]. Damit bekommen Sie in Sekundenschnelle den Sensor auf eine Temperatur weit unter null.
Die Investition in eine Dose Kältespray ist auch für andere Zwecke sinnvoll: Defekte Transistoren funktionieren oft wieder, wenn Sie sie frosten. Die Wiederauferstehung hält jedoch nur an, solange die Halbleiter kalt bleiben. Das Vorgehen bietet aber eine einfache Möglichkeit, defekte Komponenten auf einer Platine zu identifizieren.
Fazit
Der BMP180 ist ein interessanter Sensor, der sich für viele Projekte eignet; sein Datenblatt gibt sich sehr ausführlich. Da der Baustein seine Werte im Klartext liefert, käme sogar ein einfaches Shellskript zum Auswerten infrage. Der Aufwand für den Bau eines eigenen Kernels ist jedoch beträchtlich. Allerdings gewinnen Sie dabei nicht nur einen Zuwachs an Komfort, sondern lernen unter Umständen ein paar elementare Grundlagen über Linux als freies Betriebssystem.
Infos





