Un ds18b20 empêche la connexion au wifi

Bonjour
J'ai un esp32 qui se connecte au wifi local (et publie en MQTT des données vers Home Assistant, mais j'ai supprimé toute cette partie pour isoler le problème). Une sonde de température comme celle-ci (Waterproof DS18B20 Dallas 1 wire digital temperature sensor and resist – JemRF) nouvellement ajoutée bloque la connexion au réseau.
J'ai supprimé tous les autres capteurs, il ne reste que la sonde et sa résistance de 4,7kohm, l'esp32.

  • SI la sonde est débranchée avant la connexion au réseau de l'esp32 puis que je la branche, les données arrivent et sont correctes et la connexion au wifi s'établit normalement.
  • SI la sonde est branchée au démarrage de l'esp32, pas de connexion au réseau possible.
  • SI je remplace la sonde par une plaquette de ce style : https://media.cablematic.com/__sized__/images_1000/aj02000-01-thumbnail-1080x1080-70.jpg, la connexion au réseau peut se faire.
  • Tous ces tests ont été réalisés plusieurs fois et les effets sont systématiques.

Le problème semble donc lié à la sonde mais quel lien peut il y avoir entre la sonde et l'accès au réseau ?
Une idée ?

Voici le code simplifié (provenant essentiellement d'exemples) :

#include <Arduino.h>
#include "../include/InfoConnexion.h"
#include <SPI.h>
#include <OneWire.h>
#include <WiFi.h>
#include <DallasTemperature.h>

// Update these with values suitable for your network.
const char *mqtt_server = "192.168.1.16";
const char *device_id = "esp-mare";

float tempEauMare = 0;
#define ONE_WIRE_BUS 13
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

WiFiClient wifiClient;

unsigned long delayTime = millis();

void initValueTempEau()
{  
  sensors.requestTemperatures(); // Send the command to get temperatures
  tempEauMare = sensors.getTempCByIndex(0);
  Serial.print("Temp eau ");
  Serial.println(tempEauMare);
}

void OnWiFiEvent(WiFiEvent_t event)
{
  switch (event)
  {
  case SYSTEM_EVENT_STA_CONNECTED:
    Serial.println("ESP32 Connected to WiFi Network");
    Serial.println("Adresse ip" + WiFi.localIP().toString());
    Serial.println("Passerelle IP :" + WiFi.gatewayIP().toString());
    Serial.println("DNS IP :" + WiFi.dnsIP().toString());
    Serial.println(WiFi.RSSI());
    break;
  case SYSTEM_EVENT_AP_START:
    Serial.println("ESP32 soft AP started");
    break;
  case SYSTEM_EVENT_AP_STACONNECTED:
    Serial.println("Station connected to ESP32 soft AP");
    break;
  case SYSTEM_EVENT_AP_STADISCONNECTED:
    Serial.println("Station disconnected from ESP32 soft AP");
    break;
  default:
    Serial.println("code wifi" + String(event));
    break;
  }
}

void setupWifi()
{
  Serial.print("setup wifi ...   ");
  IPAddress ip(192, 168, 1, 251);
  IPAddress gateway(192, 168, 1, 254);
  IPAddress subnet(255, 255, 255, 0);
  IPAddress dns(192, 168, 1, 254);
  delay(1000);
  WiFi.mode(WIFI_STA); // en mode station et pas en point d'accès avec APSTAT
  //  Config IP fixe
  WiFi.config(ip, gateway, subnet, dns);
  WiFi.begin(SSID, PASSWORD);
  WiFi.onEvent(OnWiFiEvent);
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  Serial.println("Fin du setup wifi");
}

void setup()
{
  // put your setup code here, to run once:
  Serial.begin(115200);
  delay(1000);
  sensors.begin();  //init du dallas
  setupWifi();
}

void loop()
{
  // a ce stade, MQTT connecté
  if (millis() - delayTime >= 20000) {
    initValueTempEau();
    delayTime = millis();      
    //publieLesValeurs();
  }
}

Peut être un souci de puissance ? Si vous alimentez la sonde séparément (avec GND joints) - avez vous le même souci ?

Avez vous essayé avec une autre bibliothèque pour votre capteur DS18B20 ?

Salut.
La seule différence entre la sonde étanche et le module cité est la présence d'une résistance de pullup de 4.7K entre les pins DATA et VCC (sur le module).

Bonjour

court-circuit à l'intérieur de la sonde ? infiltration d'eau dans la sonde ?

une consommation de courant excessive ne permettant plus à l'ESP32 d'obtenir tout le courant nécessaire à sa connection au point d'accès (pointe de 350mA environ)

Bonjour
Oui j'ai testé le mode parasite, psa de changement
et oui/non, j'ai testé la bibliothèque DallasTemperature et la bibliothèque DS18B20 mais avec les autres capteurs donc pas récemment.
J'ai oublié de préciser que j'utilise une rallonge de 1m en RJ45 mais j'avais raccourci le cable initial (une installtion précédente). Donc au final j'ai 50 cm de cable initial et 50 cm de cable ethernet.
Par contre j'ai bien testé la plaquette en remplacement du cable de la sonde et donc au bout du cable ethernet
Pour être clair, j'ai les mêmes résultats
esp32-----------ethernet---------- cable3filsdelasondeaveclarésistancede4.7kohms
esp32-----------ethernet---------- module

La sonde donne des résultats corrects si on la branche après la connexion au réseau de l'ESP32 ... donc je n'y crois pas trop. Du reste, pas de trace extérieur d'une déterioration.

Bonjour hbachetti,
suis d'accord

La sonde donne des résultats corrects si on la branche après la connexion au réseau de l'ESP32

Ok , mais une fois la connection au point d'accès réalisée le besoin en courant de l'ESP32 est modéré, le raccordement de la sonde pourrait alors être sans conséquence..... ce n'est qu'une piste.....

Bonjour al1fch
... ah ça c'est possible ...
il faudrait que j'achète une autre sonde pour valider. J'ai vu que des utilisateurs de la même sonde l'avait surprotégée par une gaine thermorétractable, ce n'est sans doute pas pour rien.

On trouve des ESP32 sur des cartes très diverses.

Sur la carte que tu utilises sais-tu quel régulateur linéaire 3,3V est en place ?

un modèle capable de fournir 500mA ? 700mA ?

certains ont observé qq pointes de courant à 430mA (350mA de mon côté avec u oscilloscope et une petite résistance shunt) lors de la connection d'un ESP8266 au point d'accès, si l'ESP n'a pas tout le courant deamndé à cet instant critique il ne se connecte pas

trop technique pour moi, je ne sais pas. J'ai testé deux ESP32 du même fournisseur du même fournisseur. Bon je vais me résoudre à chercher une autre sonde. Merci de vos participations.
Je mettrai le résultat dans ce post.

ESP32 puce

l'ESP32 est un petit circuit intégré

Quelles cartes utilises-tu ? (cartes imprimées ou l'ESP32 est entouré de composants divers : circuits intégrés, résistances, condensateurs, led......) très grande variété de cartes d'origine diverses sur le marché......

Voici celles que j'utilise, pour l'instant je n'ai jamais eu de problème.

et tant qu'à partager, voici mon 1er circuit fait maison recto verso, trop fier je suis ...


:clap:

beau premier circuit imprimé maison !!

la carte que tu utilses est un clone d'une carte DEVKIT C ESP32 d'Espressif, on la trouve souvent sur le marché avec la dénomination générique NodeMCU

C(est une bonne carte classique avec un ESP32 sous le capot métallique d'un module WROOM 32
image

le régulateur linéaire 3,3V de ces cartes peut donner 700mA, ça laisse de la marge y compris pendant la phase de connection au point d'accès

raison de plus pour mettre en cause la sonde. Je verrai bien, je viens d'en recommander deux.

oui c'était ce que j'avais en tête quand je proposais

Oui, enfin il y a quand même des soudures pas terribles. Avant d'accuser la sonde je ferais une bonne inspection visuelle de la carte et je retoucheras quelques soudures.
Les plus visibles sur la photo, mais il y en a peut-être d'autres.
image

On ne se moque pas de mes premières soudures ...
Alors j ai bien vérifié à l ohmètre que chaque piste était isolée du reste.
Et ensuite (comme j'avais quelque doutes quand même de la qualité du circuit, j'avoue) j'ai confirmé le problème avec un autre esp32 en dehors ce 1er circuit avec une plaque d'expérimentation.
Promis, je ferai mieux la prochaine fois :face_with_thermometer:

-------- Message d'origine --------

Je ne me moque pas.
Je pense que tu ne laisses pas chauffer suffisamment. La soudure doit s'étaler d'elle-même sur la pastille et remonter sur la patte du composant.