Programmer l’ESP32 directement depuis l’Arduino IDE
(Mis à jour le 05/01/2023)
Ce tutoriel va vous guider dans l’installation des outils nécessaires à la programmation de l’ESP32 via l’Arduino IDE. Vous écrirez à l’issue votre premier programme pour l’ESP32 via du code Arduino.
Avant d’installer les outils spécifiques à l’ESP32, il faut d’abord avoir le logiciel Arduino IDE.
Note
Si vous avez déjà Arduino IDE d’installé, vérifiez qu’il s’agit d’une version récente (> 1.8)
Installation du logiciel Arduino IDE
Pour installer Arduino IDE sur Windows , suivez les étapes suivantes :
Télécharger la dernière version du logiciel sur le site d’Arduino, en cliquant sur le premier lien « Windows Installer, for Windows XP and up »
-
Lancer le fichier d’installation
.exe
, puis remplissez les cases suivantes : -
Dans la fenêtre suivante, laisser l’endroit de l’installation par défaut
-
Ensuite autoriser l’installation des drivers :
-
L’installation est maintenant terminée. Une fenêtre de ce type devrait apparaître :
Avertissement
Il se peut qu’une fenêtre du pare-feu Windows vous demande d’autoriser l’application d’accéder à Internet. Accepter l’autorisation pour pouvoir télécharger des librairies, des mises à jour, des cartes et les outils pour ESP32 .
Vous pouvez pour l’instant programmer uniquement des cartes Arduino . C’est pour cela que nous allons installer les outils spécifiques de l’ESP32 pour pouvoir l’utiliser au sein de l’Arduino IDE.
Ajouter le support des ESP32 dans l’Arduino IDE
Maintenant que l’Arduino IDE est prêt, il faut installer les outils de développement spécifiques aux cartes ESP32 (Ils sont différents de ceux de l’ESP8266). Pour installer les outils nécessaires, il faut :
-
Aller dans Fichier → Préférences
Cliquer sur URL de gestionnaires de cartes supplémentaires et ajouter l’URL :
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Avertissement
Il se peut qu’il y ait déjà des urls ajoutées si vous avez déjà installé des cartes supplémentaires (par exemple les ESP8266). Si c’est le cas, ne les supprimez pas.
Note
N’oubliez pas de cliquer sur le bouton OK
pour sauvegarder les paramètres
-
Ensuite il faut aller dans le gestionnaire de cartes : Outils → Type de carte → Gestionnaire de carte
-
Descendre tout en bas jusqu’à trouver esp32, et cliquer sur installer . Une fois que le téléchargement et l’installation sont terminés, les outils sont prêts à être utilisés.
Note
La version la plus récente (à l’écriture de ce tutoriel) est la
2.0.4
: elle intègre les cartes ESP32 classiques, mais également les nouveaux modèles : ESP32S2, ESP32C3 et ESP32S3. -
Les cartes ESP32 ont été rajoutées dans le gestionnaire de carte :
-
Si vous avez la carte uPesy ESP32 Wroom DevKit ou la version “low power”, vous choisirez comme type de carte
uPesy ESP32 Wroom DevKit
située à la fin de la liste. Par contre, pour pouvoir utiliser la RAM supplémentaire de la carte uPesy ESP32 Wrover Devkit , il faudra prendre lauPesy ESP32 Wrover DevKit
. Si vous avez une carte ESP32 générique, vous pouvez choisir
ESP32 Dev Module
comme type de carte.L’installation est maintenant terminée, vous pouvez maintenant programmer votre carte ESP32 comme une carte Arduino classique. Des exemples sont disponibles entre autres pour le Wi-Fi et le Bluetooth dans Fichier → Exemples .
Téléverser son premier programme sur l’ESP32
Maintenant que tous les outils sont installés, on va pouvoir créer notre premier programme et l’envoyer sur la carte ESP32. Mais avant de faire notre premier programme, il faut s’assurer que l’on puisse dialoguer avec la carte.
Détection de la carte
Note
Normalement, les cartes ESP32 sont automatiquement détectées, il n’y a donc pas besoin d’installer de drivers supplémentaires.
Branchez votre carte ESP32 à votre ordinateur via USB (avec un câble USB Micro-B). Sur Windows, lorsque l’on branche la carte, on doit entendre le même bruit qu’une clé USB et par contre c’est normal de ne pas l’apercevoir dans l’explorateur de fichiers. La LED rouge s’allume dès la mise sous tension de la carte ESP32.
Avertissement
Il faut s’assurer de prendre un câble USB qui transmet les données et non pas un câble USB qui permet uniquement de charger une batterie d’un appareil.
Une fois la carte branchée, vous devriez voir sur Arduino IDE un numéro COM (ici COM8).
Pour recevoir des messages de la carte, il faut ouvrir le moniteur série.
Le paramètre que l’on peut modifier dans le moniteur série est la vitesse de transmission des données . En général, la vitesse classique du port série avec une carte Arduino est de 9600 bauds (bit/s). Mais avec l’ESP32, la vitesse communément utilisée est 115200 bauds . La raison est que l’ESP32 envoie à cette vitesse des messages de debug lors de son démarrage.
Note
La vitesse du port série peut être différente de 115200 bauds mais dans ce cas, les messages lors du boot de l’ESP32 ne seront pas visibles et apparaîtront avec des caractères incompréhensibles.
Une fois que la vitesse est changée, vous pouvez dialoguer avec l’ESP32.
Toutes les cartes ESP32 d’uPesy arrivent déjà flashées avec un programme qui fait clignoter la led bleue présente sur la carte et qui détecte les box Wi-Fi des alentours. Avec la carte ESP32 WROOM DevKit, on obtient alors dans le moniteur série :
Avertissement
Pour les Linuxiens , il se peut que tous les paquets pythons nécessaires ne soient pas installés par défaut (Par exemple sur Ubuntu 20.04). Si vous avez cette erreur : exec: « python »: executable file not found in $PATH
, il faut installer le paquet python-is-python3
pour faire un lien symbolique entre la commande python
et python3
.
sudo apt install python-is-python3
Ensuite, si vous avez l’erreur ModuleNotFoundError: No module named "serial"
il faut installer le paquet pyserial
avec pip3
. Si vous lancez l’Arduino IDE en root
, pensez à rajouter sudo
pour la commande avec pip3
.
sudo apt install python3-pip
pip3 install pyserial
Enfin si vous ne pouvez pas uploader de code sur l’esp32 avec une erreur de ce type : avrdude: ser_open(): can’t open device « /dev/ttyUSB0 »: Permission denied
, il faut ajouter les permissions en lecture/écriture avec la commande chmod
:
sudo chmod a+rw /dev/ttyUSB0
Votre premier programme
Voici un exemple très simple qui permet de faire clignoter la led bleue située sur le pin GPIO2 de la carte ESP32 Wroom DevKit.
void setup() {
Serial.begin(115200);
Serial.println("Mon premier programme");
pinMode(2,OUTPUT);
}
void loop() {
digitalWrite(2, HIGH); //On allume la led bleue
delay(500); //On attend pendant 500 ms
digitalWrite(2, LOW); //On eteinds la led bleue
delay(500); //On attend pendant 500 ms
}
Astuce
Le code peut directement être copié dans le presse-papiers en cliquant sur l’icône en haut à droite.
Une fois que vous avez tapé ou copié le code d’exemple et enregistré le code, il va falloir compiler le programme.
La première compilation est assez longue car tous les fichiers sources pour l’ESP32, même ceux qui ne sont pas directement utilisés par le programme sont compilés. Heureusement seuls les fichiers modifiés seront compilés à la prochaine compilation.
Pour cela, il suffit d’appuyer sur le bouton “Vérifier”. Il faudra ensuite cliquer sur la flèche à côté pour téléverser le programme sur l’ESP32.
Astuce
Pour compiler et envoyer tout de suite après le programme, cliquer directement sur la flèche.
Voici les lignes dans la console qui correspond au téléversement du programme sur un ESP32 :
esptool.py v2.6
Serial port COM8
Connecting.....
Chip is ESP32D0WDQ5 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
MAC: 4c:11:ae:68:09:44
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
Auto-detected Flash size: 8MB
Compressed 8192 bytes to 47...
Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.0 seconds (effective 4096.0 kbit/s)...
Hash of data verified.
Flash params set to 0x023f
Compressed 17392 bytes to 11185...
Writing at 0x00001000... (100 %)
Wrote 17392 bytes (11185 compressed) at 0x00001000 in 0.2 seconds (effective 804.3 kbit/s)...
Hash of data verified.
Compressed 261024 bytes to 123037...
Writing at 0x00010000... (12 %)
Writing at 0x00014000... (25 %)
Writing at 0x00018000... (37 %)
Writing at 0x0001c000... (50 %)
Writing at 0x00020000... (62 %)
Writing at 0x00024000... (75 %)
Writing at 0x00028000... (87 %)
Writing at 0x0002c000... (100 %)
Wrote 261024 bytes (123037 compressed) at 0x00010000 in 2.4 seconds (effective 866.8 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 128...
Writing at 0x00008000... (100 %)
Wrote 3072 bytes (128 compressed) at 0x00008000 in 0.0 seconds (effective 4096.0 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
Une fois que le téléversement est fini, vous devriez voir la LED bleue clignoter plus vite qu’avant (sur les cartes uPesy ESP32)
Note
Une fois que le téléversement est terminé, l’ESP32 exécute directement le programme. C’est donc normal de ne pas voir le message « Mon premier programme » quand vous allez dans le moniteur série. Contrairement à l’Arduino, l’ESP32 ne redémarre pas lorsque l’on appuie sur la loupe pour aller dans le moniteur série. (Dans Arduino IDE mais pas sur PlatformIO).
Donc, pour voir le message depuis le moniteur sur Arduino IDE, il faut soit :
Rajouter un délai de quelques secondes avec
delay()
avant l’exécution du codeAvoir le moniteur série ouvert avant la fin du téléversement
Appuyer sur le bouton « EN » sur la carte ESP32 pour faire un reset manuel.