Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Gartenautomation
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Deutsch
  • English
Menu

Arduino Lektion 10: BMP180 digitaler Luftdruck Sensor

Posted on 13. Juni 20152. Mai 2023 by Stefan Draeger

Nach langer Zeit möchte ich gerne einen weiteren Sensor vorstellen, es ist der
„BMP180 digitaler Luftdruck Sensor“. Dieser Sensor enthält unter anderem auch einen Temperatursensor, welcher hier aber nicht weiter betrachtet wird.

BMP180 digitaler Luftdruck Sensor
BMP180 digitaler Luftdruck Sensor

Diesen Sensor habe ich bei Ebay für 1,99 € per Sofort-Kauf bei einem Händler aus Singapur (wiedermal lange Lieferzeiten).

Hier nun ein paar technische Daten:

  • Spannung 1,8 V bis 3,6V
  • Leistungsaufnahme 0,5µA bei 1Hz
  • Genauigkeit 0.02hPa
  • Messbereich 300hPa bis 1100hPa
    Entspricht einer Höhe bzw Tiefe von +9000 m bis – 500 m.

  • Der Schaltplan
  • Benötigte Bibliothek
  • Der Quellcode
  • Der Aufbau
  • Screenshot der Ausgabe auf dem seriellen Monitor
  • Der Quellcode zum Download
  • Nachtrag (05.12.2019)

Der Schaltplan

Es ist darauf zu achten, dass die PINs an den richtigen analogen Buchsen des Mikrocontrollers angeschlossen werden. Leider gibt die Bibliothek keine Möglichkeit die zu bestimmen. (Außer natürlich man ändert die *.h Datei.)

VCC  -> 3.3 V
GNG -> GND
SDA  -> A4
SCL  -> A5

Anschlussplan des BMP180 an den Sunfounder UNO R3
Anschlussplan des BMP180 an den Sunfounder UNO R3

Bei dem Anschlussplan habe ich keinen originalen Maßstab verwendet da der Sensor BMP180 sehr klein ist.

Benötigte Bibliothek

Für den Betrieb des Sensors werden folgende Bibliotheken benötigt:

  • Adafruit Unified Sensor Driver
  • BMP180 Bibliothek

Wie man eine Bibliothek der Arduino IDE hinzufügt habe ich im Tutorial Arduino IDE, Einbinden einer Bibliothek erläutert.

Der Quellcode

#include <Wire.h>
#include <BMP180.h>


BMP180 barometer; //Die Instanzvariable eines BMP180 Sensors.

void setup()
{
  Serial.begin(9600); // Baudrate auf 9600 setzen.
  Wire.begin(); //Adafruit Wire Bibliothek für die I2C Kommunikation mit dem BMP180 Sensor.
  barometer = BMP180(); //setzen einer Instanz des BMP180 Sensors.
  //Prüfen ob ein BMP180 Sensor gefunden wurde.
  if(!barometer.EnsureConnected()){ 
    Serial.println("Es wurde kein BMP180 Sensor gefunden.");
  }
}

void loop()
{
  //Nur wenn ein BMP180 Sensor gefunden wurde dann soll eine Ausgabe erfolgen.
  if(barometer.IsConnected)
  {
    //Lesen des Wertes für den Luftdruck aus dem Sensor.
    long currentPressure = barometer.GetPressure();
    
    //Schreiben des gelesenen Wertes auf den Serielenausgang
    Serial.print("Luftdruck: ");
    Serial.print(currentPressure / 100);
    Serial.print(" hPa");
   
    Serial.println(); //Eine neue Zeile einfügen.
    delay(1000);  //Kurze Pause von 1 sek.
  }
}

Der Aufbau

Sunfounder Uno R3 mit BMP180 Sensor
Sunfounder Uno R3 mit BMP180 Sensor

Screenshot der Ausgabe auf dem seriellen Monitor

Ausgabe auf dem Seriellen Monitor der Arduino IDE
Ausgabe auf dem seriellen Monitor der Arduino IDE

Der Quellcode zum Download

BMP180 digitaler Luftdruck SensorHerunterladen

Nachtrag (05.12.2019)

