ESP32-C3 USB Communication "série"

Bonsoir,

J'ai reçu des ESP32-C3 Lolin-mini.
Ce sont des V1.0.0

  • antenne pcb intégrée
  • simple del (led) .

La dernière version est la V2.01 avec :

  • connecteur pour antenne, pas d'antenne PCB
  • WS2812B en remplacement de la del simple.

Bien regarder la photo avant de commander.

La programmation fonctionne parfaitement.
A la première programmation, pour faire entrer le micro en mode programmation il faut appuyer sur le bouton EN (RAZ) avec GPIO9 appuyé, les fois suivantes ce n'est plus la peine : ça se débrouille tout seul.

Le problème : je n'ai pas trouver le moyen pour envoyer des données directement sur l'USB.
Essais avec platformIO et aduino 2.01.

Arduino 2.0.1
Après avoir programmé le micro,L'IDE me dit de sélectionner un port pour le moniteur.
Je n'ai pas vu de moyen de donner cette information au moniteur.

PlatformIO :
Le seul renseignement que j'ai trouvé, c'est qu'à l'aide de l'utilitaire "menuconfig" il faut ajouter le paramètre suivant :
CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG

Petit souci : ne trouvant pas de menuconfig j'ai fait des recherches sur ce menuconfig de pio et j'ai trouvé qu'il n'est pas disponible avec le framework arduino mais seulement avec ESP32-idf.

Je n'ai pas vraiment envie de bouffer deux IO pour connecter un adaptateur externe UART/USB, même si à priori, je n'en aurais besoin que pour la mise au point.

Quelqu'un aurait-il déjà été confronté à ce problème ?
Du peu que j'en ai vu la carte a l'air bien avec une documentation en net progrès.

D'avance merci.

Est-ce-que c' est seulement si tu utilises le WIFI ?
https://github.com/espressif/arduino-esp32/issues/6264

Bonsoir @68tjs

Avec l'option "USB CDC On Boot' activée, j'utilise Serial.print() sans difficulté comme d'habitude.

(testé avec succès avec IDE 1.8.19 et IDE2.01, pas encore avec PlatformIO , je ne sais donc pas comment on y active l'USB série au démarrage. J'évite PIO pour les composants récents, il faut laisser le temps pour la prise en charge de leurs particularités)

La plupart du temps ma carte est sur /dev/ttyACM0.... parfois elle déménage sur /dev/ttyACM1 suité à uje manipulation superfleu de BP

Pas besoin de manipuler de BP pour flasher :wink:, le déclenchement automatique du bootloader est pris en charge par la liaison série sur USB natif

@ZX80 j'ai l'impression, avec les quelques codes testés (scan, envoi de données vers ThingSpeak...) que les problèmes mentionnés en février 2021 sont maintenant résolus

(la version 1 de cette carte avec une simple DEL sur GPIO 7, est bradée en ce moment)

@ZX80
Je n'en suis pas encore à utiliser le WiFI.
J'en suis à afficher les infos de la puce ESP : méfiance j'aime bien vérifier que quand on dit qu'il y a un ESP32-C3 FH4 que c'est bien un ESP32-C3 FH4.

@al1fch

J'avais cette option activée.

-> Je refais un essai suite à ta réponse, j'avais bien l'option activée et honte à moi :hot_face: ou IDE facétieuse :rage:, cela fonctionne, aujourd'hui.

Par contre en sélectionant LOLIN C3 Mini
capture_2022_11_13_21_22_41

Quand je regarde le menu Outils->port
je lis : /dev/ttyACM0(DFRobot Beetle ESP32-C3)
Bon, c'est une lolin/Wemos mais si cela fonctionne ....

Je n'ai pas la solution avec platformIO, les capacités de l'autocompletion de platformIO/vscode sont quand même laaaaargement au dessus de celle d'arduino V2.

La plupart du temps quand cela m'arrive, c'est quand je déconnecte et reconnecte trop rapidement.
Le système Linux n'a pas le temps de libérer ACM0 et donc attribue le suivant ACM1.
Si j'attends quelques secondes de plus avant de reconnecter, je retrouve ACM0.

Rectification :
Avec l'IDE arduino V2 (ou l'ESP32-C3, ou les deux) c'est le bordel.

  1. maintenant pour le port cela m'indique :
    /dev/ttyACM0 (ESP32 S3 CAM LCD)

  2. Si je fais une RAz (reset) pour relancer le programme l'IDE perds le port : il faut le resélectioner manuellement.

Suite des tests :

  • aucun problèmes (rencontrés à ce jour) pour faire des sorties à partir de loop()
  • dans setup() il faut (sur l'exemplaire que j'ai) placer un délai de 40 ms entre la ligne Serial.begin et le premier ordre Serial.print.
    Le délai placé avant Serial.begin n'a aucune action, c'est bien entre Serial.begin et le premier Serial.print qu'il doit être.

