Temperatur, Luftfeuchtigkeit und Druck messen: BME280 mit Python am Raspberry Pi

Veröffenticht am 17.02.2024    von     in der Kategorie Raspberry Pi, Sensoren     bisher 2 Reaktionen


Wenn du mit einem Raspberry Pi arbeitest und dich für Umweltdaten interessierst, bietet der BME280 Sensor eine präzise Lösung zur Messung von Temperatur, Luftfeuchtigkeit und Luftdruck. Dieser Artikel führt dich durch die notwendigen Schritte, um den Sensor mit Python auszulesen.

Warum der BME280?

Der BME280 Sensor ist bekannt für seine Genauigkeit und Zuverlässigkeit. Er ist ideal für Wetterstationen, Heimautomatisierungsprojekte und überall dort, wo präzise Umweltdaten benötigt werden. Trotz seiner Vorteile, wie kompakte Größe und geringer Stromverbrauch, kann die Installation für Anfänger eine Herausforderung sein.

 

 

Vorbereitung

Zum Auslesen des BME280 Sensors auf dem Raspberry Pi mit Python benötigst du folgende Komponenten:

Stelle sicher, dass ein Betriebssystem (z.B. Raspberry Pi OS) installiert ist und dein Pi über eine Internetverbindung verfügt, um die benötigten Bibliotheken herunterzuladen.

 

Wenn du noch keinen Raspberry Pi eingerichtet hast, dann schaue dir doch einmal meinen Beitrag “Ersteinrichtung eines Raspberry Pi mit Raspberry Pi OS” an. Solltest du mit dem Begriff Headless-Betrieb nichts anfangen können oder mehr darüber wissen wollen, dann schau dir einmal meinen Beitrag “Raspberry Pi für den Headless-Betrieb ohne Monitor, Tastatur und Maus installieren” an.

 

Aktivierung der I2C-Schnittstelle

Für den BME280 Sensor, der über das I2C-Protokoll kommuniziert, muss die I2C-Schnittstelle auf dem Raspberry Pi aktiviert werden.

Um I2C auf dem Raspberry Pi zu aktivieren, öffne die Raspberry Pi Konfiguration über ein Terminal-Fenster und gib folgenden Befehl ein.

Navigiere mit den Pfeiltasten zu den Schnittstellenoptionen (Interface Options) und wähle in dem erscheinenden Untermenü die Option “I2C” aus. Anschließend bestätigst du, dass die I2C-Schnittstelle aktiviert werden soll.

Nach der Aktivierung wirst du eventuell aufgefordert, den Raspberry Pi neu zu starten. Bestätige dies, damit die Änderungen übernommen werden.

Nach dem Neustart ist die I2C-Schnittstelle aktiviert und du kannst den BME280 Sensor über die I2C-Pins des GPIO-Headers mit dem Raspberry Pi verbinden und kommunizieren lassen.

 

Konfiguration des BME280 mit Python auf einem Raspberry Pi

Verdrahtung:

Verbinde VCC des Sensors mit 3.3V des Raspberry Pi (Pin 01), GND mit GND (z.B. Pin 06), SDA mit SDA (Pin 03)  und SCL mit SCL (Pin 05). Die korrekte Verdrahtung ist entscheidend für die Funktion.

 

 

Installation der Bibliotheken

 

1. Öffne ein Terminal und führe die folgenden Befehle aus:

ACHTUNG!

Die derzeit offiziell bereitgestellte Bibliothek für die Beitragserstellung, die mit “sudo pip3 install bme280” installiert wird, ist fehlerhaft. Daher solltest du folgenden Befehl zu Installation einer früheren Version ausführen:

 

Solltest du das Paketinstallationsprogramm PIP für Python bislang nicht installiert haben, kannst du dies mit folgendem Befehl nachholen:

 

Eine Übersicht über wichtige und häufig verwendete Befehle stelle ich dir auf einem kleinen Spickzettel für Raspberry Pi OS Befehle zur Verfügung.

 

 

2. Python-Skript:

Erstelle ein Skript, um die Daten auszulesen:

 

Nach Ausführung des Skripts werden die Sensordaten angezeigt.

 

Fazit

Der BME280 Sensor bietet eine einfache Möglichkeit, umfangreiche Umweltdaten zu sammeln. Mit einem Raspberry Pi und etwas Python kann man schnell und einfach auf diese Daten zugreifen und sie für verschiedene Projekte nutzen.

Bereitgestellte Dateien und Links

Die Fritzing Projektdatei steht auch auf meiner Fritzing Projektseite auf diesem Blog zum Download zur Verfügung.

Wenn du dir das Abtippen oder Kopieren des Codes sparen möchtest, steht dir der Code als Textdatei zum Download bereit.

