BMP085

Luftdrucksensor BMP085 am Raspberry Pi anschließen

Der Luftdrucksensor BMP085 ist ein kleines Bauteil, womit der aktuelle Luftdruck in der Umgebung gemessen werden kann. Diese Werte können dann z. B. für eine Wetterprognose ausgewertet werden.BMP085Das kleine silberne Quadrat auf der Platine ist der Luftdrucksensor. Ein Temperatursensor ist ebenfalls bereits verlötet. Somit reicht allein der Sensor BMP085, um eine eigene Wetterstation zu bauen.  Eine Anleitung zum anschließen eines Temperatursensors findest du ebenfalls auf meinem Blog.

Sensor anschließen

Dank seiner I²C-Schnittstelle und der Betriebsspannung von 1,8 V bis 3,6 V kann der BMP085 problemlos direkt an den Raspberry Pi angeschlossen werden. Die sechs Anschlüsse (Vcc, SDA, SCL, XCLR, EOC, GND) des Sensors müssen dazu nicht alle zwingend angeschlossen werden. XCLR und EOC dürfen offen bleiben oder können mit einem GPIO verbunden werden (siehe weiter unten). Die anderen Anschlüsse sollten wie folgt angeschlossen werden:

Pinbelegung BMP085

  • Vcc an Pin 1 (3,3 V)
  • SDA an Pin 3 (GPIO 2 / SDA)
  • SCL an Pin 5 (GPIO 3 / SCL)
  • GND an Pin 6 (Ground)

 

Software vorbereiten

Nun müssen die Kernelmodule aktiviert werden. In der Datei „/etc/modules“ müssen folgende Module hinzugefügt werden.

i2c-bcm2708
i2c-dev

In der Datei „/etc/modprobe.d/raspi-blacklist.conf“ muss der Eintrag „blacklist i2c-bcm2708“ auskommentiert bzw. entfernt werden.

#blacklist i2c-bcm2708

Anschließend, falls noch nicht installiert, müssen noch die erforderlichen Python-Module installiert werden.

sudo apt-get install python-smbus i2c-tools

Nach einem Neustart des Raspberry Pi werden die Module sauber geladen und der Befehl

i2cdetect -y 1

kann ausgeführt werden. Die Zahl muss dabei der Revision eures Raspberry Pi  angepasst werden (Revision 1 = 0; Revision 2 = 1). Nach dem Ausführen sollte soetwas erscheinen:

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- 77

Der Sensor wird auf Adresse 0x77 angezeigt.

Software installieren

Damit die Rohdaten nicht selbst übersetzt werden müssen, verwende ich Adafruit Python BMP. Diese Bibliothek wird nun auf den Raspberry Pi in das Verzeichnis „/var/“ heruntergeladen:

cd /var/
git clone https://github.com/adafruit/Adafruit_Python_BMP.git

Nun kann der Sensor mit einem Beispielscript getestet werden.

cd Adafruit_Python_BMP/examples/
python simpletest.py

Funktioniert alles, erscheint eine Ausgabe wie diese:

Temp = 25.20 *C
Pressure = 100999.60 Pa
Altitude = 114.10 m
Sealevel Pressure = 101154.00 Pa

In meinem Pi Control findest du ein passendes Plugin, um dir die Werte in einer Übersicht und Statistik anzeigen zu lassen.

XCLR und EOC

Diese beiden Pins müssen nicht angeschlossen werden. Zur Vollständigkeit möchte ich diese aber noch kurz erklären. Der XCLR ist ein Eingang am BMP085, wird auf diesem ein mindestens 1 µs dauernden HIGH-Level angesetzt, wird der Sensor resettet. Der EOC ist ein Ausgang am BMP085, dieser gibt ein HIGH-Level von sich, wenn das Ende eines Messvorgangs erreicht ist. EOC = End of Conversion.

Danke an Torsten Zahmow, der mir den Sensor kostenlos zur Verfügung gestellt hat.

