Luftdruck messen

Nachdem ich zuletzt einen DHT22-Sensor angeschlossen habe, möchte ich nun noch einen Luftdrucksensor anschließen. Die Wahl viel auf den Sensor BMP180 welcher über den I²C-Bus angeschlossen wird. Die Pins dafür auf dem Raspberry-Pi sind GPIO2 und GPIO3.

Die Hardware

Bei diesem Sensor liegt die Stiftleiste zum Anschluß eines Steckers lose bei. Diese muß selber eingelötet werden oder das Kabel wird direkt am Sensor angelötet. Ich habe mich für eine Stiftleiste entschieden, jedoch habe ich eine abgewinkelte Version verwendet.

Die Anschlüsse sind auf der Rückseite der kleinen Platine beschriftet. Im obigen Bild sind die Kontakte von links nach rechts: SDA, SCL, GND und VIN. SDA wird mit GPIO2 des Raspberry Pi verbunden, SCL mit GPIO3, GND mit GND und VIN mit +3.3V.

Ansteuerung der Hardware

Auch für diesen Sensor gibt es eine Software von Adafruit um die Daten in Python auszulesen. Und wie zuvor gestaltet sich die Installation von GitHub sehr einfach:

1
2
3
git clone https://github.com/adafruit/Adafruit_Python_BMP.git
cd Adafruit_Python_BMP
sudo python3 setup.py install

Allerdings muß der I²C-Bus des Raspberry Pi noch aktiviert werden. In der Datei /etc/modules ergänzt man zwei Zeilen mit „i2c-bcm2708“ und „i2c-dev“.

Nun muß man noch das Programm sudo raspi-config starten und dort, unter dem Punkt „Interfacing Options“ den Punkt „I2C“ auswählen und aktivieren. Damit die Einstellungen ihre Wirkung entfalten muß man jetzt den Computer neu starten.

Auch hier muß das Script welches auf die Hardware zugreift mit Root-Rechten laufen, also erstelle ich auch hier ein kleines Script unter /root/read_BMP180.py, welches jedoch deutlich schmaler ausfällt:

1
2
3
4
5
6
7
import Adafruit_BMP.BMP085 as BMP085

if __name__ == "__main__":
    sensor = BMP085.BMP085 (mode=BMP085.BMP085_ULTRAHIGHRES)
    t = sensor.read_temperature ()
    p = sensor.read_pressure () / 100.0
    print (repr ((p, t)))

Die Funktion sensor.read_pressure () liefert das Ergebnis in Pascal, da ich jedoch in allen folgenden Schritten mit Hektopascal arbeiten möchte, teile ich den Rückgabewert durch 100. Auch dieser Sensor hat ein Thermometer integriert, dessen Ergebnis ich an dieser Stelle auch ausgebe.

Jetzt noch mittels sudo visudo folgende Zeile in der Datei /etc/sudoers ergänzen und in Zukunft kann ich den Sensor auch ohne Root-Rechte als Benuter „user“ durch den Aufruf von sudo /usr/bin/python3 /root/read_BMP180.py auslesen:

1
user ALL=(ALL) NOPASSWD: /usr/bin/python3 /root/read_BMP180.py

Weiteres im nächsten Beitrag.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.