Erreur installation espressif32 + moniteur série lolin s2 mini platformIO

Bonjour,
Je suis en ce moment sur un petit projet incluant un ESP32 "WEMOS LOLIN S2 MINI". Pour ce faire ne voulant pas utiliser l'IDE Arduino mais platformIO il me faut installer la plateforme nommée espressif32

Normalement en créant un fichier platformio.ini dans mon projet et en y enregistrant ceci

[env:lolin_s2_mini]
platform = espressif32
board = lolin_s2_mini

ça installe automatiquement la plateforme. Sauf que chez moi sur mon Linux Mint 22.1 avec platformIO installé en tant qu'extension vscode j'ai une erreur qui se répète indéfiniment, que voici :

Resolving lolin_s2_mini dependencies...
Tool Manager: Installing platformio/framework-arduinoespressif32 @ ~3.20017.0
Tool Manager: Error: Please read https://bit.ly/package-manager-ioerror
Tool Manager: Warning! Package Mirror: HTTPSConnectionPool(host='eu2.contabostorage.com', port=443): Max retries exceeded with url: /c0a5502915964bc09d2607baa2984f98:pioregmirroreu/tools/7d/27/65c8307ca9af8e7f653da8375459ebf0566a70a79e8dc3fe8134897ba296/framework-arduinoespressif32-3.20017.241212+sha.dcc1105b.tar.gz (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0x7ad82594a8a0>: Failed to resolve 'eu2.contabostorage.com' ([Errno -2] Name or service not known)"))
Tool Manager: Looking for another mirror...
Tool Manager: Error: Please read https://bit.ly/package-manager-ioerror
Tool Manager: Warning! Package Mirror: HTTPSConnectionPool(host='eu2.contabostorage.com', port=443): Max retries exceeded with url: /c0a5502915964bc09d2607baa2984f98:pioregmirroreu/tools/7d/27/65c8307ca9af8e7f653da8375459ebf0566a70a79e8dc3fe8134897ba296/framework-arduinoespressif32-3.20017.241212+sha.dcc1105b.tar.gz (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0x7ad825649520>: Failed to resolve 'eu2.contabostorage.com' ([Errno -2] Name or service not known)"))
Tool Manager: Looking for another mirror...

Je suis allé à l'adresse indiquée (PlatformIO IDE for VSCode — PlatformIO latest documentation) mais je n'y ai pas trouvé de solution (je suis sûrement stupide ça dois être juste sous mon nez :woozy_face:)

J'ai également essayé d'installer la plateforme depuis l'interface platformIO-home mais là aussi j'ai droit à cette erreur...

Avez-vous une idée de ce qui se passe ? Dites moi s'il vous manque des infos!
Cordialement,
Pandaroux007

Bonjour,
Je sais juste qu'il y a trois façons de faire
Utiliser vscode et esp idf: idéal si tu sais programmer en C éventuellement en C++ car tu utilises directement les bibliothèques espressif
Et deux autres méthodes et je pense que @68tjs est beaucoup plus qualifié que moi pour t'en parler c'est platformIO sur VSCode soit en IDF espressif soit en arduino.
Perso je ne vois vraiment aucun intérêt à utiliser Arduino si on sait programmer en C mais ce n'est un avis perso.

Je n'ai jamais créé ce fichier, c'est platformIO qui s'en charge

Le plus simple et qui fonctionne bien :

  1. tu crées un nouveau projet,
  2. tu choisis une carte. La correspondance absolue n'est pas obligatoire.
    Exemple si tu choisis la super-mini carte ESP32-C3, tu ne l'a trouveras pas dans la liste, il suffit de prendre une ESP32-C3 devkit et ca roule, PIO fait le nécessaire.
    L'important est que les pins essentielles comme Rx/Tx, I2C, SPI soient bien identifiées ainsi que la del.

A partir de maintenant PIO a créé le fichier platformio.ini

  1. tu peux éditer le fichier platformio.ini
  • tu y spécifies le débit du "moniteur série"
  • tu y spécifies des options particulières a ta carte comme par exemple l'utilisation de l'USB natif du microcontroleur.

Cas des bibliothèques.
Par défaut une bibliothèque est affectée a un seul projet. Je ne connais pas le moyen d'avoir une bibliothèque globale à tous les projets, il parait que c'est possible mais je trouve que le choix par défaut est le meilleur.

Tu choisi une bibliothèque dans une liste qui est plus fournie que celle de l'IDE Arduino.
Tu l'affectes à un projet précis, elle est automatiquement chargée dans le répertoire du projet.
PIO modifie automatiquement le fichier platformio.ini.

Conseil :
Laisses faire platformIO, regarde bien ce qu'il fait pour pouvoir le faire manuellement une fois le principe compris.

Par exemple dans un nouveau projet pour utiliser une bibliothèque déjà utilisée dans un autre projet il suffit de faire un copier coller de quelques ligne du platformio.ini du "vieux" projet et de les copier dans le nouveau. A la première compilation les fichiers de la bibliothèque seront automatiquement chargés.

Bonjour @68tjs (et @le_viking :slight_smile:)

Moi non plus :slight_smile: C'est assez compliqué de créer un projet platformIO manuellement de toutes façon, parce qu'il y a toutes les inclusions à faire, la configuration d'Intellisense, de la compilation, etc... Donc je laisse moi aussi le soin à platformIO de la faire :wink:

Merci pour vos explications détaillées en tout cas! La plupart des éléments que vous avez cité je connais, par contre ça

non, je vais essayer :slight_smile:


Mon cas est un peu particulier, vu que c'est une plateforme et non une bibliothèque que je souhaite installer... Ma carte ESP32-S2 MINI est assez particulière (elle a un format de wemos d1 mini avec doubles rangées de pins), donc je ne sais pas si c'est fiable d'utiliser une autre carte... Quoique le microcontrôleur dessus est toujours le même, ça peut marcher... je vais tenter et je fais un retour ici.

Cependant j'ai une question... Si dans le gestionnaire de carte par défaut on trouve des ESP32, à quoi ça sert d'installer espressif32 ? Et pourquoi certaines cartes, dont la mienne, ne font pas partie de celles installées par défaut, il faut installer espressif32 pour l'utiliser ?

Cordialement,
Pandaroux007

EDIT : Fichu clavier, le message est parti tout seul... Désolé!

Ce qui est étonnant c'est que malgré les messages d'erreurs (je ne sais toujours pas d'où ils proviennent), la plateforme semble avoir été installée :

Pourtant la compilation ne passe pas, il tente encore d'installer la plateforme et ne change pas le dossier de la carte dans le .pio/libdeps!

(Désolé ça fait beaucoup d'image mais c'est compliqué de se représenter autrement, avec le texte je ne peux montrer que les erreurs...)
Cordialement,
Pandaroux007

Problème de gros sous.

PIO met gratuitement son IDE à disposition, PIO ne tire aucun revenus de la vente des microcontrôleur ou des cartes.
PIO tire ses revenus dans les contrats d'assistance.

PIO trouve que c'est à Espressif et/ou au vendeur de cartes utilisant des micro Espressif de faire le travail d'adaptation des cartes à PIO.
Tu ne trouves grosso-modo que les cartes Espressif, AI-tinker et Wemos

C'est aussi pour cela que le framework Arduino/Espressif est en version 3.x avec l'IDE Arduino (Arduino vend des cartes avec des micros Espressif) et en version 2.x avec l'IDE PIO parce qu'Espressif et les vendeurs de cartes ne veulent pas faire le travail pour PIO.

Il existe un fork qui est un basé sur la 3.x, mais sur mon installation il est entré en conflit avec la version officielle plateformio.
C'est soit l'un soit l'autre dans vscode.

Oui, parce qu'Espressif reporte dans le core 3.x , et l'a fait pour les versions antérieures, les fichiers de définition que lui font parvenir... ou pas... les concepteurs de la myriade de cartes utilsant l'uen ou l'utre version d'ESP32-x

Optimiste , Je suppose qu'Espressif et PlatformIO finiront pas trouver un arrangement pour ce qui est du travail d'adaptation des core 3.x à PlarformIO

Il me semble , sans en être certain, qu'ESpressif s'est chargé de faire un travail d'adaptation de son framework IDF pour les utilisateurs de PlatformIO

Le bon sens finirait-il pas gagner ?
Cela semble assez logique que ce soit celui qui gagne de l'argent avec la vente des puces qui paye l'adaptation plutôt que celui qui fourni gratuitement un IDE.

PlateformIO ne refusait pas de faire le travail, il demandait un dédommagement financier.

Je répondais à @pandaroux007 qui ne trouvait pas SA carte dans la liste à la Prévert.
Je ne répondait pas encore sur le core 2 ou le core 3.
C'est au concepteur/vendeur de carte de fournir le fichier correspondant a sa carte.

D'un autre coté, vu l'abondance de cartes quasi identiques ce n'est pas plus mal d'en limiter la liste.
Après tout ce qui change le plus souvent d'une carte à l'autre c'est le numéro du gpio qui est connecté à la DEL :smiley:

Bonjour,
Merci pour vos réponses! :grin:
Je ne savais pas tout ça, je me coucherai moins bête ce soir :wink:

En faite vu que vous m'avez dis que je pouvais utiliser une carte nativement dans la liste de platformIO (donc sur la plateforme AtmelAVR ?) avec l'ESP32-S2 je me pose une question... Quand on installe espressif32, qu'installe-t-on exactement ? À quoi sert cette plateforme ?

Cordialement,
Pandaroux007

On installe un "truc" qui est basé sur ESP32-IDF, qui est le vrai core Espressif.
Ce truc est adapté aux fonctions Wiring, forkées par Arduino.
Ce truc contient tout ESP32-IDF, plus les fonctions wiring/Arduino dont le code est adapté aux micro ESP32. On peut donc utiliser toutes les fonctions IDF, mais AMHA c'est moins simple que si on passe par le "truc"

Mon commentaire est très superficiel, j'ai un peu plus de doc mais je ne suis pas chez moi actuellement, et @al1fch en connaît bien plus que moi sur le sujet, je le laisse rectifier et compléter.

Bonsoir @68tjs , je ne vois grand chose à dire de plus !

-je ne suis pas certain que la 'couche' Arduino' donne accès, directement, à toutes les fonctions de l'IDF

-avec l'IDF on a, avant compilation, accès à un écran permettant de définir des paramètres, la 'couche' Arduino utilise des bibliothèque précompilées donc avec un paramétrage prédéfini

Bonsoir et encore merci pour vos réponses!
J'ai appris plein de choses grâce à vous, notamment sur ESP32-IDF, etc... Mais donc si je comprends bien, le fait que je n'arrive pas à installer la plateforme espressif32 sur platformIO sur mon Linux n'est pas un problème car je dois installer le vrai core Espressif ?

Je suis un peu perdu :woozy_face:
Cordialement,
Pandaroux007

je suis incapable de conseiller quoi que ce soit.
Je n'ai jamais utilisé l'IDF
J'utilise très rarement PlatformIO , la dernière fois le core Arduino était en core en version 2.x

Pas de souci :slight_smile:


Bon je me confonds en excuses... Je ne sais pas par quel miracle ça fonctionne, j'ai seulement été sur la page d'accueil de platformIO, puis dans la liste de projet récent j'ai cliqué sur open, et là magiquement le projet a été correctement configuré et tout fonctionne... Je précise que juste avant j'avais tenté de créer un nouveau projet et que dans la liste de carte quand on recherchait "mini" les cartes d'Espressif 32 étaient disponibles... C'est à n'y rien comprendre, m'enfin ça fonctionne et j'en suis bien content!

Malheureusement la méthode que je viens de décrire est incomplète, c'est clairement "tombé en marche" sans que je comprenne trop pourquoi, donc je ne sais pas si ça aidera quelqu'un avec le même problème qui passerai par là :woozy_face:

Merci à tous pour votre aide en tout cas!
Amitiés,
Pandaroux007

@pandaroux007
Envisage la solution que PIO a détecté tout seul une installation incomplète et a fait ce qu'il fallait pour que tout baigne.

@al1fch @pandaroux007
Je n'ai pas l'installation sous les yeux, mais dans le "core"_arduino qu'installe platformIO il y a les fichiers h et c/cpp d'ESP32-IDF.
Une fois j'ai réussi a "utiliser" de l'IDF pur à partir du "core"_arduino.

C'était pour me dire que j'y arriverai, une fois que j'y suis arrivé je n'ai jamais plus recommencer.

Si on veut faire du vrai ESP32-IDF j'ai compris qu'il faut savoir utiliser FreeRtos, la marche est haute pour mes vieux os ou plutôt mes vieux boyaux de la tête.

Apparemment FreeRtos n'aurait plus en vent en poupe, ce serait Zephir !

idem plusieurs fois par exemple pour des fonctionnalités qui n'étaient pas encore gérées 'à la mode Arduino' par le 'core de l'époque et le sont maintenant.

Je ne suis pas certain que les .h et .c fournis dans les cores Arduino pour ESP32 100% des fonctionnalités d'IDF soient accessibles,
La mémoire me fait défaut pour citer des choses qui, avec le core Arduino, nécessiteraient une recompilation en jouant avec le menu de paramétrage d'IDF

Bonjour,
La bibliothèque espressif ainsi que les dépendances signées espressif ne peuvent être utilisées qu'avec ESP IDF et je ne vois pas quel est l'intérêt d'utiliser le framework Arduino que ce soit avec ou sans platformIO. Il y a forcément un train de retard puisqu' Espressif attend une version stable pour faire le portage. Arduino ESP32 v3.0 est basée sur ESP-IDF 5.1 alors que la version stable d'ESP-IDF est 5.3.2.
Il faut au moins admettre que la démarche n'est pas simple prendre VSCode y inclure platformIO puis le framework Arduino puis la library ArduinoESP au lieu de prendre VSCode y inclure ESP-IDF

Il me semble bien avoir compris, rectifie si je me trompe, qu'avec ESP-IDF il fallait gérer FreeRtos.

Je m'en sens complètement incapable, et je ne pense pas être un cas isolé. J'ai lu sur ce forum des commentaires de pro ou d'ancien pro qui trouvaient bien pratique justement de ne pas avoir à gérer FreeRtos.

Alors certes ta méthode est certainement la meilleure dans le cadre des ESP32, mais pas pour tout le monde et tout le monde n'utilise pas que des ESP32.

Quand on installe vscode il arrive vide, il faut lui donner les extensions dont il a besoin.
Je constate que l'extension "platformIO" a installé automatiquement 5 extensions en relation avec le C/C++pour développer en C et C++.
De toute façon, avec ESP-IDF, ces 5 extensions auraient dû être installées.
Un clic pour tout installer d'un coup ce n'est pas si mal.

Pour le reste, à moins que je n'aie oublié quelque chose, c'est identique quelque soit l'IDE.
Pour chaque nouveau microcontrôleur, avr, SamD21, ES8266, ESP32, STM32, etc, il faut charger une unique fois "la bibliothèque adaptée au microcontroleur".

Sans parler de FreeRtOS, si tu utilises ESP-IDF seul, tu as accès à l'ensemble des librairies d'Arduino ?

Re bonjour...
@le_viking

Personnellement j'utilise platformIO pour tout ce qui touche à l'Arduino, maintenant je (vais) faire aussi avec ESP32 et (peut-être) ESP8266 si besoin mais j'ai besoin de pouvoir tout utiliser depuis le même outil.


Je reviens vers vous pour une dernière question, qui va certainement vous paraître très bête, je m'en excuse par avance :woozy_face:

Pour les cartes à base d'ESP32 que je vois dans les tutos, au format "classique" si je puis dire, il y a un bouton boot sur lequel il faut appuyer lorsque l'IDE Arduino affiche connecting.... pour téléverser un programme.

Sur le wemos lolin s2 mini j'ai un bouton RST et un autre marqué "0", j'imagine que c'est le bouton boot. Cependant je n'arrive pas à téléverser depuis platformIO, je mets le message d'erreur ci-dessous. Pour expliquer rapidement ma manip (qui n'est certainement pas la bonne puisque ça ne fonctionne pas :woozy_face:), lorsque je vois Looking for upload port..., j'appuie sur boot. L'ESP doit être détecté puisque le téléversement continu. Cependant que je maintienne appuyé ou que je relâche, j'ai toujours un problème de port qui disparaît :

Checking size .pio/build/lolin_s2_mini/firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [=         ]   8.5% (used 27692 bytes from 327680 bytes)
Flash: [==        ]  20.5% (used 269002 bytes from 1310720 bytes)
Configuring upload protocol...
AVAILABLE: cmsis-dap, esp-bridge, esp-prog, espota, esptool, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa
CURRENT: upload_protocol = esptool
Looking for upload port...

Warning! Please install `99-platformio-udev.rules`. 
More details: https://docs.platformio.org/en/latest/core/installation/udev-rules.html

Auto-detected: /dev/ttyS31
Forcing reset using 1200bps open/close on port /dev/ttyS31
Waiting for the new upload port...
Uploading .pio/build/lolin_s2_mini/firmware.bin
esptool.py v4.5.1
Serial port /dev/ttyS31

A fatal error occurred: Could not open /dev/ttyS31, the port doesn't exist

J'ai cherché mais je n'ai pas trouvé de manip pour le s2 mini, tout est pour les ESP "standard"... Désolé de vous embêter avec ça encore une fois :woozy_face:

Cordialement,
Pandaroux007