Problème pour téléverser un programme sur ESP-WROOM-32

Bonjour à tous,

Voilà quelques temps que je me bats avec un ESP32-WROOM-32 (malheureusement ce n’est pas moi qui l’ai acheté et je n’ai donc pas plus d’infos que le modèle de la carte) pour téléverser un programme et après avoir tenté à peu près tout ce que j’ai pu trouver sur divers forum j’ai décidé d’ouvrir mon propre topic…

Je possède un ESP DEVKIT V1 mais je n’arrive pas à téléverser de programme (depuis l’IDE Arduino mais aussi depuis ATOM) vers la carte, j’ai tout le temps le message d’erreur suivant:

esptool.py v2.6
Serial port COM3
Connecting........_____....._____....._____....._____....._____....._____.....____Une erreur est survenue lors du transfert du croquis
_

A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header

J’ai tenté plusieurs configurations différentes voici celle que j’ai actuellement (voir Config.png)

Pour commencer je teste seulement le Wifi avec un exemple déjà existant:

/*
 *  This sketch demonstrates how to scan WiFi networks.
 *  The API is almost the same as with the WiFi Shield library,
 *  the most obvious difference being the different file you need to include:
 */
#include "WiFi.h"

void setup()
{
    Serial.begin(115200);

    // Set WiFi to station mode and disconnect from an AP if it was previously connected
    WiFi.mode(WIFI_STA);
    WiFi.disconnect();
    delay(100);

    Serial.println("Setup done");
}

void loop()
{
    Serial.println("scan start");

    // WiFi.scanNetworks will return the number of networks found
    int n = WiFi.scanNetworks();
    Serial.println("scan done");
    if (n == 0) {
        Serial.println("no networks found");
    } else {
        Serial.print(n);
        Serial.println(" networks found");
        for (int i = 0; i < n; ++i) {
            // Print SSID and RSSI for each network found
            Serial.print(i + 1);
            Serial.print(": ");
            Serial.print(WiFi.SSID(i));
            Serial.print(" (");
            Serial.print(WiFi.RSSI(i));
            Serial.print(")");
            Serial.println((WiFi.encryptionType(i) == WIFI_AUTH_OPEN)?" ":"*");
            delay(10);
        }
    }
    Serial.println("");

    // Wait a bit before scanning again
    delay(5000);
}

Puis lors de la phase “Connecting …” je reste appuyer sur le bouton boot mais rien n’y fais.
J’ai aussi tenté une manip que j’ai vu sur internet qui consiste à “forcer” la disponibilité de la carte en connectant une capacité de 10microF entre le GND et le pin EN sans résultat satisfaisant.

Mon ESP est pourtant bien détecté par l’ordinateur (voir Capture.png), j’ai vérifié les drivers sont à jour. La LED rouge est bien allumée sur l’ESP. Je ne sais pas quoi faire.

De plus fait étonnant quand j’ouvre une fenêtre moniteur série avec puTTy pour vérifier que le problème ne vienne pas de l’IDE Arduino et que j’appuie sur EN rien ne se passe alors que d’après divers forum quelque chose devrait apparaître sur ma fenêtre.

Si vous avez des suggestions je suis preneur :slight_smile:

Capture.PNG

As-tu essayé avec ESP32 Dev Module ?

Bonjour

Eviter de connecter quelquechose sur Rx et Tx (réserver exclusivement ces 2 pins au CP2102 assurant la liaison USB)

tester :

  • retirer le connecteur USB
  • relier GPIO0 à la masse
  • brancher le connecteur USB
  • enlever la liaison entre GPIO0 et la masse
  • faire alors le téléchargement

De plus fait étonnant quand j'ouvre une fenêtre moniteur série avec puTTy pour vérifier que le problème ne vienne pas de l'IDE Arduino et que j'appuie sur EN rien ne se passe alors que d'après divers forum quelque chose devrait apparaître sur ma fenêtre.

il semblerait que la connection entre CP2102 et ordinateur soit OK mais pas celle entre CP2102 et l'ESP32
A chaque mise sous tension tout ESP32 , programmé ou pas, envoie un message sur la sortie TX.

hbachetti:
As-tu essayé avec ESP32 Dev Module ?

Oui j'ai déjà essayé avec ça

al1fch:
Bonjour

Eviter de connecter quelquechose sur Rx et Tx (réserver exclusivement ces 2 pins au CP2102 assurant la liaison USB)

tester :

  • retirer le connecteur USB
  • relier GPIO0 à la masse
  • brancher le connecteur USB
  • enlever la liaison entre GPIO0 et la masse
  • faire alors le téléchargement

[/list]

Sur la doc internet je ne vois pas de GPIO0, c'est celui qui correspond à EN ? Si c'est le cas ça n'a malheureusement pas marché

al1fch:
il semblerait que la connection entre CP2102 et ordinateur soit OK mais pas celle entre CP2102 et l'ESP32
A chaque mise sous tension tout ESP32 , programmé ou pas, envoie un message sur la sortie TX.

Je ne suis pas certain de comprendre ce que vous entendez par "envoyer un message sur la sortie TX" si je ne peux pas la programmer ?

Ce genre de carte ?

Si oui je n'ai pas de problème avec elle. Il faut appuyer sur BOOT jusqu'à ce que le chargement démarre.
Un appui bref ne suffit pas.

EDIT : tu le fais déjà OK

je reste appuyer sur le bouton boot mais rien n'y fais

ur la doc internet je ne vois pas de GPIO0, c’est celui qui correspond à EN ? Si c’est le cas ça n’a malheureusement pas marché

