Was kann der BMP085?

  • Kosten: 8 - 12€
  • 1,8 - 3,6V Eingangsspannung
  • Stromverbrauch
    • 3 µA (ultra-low power mode, 1Hz Samplingrate)
    • 32 µA (advanced power mode, 1Hz Samplingrate)
    • 0.1 μA Standby
    • max. 650 μA in der Spitze
  • Temperaturbereich: -40 bis 85°C
  • Luftdruck: 300 bis 1100 hPa

Aufbau

Der BMP085 ist ganz einfach am Raspberry Pi zu betreiben, da man ihn über den I²C-Bus anspricht. Beim Anschließen muss man aber aufpassen, da die verschiedenen Hersteller verschiedene Pin-Belegungen haben. Die Belegung steht auf der Vorder- oder Rückseite der Platine. Es gibt auch Sensoren, bei denen man die Pins noch anlöten muss.

Steckbrett mit BMP085 und Raspberry Pi

An den roten Leitungen liegen 3,3V an, die schwarzen Leitungen liegen auf Masse. Die orange und violette Leitung sind der I²C-Bus, wobei orange SDA (Serial Data) und violett SCL (Serial Clock) ist. Hier findet man ein paar mehr technische Informationen zum I²C-Bus

Programmierung

Betriebssystem vorbereiten

Um den I²C-Bus ansprechen zu können, muss man 2 Kernel-Module laden und ein paar Pakete installieren. Unter Raspbian und Debian ist alles in den Standard-Paketquellen verfügbar.

sudo apt-get update
sudo apt-get install build-essential python-dev python-smbus

Nun kümmern wir uns um die Kernelmodule. Bei Raspbian muss man die die Module noch in der Datei /etc/modprobe.d/raspi-blacklist.conf mit einer Raute # am Zeilenanfang auskommentieren. Dazu muss man root oder den Editor mit sudo starten.

sudo su -
echo "i2c-dev" >> /etc/modules
echo "i2c_bcm2708" >> /etc/modules

Damit man bequem auf den Sensor zugreifen kann, sollte man auch gleich die passende Python-Bibliothek von Adafruit installieren.

git clone https://github.com/adafruit/Adafruit_Python_BMP
cd Adafruit_Python_BMP
sudo python setup.py install

Es gibt auch hier im examples-Verzeichnis einige Beispiele.

Minimalbeispiel

Das kleine Python-Programm muss als root bzw. mit sudo ausgeführt werden.

#!/usr/bin/python
# -*- coding: utf-8 -*-
#

import Adafruit_BMP.BMP085 as BMP085

bmp085 = BMP085.BMP085()

# Read the current temperature
temp   = bmp085.read_temperature()

# Read the current barometric pressure level
pressure = bmp085.read_pressure()

# calculate hPa
pressure = pressure / 100.0

print "Temperature:  {:8.2f} °C".format(temp)
print "Pressure:     {:8.2f} hPa".format(pressure)

Man kann auch mit Hilfe der Bibliothek die Höhe barometrisch bestimmen und auch den Luftdruck auf Meereshöhe. Nur der Luftdruck auf Meereshöhe ist zwischen Wetterstationen vergleichbar.