Cela me rappelle le RP2040 pico que j'ai testé cet été.
Il y a probablement une explication technique (comme le temps nécessaire à la libération ou au retournement de la liaison USB/UART).

Placer un délai dans le setup n'est pas pénalisant, mais il faut le savoir.

Les info de la puce que j'ai obtenu :

ESP32 modèle puce = ESP32-C3 Rev 3
Nombre de cœurs 1 cœur(s)
Identification puce ID: 2299768

J'ai deux cartes info de la deuxième.
Identification puce ID: 2299768
Même identificateur, signification ?

La fonction qui fait le travail :

void identification_chip()
{
    uint32_t chipId = 0;
    for(int i=0; i<17; i=i+8) 
    { chipId |= ((ESP.getEfuseMac() >> (40 - i)) & 0xff) << i;}
    Serial.printf("ESP32 modèle puce = %s Rev %d\n", ESP.getChipModel(), ESP.getChipRevision());
	  Serial.printf("Nombre de cœurs %d cœur(s)\n", ESP.getChipCores());
    Serial.print("Identification puce  ID: "); Serial.println(chipId);
}

Bonjour @68tjs

4 cartes comportant un ESP32-C3 testées ce matin avec le programme GetChipID donné en exemple
(3 LILYGO avec un CH340 , 1 LOLIN en USB natif)

4 identifiants différents constatés.

Je me suis inscrit sur le forum https://community.platformio.org.
J'ai obtenu une réponse claire et rapide.

C'est du au choix fait par Wemos-Lolin pour la configuration de la carte.

La solution :
Ajouter dans platformio.ini la ligne :
board_flags = ARDUINO_USB_CDC_ON_BOOT=1

Mon environnement est maintenant le suivant :

[env:lolin_c3_mini]
platform = espressif32
board = lolin_c3_mini
framework = arduino
monitor_speed = 115200
board_flags = ARDUINO_USB_CDC_ON_BOOT=1

PS :
Quand je fais un reset :

  • avec arduino V2 il faut reconfigurer manuellement le port USB
  • avec platformio la reconfiguration est automatique.

PS 2
J'ai refait le test d'identification…..et.....je m'étais mélangé les pinceaux.
Carte 1 id = 2299768
Carte 2 id = 2215112

Bonsoir

Je me suis inscrit sur le forum https://community.platformio.org.
J'ai obtenu une réponse claire et rapide.
C'est du au choix fait par Wemos-Lolin pour la configuration de la carte.
Ajouter dans platformio.ini la ligne :
board_flags = ARDUINO_USB_CDC_ON_BOOT=1

Inutile chez moi , j'ai été surpris de voir que ça fonctionne 'out of the box' sans cette ligne de configuration ajoutée dans platformio.ini, effet d'une mise à jour ?
mon fichier platformio.ini est actuellement minimal !

[env:lolin_c3_mini]
platform = espressif32
board = lolin_c3_mini
framework = arduino

J'ai remarqué la présence de la ligne USB_CDC_ON_BOOT=1 dans le fichier .json de configuration de cette carte ainsi que la ligne ARDUINO_USB_MODE=1

{
  "build": {
    "arduino": {
      "ldscript": "esp32c3_out.ld"
    },
    "core": "esp32",
    "extra_flags": [
      "-DARDUINO_LOLIN_C3_MINI",
      "-DARDUINO_USB_MODE=1",
      "-DARDUINO_USB_CDC_ON_BOOT=1"
    ],
    "f_cpu": "160000000L",
    "f_flash": "80000000L",
    "flash_mode": "qio",
    "hwids": [
      [
        "0X303A",
        "0x1001"
      ]
    ],
    "mcu": "esp32c3",
    "variant": "lolin_c3_mini"
  },
  "connectivity": [
    "wifi"
  ],
  "debug": {
    "openocd_target": "esp32c3.cfg"
  },
  "frameworks": [
    "arduino",
    "espidf"
  ],
  "name": "WEMOS LOLIN C3 Mini",
  "upload": {
    "flash_size": "4MB",
    "maximum_ram_size": 327680,
    "maximum_size": 4194304,
    "require_upload_port": true,
    "speed": 460800
  },
  "url": "https://www.wemos.cc/en/latest/c3/c3_mini.html",
  "vendor": "WEMOS"
}

Peut-être une explication.
Je n'ai pas tout saisi mais dans un échange sur https://community.platformio.org j'ai cru comprendre qu'un interlocuteur a demandé le retrait d'une configuration par defaut qui l'empêchait de faire ce qu'il voulait.

Si c'est la raison ç'eu été mieux si cela avait été répercuté dans la documentation

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.