Résumé Exécutif

Ce document synthétise les concepts fondamentaux et avancés de la programmation des microcontrôleurs (µC) ESP32 et ESP8266 dans l'environnement Arduino. L'analyse révèle plusieurs thèmes centraux : la structure de base d'un programme Arduino (setup() et loop()), la gestion des entrées/sorties via les broches GPIO, et l'utilisation des protocoles de communication standards (Série, I2C, SPI) pour l'interfaçage avec des composants externes. Une attention particulière est portée à la gestion de l'énergie, un enjeu critique pour les objets connectés sur batterie ; les modes de veille, notamment le deep-sleep, sont présentés comme la solution la plus efficace pour réduire drastiquement la consommation, bien que leur implémentation diffère notablement entre l'ESP8266 et l'ESP32. Enfin, le document détaille les options de stockage de données, incluant l'utilisation de la mémoire flash interne avec des systèmes de fichiers comme LittleFS et SPIFFS, l'accès à des cartes SD externes, et l'exploitation de la mémoire PSRAM sur l'ESP32 pour les applications nécessitant une grande capacité de RAM.

1. Fondamentaux de la Programmation Arduino pour ESP

1.1 Structure d'un Programme (Sketch)

Un programme Arduino, appelé "sketch", est structuré autour de deux fonctions principales obligatoires :

Le sketch peut contenir d'autres fonctions et des variables globales, généralement déclarées en début de fichier.

1.2 Gestion des Pins GPIO (General Purpose Input/Output)

Les µC exposent des broches GPIO pour interagir avec des composants externes (capteurs, LEDs, etc.). Leur utilisation est encadrée par plusieurs concepts clés :

Type de Pin Fonctions de Lecture Fonctions d'Écriture Plage de Valeurs (ESP8266/ESP32)
Digitale digitalRead(pin) digitalWrite(pin, STATE) HIGH (3.3V) / LOW (0V)
Analogique analogRead(pin) analogWrite(pin, value) Lecture: 0-1023 (ESP8266), 0-4095 (ESP32)
Écriture: Simulé via PWM sur broches digitales.

1.3 Interruptions

Les interruptions permettent au µC de suspendre son exécution en cours pour exécuter une fonction spécifique (gestionnaire d'interruption) en réponse à un changement d'état sur une GPIO digitale.

1.4 Modulation de Largeur d'Impulsion (PWM)