J'utilise des ESP32 development boards ou Lolin32 en général sans problème. Ma station météo, décrite dans les projets terminés est un exemple. Je les utilise en WiFi.
Je suis passé cette semaine à la version 1.8.9 de l'IDE arduino sous windows 10 et depuis, lorsque je programme un ESP32 pour qu'il se connecte en WiFi, j'ai un message de brownout au moment de la connexion et l'ESP32 reboote dans cesse.
Avant j'avais la version 1.8.5 et je n'avais aucun problème. Est ce que quelqu'un a aussi remarqué ça ? Est-ce une coïncidence ou est-ce effectivement lié au changement de version ?
non pas remarqué avec :
-Linux .... (ou Windows10 avec la patience de rigueur)
-Arduino 1.8.9 (depuis plusieurs mois il me semble)
-Core ESP32 en version 1.0.2 (donc à jour)
-carte LOLIN 32 alimentée en 5V par le PC Portable
-> la carte reboote bien après flashage et ensuite à chaque réveil (mes applications utilisent en général le deep-sleep)
PS : un petit coup d'oscilloscope sur le 5V et le 3,3V pourrait servir
J'ai essayé pas mal de choses : deux cartes différentes, deux PC portables différents, sous Windows 10 tous les deux, deux câbles différents. Toujours pareil !
J'en viens à la conclusion que le seul facteur commun... c'est moi.
J'ai commandé des cartes et des câbles chez Ali, mais ça prend du temps...
Non, ça semble compliqué.
Les autres sketches fonctionnent, et les print série montrent que le problème arrive à la commande wifi.begin (je vais vérifier ça plus en détail)
Attention le neuneu de la radio a décider de se soigner .
Hier j'ai branché mon premier Lolin32 et mode WiFi.
Et je constate la même chose que LeSept : série de redémarrage jusqu'à que cela fonctionne.
Le programme que j'ai pompé :
// Partie web serveur
#include <WiFi.h>
const char* ssid = "Vous êtes bien curieux" ;
const char* password = "Vous ne le saurez pas" ;
WiFiServer serveur(80) ;
String header ;
String EtatSt26 = "Off" ;
String EtatSt27 = "Off" ;
// Partie Micro
const uint8_t del_J = 26 ;
const uint8_t del_R = 27 ;
//Gestion de l'affichage
uint8_t affiche = 1;
void setup()
{
Serial.begin(115200);
pinMode(del_J, OUTPUT);
pinMode(del_R, OUTPUT);
Serial.print("Connexion a :"); Serial.println(ssid);
WiFi.begin(ssid, password);
while(WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
// Affichage des paramètres de connexion
if(affiche)
{
Serial.println("\n Parametre de connexion:");
Serial.print("WiFi connecte à l'adresse IP = "); Serial.println(WiFi.localIP() );
}
serveur.begin();
}
void loop()
{
WiFiClient client = serveur.available() ;
if (client)
{
if (affiche) Serial.println("Nouvelle connexion");
String currentLine = "";
while (client.connected() )
{
if (client.available()) // s'il y a quelque chose à lire
{
char c = client.read();
if (affiche) Serial.write(c); // Affiche sur le moniteur -> pourquoi pas print ?
header += c;
if (c == '\n') // -> caractére nouvelle ligne reçu
{
if (currentLine.length() == 0) // Ligne vide = fin de la requete http envoyée par le client
{
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println("Connection: close");
client.println();
// Commute les sortie 26 et 27
if (header.indexOf("GET /26/ON") >= 0)
{
if (affiche) Serial.println("GPIO 26 ON");
EtatSt26 = "on";
digitalWrite(del_J, HIGH);
}
else if (header.indexOf("GET /26/off") >= 0)
{
if (affiche) Serial.println("GPIO 26 OFF");
EtatSt26 = "off";
digitalWrite(del_J, LOW);
}
else if (header.indexOf("GET /27/on") >= 0)
{
if (affiche) Serial.println("GPIO 27 on");
EtatSt27 = "on";
digitalWrite(del_R, HIGH);
}
else if (header.indexOf("GET /27/off") >= 0)
{
if (affiche) Serial.println("GPIO 27 off");
EtatSt27 = "off";
digitalWrite(del_R, LOW);
}
// Display the HTML web page
client.println("<!DOCTYPE html><html>");
client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");
client.println("<link rel=\"icon\" href=\"data:,\">");
// CSS to style the on/off buttons
// Feel free to change the background-color and font-size attributes to fit your preferences
client.println("<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}");
client.println(".button { background-color: #4CAF50; border: none; color: white; padding: 16px 40px;");
client.println("text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;}");
client.println(".button2 {background-color: #555555;}</style></head>");
// Web Page Heading
client.println("<body><h1>ESP32 Lolin 32 Serveur Web</h1>");
// Display current state, and ON/OFF buttons for GPIO 26
client.println("<p>Etat de la sortie GPIO 26" + EtatSt26 + "</p>");
// If the EtatSt26 is off, it displays the ON button
if (EtatSt26=="off") {
client.println("<p><a href=\"/26/on\"><button class=\"button\">ON</button></a></p>");
} else {
client.println("<p><a href=\"/26/off\"><button class=\"button button2\">OFF</button></a></p>");
}
// Display current state, and ON/OFF buttons for GPIO 27
client.println("<p>Etat de la sortie GPIO 27 " + EtatSt27 + "</p>");
// If the EtatSt27 is off, it displays the ON button
if (EtatSt27=="off") {
client.println("<p><a href=\"/27/on\"><button class=\"button\">ON</button></a></p>");
} else {
client.println("<p><a href=\"/27/off\"><button class=\"button button2\">OFF</button></a></p>");
}
client.println("</body></html>");
// The HTTP response ends with another blank line
client.println();
// Break out of the while loop
break;
} else { // if you got a newline, then clear currentLine
currentLine = "";
}
} else if (c != '\r') { // if you got anything else but a carriage return character,
currentLine += c; // add it to the end of the currentLine
}
}
}
// Clear the header variable
header = "";
// Close the connection
client.stop();
if (affiche) Serial.println("Client deconnecte.");
if (affiche) Serial.println("");
}
affiche = 0 ;
}
C'est kaiman le programme d'origine : un peu français dans ce monde de brutes anglo-saxonne et comme le programme envoyait en permanence des info sur le port série un blocage de l'affichage (drapeau "affiche") après le premier tour de loop().
Les sorties sur le port série dans le message suivant (trop de carractères)
Les messages sur la sortie série :
J'ai du couper des messages répétitifs pour tenir dans les clous du forum.
Le Guru méditation ne m'a jamais été présenté
68tjs:
Les messages sur la sortie série :
J'ai du couper des messages répétitifs pour tenir dans les clous du forum.
Le Guru méditation ne m'a jamais été présenté
J'ai un peu avancé : j'ai testé sur 2 PC portables, le gros et le petit.
Au départ de ce fil, les 2 sont en 1.8.9 : même chose pour les 2. Brownout.
Je passe le gros an 1.8.5 : connexion nickel du premier coup, reproductible sans aucun souci.
"Chouette", me dis-je, "j'ai trouvé !". Je passe le petit en 1.8.5 (comme avant) et re brownout.
Donc, je n'ai pas avancé dans la compréhension du problème, j'ai juste une solution de secours...
(version de développement)
les bugs ne sont pas les mêmes dans les versions 'stable' et developpement'.......
en moins les bugs corrigés, en plus les bugs introduits.......
When I turn it OFF and than ON the problem repeated. Finally I soldered a 100nF ceramic capacitor on the 3,3V output of the regulator IC on the DEVKIT and since that it works well.
et plus loin :
@royassas an others this suggests that you don't / might not have sufficient bypass capacitance
I'd recommend to put maybe 100 to 470µF in series with the Vin Pin.
Alternatively / additionally you could add another capacitor in series with the 3.3V line on the regulated output.
It might be advisable to add several capacitors, one bigger "bulk" cap and one smaller ceramic cap for quick current spikes.
Please see this excellent video(s):
General explanation: https://youtu.be/BcJ6UdDx1vg
Demonstration: https://youtu.be/1xicZF9glH0
Et à la fin
Another solution:
I use an ESP32 Doit Board. By replacing the small diode on the USB input I could successfully fix this problem. (red) Use a Schottky Diode with a low voltage drop!
Extra capacitance is good, too (yellow).
I re-soldered all ESPP32 Pins, just in case (blue).
la solution 'condensateur' est citée pour une carte DEVKIT qui est moins bien dotée en régulateur 3,3V.
jamais eu de pb de brownout avec des cartes WEMOS/LOLIN authentiques (boutique WEMOS/LOLIN) tant en ESP32 qu'en ESP8266). Pour moi avant de faire de modifs sur la carte il faudrait que j'ai constaté sur la ligne 3,3V des creux de tension.
Linux , oui, par confort !!
j'ai fait l'effort de lancer Windows10 également et d'attendre patiemment la compilation et le téléchargement !!
lesept:
Si je me lance dans la soudure de capa, je suppose que la grosse patte isolée est le GND, mais laquelle est le Vout ? Celle du milieu ? (datasheet)
Il est assez courant (mais pas systématique) que la grosse patte est soit la sortie (situation assez fréquente) soit elle est isolée électriquement mais pas thermiquement.
Je ne peux pas comparer sur ma carte je n'ai pas 1117