Wenn du nicht die Adafruit Bibliothek herunterladen kannst oder möchtest, so kannst du diese auch über den Bibliotheksverwalter installieren.
Den Bibliotheksverwalter öffnest du diesen über „Sketch“ > „Bibliothek einbinden“ >“Bibliotheken verwalten…“.

Adafruit Bibliothek BMP180 über den Bibliotheksverwalter installieren
Adafruit Bibliothek BMP180 über den Bibliotheksverwalter installieren

Nachdem diese Bibliothek installiert wurde, kannst du das Beispiel über „Datei“ > „Beispiele“ >“Adafruit BMP085 Library“ > „BMP085test“ öffnen und auf den Mikrocontroller schreiben.

Oder du nutzt dieses kleine, modifizierte Beispiel:

#include <Wire.h>
#include <Adafruit_BMP085.h>

//Instanz eines Sensors
Adafruit_BMP085 bmp;

void setup(){
  //beginn der seriellen Kommunikation mit 9600 Baud
  Serial.begin(9600); 
  //Wenn kein Sensor gefunden wurde dann...
  if (!bmp.begin()) {
  Serial.println("Es wurde kein Sensor gefunden, bitte prüfe die Verkabelung!");
  //eine Endlosschleife
  //Dieses sorgt dafür das die Loop nicht erreicht wird!
  while (1) {}
  }
}

void loop(){
  //Ausgabe des Luftdrucks auf der seriellen Schnittstelle
  Serial.print("Luftdruck = ");
  Serial.print(bmp.readPressure());
  Serial.println(" Pa");

  delay(1000);  //Kurze Pause von 1 sek.
}

Du solltest nun, wenn du alles so wie oben beschrieben angeschlossen hast, nachfolgende Ausgabe im seriellen Monitor finden.

Konsolenausgabe des Beispieles zum BMP180 Sensor
Konsolenausgabe des Beispieles zum BMP180 Sensor

