Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

BMP280:meet temperatuur, druk en hoogte

Componenten en benodigdheden

Arduino UNO
× 1
Adafruit BMP280
× 1
Adafruit OLED 128x32 i2c
× 1

Over dit project

Hallo, en welkom bij deze tutorial waarin ik de BMP280 gebruik om temperatuur, druk en ook hoogte te meten, met behulp van een Arduino UNO-bord en een OLED-display. Hier zijn enkele van de belangrijkste parameters van de BMP280 uit de datasheet:

Dus voor dit project gaan we de module gebruiken om al deze dingen te meten in zowel metrische als imperiale systemen zoals gewoonlijk, ik ben niet zeker van de eenheden, maar je kunt ze altijd via de code converteren, en hier zijn de componenten die we gaan gebruik:

Testen en oplossen van problemen:

Na het bedraden van uw module, is het beter om de code uit het bibliotheekvoorbeeld te testen, de naam is "BMP280test", als uw module niet wordt gedetecteerd zoals in de onderstaande afbeelding:

U kunt de i²c-scannercode uitvoeren (maar elk ander i²c-apparaat zoals een LCD of OLED loskoppelen), en als uw module niet kapot is of geen soldeerprobleem heeft, zult u zien dat het apparaat wordt gedetecteerd door de scanner :

Noteer nu dat adres en ga naar het c++-bestand van uw bibliotheek, bibliotheek wordt meestal geïnstalleerd in de "Documents/Arduino/Bibliotheken":

En open het met een goede editor, ik gebruik Dev c++

Ga dan naar de regel "41" en _i2caddr verander de "a" met het adres dat je op de seriële monitor hebt gevonden:

Alles opslaan en afsluiten, de bibliotheek is bedoeld om te werken met modules die 0x77 als i²c-adres hebben, maar degene die ik gebruik heeft 0x76.

Voer de testcode opnieuw uit:

Testfoto's:

Ik hoop dat het voor je werkt, en als je een probleem hebt, laat het dan in een reactie achter.

Code

  • bmp280_Serial_metric.ino
  • bmp280_Serial_Imperial.ino
  • bmp280_OLED_m.ino
  • bmp280_OLED_US.ino
