Der Sensor BME280 misst Temperatur, Luftfeuchtigkeit, Luftdruck und Höhe. In dem Beitrag stelle ich die Anbindung und das Auslesen des Sensors vor.
Wie auch beim Anschluss des OLED Display (SSD1306) https://sebastianhemel.blogspot.com/2018/05/raspberry-pi-oled-display-ssd1306-i2c.html erfolgt auch die Ansteuerung des BME280 per I2C. Daher müssen auch hier die folgenden Einträge hinzugefügt werden:
i2c-bcm2708
i2c-dev
Jetzt muss noch die Konfigurationsdatei angepasst werden:
sudo vi /boot/config.txt
dtparam=i2c_arm=on #entfernen
dtparam=i2s=on #entfernen
dtparam=i2c1=on
Jetzt muss noch ein reboot erfolgen, damit die Einstellungen übernommen werden:
sudo reboot
Jetzt kann der Sensor analog dem OLED Display angeschlossen werden:
Damit man jetzt die Verbindung testen kann, sollte noch das folgemde Packet installiert werden:
sudo apt-get install i2c-tools
Mit dem folgenden Befehl kann überprüft werden, ob die Verbindung zum Sensor (Adressen 0x76 oder 0x77) Display funktioniert bzw. verbunden ist:
i2cdetect -y 1
Mit Hilfe des folgenden Scripts von Matt Hawkins, kann man den Sensor direkt abfragen (ggf. muss noch sudo apt-get install python-smbus -y installiert werden) oder auch die Befehle in seinen eigenen Python Scripts verwenden.
wget https://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/python/bme280.py
python bme280.py
import bme280
...
temperature,pressure,humidity = bme280.readBME280All()
print "Temperature : ", temperature, "C"
print "Pressure : ", pressure, "hPa"
print "Humidity : ", humidity, "%"
Um die Daten jetzt auch im OLED I2C Display anzeigen zu können, habe ich folgende Methode hinzugefügt:
def GetTempBME280():
temperature,pressure,humidity = bme280.readBME280All()
print "Temperature : ", temperature, "C"
print "Pressure : ", pressure, "hPa"
print "Humidity : ", humidity, "%"
time.sleep(0.2)
value = "{:5.1f} °C {:.0f} %".format(float(temperature), float(humidity))
value = unicode(value, 'utf-8')
return value
wget http://www.shemel.de/download/raspberry/OLEDdisplayTempBME280.py
Alternativ kann man den Sensor auch mit der RPi.bme280 library ansteuern.
sudo pip install RPi.bme280