13 Gedanken zu „Luftdrucksensor BMP085 am Raspberry Pi anschließen

  1. Nachdem ich alles wie beschrieben installiert habe, wird in dem Plugin „Luftdruck“ eine Fehlermeldung ausgegeben. Es konnten keine Daten ausgelesen werden. Der Pfad stimmt und der Sensor ist auch ordnungsgemäß angeschlossen weil das Beispielprogramm saubere Werte liefert.

    Was könnte noch falsch sein.

    Mit freundlichen Grüssen
    Heinz-Rolf

    1. Hallo Heinz-Rolf,
      was für eine Fehlermeldung bekommst du den angezeigt? Bei mir lautet der Pfad z. B. „/var/Adafruit-Raspberry-Pi-Python-Code/Adafruit_BMP085/“. Sieht er bei dir ebenso ähnlich aus?

      Gruß
      Willy

      1. Der Fehler lautet wie folgt: „Leider ist ein Fehler aufgetreten! Es konnten keine Werte abgefragt werden. Bitte überprüfe den Pfad zur Bibiliothek und ob der Sensor ordnungsgemäß angeschlossen ist.“

        Der Pfad sieht so aus : /var/Adafruit-Raspberry-Pi-Python-Code/Adafruit_BMP085

        Das Beispielscript Adafruit_BMP085_example.py liefert folgende Werte:
        Temperature: 21.10 C
        Pressure: 1002.09 hPa
        Altitude: 93.16

        also eigendlich alles ok.

        1. Vielen Dank.
          Navigiere bitte mal über die Konsole zum Pi Control, in den Ordner resources/plugins/air_pressure/includes und führe folgenden Befehl aus:
          python get_pressure.py "/var/Adafruit-Raspberry-Pi-Python-Code/Adafruit_BMP085/" 0

          Gruß
          Willy

          1. Traceback (most recent call last):
            File „get_pressure.py“, line 7, in
            bmp = BMP085(0x77, 3)
            File „/var/Adafruit-Raspberry-Pi-Python-Code/Adafruit_BMP085/Adafruit_BMP085.py“, line 52, in __init__
            self.i2c = Adafruit_I2C(address)
            File „/var/Adafruit-Raspberry-Pi-Python-Code/Adafruit_BMP085/Adafruit_I2C.py“, line 43, in __init__
            self.bus = smbus.SMBus(busnum if busnum >= 0 else Adafruit_I2C.getPiI2CBusNumber())
            IOError: [Errno 13] Permission denied

    1. Habe gerade ein Update des Plugins veröffentlicht. Du kannst es unter „Plugins“ > „Nach Plugins suchen“ > „Luftdruck“ > „Aktualisieren“ aktualisieren.
      Sollten immer noch Probleme auftreten, schreibe mir bitte. Danke.

      Gruß
      Willy

  2. Bei mir kommt ebenfalls ein Permission denied, als root kann ich es jedoch problemlos ausführen…

    Traceback (most recent call last):
    File „/usr/share/nginx/www/pic/resources/plugins/air_pressure/includes/get_pressure.py“, line 6, in
    bmp = BMP085(0x77, 3)
    File „/opt/Adafruit-Raspberry-Pi-Python-Code/Adafruit_BMP085/Adafruit_BMP085.py“, line 52, in __init__
    self.i2c = Adafruit_I2C(address)
    File „/opt/Adafruit-Raspberry-Pi-Python-Code/Adafruit_BMP085/Adafruit_I2C.py“, line 43, in __init__
    self.bus = smbus.SMBus(busnum if busnum >= 0 else Adafruit_I2C.getPiI2CBusNumber())
    IOError: [Errno 13] Permission denied

    $ sudo python /usr/share/nginx/www/pic/resources/plugins/air_pressure/includes/get_pressure.py „/opt/Adafruit-Raspberry-Pi-Python-Code/Adafruit_BMP085“ 0
    23.10| 951.63| 951.63

  3. Konnte meinen Fehler beheben. Lag daran das ich meinen SSH User umbenannt habe nach der Installation von Pi Control… leider kam im UI keine Fehlermeldung, sondern nur ein 500er. 🙁

  4. Leider bekomme ich den BMP085 nicht zum laufen
    Obwohl i2cdetect -y 1 den Sensor anzeigt

    /var/Adafruit-Raspberry-Pi-Python-Code ist zwar vorhanden aber bis auf ein git verzeichnis und eine readme datei leer

    cd Adafruit-Raspberry-Pi-Python-Code/Adafruit_BMP085/
    python Adafruit_BMP085_example.py

    funktioniert also nicht da kein Adafruit_BMP085 Verzeichnis vorhanden ist
    Laut readme hat sich alles was den Code für den Raspberry betrifft geändert.
    Das Tutorial müsste mal angepasst werden da es so nicht mehr funktioniert
    Kann man bis das soweit ist die fehlenden Dateien als Zip hier zur Verfügung stellen ?
    z.B. die python Adafruit_BMP085_example.py

Schreibe einen Kommentar

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