Raspberry Pi Sensoren

Raspberry Pi: Luftdrucksensor BMP180 ansteuern

BMP180
Geschrieben von Tony

Der Raspberry Pi unterstütz durch die GPIO-Pins zahlreiche Protokoll und ermöglicht somit das Beschalten von diversen Sensoren und anderen Geräten. Der Luftdrucksensor BMP180 eignet sich besonders zur Realisierung einer Wetterstation oder ähnlichem. Der BMP180 Sensor misst neben dem Luftdruck auch die Temperatur und wird über I2C ausgelesen. Wie man den Luftdrucksensor BMP180 mit dem Raspberry Pi ansteuern und verwenden kann, wird im Folgenden erklärt.

Luftdrucksensor BMP180

Das Barometer BMP180, auch bezeichnet als GY-68, misst neben dem Luftdruck auch die aktuelle Temperatur der Umgebung und wird über den seriellen Datenbus I2C mit dem Raspberry Pi verbunden und ausgelesen. Der Vorgänger des BMP180 ist der Luftdrucksensor BMP085 (oder auch GY-65). Die beiden Sensoren unterscheiden sich prinzipiell in der Genauigkeit: Beim älteren Modell BMP085 weicht die Temperatur um ±2°C und der Luftdruck um -4 bis +4 hPa ab. Beim Luftdrucksensor BMP180 sind die Abweichungen mit ±1°C und -4 bis +2 hPa für Temperatur und Luftdruck etwas geringer.

Weiterhin unterscheiden sich die Sensorplatinen in der Anzahl der Pins. Dennoch werden für die Ansteuerung nur 4 Pins verwendet – bei beiden Modellen. Je nach Hersteller kann die Pinanzahl der Sensorplatine anders sein. Dennoch funktionieren von der Beschaltung und Ansteuerung her alle gleich. Im Folgenden sind einige Links zu den Sensoren aufgelistet. Preislich wird der Luftdrucksensor BMP180 von 3 bis 8 Euro angeboten, je nachdem wie die dazugehörigen Versandkosten ausfallen.

Für dieses Tutorial verwende ich den markierten Link in der Auflistung. Wie bereits erläutert, gibt es das Sensormodul auch von anderen Herstellern. Diese wurden aber an dieser Stelle nicht getestet, sodass ich dazu keine Aussage über die Qualität treffen kann. prinzipiell sollten diese Module aber gleichermaßen funktionieren, da alle notwendigen Pins vorhanden sin.

Pinbelegung Luftdrucksensor BMP180

Der Luftdrucksensor BMP180 wird mittels dem I2C Bus an den Raspberry Pi angeschlossen und mit 3,3 Volt versorgt. Dafür können direkt die 3,3 Volt des Pi genutzt werden. Im Folgenden ist der Sensor und die Bedeutung der Pins erläutert. Andere BMP180 Sensorplatinen (siehe Links) bringen nur 4 Pins mit. Dabei ist der letzte Pin, welcher nicht benötigt wird, bereits vernachlässigt wurden.

BMP180

BMP180

  • Pin 1: VCC, Betriebsspannung 3,3 Volt
  • Pin 2: GND, Masse
  • Pin 3: I2C (SCL)
  • Pin 4: I2C (SDA)
  • Pin 5: 3,3 (nicht benötigt)
]

Schaltungsaufbau

Um den Luftdrucksensor BMP180 mit dem Raspberry Pi anzusteuern müssen 4 Pins mit dem Pi verbunden werden. Versorgt wird der Sensor mit 3,3 Volt des Raspberry Pi. Dazu wird Pin 1 des Sensors mit Pin 1 des Raspberry Pi verbunden. Gleichzeitig wird der Masse-Pin des BMP180 (Pin 2) mit einem GND-Pin des Raspberry Pi verbunden (Pin 6). Als Datenleitung(en) kommt hier der I2C Bus zum Einsatz: Pin 3 (SCL) des BMP180 wird an Pin 5 des Pi und Pin 4 des Sensors (SDA) wird mit Pin 3 verbunden.

BMP180Raspberry Pi
Pin 1: VCCPin 1
Pin 2: GNDPin 6
Pin 3: SCLPin 5
Pin 4: SDAPin 3
Pin 5: 3,3-

Raspberry Pi: I2C aktivieren

