Skocz do zawartości

ESP32 i problem z uruchomieniem czujnika BME280


Pomocna odpowiedź

Napisano (edytowany)

Cześć!

Od paru dni męczę się z odpaleniem czujnika BME/BMP280 - o takiego dokładnie:

image.thumb.png.2bdb604a6bfa0af5ad36c0ec1cc69981.png

W międzyczasie przebrnąłem już przez, wydaje mi się, wszystkie czeluści internetu, ale może Wasze doświadczenie jeszcze mi pomoże. Generalnie wszystko starałem się konfigurować i robić analogicznie do tutorialu znajdującego się pod tym linkiem: https://randomnerdtutorials.com/esp32-bme280-arduino-ide-pressure-temperature-humidity/?fbclid=IwAR14vHOzVlIAiPvsUOxV-efDpnfCjG6Ms7q_sTuLk0ypwM-p3ousZU1yn_Y

Sprawdzałem poprawność podłączeń, korzystałem z najnowszych bibliotek adafruit, później próbowałem korzystać z tych przedstawionych w tutorialu (zmieniając adres I2C w Adafruit_BME280.h). Zaczynam podejrzewać, że może czujnik jest w jakiś sposób uszkodzony. Może macie jakieś inne sposoby, żeby to sprawdzić? Bo jednak wolałbym się nie nadwrężać dodatkowymi kosztami. Również sugerowałem się filmikiem - 

niestety komentowanie (w moim przypadku 

_wire -> begin();

w Adafruit_BME280.cpp i dopisywanie kodu w Arduino IDE również nie pomogło.)

Z góry bardzo Wam dziękuję za wszelkie rady 😄

Edit. żeby było prościej kod z którego korzystam:

/*********
  Complete project details at http://randomnerdtutorials.com  
*********/

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

/*#include <SPI.h>
#define BME_SCK 18
#define BME_MISO 19
#define BME_MOSI 23
#define BME_CS 5*/

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME280 bme; // I2C
//Adafruit_BME280 bme(BME_CS); // hardware SPI
//Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); // software SPI

unsigned long delayTime;

void setup() {
  Serial.begin(9600);
  Serial.println(F("BME280 test"));

  bool status;

  // default settings
  // (you can also pass in a Wire library object like &Wire2)
  status = bme.begin(0x76);  
  if (!status) {
    Serial.println("Could not find a valid BME280 sensor, check wiring!");
    while (1);
  }

  Serial.println("-- Default Test --");
  delayTime = 1000;

  Serial.println();
}


void loop() { 
  printValues();
  delay(delayTime);
}

void printValues() {
  Serial.print("Temperature = ");
  Serial.print(bme.readTemperature());
  Serial.println(" *C");
  
  // Convert temperature to Fahrenheit
  /*Serial.print("Temperature = ");
  Serial.print(1.8 * bme.readTemperature() + 32);
  Serial.println(" *F");*/
  
  Serial.print("Pressure = ");
  Serial.print(bme.readPressure() / 100.0F);
  Serial.println(" hPa");

  Serial.print("Approx. Altitude = ");
  Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
  Serial.println(" m");

  Serial.print("Humidity = ");
  Serial.print(bme.readHumidity());
  Serial.println(" %");

  Serial.println();
}

I na monitorze dostaje błąd z setupu, "Cold not find a valid BME280 sensor, check wiring!". Przez chwilę myślałem, że to może coś z lokalizacją bibliotek i obiekt "bme" się w ogóle nie tworzy, ale samo IDE biblioteki wyświetla...

Edit 2, further information

I2C scanner daje mi adres 0x76 - czy w ogóle to, że znajduje jakieś urządzenie nie jest dowodem, że czujnik nie jest zepsuty? czy to leży po stronie ESP32?

ESP32, z którego korzystam piny do I2C SDA na D21, i SCL na D22. 

 

Edytowano przez Kajurt

Na początek ustal, czy kupiłeś wersję 5V czy 3.3V, wersja 5V nie chciała mi działać zasilana z 3.3V. A potem przetestuj to po prostu w UNO 5V (jeśli jest wersja 5V). 

  • 10 miesiące później...

Ja lutuje (zwieram) dwa pola nad napisem BM. Tym się wybiera adres czy 76 czy 77. Zauważyłem że dużo czujników nie chce chodzić bez tego. Są wersje 3.3 V i 5V.. 5V jak na zdjęciu jest lepszy bo pracuje na 3.3 i 5 V bez problemu.

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...