Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

BMP280:Temperatur, Druck und Höhe messen

Komponenten und Verbrauchsmaterialien

Arduino UNO
× 1
Adafruit BMP280
× 1
Adafruit OLED 128x32 i2c
× 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 */#include Adafruit_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 */#include Adafruit_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_Library
Adafruit GFX-Bibliothek
https://github.com/adafruit/Adafruit-GFX-Library
Adafruit SSD1306
https://github.com/adafruit/Adafruit_SSD1306

Schaltplä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

  1. Zutrittskontrolle mit QR, RFID und Temperaturüberprüfung
  2. Messen Sie Temperaturen mit einem 1-Draht-DS18B20-Sensor und Raspberry Pi
  3. Python- und Raspberry Pi-Temperatursensor
  4. Einfache Temperatur und Luftfeuchtigkeit auf Raspberry Pi
  5. DIY:Temperaturüberwachung und -regulierung für HomeBrew
  6. Raspberry Pi liest BMP085 Temperatur und Druck
  7. Temperaturmessung für Labor- und Wissenschaftsprojekte
  8. Raspberry Pi Temperatur- und Lichtsensor
  9. Druckluftstrom-Messgerät mit analogem Sensor
  10. Temperatur- und Feuchtigkeitsdatenlogger