Die Ansteuerung des BMP180 erfolgt wie schon erläutert über den I2C Datenbus. I2C ist von Haus aus nicht am Raspberry Pi aktiviert, sodass dies softwareseitig der erste Schritt ist, um den Luftdrucksensor zu verwenden. Im Artikel Raspberry Pi: I2C aktivieren kann nachgelesen werden, wie man I2C am Raspberry Pi aktiviert. Dennoch hier nochmal in der Kurzfassung, wie man I2C am Raspberry Pi aktiviert.

I2C Kernel Suppert aktivieren

Zunächst können wir I2C über das Konfigurationsmenü des Pi aktivieren.

sudo raspi-config

Dazu navigiert man in der Oberfläche zu Advanced Options – I2C um den Datenbus zu aktivieren (Enable).

/etc/modules

In der Datei /etc/modules wird festgelegt, welche Kernel-Module beim Systemstart geladen werden soll. Dort müssen relevante Einträge für I2C ebenfalls eingetragen sein bzw. eingetragen werden.

sudo nano /etc/modules

In die Datei müssen folgende Zeilen stehen.

i2c-bcm2708
i2c-dev

/etc/modules

/etc/modules

/etc/modprobe.d/raspi-blacklist.conf

In der Datei /etc/modprobe.d/raspi-blacklist.conf stehen Module, die während des Betriebs nicht geladen werden. Das bedeutet konkret, dass hier keine Einträge zu I2C enthalten sein dürfen.

/etc/modprobe.d/raspi-blacklist.conf

Die folgenden Zeilen dürfen nicht in der Datei stehen bzw. müssen durch voranstellen des Zeichens # pro Zeile auskommentiert werden, damit I2C aktiv wird.

# blacklist spi and i2c by default
# blacklist spi-bcm2708
# blacklist i2c-bcm2708

Damit alle Einstellungen zu I2C übernommen werden, muss der Raspberry Pi neugestartet werden.

sudo reboot

Luftdrucksensor BMP180 auslesen mit Python

Zum Auslesen des angeschlossenen Luftdrucksensor BMP180 über den I2C Datenbus nutzen wir in diesem Fall die Programmiersprache Python. Dazu bringen wir das System zunächst auf den aktuellsten Stand und installieren relevante Pakete.

sudo apt-get update
sudo apt-get install git build-essential python-dev python-smbus i2c-tools

Als nächstes Testen wir zunächst, ob der BMP180 auf unserem I2C Bus auftaucht.

i2cdetect -y 1

In der Ausgabe auf diesen Befehl sollte der Sensor unter der Adresse 77 sichtbar werden. Damit wissen wir, dass der BMP180 erfolgreich an den Raspberry Pi angeschlossen ist.

i2cdetect BMP180

i2cdetect BMP180

Um nun den Sensor auszulesen greifen wir auf die entsprechende Python-Bibliothek von Adafruit zurück. Diese bringt bereit alle notwendigen Funktionen mit, welche zum Auslesen des BMP180 notwendig sind und funktioniert außerdem auch mit dem Vorgängermodell BMP085. Die Bibliothek laden wir uns zunächst vom Git-Repository herunter und wechseln in das entsprechende Verzeichnis.

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

Anhand des Ordners ist zu erkennen, das es sich hierbei um die Bibliothek des BMP085 handelt. Diese ist aber mit dem BMP180 kompatibel, sodass wir diese dafür gleichermaßen nutzen können. Zu der Bibliothek wird auch ein Beispiel-Skript mitgebracht, welches wir für den ersten Test nutzen.

sudo python Adafruit_BMP085_example.py

Als Ausgabe erhalte ich folgende Zeilen.

Temperature: 24.10 C
Pressure: 989.78 hPa
Altitude: 197.09

Eigener Skript

Um die Ansteuerung aus einem eigenen Pythin Code heraus zu realisieren können die Codezeilen aus dem Beispiel-Skript der Bibliothek einfacher Weise direkt übernommen werden und auf die eigenen Bedürfnisse zur Weiterverarbeitung angepasst werden. Dabei ist es sinnvoll sich die Beispieldatei zu kopieren und einfach abzuändern. Die Beispiel-Datei ermöglicht mit folgenden Zeilen das Auslesen des BMP180 bzw. des BMP085 mittels Python.

Über den Autor

Tony

Ich bin Tony, begeistert von Einplatinencomputer und berichte über meine Erfahrungen und Projekte mit dem Raspberry Pi, Banana Pi und anderen Minicomputern.

Hinterlasse eine Antwort

Kommentar