Blog
ESP-IDF : SDK, compilation, vs Arduino
C’est quoi l’ESP32 IDF, comment l’installer, et comment monter un premier projet — ESP-IDF est le SDK C/C++ officiel d’Espressif, et il va plus loin que l’enveloppe Arduino. Des réponses courtes aux questions qu’on se pose une fois que le gestionnaire de cartes ne suffit plus.
C’est quoi l’ESP32 IDF ?
ESP-IDF (Espressif IoT Development Framework) est le SDK C/C++ officiel d’Espressif — la société qui fabrique la puce. Vous obtenez FreeRTOS, les pilotes matériels et le système de compilation idf.py au lieu de l’enveloppe sympathique d’Arduino. Ce n’est ni un langage ni un IDE ; c’est la chaîne d’outils à laquelle parle la documentation de la puce.
Comment installer l’ESP32 IDF ?
Sous Windows, l’IDE Espressif ou l’installeur esp-idf configure Python, Git et les chaînes d’outils en une seule passe. Sous Linux : git clone –recursive du dépôt, puis source install.sh et export.sh. Prévoyez 4-6 Go de disque et 10-20 minutes ; mon installation v5.3 sur un portable de 2022 a pris 14 minutes.
Comment mettre un projet dans l’ESP32 IDF ?
Un projet est un dossier : un répertoire main/ avec vos fichiers C plus un CMakeLists.txt au sommet. Copiez un des exemples dans examples/get-started, lancez idf.py set-target esp32s3 une fois, puis idf.py build. Le code style Arduino ne s’insère pas tel quel — ESP-IDF veut app_main(), pas setup() et loop(). La FAQ de démarrage couvre la voie Arduino si c’est d’où vous venez.
Comment exécuter boot.py sur un ESP32 ?
boot.py est le script de démarrage de MicroPython, pas un concept ESP-IDF. Flashez d’abord MicroPython (esptool.py write_flash 0x1000 micropython.bin), puis téléversez boot.py sur le système de fichiers et il s’exécutera à chaque démarrage. Vous attendiez boot.py sur ESP-IDF ? Mauvais firmware pour le travail.
ESP-IDF ou Arduino — lequel choisir ?
Les deux fonctionnent ; la réponse dépend de votre carte et de votre patience. Arduino est une enveloppe qui masque sdkconfig et le système de compilation. ESP-IDF vous donne le contrôle et correspond à la documentation officielle — qui est bonne, mais suppose une expérience du C. Pour tout ce qui combine sommeil profond et Wi-Fi, ou pour un produit, ESP-IDF est le pari plus sûr ; pour un prototype de loisir, Arduino y arrive plus vite.
C’est quoi app_main() et pourquoi ma compilation la veut-elle ?
Chaque projet ESP-IDF définit exactement une app_main() — le point d’entrée, sans séparation setup()/loop(). Créez une tâche FreeRTOS dedans et gardez-la vivante. Si votre compilation se termine par « undefined reference to app_main », c’est cette fonction qui manque.
C’est quoi sdkconfig, et dois-je le modifier ?
sdkconfig est la configuration générée de votre projet, régénérée à chaque compilation propre. Ne l’éditez pas à la main : idf.py menuconfig l’écrit pour vous. sdkconfig.defaults est le fichier à versionner. La FAQ sur l’intérieur de la puce explique comment la config se propage dans la compilation.
Que signifie « fatal error: driver/gpio.h: No such file or directory » ?
Une dépendance de composant manquante. L’en-tête existe dans le SDK — votre CMakeLists.txt ne le déclare juste pas dans REQUIRES. Une ligne suffit, et c’est l’erreur de compilation ESP-IDF que j’ai le plus aidé à débugger sur les forums. Je l’ai rencontrée sur mon propre premier projet à 2 h du matin ; le correctif a pris 20 secondes une fois la panique passée.
Comment régler le débit en bauds d’un ESP32 avec ESP-IDF ?
Lancez idf.py menuconfig → Serial flasher config → Default flash baud rate. C’est la réponse directe à « how to set baud rate of a ESP32 using ESP-IDF » : c’est la vitesse de flash, pas la vitesse UART de votre application. Le débit de votre application est un paramètre du pilote UART que vous réglez dans le code, séparément.
Puis-je exécuter du code Arduino dans ESP-IDF ?
Oui, les cores récents livrent Arduino comme composant optionnel — idf.py add-dependency espressif/arduino-esp32 l’ajoute. Ça marche la plupart du temps, mais mélanger les deux mondes devient vite déroutant : deux systèmes de configuration, deux API de minuteries. Choisissez-en un par projet. Débugger un projet mixte, c’est là que la FAQ débogage rend service.