Transformer code arduino pour l'utiliser sur ESP8266

Bonjour a tous,

j'ai un code de base pour faire fonctionner un capteur de température et humidité SHT31 DFROBOT.
Le code base tourne correctement sur Arduino, mais ne fonctionne pas sur ESP8266, et je ne vois pas quoi modifier pour qu'il soit valide pour l'ESP.
le code toune en boucle sur ce while sur ESP:

while (sht3x.begin() != 0) {
    Serial.println("Failed to Initialize the chip, please confirm the wire connection");
    delay(1000);
  }

Et je n'ai pas trouvé non plus de code adapté a l'ESP.

Merci d'avance pour une info pour le transformer

Voici le code de base pour Arduino:


#include <DFRobot_SHT3x.h>


//DFRobot_SHT3x sht3x(&Wire,/*address=*/0x45,/*RST=*/4);
DFRobot_SHT3x   sht3x;

void setup() {
  Serial.begin(9600);
  //Initialize the chip
  while (sht3x.begin() != 0) {
    Serial.println("Failed to Initialize the chip, please confirm the wire connection");
    delay(1000);
  }
  
  Serial.print("Chip serial number");
  Serial.println(sht3x.readSerialNumber());

 
   if(!sht3x.softReset()){
     Serial.println("Failed to Initialize the chip....");
   }

  Serial.println("------------------Read adta in single measurement mode-----------------------");
}

void loop() {
  Serial.print("Ambient Temperature(°C/F):");
 
  Serial.print(sht3x.getTemperatureC());
  Serial.print(" C/");
  
  Serial.print(sht3x.getTemperatureF());
  Serial.print(" F ");
  Serial.print("Relative Humidity(%RH):");
  
  Serial.print(sht3x.getHumidityRH());
  Serial.println(" %RH");

  delay(1000);
}

Bonsoir

ESP8266, oui mais sur quelle carte ?
Sur quels GPIO est raccordé actuellement ton module ?

Essayer avec SDA sur GPIO4 et SCL sur GPIO5 (cf quels GPIO utiliser ? ) ......en espérant que la librairie que tu utilises soit compatible ESP8266

Si tu prends le temps de faire une recherche sur 'SHT31 ESP8266' tu trouvera nombre de propositions employant en général d'autres librairies

DFrobot n'est pas le seul à proposer des modules avec un capteur SHT31, minuscule circuit intégré carré avec un trou central.

Merci al1fch pour tes précisions, et je me posais justement la question de la compatibilité de la librairie car dans le code principale, je n'ai pas vu quelque chose de ciblé Arduino.
Quand a d'autre module portant le SHT31, oui j'en avais vu mais je n'ai pas osé utiliser leur librairie car pas de la même marque, une erreur de ma part.
Sinon c'est bien sur GPIO04 --> SDA et GPIO05 --> scl que je suis connecté sur la carte Lolin 12-E NodeMCU de mon projet actuel

Bonjour

ce qui compte avat tout c'est la marque et le modèle du capteur (Sensirion SHT31) , la marque du module la plupart du temps est sans importance .

Une absence de résistance tirage (pull up) sur SDA et SCL peut être la cause du problème, préentes sur Uno elles sont en général absentes sur les cartes avec des ESP8266.
Peut être sont-elle implatées sur le module de DFrobot (un schéma est souvent propsoé par DFRobot pour ses modules)

JJe ne connais pas de carte nommée "Lolin 12-E Nodemcu', du moins pas sous ce nom là)... les vendeurs sur les plateformes sont très 'inventifs' pour nommer approximativement leurs produits....
la marque WEMOS/LOLIN ne produit rien sous ce nom là

EDIT : le module DFRobot mentionné ne fait preuve d'aucune originalité au vu de son schéma qui montre la présence de dexs résistances de tirafge de 10k sur SDA et SCL Tu peux utilser toute autre librairie pour SHT31 avec son code exemple de base

Avant cela un sprogramme scanner I2C permettrait de diagnostiquer le bus I2C et vérifier la pérsence du capteur aux adresses 0x44 ou 0x45

Bonjour Treza88

En recherchant Lolin 12-E i2c pin, c'est plus souvent GPIO02 --> SDA et GPIO01 --> scl
Sinon essaies Wire.begin(sdaPin, sclPin);

Cordialement
jpbbricole

Excuse moi al1fch la carte est une : ESP8266 CH340 V3:

Et le capteur celui ci:

Sur ce type de carte (NodeMCU) on a affaire à une double numérotation des Entrées /Sorties , c'est une intiative de fabricants de cartes qui mettent en bord d ecarte des repères "D" différents des numéros de GPIO du circuit intégré

GPIO4 s'appelle aussi D2, GPIO5 s'appelle aussi D1 !!

voir ici la correspondance : https://esp8266-shop.com/esp8266-guide/esp8266-nodemcu-pinout/

donc câbler
SDA sur D2 (en fait GPIO4)
SCL sur D1 (en fait GPIO5)

Oui c'est bien ce que j'ai et j'ai même une autre carte identique avec un BME280 dessus

Et le scanner I2C me trouve bien le module a l'adresse 0x45

Bonne nouvelle !

Essayes ton module avec les informations fournies sur cette page (pour le mode I2C) :
https://randomnerdtutorials.com/esp8266-bme280-arduino-ide/

Merci al1fch ce n’était pas un problème au niveau de l'I2C, j'ai trouvé un exemple avec la bibliothèque d'Adafruit qui fonctionne en n'oubliant pas de configurer la bonne adresse.

Encore merci pour le coup de main

OK , donc problème réglé en changeant de librairie, c'est bien ça ?

Oui c'est bien ça.

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