15 thoughts on “Arduino Lektion 10: BMP180 digitaler Luftdruck Sensor”

  1. Werner G. sagt:
    23. Februar 2017 um 19:36 Uhr

    Danke für die tolle Vorstellung. Dein Codebeispiel funktioniert gut. Vielleicht solltest du noch eine Temperatur-Ausgabe im Code einbringen, wie hier z.B.: http://www.aeq-web.com/bmp085-180-arduino/?ref=ws

    Antworten
    1. lol hahaha sagt:
      5. Dezember 2019 um 14:13 Uhr

      LOL als ob bei dir irgendwas funktioniert hat, das ist doch fake. Bei mir hat gar nichts funktioniert

      Antworten
      1. Stefan Draeger sagt:
        5. Dezember 2019 um 14:23 Uhr

        Hi Werner,

        was ist denn dein Fehler?
        Gerne kann ich das ganze neu aufbauen und den Beitrag um ein kleines Video ergänzen.

        Gruß,

        Stefan Draeger

        Antworten
  2. lol hahaha sagt:
    5. Dezember 2019 um 14:07 Uhr

    Diese seite bringt nichts. Da dieser skatch einfach nicht klapt.

    Antworten
    1. gigerigi sagt:
      5. Dezember 2019 um 14:09 Uhr

      Beim mir hat es auch nicht geklappt. Es kam die ganze zeit der gleiche Fehler.

      Antworten
      1. Stefan Draeger sagt:
        5. Dezember 2019 um 14:23 Uhr

        Hi,

        welcher Fehler kommt denn bei dir?

        Gruß,

        Stefan Draeger

        Antworten
    2. Stefan Draeger sagt:
      5. Dezember 2019 um 20:42 Uhr

      Hallo,

      ich habe soeben den Sketch ausprobiert und er klappt bei mir.
      Aber ich habe den Beitrag um eine „zweite Lösung“ erweitert, ich hoffe das wird dir weiterhelfen.
      Ansonsten empfehle ich dir gerne eine Kontaktaufnahme über das Kontaktformular und dort kannst du mir dann ausführlich dein Problem beschreiben.

      Gruß,

      Stefan Draeger

      Antworten
      1. Joachim Scharmacher sagt:
        2. Dezember 2022 um 17:03 Uhr

        Hallo,
        als Arduinoanfänger habe ich mir Dein Bespiel herunter geladen und die Bibliotheken per ZIP geladen und eingebunden. so weit hat alles geklappt.

        Den Sketch in die Arduino IDE geladen und versucht zu kompilieren.
        Dabei kommt immer eine Fehlermeldung.

        Meine IDE Version ist die 2.0.2

        Hier ist sie:
        In file included from C:\Users\Jokim\Documents\Arduino\BMP180 Test\BMP180 Test.ino:2:0:
        c:\Users\Jokim\Documents\Arduino\libraries\bmp180/BMP180.h:26:10: fatal error: ../Wire/Wire.h: No such file or directory
        #include „../Wire/Wire.h“
        ^~~~~~~~~~~~~~~~
        compilation terminated.

        exit status 1

        Compilation error: exit status 1

        Antworten
        1. Stefan Draeger sagt:
          3. Dezember 2022 um 10:06 Uhr

          Hallo,

          da fehlt die eigentlich vorhandene Bibliothek Wire. Diese kannst du über den Bibliotheksmanager achinstallieren.

          Gruß

          Stefan

          Antworten
  3. Ralf sagt:
    6. Mai 2020 um 13:42 Uhr

    Super Toll beschrieben!
    Danke für Deine Bemühungen!

    Gruß
    Ralf

    Antworten
  4. Josef Ruppel sagt:
    8. Mai 2020 um 01:06 Uhr

    Hallo,
    ich habe eben den Sketch ausprobiert und er funktioniert.
    Aber : Die Konsolenausgabe, ich nehme an, das ist die Ausgabe über den seriellen Monitor, erhalte ich nicht.
    Wo ist denn da überhaupt die barometrische Höhenformel hinterlegt? Zumindest müsste man doch irgendwo die lokale Höhe eingeben, oder?
    Vielen Dank vorab!
    Gruß Josef

    Antworten
    1. Stefan Draeger sagt:
      8. Mai 2020 um 18:04 Uhr

      Hallo Josef,

      danke für dein Kommentar, ich freue mich das du dich auf mein Blog verirrt hast.
      Wenn du die Ausgabe auf dem seriellen Monitor nicht erhältst, wie kommst du dann zu der Annahme das der Sketch funktioniert?
      Erhältst du eine Fehlermeldung?
      Ist die Baudzahl im seriellen Monitor korrekt eingestellt?

      Gruß,

      Stefan

      Antworten
      1. Josef sagt:
        9. Mai 2020 um 22:20 Uhr

        Hallo Stefan,
        der Sketch funktioniert in sofern, dass dass der Druck angezeigt wird.
        Aber alle anderen Daten aus Deinem obigen Beispiel „Konsolenausgabe des Beispieles zum BMP180 Sensor“ erhalte ich nicht. Naja, die stehen in dem Sketch ja auch nicht drin. Wo kommen diese her?
        Wobei Du allerdings darauf hinweist, dass die Daten auf dem Seriellen Monitor zu finden sein sollten.
        Gruß Josef

        Antworten
        1. Stefan Draeger sagt:
          10. Mai 2020 um 07:26 Uhr

          Hi Josef,

          danke für deinen Hinweis.
          Diese Ausgabe auf der Konsole erhältst du, wenn du das Beispiel verwendest welches der Bibliothek „Adafruit BMP085 Library“ beiliegt.
          Wenn du dieses nutzt erhälst du genau die Ausgabe wie gezeigt.

          Gruß,

          Stefan

          Antworten
          1. Josef sagt:
            11. Mai 2020 um 16:22 Uhr

            Hallo,
            oh, sorry wer lesen kann ist wie immer klar im Vorteil….:)
            Ich hatte vermutet, dass das auch so mit dem modifizierten Beispiel funktionieren soll. Mein Fehler! Mit dem Beispiel aus der Arduino funktioniert es nun auch
            Vielen Dank!
            Gruß Josef

Schreibe einen Kommentar Antworten abbrechen

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

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}