ESP32

De InfoXelec
Aller à la navigation Aller à la recherche

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

Bluetooth ESP32

Bibliothèques tierces

Bibliothèques ESP32

Bibliographie