ESP12F bloque

Bonjour,

J'ai réalisé un montage à base de ESP12F. Le souci est que cet ESP se bloque de façon aléatoire.
il peut fonctionner pendant de nombreux jours sans soucis, puis se bloque. le reset n'a aucune action pour le débloquer. je dois couper son alimentation pour qu'il redémarre correctement.
j'ai correctement filtré et découplé son alimentation, mais toujours le même souci.
Avez-vous une solution à mon problème ?
Merci pour votre aide.

Plutôt étrange qu'un reset ne produise aucun effet.

Le reset a t-il un effet en temps normal ? Je suppose que oui ?
Le signal WIFI est-il correct ?
S'il ne l'est pas il est normal que l'ESP12 cherche à se connecter ad vitam eternam.
Mais je ne vois pas ce qu'une coupure d'alim peut arranger dans ce cas.

Y a t-il des composants I2C ? Un composant I2C peut se bloquer et bloquer l'ESP12 si aucun time-out de communication n'est prévu. Dans ce cas une coupure d'alimentation est nécessaire pour déplanter le composant I2C.

Mais il manque un schéma pour en dire plus.

Bonjour,

Effectivement, c’est un montage avec I2C. il y a un clock ds3231. un lm 75. un lcd 1602.
En fait c’est un montage pour gérer le temps de filtration automatique d’une piscine, qui communique avec deux esp 12f.
l’émetteur envoie la température de l’eau toutes les 30 mns et se met en deep sleep.
le récepteur gère le système.
J’ai mis en pj les fichiers du montage
merci.

Les schémas sont identiques.
Poster aussi le code.

C'est l'ESP12 avec écran qui bloque ?
Il serait intéressant si possible d'avoir un PC branché sur RX TX GND avec un logiciel terminal, pour inspecter les traces lors du blocage.
Il faut pour cela enrichir celles-ci, afficher le maximum de choses.

Bonjour,

Ci-joint les deux fichiers ino.
Merci.

wifi_server_05_2020_7_SEG.ino (38.4 KB)

wifi_client_05_2020.ino (3.93 KB)

J'ai remis les trois fichiers du montage en pj.

Le code a l'air bien fourni en logs de debug.
Que penses-tu de l'idée du terminal ?
C'est une pratique courante en logiciel embarqué, lorsque l'on ne dispose par d'un support de masse (disque, SD, etc.) pour enregistrer les logs.
C'est l'ESP12 avec écran qui bloque ?

En fait. tout est figé. mon lcd reste sur le texte avant blocage et mon 7 segments reste aussi bloqué sur le dernier texte.
le reset ne fait rien. je coupe l’alim et ca repart pour plusieurs jours. c’est très aléatoire…
Je suis en train de tester un autre montage identique avec lcd et nodemcu 1.0. je rencontre le même souci au bout de quelques jours. je vais tester le terminal. il y a t’il un log spécifique à réaliser pour afficher les blocages de ce type ?
Merci.

Non, simplement enrichir si besoin avec d'autres Serial.print() pour cerner le problème.

Je vois que le serveur est un AcessPoint, aucune chance qu'il bloque sur la mise en route du WIFI.

Bonjour,

Votre programme utilise-t-il des interruptions, directement ou indirectement via des bibliothèques (SW Serial, PWM, etc) ?
Il y a des précautions à prendre, et même avec, j'ai constaté des problèmes avec le WiFi.

A+ et bonne bidouille,

MicroQuettas

Bonjour,

Mon code n'utilise aucune interruption. que de l'I2C et des tempo avec millis().
J'ai testé mon code avec le terminal arduino, il tourne correctement. je ne vois pas pourquoi il se bloque.
mon souci est qu'il peut fonctionner plusieurs jours avant de se bloquer.
Existe t'il un moyen de mettre mon esp en controle sans allumer un pc pendant des jours ?
Merci.

Le problème est que le terminal doit conserver le traces de l'ESP32, sinon il sera impossible de savoir où il bloque.
Par contre je ne sais pas si le terminal continue à recevoir les traces si le PC entre en veille.

Autre solution : un deuxième ESP32 ou un ESP8266 (un datalogger série) à la place du PC.
Il faut relier RX TX (en croisant) et GND ensemble, et le deuxième ESP enregistre les traces du premier dans un fichier sur SPIFFS. Ensuite il est possible de développer une page WEB pour visualiser les traces.
Cela demande un peu de travail.

Si la distance entre ESP32 et PC pose problème bricoleau a développé un terminal WIFI :

Mais cela ne dispensera pas de laisser le PC allumé.

Bonjour,

J'ai trouvé cette méthode sur internet.
Je suis en train de la tester. qu'en pensez-vous ?

http://www.forward.com.au/pfod/ArduinoProgramming/I2C_ClearBus/index.html

Merci.

Rien ne dit pour l’instant qu’il y a un problème I2C.

je ne suis pas un spécialiste mais je trouve qu'il y a bcp de pull ups sur SCL et SDA et avec des valeurs différentes. vous avez essayé avec qu'une seule paire de résistances ?

Bonjour,

Les résistances de pull up sont sur les modules. j'ai une valeur finale avec les résistances en parallèles de 1k2.
Est-ce cette valeur qui serait trop basse ?
Merci.

Comme le dit Henri

Rien ne dit pour l'instant qu'il y a un problème I2C.

Je mentionne cela parce que j'avais des soucis sur un ESP32 en I2C avec mes modules, ça plantait l'ESP de manière un peu aléatoire. J'ai mis au plus proche des broches I2C des résistances de pull-up de 4.7kΩ vers 5V (que mon ESP32 supporte) et je n'ai plus de comportement erratique avec le bus I2C (je me suis assuré d'avoir que des composants 5V sur le bus, pas un mélange de 3.3V et 5V).

Bonjour,

J'ai mis en place un convertisseur 3.3v vers 5v avec deux bss138. Je ne pense pas que c'est ce convertisseur qui me fait défaut ? C'est curieux comme souci. Car ça peut fonctionner un mois sans souci. puis tout ce bloque. Ce n'est pas simple pour identifier le problème. J'ai mis en place un Watchdog de surveillance dans mon code, mais ça ne change rien.

La cause peut être hardware, parasite par exemple, si une charge inductive est commutée (gros relais, moteur, pompe, etc.).
Mais il me semble que la mise en place de traces de debug comme suggéré plus haut est un bon moyen de diagnostic.
Si le plantage survient après une action particulière, il sera possible de soupçonner cette action.