Gib im Terminal folgenden Befehl ein, dieser lädt die Textdatei herunter und speichert diese als Python-Datei ab.

 


Transparenz-Hinweis:

Die auf dieser Seite verwendeten Produktlinks sind sogenannte Affiliate-Links zu einem Partnerprogramm. Für dich entstehen dadurch keine Mehrkosten, ich erhalte durch deinen Kauf über den Link eine kleine Provision.


Wolfgang Raab – Betreiber von webnist.de

Mein Name ist Wolfgang, ich beschäftige mich nun schon seit 1985 mit der EDV und im Besonderen mit der Software- und Webentwicklung.

Auf diesem Blog schreibe ich über Dinge, die mich begeistern, beschäftigen und ich der Meinung bin, es könnte für andere interessant und hilfreich sein.

Als großer Fan des Raspberry Pi finde ich es spannend, wie man den kleinen Computer in Verbindung mit dem IoT und Smart Home nutzen kann. Deshalb behandeln viele Beiträge auch genau dieses Thema.

Ich bin ein leidenschaftlicher Leser und Fotograf. Wenn ich nicht gerade in einem spannenden Roman versinke, bin ich oft unterwegs, um die Schönheit der Welt mit meiner Kamera einzufangen und zu teilen.

Weitere Infos und Fotos findest du auf einem der folgenden Plattformen.






Mehr erfahren?

Besuche die "About"-Seite meines Blogs und finde heraus, wie du mit mir in den Bereichen Web- und Mobile-Programmierung und Raspberry Pi zusammenarbeiten kannst. Hier beginnt deine digitale Reise.


Unterstützen

Dieser Beitrag hat dir gefallen und konnte dir bei deinem Projekt oder Problem behilflich sein? Dann würde ich mich sehr freuen, wenn du dich mit einer noch so kleinen Spende erkenntlich zeigen möchtest.




  • Roland schrieb am 12. September 2024:

    Hallo,
    danke für die gute Dokumentation.
    Die Temperatur wird bei mir jedoch – reproduzierbar – ca. 3°C (3 Grad Celsius) zu hoch angezeigt ggü. “richtigem” Thermometer.
    Kann das sein? Und wie kann man das ggf. im python Schript korrigieren?

    LG
    Roland

    • Raab Wolfgang schrieb am 15. September 2024:

      Hallo Roland,
      vielen Dank für Dein Feedback. Es ist durchaus möglich, dass der Sensor nicht ganz korrekte Werte liefert. Die Korrektur im Skript ist möglich. Ersetze den Code nach dem Block # BME280 Sensor initialisieren mit:
      # Differenzwert für die Temperaturanpassung (hier 3°C weniger)
      temp_anpassung = 3

      # Ausgabe der Messwerte mit Temperaturanpassung
      print(f”Temperatur: {bme280.get_temperature() – temp_anpassung }°C”)
      print(f”Luftfeuchtigkeit: {bme280.get_humidity()}%”)
      print(f”Luftdruck: {bme280.get_pressure()} hPa”)

      # Ausgabe der Messwerte auf 2 Nachkommastellen mit Temperaturanpassung
      print(f”Temperatur: {bme280.get_temperature() – temp_anpassung:.2f}°C”)
      print(f”Luftfeuchtigkeit: {bme280.get_humidity():.2f}%”)
      print(f”Luftdruck: {bme280.get_pressure():.2f} hPa”)

      # Ausgabe der Messwerte auf 2 Nachkommastellen und Umrechnung in Fahrenheit mit Temperaturanpassung
      print(f”Temperatur: {(bme280.get_temperature() – temp_anpassung) * 9/5 + 32:.2f}°F”)
      print(f”Luftfeuchtigkeit: {bme280.get_humidity():.2f}%”)
      print(f”Luftdruck: {bme280.get_pressure():.2f} hPa”)

      # Ende des Programms
      print(“Programmende”)

      Viele Grüße
      Wolfgang


Schreibe einen Kommentar

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

 

Kleiner Hinweis, alle Kommentare werden moderiert.

Dies bedeutet, der Kommentar wird vor der Veröffentlichung durchgelesen und von mir geprüft. Auch behalte ich mir vor, jeden Kommentar zu löschen, der nicht direkt auf das Thema abzielt oder nur den Zweck hat, Leser oder Autoren herabzuwürdigen.

Entdecke die Welt von Webnist.de

Erfahre mehr über die Hintergründe meines Blogs und wie ich dich bei deinen digitalen Projekten unterstützen kann.

Aktuelles Video auf YouTube

Beschreibung der Verwendung eines TTP223B Touch Sensors am GPIO Port des Raspberry Pi mit Python.