Quelle doc internet ? GPIO0 n’a rien avoir avec EN (EN = RST, RESET)
GPIO0 n’est pas accessible sur certains clones du DEV KIT ESP32 d’ESPRESSIF
Il ya une certaine variabilité dans les reproductions du modèle !
Sur cette page on voit GPIO0 sur l’un des deux modèles présentés

→ d’où la nécessité de bien montrer la variante en mains !!

il semblerait que la connection entre CP2102 et ordinateur soit OK mais pas celle entre CP2102 et l’ESP32
A chaque mise sous tension tout ESP32 , programmé ou pas, envoie un message sur la sortie TX.

Je ne suis pas certain de comprendre ce que vous entendez par “envoyer un message sur la sortie TX” si je ne peux pas la programmer ?

En amont de l’exécution du programme utilisateur un code , figé dans la ROM de l’ESP32, assure le démarrage , et crée les conditions préalables, prapére le terrain, à l’éxécution du programme utilisateur.
Un compte rendu est systématiquement envoyé sur le port série à chaque démarrage.
Le programme utiisaterur a ensuite ma main sur le port série.
(analogie : les messages qu’un BIOS envoie sur l’écran au démarrage d’un PC)

al1fch:
Quelle doc internet ? GPIO0 n'a rien avoir avec EN (EN = RST, RESET)
GPIO0 n'est pas accessible sur certains clones du DEV KIT ESP32 d'ESPRESSIF
Il ya une certaine variabilité dans les reproductions du modèle !
Sur cette page on voit GPIO0 sur l'un des deux modèles présentés
Getting Started with the ESP32 Development Board | Random Nerd Tutorials

-> d'où la nécessité de bien montrer la variante en mains !!

Ah veuilez m'excuser je ne savais qu'il y avait plusieurs version, pour ma part j'ai la verison 30 pins GPIOs

al1fch:
En amont de l'exécution du programme utilisateur un code , figé dans la ROM de l'ESP32, assure le démarrage , et crée les conditions préalables, prapére le terrain, à l'éxécution du programme utilisateur.
Un compte rendu est systématiquement envoyé sur le port série à chaque démarrage.
Le programme utiisaterur a ensuite ma main sur le port série.
(analogie : les messages qu'un BIOS envoie sur l'écran au démarrage d'un PC)

Euh étant plutôt novice dans la programmation je vous avoue ne pas vraiment comprendre comment exécuter tout cela mais je vais regarder sur internet comme réaliser ces différentes étapes. Est-ce que cela ressemble au traitement d'un fichier boot qu'on pourrait retrouver sur RPi ?

Si tu appuies sur RESET+BOOT et que tu relâches RESET :

rst:0x1 (POWERON_RESET),boot:0x3 (DOWNLOAD_BOOT(UART0/UART1/SDIO_REI_REO_V2))
waiting for download

à 115200 Kbaud

hbachetti:
Si tu appuies sur RESET+BOOT et que tu relâches RESET :

rst:0x1 (POWERON_RESET),boot:0x3 (DOWNLOAD_BOOT(UART0/UART1/SDIO_REI_REO_V2))

waiting for download



à 115200 Kbaud

C'est le problème que j'avais cité avec puTTy, si j'ouvre un moniteur série (réglé à 115200 baud) que ce soit depuis l'IDE Arduino ou depuis puTTy je n'ai absolument rien qui s'affiche. J'ai quand même tenté de réaliser la manip' au cas où mais sans succès

Ce n’est pas normal.
Je suppose que la carte est juste branchée sur l’USB et que rien d’autre n’est connecté sur les broches.
Vérifier quand même la présence du 3.3V sur la broche du même nom.

Euh étant plutôt novice dans la programmation je vous avoue ne pas vraiment comprendre comment exécuter tout cela mais je vais regarder sur internet comme réaliser ces différentes étapes

il n'ya rien à réaliser !!
je me contentais de décrire ce que fait de lui même un ESP32 à la mise sous tension !!
Il exécute,de lui même, un bout de code non modifiable implanté dans sa ROM
Ceci est accompagné de qq messages émis sur le port série, si ces messages n'apparaissent pas c'est que l'ESP32 n'a pas démarré et par conséquent n'a pas passé la main au code téléversé.

Est-ce que cela ressemble au traitement d'un fichier boot qu'on pourrait retrouver sur RPi ?

Non ça correspond à ce que fait le PPi avant traitement du fichier boot... pour être en mesure de lire un fichier boot.

hbachetti:
Ce n'est pas normal.
Je suppose que la carte est juste branchée sur l'USB et que rien d'autre n'est connecté sur les broches.
Vérifier quand même la présence du 3.3V sur la broche du même nom.

Oui c'est étrange. Pour l'instant je n'ai rien branché dessus.

J'ai bien les 3V3...

Je sèche ...

idem, ça fait penser à un défaut de la carte et le non fonctionnement de son ESP32

Tout démarrage, même si le bouton boot reste enfoncé, se manifeste par un message sur le port série

Je comprends pas de problème merci de votre aide, je vais probablement commander une nouvelle carte

idem, ça fait penser à un défaut de la carte et le non fonctionnement de son ESP32

Pareil.
Dernière offre : changer de cordon USB.
Certains cordons de chargeur n'ont pas de fils data.

hbachetti:
Pareil.
Dernière offre : changer de cordon USB.
Certains cordons de chargeur n'ont pas de fils data.

J'ai déjà essayé avec plusieurs cordons sur différents ordinateurs

Valider le cordon avec un téléphone si possible.
La connexion support de masse USB doit être OK.
Il faut avoir un téléphone µUSB, de plus en plus rare ...

Sinon, j'ai bien peur que ce soit foutu ...