Ce document présente une série de mini-projets pour ESP32 que vous pouvez réaliser sur la plateforme de simulation Wokwi. Les projets sont organisés par technologie et classés selon deux niveaux de difficulté: Facile et Intermédiaire.
- Serial Monitor
- GPIO
- Analogique et PWM
- UART
- Servomoteur
- Capteur température LM35
- DHT11 et DHT22
- LEDs
- Écran OLED
- Keypad
- SPI
- I2C
Objectif: Créer un compteur qui affiche les nombres de 1 à 100 dans le moniteur série.
Étapes:
- Créer un nouveau projet ESP32 sur Wokwi
- Configurer le Serial Monitor à 115200 bauds
- Initialiser une variable de compteur à 0
- Dans la boucle principale:
- Incrémenter le compteur
- Afficher sa valeur dans le Serial Monitor
- Ajouter un délai de 1 seconde
- Réinitialiser le compteur à 0 lorsqu'il atteint 100
Matériel: ESP32 uniquement
Objectif: Créer une interface qui accepte des commandes depuis le Serial Monitor pour contrôler certaines fonctionnalités.
Étapes:
- Configurer le Serial Monitor à 115200 bauds
- Créer un menu d'aide qui s'affiche au démarrage avec les commandes disponibles
- Implémenter les commandes suivantes:
help: Affiche la liste des commandes disponiblesled on: Allume la LED intégréeled off: Éteint la LED intégréestatus: Affiche l'état actuel de la LED et le temps d'exécutionreset: Redémarre l'ESP32
- Lire les entrées du Serial Monitor et traiter les commandes
- Fournir des retours sur chaque commande exécutée
Matériel: ESP32 uniquement
Objectif: Allumer/éteindre une LED en appuyant sur un bouton.
Étapes:
- Connecter une LED au GPIO 23 avec une résistance de 220 ohms
- Connecter un bouton-poussoir au GPIO 15 (avec résistance pull-up)
- Configurer la LED comme sortie et le bouton comme entrée
- Lire l'état du bouton en continu
- Lorsque le bouton est pressé, allumer la LED
- Lorsque le bouton est relâché, éteindre la LED
- Afficher l'état de la LED sur le Serial Monitor
Matériel:
- ESP32
- 1 LED
- 1 résistance de 220 ohms
- 1 bouton-poussoir
- 1 résistance de 10k ohms (pull-up)
Objectif: Créer un chenillard de LEDs dont la vitesse peut être modifiée par un bouton.
Étapes:
- Connecter 6 LEDs aux GPIOs 13, 12, 14, 27, 26, 25 (avec résistances)
- Connecter un bouton-poussoir au GPIO 4 (avec résistance pull-up)
- Configurer toutes les LEDs comme sorties
- Configurer le bouton comme entrée avec interruption
- Créer une fonction d'interruption qui change la vitesse de défilement du chenillard
- Implémenter 3 vitesses différentes (lent, moyen, rapide)
- Allumer les LEDs une par une en séquence, puis éteindre dans le même ordre
- Afficher la vitesse actuelle sur le Serial Monitor à chaque changement
Matériel:
- ESP32
- 6 LEDs
- 6 résistances de 220 ohms
- 1 bouton-poussoir
- 1 résistance de 10k ohms (pull-up)
Objectif: Faire varier la luminosité d'une LED en utilisant le PWM.
Étapes:
- Connecter une LED au GPIO 16 avec une résistance de 220 ohms
- Configurer le canal PWM avec une résolution de 8 bits
- Configurer la fréquence PWM à 5000 Hz
- Créer une boucle qui augmente graduellement la luminosité de 0 à 255
- Puis diminuer graduellement de 255 à 0
- Ajouter un petit délai entre chaque changement
- Afficher la valeur actuelle du PWM sur le Serial Monitor
Matériel:
- ESP32
- 1 LED
- 1 résistance de 220 ohms
Objectif: Contrôler la luminosité d'une LED avec un potentiomètre et afficher la valeur analogique.
Étapes:
- Connecter une LED au GPIO 16 avec une résistance de 220 ohms
- Connecter un potentiomètre au GPIO 34 (ADC)
- Configurer le canal PWM pour la LED
- Configurer l'entrée analogique (ADC) pour le potentiomètre
- Lire la valeur du potentiomètre (0-4095)
- Mapper cette valeur à l'échelle du PWM (0-255)
- Appliquer cette valeur au PWM de la LED
- Afficher les valeurs brutes et mappées sur le Serial Monitor
- Ajouter un bargraph ASCII dans le Serial Monitor pour visualiser le niveau
Matériel:
- ESP32
- 1 LED
- 1 résistance de 220 ohms
- 1 potentiomètre de 10k ohms
Objectif: Configurer deux ports série et faire communiquer les données entre eux.
Étapes:
- Configurer le port série standard (Serial) à 115200 bauds
- Configurer un second port série (Serial2) à 9600 bauds
- Recevoir des caractères du Serial Monitor
- Transmettre ces caractères au Serial2
- Lire les données entrantes sur Serial2
- Renvoyer ces données vers le Serial Monitor
- Ajouter un préfixe pour distinguer les données envoyées des données reçues
Matériel:
- ESP32 uniquement (simulation de loopback dans Wokwi)
Objectif: Créer un terminal interactif qui communique avec un périphérique UART externe.
Étapes:
- Configurer Serial à 115200 bauds pour la communication avec le PC
- Configurer Serial2 à 9600 bauds pour la communication avec un périphérique externe
- Créer un menu d'options:
- Envoyer une commande prédéfinie
- Envoyer un texte personnalisé
- Afficher l'historique des communications
- Modifier la vitesse de communication
- Lire les commandes du Serial Monitor
- Transférer les commandes appropriées au Serial2
- Lire les réponses du Serial2 et les afficher sur le Serial Monitor
- Implémenter un compteur de messages envoyés et reçus
Matériel:
- ESP32
- Module UART externe (simulé dans Wokwi)
Objectif: Contrôler la position d'un servomoteur avec des valeurs prédéfinies.
Étapes:
- Connecter un servomoteur au GPIO 26
- Configurer la bibliothèque ESP32Servo
- Initialiser le servomoteur avec les valeurs minimales et maximales appropriées
- Créer une séquence qui déplace le servo:
- Position 0° (minimum)
- Attendre 1 seconde
- Position 90° (milieu)
- Attendre 1 seconde
- Position 180° (maximum)
- Attendre 1 seconde
- Répéter la séquence en continu
- Afficher la position actuelle sur le Serial Monitor
Matériel:
- ESP32
- 1 servomoteur standard (SG90 ou similaire)
Objectif: Contrôler un servomoteur avec un potentiomètre et enregistrer des positions avec des boutons.
Étapes:
- Connecter un servomoteur au GPIO 26
- Connecter un potentiomètre au GPIO 34
- Connecter deux boutons-poussoirs aux GPIO 15 et 4
- Configurer le servomoteur avec la bibliothèque appropriée
- Lire la valeur du potentiomètre et la mapper à l'angle du servo (0-180°)
- Utiliser le premier bouton pour enregistrer la position actuelle (jusqu'à 5 positions)
- Utiliser le second bouton pour exécuter une séquence des positions enregistrées
- Afficher le mode actuel (manuel/séquence) et l'angle sur le Serial Monitor
- Implémenter un petit délai entre les mouvements pour éviter les saccades
Matériel:
- ESP32
- 1 servomoteur standard
- 1 potentiomètre de 10k ohms
- 2 boutons-poussoirs
- 2 résistances de 10k ohms (pull-up)
Objectif: Lire la température depuis un capteur LM35 et l'afficher sur le Serial Monitor.
Étapes:
- Connecter le capteur LM35 au GPIO 35 (ADC)
- Configurer l'entrée analogique avec une résolution appropriée
- Lire la valeur analogique du capteur
- Convertir cette valeur en tension (mV)
- Convertir la tension en température (°C) - le LM35 produit 10mV par °C
- Afficher la température sur le Serial Monitor toutes les 2 secondes
- Implémenter un filtre de moyenne mobile pour stabiliser la lecture
Matériel:
- ESP32
- Capteur de température LM35
Objectif: Créer un système qui surveille la température et déclenche des alertes basées sur des seuils.
Étapes:
- Connecter le capteur LM35 au GPIO 35
- Connecter une LED verte au GPIO 16
- Connecter une LED jaune au GPIO 17
- Connecter une LED rouge au GPIO 18
- Connecter un buzzer passif au GPIO 19
- Définir trois seuils de température:
- Normal (<30°C): LED verte allumée
- Attention (30-40°C): LED jaune allumée
- Critique (>40°C): LED rouge allumée + buzzer actif
- Lire et convertir la température du LM35
- Comparer avec les seuils et activer les alertes appropriées
- Enregistrer les dépassements de seuils avec horodatage
- Afficher toutes les informations sur le Serial Monitor
Matériel:
- ESP32
- Capteur de température LM35
- 3 LEDs (verte, jaune, rouge)
- 3 résistances de 220 ohms
- 1 buzzer passif
Objectif: Lire et afficher la température et l'humidité à partir d'un capteur DHT11.
Étapes:
- Connecter le capteur DHT11 au GPIO 21
- Installer et configurer la bibliothèque DHT
- Initialiser le capteur avec le type et la broche appropriés
- Lire les valeurs de température et d'humidité toutes les 2 secondes
- Vérifier si la lecture a réussi en contrôlant les valeurs renvoyées
- Afficher les valeurs sur le Serial Monitor
- Ajouter une indication de confort basée sur les valeurs (trop sec, confortable, trop humide)
Matériel:
- ESP32
- Capteur DHT11
- Résistance pull-up de 10k ohms (si nécessaire)
Objectif: Créer un enregistreur qui collecte les données de température et d'humidité et génère des statistiques.
Étapes:
- Connecter le capteur DHT22 au GPIO 21
- Configurer la bibliothèque DHT pour le DHT22
- Créer un tableau pour stocker les 24 dernières lectures (simulation d'un enregistrement horaire)
- Prendre une mesure toutes les 5 secondes (simulation accélérée d'une heure)
- Calculer et afficher des statistiques:
- Température moyenne/min/max
- Humidité moyenne/min/max
- Tendance (hausse, baisse, stable)
- Indice de chaleur
- Afficher un graphique ASCII simple dans le Serial Monitor
- Permettre à l'utilisateur de demander différentes vues des données via des commandes
Matériel:
- ESP32
- Capteur DHT22
- Résistance pull-up de 10k ohms (si nécessaire)
Objectif: Créer différentes séquences d'allumage pour un groupe de LEDs.
Étapes:
- Connecter 4 LEDs aux GPIO 13, 12, 14, 27
- Configurer toutes les LEDs comme sorties
- Implémenter quatre séquences différentes:
- Séquence 1: Allumage séquentiel (une par une)
- Séquence 2: Clignotement alterné (pair/impair)
- Séquence 3: Effet de respiration (avec PWM)
- Séquence 4: Allumage aléatoire
- Changer de séquence toutes les 10 secondes
- Afficher la séquence active sur le Serial Monitor
Matériel:
- ESP32
- 4 LEDs
- 4 résistances de 220 ohms
Objectif: Contrôler une matrice de LEDs 3x3 pour afficher des motifs et animations.
Étapes:
- Connecter 9 LEDs en matrice 3x3 aux GPIO 21-23 (lignes) et 18-20 (colonnes)
- Configurer toutes les broches comme sorties
- Créer une fonction pour allumer une LED spécifique (x,y)
- Créer une fonction pour effacer toutes les LEDs
- Implémenter différents motifs:
- Lettres (A, B, C...)
- Chiffres (1, 2, 3...)
- Symboles (flèches, cœur...)
- Animations (spirale, rebond, vagues...)
- Ajouter un bouton pour changer de motif
- Utiliser un scanner de multiplexage pour contrôler efficacement la matrice
Matériel:
- ESP32
- 9 LEDs
- 9 résistances de 220 ohms
- 1 bouton-poussoir
- 1 résistance de 10k ohms (pull-up)
Objectif: Afficher du texte et des formes simples sur un écran OLED I2C.
Étapes:
- Connecter l'écran OLED I2C (SSD1306) aux broches SDA (21) et SCL (22)
- Installer et configurer la bibliothèque Adafruit SSD1306
- Initialiser l'écran avec la résolution correcte (128x64 ou 128x32)
- Afficher le texte "Hello World!" en haut de l'écran
- Afficher un compteur qui s'incrémente chaque seconde
- Dessiner un rectangle et un cercle
- Rafraîchir l'affichage toutes les secondes
- Ajouter une animation simple (un point qui se déplace)
Matériel:
- ESP32
- Écran OLED I2C SSD1306 (128x64 ou 128x32)
Objectif: Créer une mini station météo qui affiche les données d'un capteur DHT sur un écran OLED.
Étapes:
- Connecter l'écran OLED aux broches I2C (SDA 21, SCL 22)
- Connecter un capteur DHT22 au GPIO 15
- Configurer les bibliothèques pour l'OLED et le DHT22
- Créer une interface utilisateur sur l'OLED avec:
- En-tête avec le titre "Station Météo"
- Section pour la température (avec icône)
- Section pour l'humidité (avec icône)
- Graphique de tendance sur les 10 dernières minutes
- Horloge/chronomètre dans le coin
- Mettre à jour les données toutes les 5 secondes
- Ajouter une animation lors des transitions
- Implémenter un mode économiseur d'écran après 1 minute d'inactivité
Matériel:
- ESP32
- Écran OLED I2C SSD1306 (128x64)
- Capteur DHT22
- Résistance pull-up de 10k ohms (pour DHT22)
Objectif: Utiliser un clavier matriciel pour saisir et vérifier un code PIN.
Étapes:
- Connecter un keypad 4x4 ou 4x3 aux GPIO 13, 12, 14, 27 (lignes) et 26, 25, 33, 32 (colonnes)
- Installer et configurer la bibliothèque Keypad
- Définir un code PIN secret (par exemple "1234")
- Lire les touches pressées et les afficher sur le Serial Monitor
- Stocker les entrées successives pour former le code
- Vérifier si le code saisi correspond au code secret
- Allumer une LED verte si le code est correct, rouge si incorrect
- Réinitialiser après 3 secondes ou après 4 chiffres saisis
Matériel:
- ESP32
- Keypad matriciel 4x4 ou 4x3
- 2 LEDs (verte et rouge)
- 2 résistances de 220 ohms
Objectif: Créer une calculatrice qui utilise un keypad pour la saisie et un écran OLED pour l'affichage.
Étapes:
- Connecter un keypad 4x4 aux GPIO appropriés
- Connecter un écran OLED I2C aux broches SDA et SCL
- Configurer les bibliothèques nécessaires
- Créer une interface de calculatrice sur l'OLED:
- Zone pour l'opération en cours
- Zone pour le résultat
- Indicateur d'état
- Implémenter les fonctions mathématiques:
- Addition, soustraction, multiplication, division
- Effacement (C), égal (=)
- Nombres décimaux
- Gérer les erreurs (division par zéro, dépassement)
- Ajouter une mémoire pour stocker un résultat
- Ajouter un historique des opérations récentes
Matériel:
- ESP32
- Keypad matriciel 4x4
- Écran OLED I2C SSD1306
Objectif: Utiliser la communication SPI pour contrôler un petit écran TFT.
Étapes:
- Connecter un écran TFT SPI (ILI9341) aux broches:
- MOSI: GPIO 23
- MISO: GPIO 19
- CLK: GPIO 18
- CS: GPIO 5
- DC: GPIO 2
- RST: GPIO 4
- Configurer la bibliothèque TFT_eSPI ou Adafruit_ILI9341
- Initialiser l'écran avec les paramètres appropriés
- Dessiner un texte multicolore
- Dessiner des formes géométriques (cercle, rectangle, ligne)
- Créer une animation simple (rebond)
- Afficher les coordonnées d'un point qui se déplace
- Mettre à jour l'affichage de manière fluide
Matériel:
- ESP32
- Écran TFT SPI (ILI9341 ou similaire)
Objectif: Lire et écrire des données sur une carte SD en utilisant le protocole SPI.
Étapes:
- Connecter le module de carte SD SPI aux broches:
- MOSI: GPIO 23
- MISO: GPIO 19
- CLK: GPIO 18
- CS: GPIO 5
- Configurer la bibliothèque SD
- Initialiser la communication avec la carte SD
- Créer des fonctions pour:
- Lister le contenu du répertoire racine
- Lire un fichier texte et l'afficher
- Créer un nouveau fichier et y écrire des données
- Ajouter des données à un fichier existant
- Créer un fichier journal qui enregistre:
- L'heure de démarrage
- Les opérations effectuées
- Les erreurs rencontrées
- Implémenter un menu de commandes via le Serial Monitor
- Ajouter une gestion des erreurs robuste
Matériel:
- ESP32
- Module de carte SD SPI
Objectif: Lire la température et la pression atmosphérique d'un capteur BMP180/BMP280 via I2C.
Étapes:
- Connecter le capteur BMP aux broches I2C (SDA: GPIO 21, SCL: GPIO 22)
- Installer et configurer la bibliothèque Adafruit BMP280 ou BMP180
- Scanner l'adresse I2C du capteur et vérifier la connexion
- Initialiser le capteur avec les paramètres par défaut
- Lire les valeurs de température et de pression
- Calculer l'altitude approximative à partir de la pression
- Afficher toutes les données sur le Serial Monitor
- Prendre une mesure toutes les 2 secondes
Matériel:
- ESP32
- Capteur BMP180 ou BMP280
Objectif: Contrôler et coordonner plusieurs périphériques sur le bus I2C.
Étapes:
- Connecter les périphériques suivants au bus I2C:
- Écran OLED SSD1306
- Capteur BMP280
- Module RTC DS3231
- Périphérique d'expansion GPIO PCF8574
- Scanner le bus I2C et identifier toutes les adresses
- Configurer chaque périphérique avec sa bibliothèque appropriée
- Créer un système qui:
- Lit l'heure depuis le RTC
- Lit la température et la pression du BMP280
- Contrôle 4 LEDs via le PCF8574
- Affiche toutes les informations sur l'OLED
- Organiser l'interface OLED avec différentes pages
- Permettre la navigation entre les pages avec un bouton
- Implémenter un mode d'alerte qui fait clignoter une LED si la température dépasse un seuil
- Enregistrer les données toutes les heures dans une structure en mémoire
Matériel:
- ESP32
- Écran OLED SSD1306
- Capteur BMP280
- Module RTC DS3231
- Expandeur GPIO PCF8574
- 4 LEDs
- 4 résistances de 220 ohms
- 1 bouton-poussoir
- 1 résistance de 10k ohms (pull-up)