Le développement et la mise au point de projets Arduino, ESP32, ESP8266 ou STM32 est un peu différent entre PlatformIO et l’IDE Arduino que l’on connait très bien. Dans cet article liste les principaux problèmes que l’on peut rencontrer ainsi que (quelques) solutions pour y remédier. Erreurs de compilation, problème d’installation des librairies, impossible de téléverser, menu PIO vide…
Vous connaissez d’autres problèmes avec PIO, n’hésitez pas à me signaler d’autres problèmes (et éventuellement la solution) dans les commentaires. Vous ferrez certainement des heureux !
Sommaire
- 1 Erreurs de compilation après migration d’un projet depuis l’IDE Arduino vers PlatformIO
- 2 platformio-ide upload not found, impossible de compiler ou téléverser (VSCode)
- 3 Problème d’installation d’une librairie
- 4 Quoi faire en cas d’échec de compilation ?
- 5 Impossible de téléverser
- 6 Impossible de téléverser sur un ESP01
- 7 Problème avec le moniteur série
- 8 La barre d’outils de PlatformIO est vide
- 9 Mises à jour
Erreurs de compilation après migration d’un projet depuis l’IDE Arduino vers PlatformIO
La compilation du code C++ est légèrement différente de celle réalisée par l’IDE Arduino.
Lorsqu’on migre du code depuis l’IDE Arduino vers un projet PlatformIO, on peut rencontrer des problèmes de compilation que l’on n’avait pas avant.
La fonction existe dans le code mais génère une erreur lors du build
Si vous migrez le code source du projet MQ-2
vous allez obtenir ce message d’erreur à la première compilation
Building in release mode
Compiling .pio/build/uno/src/main.cpp.o
src/main.cpp: In function 'int MQGetGasPercentage(float, int)':
src/main.cpp:131:49: error: 'MQGetPercentage' was not declared in this scope
return MQGetPercentage(rs_ro_ratio,LPGCurve);
^
src/main.cpp:133:48: error: 'MQGetPercentage' was not declared in this scope
return MQGetPercentage(rs_ro_ratio,COCurve);
^
src/main.cpp:135:51: error: 'MQGetPercentage' was not declared in this scope
return MQGetPercentage(rs_ro_ratio,SmokeCurve);
^
*** [.pio/build/uno/src/main.cpp.o] Error 1
============================== [FAILED] Took 1.16 seconds ==============================
On pourrait croire à une erreur dans le code mais en fait il n’en est rien. Le compilateur trouve une erreur car la méthode MQGetPercentage
est appelée dans le code avant qu’elle ne soit déclarée.
Deux solutions dans ce cas
- Conseillé déclarer la méthode au début du programme. Ici par exemple, il suffira d’ajouter en début de programme
int MQGetPercentage(float rs_ro_ratio, float *pcurve)
- Déconseillé déplacer la méthode au début du programme pour qu’elles soient trouvées par le compilateur
Fatal error… No such file or directory, il manque une librairie
Si vous obtenez cette erreur lors de la compilation du projet Arduino
fatal error: xxx.h: No such file or directory
C’est qu’une librairie n’est pas installée
Building in release mode
Compiling .pio/build/d1_mini_lite/src/main.cpp.o
Compiling .pio/build/d1_mini_lite/lib887/ESP8266WiFi/ESP8266WiFiAP.cpp.o
src/main.cpp:4:17: fatal error: DHT.h: No such file or directory
*************************************************************
* Looking for DHT.h dependency? Check our library registry!
*
* CLI > platformio lib search "header:DHT.h"
* Web > https://platformio.org/lib/search?query=header:DHT.h
*
*************************************************************
Pour corriger ce problème, il faut déclarer manuellement les librairies au niveau du fichier platformio.ini du projet.
Tout est expliqué en détail dans ce tutoriel
platformio-ide upload not found, impossible de compiler ou téléverser (VSCode)
L’erreur platformio-ide upload not found survient lorsqu’on lance un build (compilation) ou un upload (téléverser) alors que le plugin de PlatformIO est encore en cours de démarrage sur VSCode. L’erreur doit aussi se produire sur d’autres éditeurs.
Ce n’est pas vraiment une erreur. Il suffit juste d’attendre le démarrage complet du plugin PIO avant de pouvoir compiler et / ou téléverser le code Arduino.
Le processus de démarrage se déroule comme ceci
Les extensions sont activées (Activating extensions…)
Le plugin PlatformIO pour VSCode est lancé et vérifie automatiquement s’il existe une mise à jour (Checking PlatformIO Core installation…)
Enfin l’index IntelliSense qui permet l’auto-completion est reconstruit, c’est l’opération la plus longue. Bien évidemment, la durée de l’opération va dépendre de la puissance de votre ordinateur.
Problème d’installation d’une librairie
PlatformIO se charge d’installer lui même les librairies indiquées par l’option lib_deps dans le fichier de configuration platformio.ini du projet
Si vous obtenez ce message d’erreur
[API] ConnectionError: HTTPSConnectionPool(host='api.registry.platformio.org', port=443): Max retries exceeded with url...
ou celui-ci
platformio (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available."))
PIO n’arrive pas à se connecter aux serveurs et installer la (les) librairie(s).
C’est probablement à cause d’une erreur liée à une librairie du Core de PlatformIO qui n’arrive pas à (ré)intinialiser la connexion.
Solution il n’y a pas grand chose à faire dans ce cas. Le mieux est de tout simplement redémarrer l’ordinateur !
Quoi faire en cas d’échec de compilation ?
Contrairement à l’IDE Arduino, PlatformIO propose une option qui permet de supprimer les fichiers temporaires créés lors de la compilation du fichier binaire.
En cas de difficulté pour téléverser ou si vous rencontrez des erreurs de compilation (et que votre code source ne retourne pas d’erreur), il suffit de supprimer le dossier de travail de PlatformIO à l’aide de l’option Clean.
Tous les builds et les fichiers temporaires sont supprimés d’un clic de souris !
Impossible de téléverser
PlatformIO n’arrive pas à se connecter à la carte de développement pour téléverser le fichier binaire.
Looking for upload port...
Auto-detected: /dev/cu.usbserial-1420
Uploading .pio/build/esp12e/firmware.bin
esptool.py v2.8
Serial port /dev/cu.usbserial-1420
Connecting........_____....._____....._____....._____....._____....._____....._____
A fatal error occurred: Failed to connect to ESP8266: Timed out waiting for packet header
*** [upload] Error 2
============================= [FAILED] Took 27.38 seconds ===================
Voici une liste des causes les plus courants et quelques remèdes possibles
Cause possible | Remèdes à tester |
La carte n’est pas connectée | ✓ Vérifier que le connecteur (micro-USB par exemple) sur la carte de développement n’est pas défectueux. Il arrive (rarement) qu’il puisse être dessoudé.
✓ Si d’autres cartes de développement sont branchées à l’ordinateur, déconnectez toutes les cartes. ✓ Changer de port USB |
Le module n’est pas en mode booltload | ✓ Faire un reset
✓ Débrancher / rebrancher / recommencer l’upload ✓ Idem en changeant la câble USB ✓ Idem sur un autre port USB ✓ Effacer la mémoire flash ✓ Vérifier si la carte est détectée dans les devices ✓ Tester avec un autre module…si ça ne toujours pas après plusieurs tentatives, envisager de remplacer le module |
Impossible de téléverser sur un ESP01
A chaque fois que l’on souhaite téléverser un projet sur l’ESP01, il est nécessaire de mettre celui-ci en Flash Mode (ou mode Boot Load).
Pour cela, il faut réaliser ce montage (ou un équivalent) qui peut vite devenir fastidieux.
Plus de détail en lisant cet article.
Je vous conseille plutôt d’opter pour un programmateur dédié au module ESP01. Le module combine une alimentation 3V3 et un convertisseur UART (port série) USB pour la communication.
Problème avec le moniteur série
Vous rencontrez des problèmes de communications ou vous n’arrivez pas à téléverser votre projet Arduino.
Voici une liste des principales causes et quelques remèdes possibles.
Cause possible | Remèdes à tester |
La carte n’est pas connectée
L’ESP01 n’est pas en Flash Mode |
✓ Vérifier que le connecteur (micro-USB par exemple) sur la carte de développement n’est pas défectueux. Il arrive (rarement) qu’il puisse être dessoudé.
✓ Si d’autres cartes de développement sont branchées à l’ordinateur, déconnectez toutes les cartes. ✓ Changer de port USB |
|
|
Le port série renvoi des caractères incompréhensibles | ✓ Par défaut PlatformIO se connecte à 9600 bauds. Probablement que la vitesse spécifiée dans le programme est différente.
✓ Trouvez la commande Serial.begin(vitesse) pour trouver la vitesse ✓ Ajoutez l’option serial_speed = vitesse dans le fichier platformio.ini et téléverser de nouveau |
rl␀l�r␂$␒�n␌␌␌�␌l�␌b|��␂␇␒�r␒bl␌b␄�nn␂lnn␒b␌b␜p�$b␎lrlp�n� |
Mauvais affichage du Moniteur Série = mauvaise vitesse
Par défaut, le port série est configuré à 9600 bauds sur l’extension officielle. Jun Han a ajouté un paramètre permettant de définir la vitesse. Pour utiliser un vitesse différente, ouvrez le
Si vous utilisez le CLI de PlatformIO, ouvrez le Terminal et exécutez la commande suivante
pio device monitor -b 115200
Vous pouvez aussi spécifier la vitesse dans le fichier plaformio.ini à l’aide de l’option monitor_speed.
La barre d’outils de PlatformIO est vide
Si le menu Project Tasks de la barre d’outils de PlatformIO est vide
C’est que vous n’avez pas ouvert le projet dans le workspace de Visual Studio Code correctement. On a cette souvent cette erreur lorsqu’on ouvre un dossier contenant plusieurs projets.
Pour construire la liste des tâches (Project Tasks), PIO recherche un fichier platformio.ini à la racine du dossier. S’il n’en trouve pas, la barre d’outil reste vide même lorsqu’on ouvre un sous-dossier.
Deux solutions :
- Ouvrir chaque projet individuellement
- Créer un fichier platformio.ini à la racine du dossier pour faire croire à PIO que c’est un projet. Ensuite, à chaque fois qu’on ouvre un projets, la liste des tâches est actualisée pour tenir compte de la configuration.
On ajoute un fichier platformio.ini à la racine des projets | Le menu PIO est correctement construit |
Mises à jour
19/11/2020 Erreur platformio-ide upload not found
14/09/2020 Publication de l’article
Avez-vous aimé cet article ?
[Total: 0 Moyenne: 0]