Auf dem Weg zu einer kleinen Wetterstation beschäftigen wir uns heute mit der Luftdruck- und Temperaturmessung und verwenden dafür den BMP085 inklusive Breakoutboard mit I²C-Schnittstelle, sowie einen Arduino unserer Wahl.
Zuerst verkabeln wir das Breakoutboard mit dem Arduino (hier ein Arduino Nano-Klon) nach folgendem Plan (auch oben im Bild zu erkennen):
Schaltplan (Arduino-Verdrahtung des GY-65 Breakoutboards):
mit der Maus über Elemente fahren (oder im Touch-Modus: Elemente antippen)...
Arduino (Pro Mini, Nano, Uno) | Arduino (Mega, Mega 2560) | GY-65 mit BMP085 |
VCC 5V | VCC 5V | VCC |
GND | GND | GND |
A4 (SDA) | D20 (SDA) | SDA |
A5 (SCL) | D21 (SCL) | SDL (SCL) |
Achtung, es gibt verschiedene andere Breakoutboards auf dem Markt die nicht über einen integrierten Spannungsregler verfügen, diese müssen dann mit 3,3V betrieben werden!
Anschließend installieren wir uns noch die Adafruit-BMP085-Bibliothek von der GitHub-Webseite und laden dann folgenden Sketch auf unseren Arduino:
Programmcode (Sketch):
#include <Wire.h> #include <Adafruit_BMP085.h> // Adafruit Bibliothek einbinden Adafruit_BMP085 bmp; void setup(){ // Seriellen Monitor aktivieren Serial.begin(9600); // Sensor initialisieren if (!bmp.begin()) { Serial.println("Keinen gültigen BMP085 Sensor gefunden!"); while (true) {} } } void loop(){ Serial.print("Temperatur: "); // readTemperature() Temperatur °C auslesen und anzeigen Serial.print(bmp.readTemperature()); Serial.print(" "); // Hier müssen wir ein wenig tricksen Serial.write(176); // um das °-Zeichen korrekt darzustellen Serial.println("C"); Serial.print("Luftdruck: "); // readPressure() Luftdruck in Pa auslesen und anzeigen Serial.print(bmp.readPressure()); Serial.println(" Pa"); Serial.print("Hoehe: "); // readAltitude() Höhe in meter auslesen und anzeigen Serial.print(bmp.readAltitude()); Serial.println(" meter"); Serial.println(); // Leerzeile anzeigen delay(5000); // 5 Sekunden warten }
… öffnen anschließend den seriellen Monitor und:
sehen dann eine ähnliche Ausgabe wie oben im Bild.
Allerdings ist die Höhenangabe nur eine ungefähre Angabe, Näheres findet man unter Barometrische Höhenmessung in der Wikipedia.
Weiterführendes Projekt:
Einfache (Raum-)Klimaüberwachung mit einem Arduino
Luftdruck, Temperatur, Luftfeuchtigkeit, Zeit und Datum
Bauteile (Bezugsquellen):
eBay: | Arduino Nano BMP085 Breadboard Breadboard Kabel GY-65 |
Amazon: | Arduino Nano BMP085 Breadboard Breadboard Kabel GY-65 |
Gut?