BMP280:Temperatur, Druck und Höhe messen
Komponenten und Verbrauchsmaterialien
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Über dieses Projekt
Hallo und willkommen zu diesem Tutorial, in dem ich den BMP280 verwende, um Temperatur, Druck und auch Höhe mit Hilfe eines Arduino UNO-Boards und eines OLED-Displays zu messen. Hier sind einige der wichtigsten Parameter des BMP280 aus dem Datenblatt:
Für dieses Projekt werden wir das Modul verwenden, um all diese Dinge wie üblich sowohl in metrischen als auch in imperialen Systemen zu messen verwenden:
Test und Fehlerbehebung:
Nachdem Sie Ihr Modul verdrahtet haben, testen Sie besser den Code aus dem Bibliotheksbeispiel, dessen Name "BMP280test" ist, wenn Ihr Modul nicht wie im Bild unten erkannt wird:
Sie können den i²c-Scannercode ausführen (aber jedes andere i²c-Gerät wie ein LCD oder OLED entfernen), und wenn Ihr Modul nicht defekt ist oder kein Lötproblem hat, werden Sie sehen, dass das Gerät vom Scanner erkannt wird :
Notieren Sie sich nun diese Adresse und gehen Sie zu Ihrer Bibliothek c++-Datei, die Bibliothek wird normalerweise in den "Dokumenten/Arduino/Bibliotheken" installiert:
Und öffne es mit einem geeigneten Editor, ich verwende Dev c++
Gehen Sie dann zur Zeile „41“ und _i2caddr ändern Sie das „a“ mit der Adresse, die Sie auf dem seriellen Monitor gefunden haben:
Speichern Sie alles und schließen Sie, die Bibliothek soll mit Modulen arbeiten, die 0x77 als i²c-Adresse haben, aber die, die ich verwende, hat 0x76.
Führen Sie den Testcode erneut aus:
Testbilder:
Ich hoffe, es funktioniert für Sie, und wenn Sie ein Problem haben, hinterlassen Sie es in einem Kommentar.
Code
- bmp280_Serial_metric.ino
- bmp280_Serial_Imperial.ino
- bmp280_OLED_m.ino
- bmp280_OLED_US.ino
bmp280_Serial_metric.inoArduino
/* Dieser Code wird mit Adafruit BMP280 (metrisch) verwendet * Er misst sowohl Temperatur als auch Druck und zeigt sie auf dem seriellen Monitor mit der Höhe an * Es handelt sich um eine modifizierte Version des Adafruit-Beispielcodes * Siehe www.surtrtech .com oder SurtrTech Youtube-Kanal */#includeAdafruit_BMP280 bmp; // I2C Interfacevoid setup () { Serial.begin (9600); Serial.println (F ("BMP280-Test")); if (!bmp.begin()) {Serial.println(F("Kein gültiger BMP280-Sensor gefunden, Verkabelung überprüfen!")); während (1); } /* Standardeinstellungen aus Datenblatt. */ bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* Operating Mode. */ Adafruit_BMP280::SAMPLING_X2, /* Temp. Oversampling */ Adafruit_BMP280::SAMPLING_X16, /* Druck Oversampling */ Adafruit_BMP280::*Filtering_X.16 */ Adafruit_BMP280::STANDBY_MS_500); /* Standby-Zeit. */} ungültige Schleife () {Serial.print (F ( "Temperatur =")); Serial.print (bmp.readTemperature()); Serial.println(" *C"); Serial.print (F ("Druck =")); Serial.print (bmp.readPressure () / 100); // Anzeige des Drucks in hPa, Sie können die Einheit Serial.println ("hPa"); Serial.print (F ( "Ungefähre Höhe =")); Serial.print (bmp.readAltitude (1019.66); // Der "1019,66" ist der Druck (hPa) auf Meereshöhe am Tag in Ihrer Region Serial.println ("m"); // Wenn Sie es nicht wissen, ändern Sie es, bis Sie Ihre aktuelle Höhe erhalten Serial.println (); Verzögerung(2000);}
bmp280_Serial_Imperial.inoArduino
/* Dieser Code wird mit Adafruit BMP280 (Imperial) verwendet * Er misst sowohl Temperatur als auch Druck und zeigt sie auf dem Serial Monitor mit der Höhe an * Es handelt sich um eine modifizierte Version des Adafruit Beispielcodes * Siehe www.surtrtech .com oder SurtrTech Youtube-Kanal */#includeAdafruit_BMP280 bmp; // I2Cvoid-Setup () { Serial.begin (9600); Serial.println (F ("BMP280-Test")); if (!bmp.begin()) {Serial.println(F("Kein gültiger BMP280-Sensor gefunden, Verkabelung überprüfen!")); während (1); } /* Standardeinstellungen aus Datenblatt. */ bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* Operating Mode. */ Adafruit_BMP280::SAMPLING_X2, /* Temp. Oversampling */ Adafruit_BMP280::SAMPLING_X16, /* Druck Oversampling */ Adafruit_BMP280::*Filtering_X.16 */ Adafruit_BMP280::STANDBY_MS_500); /* Standby-Zeit. */}void loop () { float f =bmp.readTemperature () * 9/5 + 32; // Konvertierung von C in F Serial.print (F ("Temperatur =")); Serial.print (f); Serial.println(" *F"); float P =bmp.readPressure()/3386.39; // Wenn Sie den Druck in Zoll Quecksilber anzeigen, können Sie die Einheit Serial.print (F ("Pressure =")) ändern; Seriendruck (P); Serial.println("inHg"); float A =bmp.readAltitude(1019.66)*3.28084; // Der "1019,66" ist der Druck (hPa) auf Meereshöhe am Tag in Ihrer Region Serial.print (F ("Ungefähre Höhe =")); // Wenn Sie es nicht wissen, ändern Sie es, bis Sie Ihre aktuelle Höhe erhalten Serial.print (A); Serial.println("ft"); Serial.println(); Verzögerung(2000);}
bmp280_OLED_m.inoArduino
/* Dieser Code ist zur Verwendung mit Adafruit BMP280 und OLED-Bildschirm (metrisch) * Er misst sowohl Temperatur als auch Druck und zeigt sie auf dem OLED-Display mit der Höhe an * Es handelt sich um eine modifizierte Version des Adafruit-Beispielcodes * Siehe www.surtrtech.com oder SurtrTech Youtube-Kanal */#include//Bibliotheken für OLED und BMP280#include #include #define SCREEN_WIDTH 128 // OLED-Displaybreite, in Pixel#define SCREEN_HEIGHT 32 // OLED-Anzeigehöhe, in Pixel#define OLED_RESET -1 // Reset Pin # (oder -1 wenn Arduino Reset Pin geteilt) Adafruit_SSD1306 Display (SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); // Anzeigenamen angeben (display)Adafruit_BMP280 bmp;void setup() { bmp.begin(); // Starten Sie das bmp display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // Starten Sie das OLED-Display display.clearDisplay (); display.display(); display.setTextColor (WEISS); display.setTextSize(1); display.print("SurtrTech"); // Den Namen anzeigen, Sie können ihn entfernen oder ersetzen display.setCursor(32,12); display.setTextSize(2); display.println("BMP280"); display.display(); delay(2000);}void loop() { display.clearDisplay(); float T =bmp.readTemperature(); // Temperatur in C Float lesen P =bmp.readPressure () / 100; // Druck in Pa lesen und in hPa Float umrechnen A =bmp.readAltitude (1019.66); // Bei der Berechnung der Höhe ist "1019,66" der Druck in (hPa) auf Meereshöhe am Tag in Ihrer Region // Wenn Sie ihn nicht wissen, ändern Sie ihn einfach, bis Sie die Höhe Ihres Ortes erhalten display.setCursor(0 ,0); // Oled-Display, einfach mit Textgröße und Cursor spielen, um die gewünschte Anzeige zu erhalten display.setTextColor (WHITE); display.setTextSize(2); display.print("Temp"); display.setCursor(0,18); display.print(T,1); display.setCursor(50,17); display.setTextSize(1); display.print("C"); display.setTextSize(1); display.setCursor(65,0); display.print("Pres"); display.setCursor(65,10); display.print (P); display.setCursor(110,10); display.print("hPa"); display.setCursor(65,25); display.print("Alt"); display.setCursor(90,25); display.print(A,0); display.setCursor(110,25); display.print("m"); display.display(); Verzögerung(2000);}
bmp280_OLED_US.inoArduino
/* Dieser Code ist zur Verwendung mit Adafruit BMP280 und OLED-Bildschirm (Imperial) * Er misst sowohl Temperatur als auch Druck und zeigt sie auf dem OLED-Display mit der Höhe an * Es handelt sich um eine modifizierte Version des Adafruit-Beispielcodes * Siehe www.surtrtech.com oder SurtrTech Youtube-Kanal */ #include//Bibliotheken für OLED und BMP280#include #include #define SCREEN_WIDTH 128 // OLED-Displaybreite, in Pixel#define SCREEN_HEIGHT 32 // OLED-Anzeigehöhe, in Pixel#define OLED_RESET -1 // Reset Pin # (oder -1 wenn Arduino Reset Pin geteilt) Adafruit_SSD1306 Display (SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); // Anzeigenamen angeben (display)Adafruit_BMP280 bmp;void setup() { bmp.begin(); // Starten Sie das bmp display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // Starten Sie das OLED-Display display.clearDisplay (); display.display(); display.setTextColor (WEISS); display.setTextSize(1); display.print("SurtrTech"); // Den Namen anzeigen, Sie können ihn entfernen oder ersetzen display.setCursor(32,12); display.setTextSize(2); display.println("BMP280"); display.display(); delay(2000);}void loop() { display.clearDisplay(); float T =bmp.readTemperature()*9/5 + 32; // Temperatur in C lesen und in F umrechnen float P =bmp.readPressure () / 3386.39; // Druck in Pa ablesen und in Zoll Quecksilberschwimmer umrechnen A =bmp.readAltitude (1019.66) * 3.28084; // Bei der Berechnung der Höhe ist "1019,66" der Druck in (hPa) auf Meereshöhe am Tag in Ihrer Region // Wenn Sie ihn nicht wissen, ändern Sie ihn einfach, bis Sie die Höhe Ihres Ortes erhalten display.setCursor(0 ,0); // Oled-Display, einfach mit Textgröße und Cursor spielen, um die gewünschte Anzeige zu erhalten display.setTextColor (WHITE); display.setTextSize(2); display.print("Temp"); display.setCursor(0,18); display.print(T,1); display.setCursor(50,17); display.setTextSize(1); display.print("F"); display.setTextSize(1); display.setCursor(65,0); display.print("Pres"); display.setCursor(65,10); display.print (P); display.setCursor(100,10); display.print("inHg"); display.setCursor(65,25); display.print("Alt"); display.setCursor(90,25); display.print(A,0); display.setCursor(110,25); display.print("ft"); display.display(); Verzögerung(2000);}
BMP280_Adafruit_library
Vielleicht möchten Sie Dinge wie im Tutorial ändernhttps://github.com/adafruit/Adafruit_BMP280_LibraryAdafruit GFX-Bibliothek
https://github.com/adafruit/Adafruit-GFX-LibraryAdafruit SSD1306
https://github.com/adafruit/Adafruit_SSD1306Schaltpläne
Beide Module verwenden die i²c-Schnittstelle, SDA/SCL mit A4 und A5, der BMP280 wird mit 5V gespeist, während das OLED mit 3.3V versorgt wird.Herstellungsprozess
- Zutrittskontrolle mit QR, RFID und Temperaturüberprüfung
- Messen Sie Temperaturen mit einem 1-Draht-DS18B20-Sensor und Raspberry Pi
- Python- und Raspberry Pi-Temperatursensor
- Einfache Temperatur und Luftfeuchtigkeit auf Raspberry Pi
- DIY:Temperaturüberwachung und -regulierung für HomeBrew
- Raspberry Pi liest BMP085 Temperatur und Druck
- Temperaturmessung für Labor- und Wissenschaftsprojekte
- Raspberry Pi Temperatur- und Lichtsensor
- Druckluftstrom-Messgerät mit analogem Sensor
- Temperatur- und Feuchtigkeitsdatenlogger