ESP32
Description
L'ESP32 est un SoC de chez Espressif intégrant un processeur 32 bits et des fonctionnalités Bluetooth et Wifi.
Des modules existent et sont très bien adaptés pour la création de systèmes Iot, avec une consommation réduite par rapport à une Raspberry Pi.
Le développement est plus bas niveau mais il existe des SDK compatibles Arduino.
Programmation de l'ESP32
Il y a 2 méthodes de programmation des ESP32.
Soit en passant par un l'ESP-IDF de Espressif, soit en passant par la surcouche Arduino.
Dans les 2 cas les méthodes sont documentées.
Utilisation de ESP-IDF
L'installation se fait en suivant la documentation officielle. Il est possible de développer soit depuis un terminal et un éditeur de texte soit depuis un IDE comme VSCode.
Lancement de l'environnement depuis un terminal
L'utilisation depuis le terminal permet de vérifier si les outils sont bien installés et si la communication avec le module ESP32 se fait correctement.
Se rendre dans le dossier workspace de l'application
Lancer la commande permettant de lancer l'environnement : . /opt/esp/esp-idf/export.sh
Configurer le projet pour un ESP32 : idf.py set-target esp32
Entrer dans le menu de configuration des options : idf.py menuconfig
Développement sous VSCode
Il est possible d'utiliser VSCode afin de créer des applications ESP32.
Pour cela il faut l'extension officielle Espressif IDF. Il faut préalablement que le framework soit installé sur l'ordinateur de développement.
Il faut ensuite modifier les options dans les settings afin de définir le dossier dans lequel le framework est installé.
Firmware de l'ESP32
Il est possible de mettre le Firmware ESP-AT afin de communiquer avec l'ESP32 via une communication série et des commandes AT.
Equipements macro utilisant l'ESP32
Des projets existent avec intégration de Linux embarqués sur l'ESP32
Il existe un module caméra, ESP32-CAM qui peut être utilisé avec le Firmware TASMOTA. C'est idéal pour faire caméra de vidéo surveillance sur batterie avec un serveur web intégré.
Il est possible de le connecter à un système de domotique. (voir la vidéo des frères Poulain.
Le flasher se trouve à l'adresse sur le dépôt https://github.com/Jason2866/ESP_Flasher/releases
Partie développement C
Kconfig file
Si on souhaite rajouter des configurations spécifiques au projet, il est possible de créer un fichier ./main/Kconfig.projbuild.
Par exemple pour le clignotement de la LED, on peut ajouter :
menu "Project Specific Configuration" orsource "$IDF_PATH/examples/common_components/env_caps/$IDF_TARGET/Kconfig.env_caps" choice BLINK_LED prompt "Blink LED type" default BLINK_LED_GPIO if IDF_TARGET_ESP32 || !SOC_RMT_SUPPORTED default BLINK_LED_RMT help Defines the default peripheral for blink example config BLINK_LED_GPIO bool "GPIO" config BLINK_LED_RMT bool "RMT - Addressable LED" endchoice config BLINK_GPIO int "Blink GPIO number" range ENV_GPIO_RANGE_MIN ENV_GPIO_OUT_RANGE_MAX default 5 if IDF_TARGET_ESP32 default 18 if IDF_TARGET_ESP32S2 default 48 if IDF_TARGET_ESP32S3 default 8 help GPIO number (IOxx) to blink on and off or the RMT signal for the addressable LED. Some GPIOs are used for other purposes (flash connections, etc.) and cannot be used to blink. config BLINK_PERIOD int "Blink period in ms" range 10 3600000 default 1000 help Define the blinking period in milliseconds. endmenu
Ce menu sera accessible depuis la commande idf.py menuconfig
.
Afin de l'intégrer, il faut faire un idf.py fullclean
puis un idf.py build
Ajout de fichiers sources supplémentaires
Pour ajouter un fichier C au projet, il faut dans le ./main/CMakeList.txt rajouter la référence :
idf_component_register(SRCS "ifxproj1.c" "tempsensor.c" INCLUDE_DIRS ".")
Bluetooth
Bibliothèques tierces
Bibliographie
- https://docs.espressif.com/
- https://github.com/espressif/
- Tommy Desrochers : YouTuber expliquant l'utilisation de l'ESP32 avec l'environnement Arduino.
- https://randomnerdtutorials.com/