Skocz do zawartości

ESP32 + czujnik BME680 problem z zawyżaniem temperatur


Pomocna odpowiedź

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include "Adafruit_BME680.h"
 
 
#define SEALEVELPRESSURE_HPA (1013.25)
 
Adafruit_BME680 bme; // I2C
 
void setup() {
  Serial.begin(9600);
  while (!Serial);
  Serial.println(F("BME680 test"));
 
  if (!bme.begin(0x76)) 
  {
    Serial.println("Could not find a valid BME680 sensor, check wiring!");
    while (1);
  }
 
  // Set up oversampling and filter initialization
  bme.setTemperatureOversampling(BME680_OS_8X);
  bme.setHumidityOversampling(BME680_OS_2X);
  bme.setPressureOversampling(BME680_OS_4X);
  bme.setIIRFilterSize(BME680_FILTER_SIZE_3);
  bme.setGasHeater(320, 150); // 320*C for 150 ms
}
 
void loop() 
{
  if (! bme.performReading()) 
  {
    Serial.println("Failed to perform reading :(");
    return;
  }
  Serial.print("Temperature = ");
  Serial.print(bme.temperature);
  Serial.println(" *C");
 
  Serial.print("Pressure = ");
  Serial.print(bme.pressure / 100.0);
  Serial.println(" hPa");
 
  Serial.print("Humidity = ");
  Serial.print(bme.humidity);
  Serial.println(" %");
 
  Serial.print("Gas = ");
  Serial.print(bme.gas_resistance / 1000.0);
  Serial.println(" KOhms");
 
  Serial.print("Approx. Altitude = ");
  Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
  Serial.println(" m");
 
  Serial.println();
  delay(3000);
}

podłaczony scl do D22 i sda do D21  zasilanie 3,3v oraz wspolne gnd, pod arduino dziala ale też zawyża i cały czas pokazuje 990hPa. Aktualnie problem z wgraniem tego kodu na esp32 ... ;/ 

Teraz ma jakiś problem i wgl się ten program nie kompiluje ...  

C:\Users\Patryk\Documents\Arduino\libraries\Adafruit_Unified_Sensor\Adafruit_Sensor.cpp:2:26: fatal error: avr/pgmspace.h: No such file or directory

compilation terminated.

exit status 1
Błąd kompilacji dla płytki DOIT ESP32 DEVKIT V1.

Problem z wgraniem (kompilacją) wynika z tego że nie może znaleźć jakiegoś pliku. Można spróbować najpierw weryfikację. U mnie też występowały różne dziwne problemy gdy zmieniałem płytkę w arduino ide. Czasami pomagało najpierw "weryfikowanie", czasami dopiero zamknięcie i otwarcie programu. Nie wiem z czego to wynika - specjalistą od arduino nie jestem.

Odnośnie odczytów temperatur. Nie pamiętam dokładnie gdzie, ale w jakimś czujniku Bosh'a trawiłem na wzmiankę że ciągłe odczyty z czujników mogą zawyżać temperaturę odczytaną (układ generuje ciepło wszakże). Niestety nie pamiętam o jakim podniesieniu temperatury była tam mowa.

Do tego:

bme.setGasHeater(320, 150); // 320*C for 150 ms

Rozumiem że przy starcie przetwarzania danych z czujnika jakiś element jest podgrzewany. Spróbuj wydłużyć czas pomiędzy odczytami i sprawdź, czy zawyżanie temperatur nie jest przez to spowodowane. 

Powyłączaj też oversampling - w celach testowych, bo może on też wprowadzać "dziwne" rzeczy.

 

(edytowany)

Masz wybraną odpowiednią płytkę? 

Po zmianie płytki spróbuj zamknięcia programu i otworzenia go ponownie. 

Spróbuj WeMos D1 R1

Edytowano przez adam30010
Dodanie informacji

Ogarnąłem 😄 brakowalo w pliku #include <avr/pgmspace.h>

#if (defined(__AVR__)) 
#include <avr\pgmspace.h> 
#else 
#include <pgmspace.h> 
#endif  

 

teraz wszystko smiga 😄

Ciśnienie to zapewne dlatego, że to co widzisz na mapach pogodowych jest ciśnieniem zredukowanym do poziomu morza. Na pewno znajdziesz przelicznik gdzieś w Google. Co do temperatury to umieść czujnik z dala od komputera, Z DS'ami też mi się wydawało, że zawyżają, a czujnik wiszący na kabelku za oknem pokazuje to samo co analogowy termometr.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...