Die Hardware
Der Sensor BMP280 kann wegen seiner winzig kleinen SMD-Bauweise (Surface Mounted Device) nicht direkt an den Arduino angeschlossen werden.
Zum Glück finden sich im Internet sogenannte Breakout-Boards, das sind kleine Platinen, auf denen die Kleinteile mit arduinotauglichen Füßchen aufgelötet sind. Oft haben die Breakout-Boards auch Spannungsregler und Widerstände um die Arduinospannung an die Sensorspannung anzupassen.
Das ist beim BMP-280-Sensor auch notwendig, da er mit 3,3 Volt arbeitet. Beim Kauf also auf Arduinokompatibilität achten und auch darauf, dass das Breakout-Board die I2C-Schnittstelle des Sensor nach außen führt.
Breakout-Board für BMP280 mit I2C-Schnittstelle
Die I2C-Verbindung ist ein serieller Zweidrahtbus bestehend aus einer Datenleitung (SDA), welche in beiden Richtungen funktioniert und einer Synchronisationsleitung (SCL), die den Übertragungstakt vorgibt.
Die Verdrahtung kann wie folgt vorgenommen werden:
Und so könnte der Steckbrettaufbau aussehen:
Die beiden von den I2C-Leitungen zur positiven Versorgungsspannung geschalteten Widerstände von 10 kΩ dienen als sogenante "Pull-Up-Widerstände" mit dem Zweck, die Leitungen im unbelastetem Zustand positiv zu halten. Bei vielen Breakout-Boards sind sie schon mit bestückt und könnten hier entfallen - andererseits schadet eine Doppelbeschaltung auch nicht.
Die Software
Zwar gibt es für die I2C-Schnittstelle eine eingebaute Arduino-Library, aber die Umrechnung der Kalibrierungswerte für den BMP280 ist laut Datenblatt etwas aufwendig, so dass sich die Installation einer Library lohnt (Quelle: https://arduino-projekte.webnode.at/meine-libraries/luftdrucksensor-bmp280/).
Die Library ist wie üblich in das Library-Verzeichnis der Arduino-Installation zu kopieren, damit sie vom Compiler gefunden werden kann. Alternativ kann auch das Library-Verzeichnis unter "Dokumente/Arduino" verwendet werden.
/* * Luftdruck- und Temperaturmessung mit dem Sensor BMP280 */ // Für das Einlesen und die Kalibrierungsberechnung wird // die Library von Retian (https://arduino-projekte.webnode.at/meine-libraries/luftdrucksensor-bmp280/) // verwendet. Die entsprechenden Dateien dazu in das Arduino- // Libraryverzeichnis kopieren. Die Library verwendet intern // die Wire-Library von Arduino. Auf die entsprechende Verdrahtung achten! #include <MyBMP280.h> // Hier wird eine Instanz der Libraryklasse MyBMP280 definiert // und dazu die I2C-Adresse des Bausteins übergeben: standard- // mäßig laut Datenblatt 0x76 (Hexadezimal 76). MyBMP280 Bmp(0x76); // Initialisierungen void setup() { // Serielle Schnittstelle zum PC initialisieren Serial.begin(9600); // Verfügbarkeit und Verdrahtung prüfen if ( ! Bmp.isReady()) Serial.println("Error"); // Messgenauigkeit einstellen Bmp.setPressOversampling(BMP280_P_OVERSAMPLING_x2); // und initialisieren Bmp.init(); } // Messungen periodisch durchführen und Ergebnisse im seriellen // Monitor oder Plotter anzeigen void loop() { // Temperaturmessung float temperature = Bmp.readTemp(); Serial.print("Temperatur: "); Serial.print(temperature); Serial.println(" Grad Celsius"); // Luftdruckmessung float pressure = Bmp.readPress(); Serial.print("Luftdruck: "); Serial.print(pressure); Serial.println(" hPa"); // 1 Sekunde pausieren delay(1000); }
Jedes Gerät, das am I2C-Bus hängt, muss eine Adresse haben, unter der es erreichbar ist. Die Adresse wird als Byte-Wert angegeben und ist vom Gerät vorgegeben und aus dem Datenblatt abzulesen. Oft kann durch entsprechende Verdrahtung eines Pins am Sensor eine zweite Adresse gewählt werden, damit zwei baugleiche Sensoren über denselben Bus angesprochen werden können. Die erste Adresse des BMP280 ist 0x76 und wird gleich beim Erzeugen der Instanz mit übergeben (an den sogenannten "Konstruktor" der Klasse):
MyBMP280 Bmp(0x76);
Wenn die Funktion Bmp.isReady() einen als "falsch" eingestuften Wert zurückgibt, z. B. 0, dann ist der Sensor nicht erreichbar, da u. U. falsch verdrahtet, und es wird die Fehlermeldung "Error" ausgegeben:
// Verfügbarkeit und Verdrahtung prüfen if ( ! Bmp.isReady()) Serial.println("Error");
Screenshots wurden mit Fritzing erstellt, falls nicht anders angegeben (https://fritzing.org)
Kommentieren Sie diesen Beitrag