Fenetre Serie IDE

Bonjour la communauté,

Pour la 1ère fois la fenetre serie ne fonctionne pas avec mon programme.

Après reset de l’ESP32 j’obtient bien:

ets Jul 29 2019 12:21:46

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:4744
load:0x40078000,len:15672
load:0x40080400,len:3152
entry 0x4008059c

**

Mais ensuite plus rien alors que j’ai des Serial.print(–);

Je n’ai pas oublié le Serial.begin(115200); au début du setup et là je sèche.

Merci pour votre aide.

Bonjour

Quelle variété de microcontrolleur ESP32 est utilisée ? (ESP32, ESP32-C3, ESP32-S2, ESP32-S3….etc…)
Sur quelle carte ?

Oui — sur certains ESP32 récents, dans l’IDE Arduino vous devez aller dans « Outils » puis vérifier l’option « USB CDC on boot» ou un truc comme cela

Merci pour les réponses.

J’utilise “DOIT ESP32 DEVKIT V1” dans l’IDE mais ce processeur (module) est récent pour moi 1ère utilisation l’antenne dépasse du circuit. Ceux que j’ai utilisé jusqu’ici rien ne dépassait.

Ha j’oubliais aussi, j’utilise la version 1.8.19 d’Arduino IDE.

physiquement quelle carte est présente ? (lien, photo….)

C’est ce processeur

ça a marché avant avec le même câble USB et la même carte ESP-32 ?

si vous chargez

void setup() {
  Serial.begin(115200);
  delay(1000);
  Serial.println("Hello ESP32-D");
}

void loop() {
  Serial.println("Hello");
  delay(1000);
}

ça dit quoi ?

Je viens d’essayer et je suis surpris, ça fonctionne.

Je programme depuis un nombre d’année considérable et j’ai quand même testé pourtant sûr de moi. Que peut-il se passer alors que tout mon programme fonctionne mes pages web aussi il n’y a que le port série avec l’ide qui ne fonctionne pas je suis perplexe.

Voici le début du setup:

void setup() {
  Serial.begin(115200);
  Wait(100); // fonction qui remplace delay dans tous mes programmes depuis près de 10 ans
  Serial.println();
  Serial.println(F("*** Start ***"));

Comme c’est cela qui configure la liaison je ne vois pas ce qu’il y a de mauvais!

Il pourrait y avoir une librairie qui empêche la liaison série:

#include "FS.h"
#include "SPIFFS.h"
#include <WebServer.h>
#include <WiFiClient.h>
#include <ESPmDNS.h>
#include <WiFi.h>
#include <WiFiUdp.h>
#include <TimeLib.h>
#include "OTApage.h"
#include <Update.h>
#include "SSD1306Wire.h"
#include <7semi_ADS1xx5.h>

vous avez vu aussi le "Hello ESP32-D" ?

que fait votre Wait ?

Ce serait peut-être plus simple en mettant le code complet.

Si après le Serial.println(F("*** Start ***")); tu as un appel de fonction qui fait planter le code cela pourrait expliquer que tu ne vois que les 2 astérisques.

Rajouter un

Serial.flush();

Après le premier print permettrait de voir si c’est ça

Est-ce qu'on n'est pas toujours dans le même problème de l'affichage des messages dans le terminal de l'IDE juste après une programmation ?

@jlnapo
Je te propose deux manips au choix.

  1. Constat : Après une programmation tu ne vois rien.
    Que se passe-t-il si tu fais un reset ? Vois-tu les affichages ?

  2. Que se passe-t-il si au lieu d'utiliser le terminal de l'IDE, tu utilises un simple terminal série autonome comme minicom ou cutecom ?
    Toujours pareil : tu connectes, tu règles le terminal, puis tu fais un Reset et après le Reset vois-tu les affichages escomptés ?

Ma théorie :
Pour permettre la programmation, l'IDE libère le port USB en déconnectant le terminal série.
Après la programmation, le micro redémarre immédiatement, trop vite pour l'IDE ait le temps de relancer le moniteur série.

Si on fait un reset alors que le terminal série est prêt à recevoir, cela fonctionne parfaitement.

Je ne sais pas ce que fait le wait(100), mais avec un délai il faut bien 2 à 3 secondes.
Ou faire un reset manuel.

Merci pour toutes vos réponses et conseils.

Le Wait(100) est en millisecondes et c’est une fonction que j’ai écris il y a fort longtemps et qui n’a jamais été bloquante. C’est juste pour éviter le “delay” qui lui bloque le programme pendant un temps et qui interdit les interruptions.

void Wait(int tmp) {
  unsigned long tempo = millis();
  while ((millis() - tempo) < tmp) {
    yield();
  }
}

Le programme fonctionne correctement, le serveur web envoi bien les pages et accepte les enregistrement depuis le web, tous les fichiers du SPIFFS sont présents (j’ai une page web qui le montre) l’interrogation du serveur UDP est effectué (mise à l’heure) en fait tout va bien hormis la diffusion de texte vers le port série Arduino ide.

Oui tout va bien avec ce code.

J’ai peut-être une piste, mes serial.print passe par une fonction qui permet d’afficher sur un écran oled et en fait le texte est sensé s’afficher sur la console série Arduino en même temps.
Mais comme je suis en test, le module ESP32 est seul et je pense que l’objet écran n’est pas connecté, je me fais ejecter de la fonction avant d’arriver au serial.print.
Bon encore quelques test du programme et je le mettrai sur le circuit imprimé et nous verrons bien. Je vous tiens au courant et encore un gros merci à tous.

C'est un SSD1306 en interface I2C je suppose?
S'il est absent le programme doit se planter car l'I2C ne doit pas voir d'acquittements à ses tentatives d'accès.

En effet c’est ce que je pense, de plus j’ai l’impression que la librairie que j’ai pris ne convient pas, je vient de faire un test (exemple) avec juste l’écran et je n’ai rien.

Voir si elle supporte l'ESP32.