BME280 pas reconnu sur esp01

Bonjour a tous,

J'ai un BME280 qui fonctionne sur un Arduino UNO, mais quand je le branche sur un esp01, il n'est pas reconnu.
voici mon code:

#include <Wire.h> //*Include the Wire library which allows to use the I2C interface*
#include <ESP8266WiFi.h>
#include <WiFiUDP.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h> //*library to easily take readings from the sensor*


#define SEALEVELPRESSURE_HPA (1028)

Adafruit_BME280 bme; //*Declare the bpm variable, an easy to remember reference for the device*

unsigned long delayTime;

void setup() {
    Serial.begin(9600); //*Setup serial communication and speed*
    Serial.println(F("BME280 test"));

    bool status;
    
    status = bme.begin();  //*Try to start the device*
    if (!status) { //*If it is not starting, print message*
        Serial.println("Could not find a valid BME280 sensor, check wiring!");
        while (1); //* Go in an endless loop. This prevents the Arduino from calling the loop function*
    }
    
    Serial.println("-- Default Test --");
    delayTime = 1000;

    Serial.println();
}

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

void printValues() {
    Serial.print("Temperature = "); //*Read and print temperature*
    Serial.print(bme.readTemperature());
    Serial.println(" *C");

    Serial.print("Pressure = "); //*Read and print pressure*
    Serial.print(bme.readPressure() / 100.0F);
    Serial.println(" hPa"); // Calculate altitude assuming 'standard' barometric pressure of 1013.25 millibar = 101325 Pascal

    Serial.print("Approx. Altitude = ");
    Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA)); //*Read and print altitude*
// you can get a more precise measurement of altitude if you know the current sea level pressure which willvvary with weather and such. If it is 1015 millibars that is equal to 101500 Pascals.


    Serial.println(" m");

    Serial.print("Humidity = ");
    Serial.print(bme.readHumidity()); //*Read and print humidity*
    Serial.println(" %");

    Serial.println();
}

Sinon, mon BME280 est branche sur l'ESP sur la broche GPIO2 et GPIO0 sur respectivement SDA et SCL.
J'ai essayer également avec une résistance de 5.6K en pull up VCC sur SDA

Ensuite voici le retour du moniteur série:

Soft WDT reset

stack>>>

ctx: cont
sp: 3ffffdf0 end: 3fffffc0 offset: 01a0
3fffff90: 3fffdad0 00000000 3ffee738 40201075
3fffffa0: feefeffe feefeffe 3ffee78c 40202cfc
3fffffb0: feefeffe feefeffe 3ffe85e0 40100e61
<<<stack<<<

--------------- CUT HERE FOR EXCEPTION DECODER ---------------
H!⸮⸮1⸮D⸮L⸮⸮BME280 test
Could not find a valid BME280 sensor, check wiring!

N'hésitez pas si j'ai oublié quelque chose.

A tester mais à mon avis Il faudrait faire un Wire.begin(2,0); pour affecter les bons GPIO à la communication I2C sur votre ESP01

La bibliothèque adafruit ne le fait pas pour vous lors de l’appel à begin(), il faudrait modifier cette ligne et mettre à la place

if (!i2c_dev->begin(2, 0))

Sans garantie, mais à tester

Merci J-M-L, pour tes infos.
je viens de regarder, mais le fichier de ma bibliothèque et diffèrent de celui que tu ma présenté et du coup je ne retrouve pas les même données.
Je mets mon fichier:
Adafruit_BME280.cpp (22.8 KB)
Faut il que je remplace ma bibliothèque par celle que tu m'as présenté sur Github?

Modifiez cette partie du code


 // init I2C or SPI sensor interface
  if (_cs == -1) {
    // I2C
    _wire->begin();
  }

Pour passer les paramètres à begin()

J'ai bien modifié la ligne:

if (_cs == -1) {

    // I2C

    _wire->begin(2, 0);

Mais toujours pareil:

Could not find a valid BME280 sensor, check wiring!

Et ça a bien compilé avec ce fichier?
Il faut peut être aussi deux pullup de 4.7k sur les 2 broches

Pour la compilation aucun soucis.
Pour les pull up 5.6K ça le fait ou vaut mieux 4.7K, je dois pouvoir trouver les deux mais j'avais déjà fait un essai avec une5.6K sur SDA.

4.7k est plus commun mais en réalité faut calculer :wink:

Il faut une résistance sur chaque pin je pense , bien câblée en pullup, pas juste en série avec Vcc

je viens de tester avec les pull up, pas de changement.

J'ai refait le câblage avec un autre esp8266 plus facile a câbler et plus pratique pour tester et c'est exactement pareil, avec et sans pull up.

Non c'est bon avec l'autre esp, avec ou sans pull up, et la modification dans la bibliothèque permet bien de cibler GPIO0 et GPIO2 .
Donc reste plus qu'a trouver ce qui ne va pas avec l'esp01

Personnellement je n’utilise plus de 01…. Tellement plus pratique avec un modèle un peu plus récent et environ le même prix sans les ennuis :wink:

+1

ils sont chez moi à la retraite après les grands services rendus en 2015 lors de la naissance des ESP8266 !!

Pour suivre vos conseils, j'ai essayer avec un esp8285 m3, car je cherche un module relativement compact et je l'avais en stock.
Et j'arrive au même constat qu'avec esp01, j'arrive a téléverser, j'utilise un module FT232, mais impossible de lire les données du BME280 en branchant sur GPIO0 et GPIO2.
J'ai essayé une résistance pull up sur GPIO0, mais rien de plus, avez vous d'autres conseil a me donner avec L'esp8285 m3?

J’avais suggéré des PULLUP sur les 2 pins

Oui J-M-L, c'est juste parce que j'avais lu quelque part que l'esp8285 m3 n'avais pas de résistance pull up interne sur le GPIO0.
Mais du coup je vais faire le test également sur les deux.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.