bmp280_Serial_metric.inoArduino
/* Deze code is voor gebruik met Adafruit BMP280 (metrisch) * Het meet zowel temperatuur als druk en geeft deze weer op de seriële monitor met de hoogte * Het is een aangepaste versie van de Adafruit-voorbeeldcode * Raadpleeg www.surtrtech .com of SurtrTech Youtube-kanaal */#include Adafruit_BMP280 bmp; // I2C Interfacevoid setup () {Serial.begin (9600); Serial.println(F("BMP280-test")); if (!bmp.begin()) { Serial.println(F("Kon geen geldige BMP280-sensor vinden, controleer de bedrading!")); terwijl (1); } /* Standaardinstellingen uit datasheet. */ bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* Bedrijfsmodus. */ Adafruit_BMP280::SAMPLING_X2, /* Temperatuuroversampling */ Adafruit_BMP280::SAMPLING_X16, /* Drukoversampling */ Adafruit_BMP28016:, /*FILTER_BMP28016:, /* */ Adafruit_BMP280::STANDBY_MS_500); /* Standby-tijd. */}void loop() { Serial.print(F("Temperatuur =")); Serial.print(bmp.readTemperature()); Serial.println(" *C"); Serial.print(F("Druk =")); Serial.print(bmp.readPressure()/100); // door de druk in hPa weer te geven, kunt u de eenheid Serial.println ("hPa"); Serial.print(F("Geschatte hoogte =")); Serial.print(bmp.readAltitude(1019.66)); //De "1019.66" is de druk (hPa) op zeeniveau in dag in uw regio Serial.println ("m"); //Als je het niet weet, pas het dan aan totdat je je huidige hoogte hebt Serial.println(); vertraging (2000);}
bmp280_Serial_Imperial.inoArduino
/* Deze code is voor gebruik met Adafruit BMP280 (Imperial) * Hij meet zowel temperatuur als druk en geeft deze weer op de seriële monitor met de hoogte * Het is een aangepaste versie van de Adafruit-voorbeeldcode * Raadpleeg www.surtrtech .com of SurtrTech Youtube-kanaal */#include Adafruit_BMP280 bmp; // I2Cvoid setup () { Serial.begin (9600); Serial.println(F("BMP280-test")); if (!bmp.begin()) { Serial.println(F("Kon geen geldige BMP280-sensor vinden, controleer de bedrading!")); terwijl (1); } /* Standaardinstellingen uit datasheet. */ bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* Bedrijfsmodus. */ Adafruit_BMP280::SAMPLING_X2, /* Temperatuuroversampling */ Adafruit_BMP280::SAMPLING_X16, /* Drukoversampling */ Adafruit_BMP28016:, /*FILTER_BMP28016:, /* */ Adafruit_BMP280::STANDBY_MS_500); /* Standby-tijd. */}void loop() { float f =bmp.readTemperature()*9/5 + 32; // Conversie van C naar F Serial.print (F ("Temperature =")); Serieafdruk(f); Serial.println(" *F"); float P =bmp.readPressure()/3386.39; // door de druk in inches kwik weer te geven, kunt u de eenheid Serial.print (F ("Pressure =")); Serieafdruk(P); Serial.println ("inHg"); float A =bmp.readAltitude(1019.66)*3.28084; //De "1019.66" is de druk (hPa) op zeeniveau overdag in uw regio Serial.print(F ("Approx height =")); //Als je het niet weet, pas het dan aan totdat je je huidige hoogte hebt Serial.print(A); Serial.println(" ft"); Serieel.println(); vertraging (2000);}
bmp280_OLED_m.inoArduino
/* Deze code is voor gebruik met Adafruit BMP280 en OLED-scherm (metrisch) * Het meet zowel temperatuur als druk en geeft deze weer op het OLED-display met de hoogte * Het is een aangepaste versie van de Adafruit-voorbeeldcode * Raadpleeg www.surtrtech.com of SurtrTech Youtube-kanaal */#include  //Bibliotheken voor de OLED en BMP280#include #include #define SCREEN_WIDTH 128 // OLED-schermbreedte, in pixels#define SCREEN_HEIGHT 32 // OLED-display hoogte, in pixels#define OLED_RESET -1 // Reset pin # (of -1 als Arduino reset pin gedeeld wordt)Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); // De weergavenaam declareren (display)Adafruit_BMP280 bmp;void setup() {bmp.begin(); // Start de bmp-display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // Start het OLED-display display.clearDisplay (); weergave.weergave(); display.setTextColor(WIT); display.setTextSize(1); display.print("SurtrTech"); //Toon de naam, u kunt deze verwijderen of vervangen display.setCursor(32,12); display.setTextSize(2); display.println("BMP280"); weergave.weergave(); delay(2000);}void loop() { display.clearDisplay(); float T =bmp.readTemperature(); // Lees temperatuur in C float P =bmp.readPressure ()/100; // Lees druk in Pa en conversie naar hPa float A =bmp.readAltitude (1019.66); //Berekening van de hoogte, de "1019.66" is de druk in (hPa) op zeeniveau overdag in uw regio //Als u het niet weet, pas het dan gewoon aan totdat u de hoogte van uw plaats krijgt display.setCursor(0 ,0); // Oled-display, gewoon spelen met tekstgrootte en cursor om het gewenste scherm te krijgen 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"); weergave.weergave(); vertraging (2000);}
bmp280_OLED_US.inoArduino
/* Deze code is voor gebruik met Adafruit BMP280 en OLED-scherm (Imperial) * Het meet zowel temperatuur als druk en geeft deze weer op het OLED-display met de hoogte * Het is een aangepaste versie van de Adafruit-voorbeeldcode * Raadpleeg www.surtrtech.com of SurtrTech Youtube-kanaal */ #include  //Bibliotheken voor de OLED en BMP280#include #include #define SCREEN_WIDTH 128 // OLED-schermbreedte, in pixels#define SCREEN_HEIGHT 32 // OLED-display hoogte, in pixels#define OLED_RESET -1 // Reset pin # (of -1 als Arduino reset pin gedeeld wordt)Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); // De weergavenaam declareren (display)Adafruit_BMP280 bmp;void setup() {bmp.begin(); // Start de bmp-display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // Start het OLED-display display.clearDisplay (); weergave.weergave(); display.setTextColor(WIT); display.setTextSize(1); display.print("SurtrTech"); //Toon de naam, u kunt deze verwijderen of vervangen display.setCursor(32,12); display.setTextSize(2); display.println("BMP280"); weergave.weergave(); delay(2000);}void loop() { display.clearDisplay(); float T =bmp.readTemperature()*9/5 + 32; // Lees temperatuur in C en conversie naar F float P =bmp.readPressure ()/3386.39; // Lees Druk in Pa en conversie naar inches kwikvlotter A =bmp.readAltitude (1019.66) * 3.28084; //Berekening van de hoogte, de "1019.66" is de druk in (hPa) op zeeniveau overdag in uw regio //Als u het niet weet, pas het dan gewoon aan totdat u de hoogte van uw plaats krijgt display.setCursor(0 ,0); // Oled-display, gewoon spelen met tekstgrootte en cursor om het gewenste scherm te krijgen 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"); weergave.weergave(); vertraging (2000);}
BMP280_Adafruit_library
Misschien wil je dingen veranderen zoals in de tutorialhttps://github.com/adafruit/Adafruit_BMP280_Library
Adafruit GFX-bibliotheek
https://github.com/adafruit/Adafruit-GFX-Library
Adafruit SSD1306
https://github.com/adafruit/Adafruit_SSD1306

Schema's

Beide modules gebruiken de i²c-interface, SDA/SCL met A4 en A5, de BMP280 wordt gevoed door 5v terwijl de OLED de 3.3v gebruikt.

Productieproces

  1. Toegangscontrole met QR, RFID en temperatuurverificatie
  2. Meet temperaturen met een 1-draads DS18B20-sensor en Raspberry Pi
  3. Python- en Raspberry Pi-temperatuursensor
  4. Eenvoudige temperatuur en vochtigheid op Raspberry Pi
  5. DIY:temperatuurbewaking en -regeling voor HomeBrew
  6. Raspberry Pi leest BMP085 temperatuur en druk
  7. Temperatuurmeting voor laboratorium- en wetenschappelijke projecten
  8. Raspberry Pi temperatuur- en lichtsensor
  9. Drukluchtstroommeetapparaat met analoge sensor
  10. Temperatuur- en vochtigheidsdatalogger
  11. Frequentie- en werkcyclusmeting met Arduino