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.
Un programme Arduino, appelé "sketch", est structuré autour de deux fonctions principales obligatoires :
void setup(): Exécutée une seule fois au démarrage ou après une réinitialisation du microcontrôleur. Elle sert à initialiser les variables globales, les communications (ex: Serial.begin()), et à configurer les broches (GPIOs).void loop(): Constitue le point d'entrée principal du programme et s'exécute en boucle continue après la fin de la fonction setup(). Le µC réexécute cette fonction indéfiniment jusqu'à un arrêt, un crash ou une réinitialisation.Le sketch peut contenir d'autres fonctions et des variables globales, généralement déclarées en début de fichier.
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 :
D1, D2) plutôt que les numéros de broche physique ou les noms techniques (ex: GPIO5). Il est impératif de se référer au schéma de la carte de développement utilisée.pinMode(pin, MODE), typiquement dans setup(). Les modes possibles sont INPUT et OUTPUT.| 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. |
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.
digitalRead()). Sur les ESP8266/32, toutes les broches digitales peuvent être surveillées.attachInterrupt(digitalPinToInterrupt(pin), callback, mode) est utilisée.ICACHE_RAM_ATTR.volatile pour éviter des optimisations du compilateur qui pourraient causer des erreurs.