Druck messen mit dem Raspberry Pi. Das ist die sechste von sieben Missionen in einem dreistündigen Program für Schüler mit ihren Lehrern. Ziel des Programms ist, Schüler dazu fit zu machen, dass sie eine Wetterstation aufzubauen können. Die sechste Mission behandelt die Luftdruckmessung mit dem Bosch-Sensor BMP280.
Bisher erschienene Artikel zur RaspiLab Wetterstation
- Raspilab Wetterstation Grundsystem aufsetzen
- Raspilab Wetterstation Lebensdauer der SD-Karte erhöhen
- RaspiLab Wetterstation vierte Mission Luftfeuchte messen mit dem DHT22
- RaspiLab Wetterstation sechste Mission Druck messen mit dem BMP280
BMP280
Der Sensor BMP280 ist ein Barometer und kann den Luftdruck und auch Temperaturen messen. Der BMP280 verwendet den sogenannten I2C-Bus. Es gibt einen (teureren) Sensor BME280, der auch die Luftfeuchtigkeit messen kann.
Schaltplan
Abb. 11 zeigt die Beschaltung des BMP280. Der BMP280 benötigt keinen Pull-Up-Wiederstand.
Abb. 11: Die Anschlüsse des Drucksensors BMP280
Achtung: In Abb. 12 finden Sie den BMP180. Je nach Ausführung des BMP208 liegen die Anschlüsse an anderer Stelle. Passen Sie entsprechend an.
Abbildung 12: Verkabelung des Raspberry Pi mit dem Drucksensor BMP280
Breadboard Verkabelung
Sensor in B30, B31, B32, B33, B34 und B35
Jumperkabel A32 zu Pin 3 (I2C SDA)
Jumperkabel A33 zu Pin 5 (I2C SCL)
Jumperkabel A34 zu Pin 6 (Ground)
Jumperkabel A35 zu Pin 1 (3.3 V)
Vorbereiten des Raspberry Pi für die Druckmessung
Schritt 1 (I2C Bus einstellen)
a Konfigurationsmenü aufrufen mit dem Befehl
sudo raspi-config
b Wählen Sie den Unterpunkt 5 Interfacing Options aus
c Wählen Sie den Unterpunkt 5 I2C aus und Bestätigen Sie.
Schritt 2: Führen Sie einen Neustart des Raspberry Pi durch:
sudo reboot
Schritt 3: Installieren Sie die praktischen I2C-Tools und testen Sie mit dem Befehl i2cdetect, ob der Sensor erkannt wurde.
a Installation der I2C-Tools und der I2C-Untestützung für Python mit
apt-get update apt-get install i2c-tools apt-get install python-smbus
Dann Test mit
i2cdetect -y 1
Die Ausgabe sollte wie folgt aussehen:
0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- 76 --
Schritt 3: Laden Sie eine Bibliothek für den Sensor mit dem Befehl wget
wget -O bme280.py http://bit.ly/bme280py
Überprüfen Sie mit
nano bme280.py
ob in der Datei bme280.py die richtige DEVICE-Adresse eingetragen ist. Die Zeile
DEVICE = 0x76 # Default device I2C address
sollte die mit i2cdetect ermittelte Zahl (hier 0x76) adressieren. Ggf. ändern Sie das.
Das Programm für die Druckmessung erstellen
Schritt 1: Erstellen Sie das Programm mit nano
nano sensorbmp280.py
Schritt 2: Fügen Sie den Inhalt des Quellcodes ein.
#!/usr/bin/python
import bme280
#Messdaten Holen
temperatur,druck, x = bme280.readBME280All()
print "Temperatur : ", temperatur, "C"
print "Druck: ", druck, "hPa"
Schritt 3: Geben Sie Ihren Script Rechte mittels des folgenden Befehls:
sudo chmod 777 sensorbmp280.py
Schritt 4: Testen Sie Ihr Script mit den folgenden Befehl:
./sensorbmp280.py
Warum Python 2: Der Schülerworkshop wurde seinerzeit in Python 2.7 entwickelt. Auch ohne (und gerade deswegen) Weiterentwicklung funktionieren sie sehr gut. Solange Python 2 auf dem Raspberry angeboten wird, gibt es keinen Grund, Arbeit in eine Änderung hineinzustecken.
Warum noch in Python 2 ?
Dafür gibt es keinen Support mehr.