Qu'est-ce que l'ESP32 ? Caractéristiques, installation dans l'Arduino IDE et premier projet Wi-Fi
Qu'est-ce que l'ESP32 et en quoi diffère-t-il d'un Arduino ? Wi-Fi et Bluetooth, broches sûres, installation dans l'Arduino IDE, premier Blink, connexion Wi-Fi, piloter une LED depuis le téléphone, variantes d'ESP32 et erreurs fréquentes.
L'ESP32 est un microcontrôleur double cœur très bon marché, fabriqué par Espressif, avec Wi-Fi et Bluetooth intégrés. À lui seul, il fait beaucoup de choses dont un Arduino Uno est incapable : rejoindre le réseau de la maison, servir une page web que tu ouvres sur ton téléphone, récupérer l'heure et la météo sur Internet, dialoguer avec le téléphone en Bluetooth. En plus, il se programme dans l'Arduino IDE avec les commandes Arduino que tu connais déjà. C'est aujourd'hui la carte la plus populaire pour débuter dans l'Internet des objets (IoT).

Qu'est-ce que l'ESP32 et à quoi sert-il ?
À proprement parler, « ESP32 » est le nom de la puce sous le capot métallique. La carte que tu tiens est une carte de développement portant cette puce (comme l'ESP32 DevKit ou la NodeMCU-32S) : elle comprend un convertisseur USB-série pour dialoguer avec l'ordinateur, un régulateur qui abaisse le 5 V à 3,3 V, et les boutons de redémarrage (EN) et de programmation (BOOT). Voici quelques possibilités offertes par l'ESP32 :
- Station météo Wi-Fi : afficher la température et l'humidité sur une page ouverte depuis ton téléphone.
- Pilotage depuis le téléphone : commander une lampe, une prise ou une porte avec un bouton sur une page web.
- Récupérer des données sur Internet : afficher l'heure exacte (NTP), la météo ou les taux de change sur un écran.
- Envoyer des notifications : te prévenir par Telegram ou e-mail quand un mouvement est détecté.
- Appareils Bluetooth : fabriquer une télécommande qui s'appaire au téléphone, ou un appareil que l'ordinateur voit comme un clavier.
- Capteurs qui tiennent des mois sur pile : ne sortir du sommeil profond que pour mesurer.
ESP32 ou Arduino Uno : la comparaison
| Caractéristique | Arduino Uno R3 | ESP32 (WROOM-32) |
|---|---|---|
| Processeur | ATmega328P, 8 bits, 16 MHz | Xtensa LX6, double cœur, 32 bits, 240 MHz |
| RAM | 2 Ko | 520 Ko |
| Mémoire programme (flash) | 32 Ko | Généralement 4 Mo |
| Sans fil | Aucun | Wi-Fi + Bluetooth (Classic et BLE) |
| Tension de fonctionnement | 5 V | 3,3 V |
| GPIO utilisables | 20 | Environ 34 (certaines en entrée seule) |
| Entrées analogiques (ADC) | 6 canaux, 10 bits | 18 canaux, 12 bits |
| Sorties analogiques (DAC) | Aucune | 2 canaux, 8 bits |
À la lecture de ce tableau, l'ESP32 semble meilleur en tout, mais l'Uno a aussi ses atouts : fonctionnant en 5 V, il est directement compatible avec la plupart des capteurs et modules anciens, ses broches sont plus robustes et il réserve moins de surprises aux débutants. Si tu n'as pas besoin de sans-fil, l'Uno reste un excellent point de départ ; pour choisir, jette un œil à Quel Arduino acheter ?
Les broches de l'ESP32 : lesquelles utiliser sans risque ?
Les broches de l'ESP32 ne sont pas toutes « équivalentes » comme sur un Arduino. Certaines sont reliées à la mémoire flash, d'autres ne fonctionnent qu'en entrée, et le niveau de certaines influence le démarrage de la carte. Tu trouveras le brochage complet de ta carte dans l'outil Brochage ; en voici un résumé :
| Broches | Statut | Remarque |
|---|---|---|
| GPIO 6–11 | À ne pas utiliser | Reliées à la flash interne ; les utiliser fait planter la carte |
| GPIO 34–39 | Entrée seule | Pas de sortie possible, pas de résistance de tirage interne |
| GPIO 0, 2, 12, 15 | Avec prudence | Leur niveau au démarrage compte |
| GPIO 1 et 3 | Avec prudence | TX et RX de la liaison série USB |
| Broches ADC2 (0, 2, 4, 12–15, 25–27) | Pas de lecture analogique avec le Wi-Fi actif | Pour l'analogique, utilise l'ADC1 (GPIO 32–39) |
| GPIO 4, 5, 13, 14, 16–19, 21–23, 25–27, 32, 33 | Sûres | Entrées et sorties d'usage général |
Installer l'ESP32 dans l'Arduino IDE
- Dans l'Arduino IDE, ouvre Fichier > Préférences et ajoute https://espressif.github.io/arduino-esp32/package_esp32_index.json dans le champ « URL de gestionnaire de cartes supplémentaires ».
- Dans le gestionnaire de cartes, cherche esp32 et installe le paquet d'Espressif Systems.
- Choisis ESP32 Dev Module dans Outils > Type de carte.
- Branche l'ESP32 avec un câble USB et choisis le bon port dans Outils > Port. Si aucun port n'apparaît, installe le pilote de la puce USB-série de ta carte (CP2102 ou CH340).
- Si « Connecting... » reste longtemps affiché pendant le téléversement, maintiens le bouton BOOT de la carte enfoncé et relâche-le dès que le transfert commence.
Premier programme : faire clignoter la LED intégrée
La plupart des cartes ESP32 DevKit ont une LED bleue reliée au GPIO 2. Le code ci-dessous la fait clignoter toutes les demi-secondes ; comme tu le vois, les commandes sont exactement celles de l'Arduino :
1const int LED_PIN = 2; // çoğu DevKit'te dahili mavi LED / onboard blue LED on most DevKits
2
3void setup() {
4 pinMode(LED_PIN, OUTPUT);
5}
6
7void loop() {
8 digitalWrite(LED_PIN, HIGH);
9 delay(500);
10 digitalWrite(LED_PIN, LOW);
11 delay(500);
12}Se connecter au Wi-Fi
La vraie force de l'ESP32, c'est le Wi-Fi. Le code ci-dessous rejoint le réseau de la maison et affiche dans le moniteur série l'adresse IP que la box attribue à l'ESP32. Remplace le nom du réseau et le mot de passe par les tiens et ouvre le moniteur série à 115200 bauds :
1#include <WiFi.h>
2
3const char* ssid = "AgAdi"; // Wi-Fi adın / your Wi-Fi name
4const char* password = "Sifre123"; // Wi-Fi şifren / your Wi-Fi password
5
6void setup() {
7 Serial.begin(115200);
8 WiFi.begin(ssid, password);
9 Serial.print("Bağlanıyor / connecting");
10 while (WiFi.status() != WL_CONNECTED) {
11 delay(500);
12 Serial.print(".");
13 }
14 Serial.println();
15 Serial.print("IP adresi / IP address: ");
16 Serial.println(WiFi.localIP());
17}
18
19void loop() {
20}Piloter une LED depuis le téléphone : un serveur web simple
Transformons maintenant l'ESP32 en petit serveur web. Après le téléversement, ouvre l'adresse IP affichée dans le moniteur série dans le navigateur d'un téléphone connecté au même Wi-Fi : les deux boutons de la page allument et éteignent la LED de la carte. En branchant un relais à la place de la LED, tu pilotes une vraie lampe de la même façon ; vois Qu'est-ce qu'un module relais ?
1#include <WiFi.h>
2#include <WebServer.h>
3
4const char* ssid = "AgAdi";
5const char* password = "Sifre123";
6const int LED_PIN = 2;
7
8WebServer server(80);
9
10void handleRoot() {
11 server.send(200, "text/html",
12 "<meta name='viewport' content='width=device-width'>"
13 "<h1>ESP32</h1>"
14 "<a href='/on'><button>LED AÇ / ON</button></a> "
15 "<a href='/off'><button>LED KAPAT / OFF</button></a>");
16}
17
18void setup() {
19 pinMode(LED_PIN, OUTPUT);
20 Serial.begin(115200);
21 WiFi.begin(ssid, password);
22 while (WiFi.status() != WL_CONNECTED) delay(500);
23 Serial.println(WiFi.localIP()); // bu adresi telefonda aç / open this address on your phone
24
25 server.on("/", handleRoot);
26 server.on("/on", []() { digitalWrite(LED_PIN, HIGH); handleRoot(); });
27 server.on("/off", []() { digitalWrite(LED_PIN, LOW); handleRoot(); });
28 server.begin();
29}
30
31void loop() {
32 server.handleClient();
33}Les variantes de l'ESP32 : laquelle acheter ?
| Modèle | Point fort | Quand le choisir ? |
|---|---|---|
| ESP32 (WROOM-32 DevKit) | Wi-Fi, Bluetooth Classic et BLE, double cœur | Première carte polyvalente |
| ESP32-S3 | USB natif, plus de RAM, instructions pour l'IA | Projets caméra, audio, clavier et souris USB |
| ESP32-C3 | Un cœur RISC-V, Wi-Fi et BLE, petit et bon marché | Capteurs IoT simples |
| ESP32-CAM | Caméra et emplacement microSD | Transmission d'images, caméra de surveillance |
| ESP8266 (NodeMCU, Wemos D1) | Plus ancien, un cœur, Wi-Fi seul | Projets Wi-Fi très simples |
Alimentation et fonctionnement sur batterie
Quand il active le Wi-Fi, l'ESP32 peut brièvement consommer jusqu'à 250 mA. Si un port USB faible ou un câble fin ne supporte pas ce pic, la carte redémarre avec le message « Brownout detector was triggered ». Utilise un bon câble et un bloc 5 V d'au moins 1 A ; au besoin, ajoute un condensateur de 100 à 470 µF entre 3V3 et GND. Pour les projets sur batterie, le sommeil profond de l'ESP32 réduit la consommation de la puce à quelques microampères ; mais le régulateur et la LED des cartes de développement continuent à consommer quelques mA, d'où l'intérêt d'un module nu ou d'une carte basse consommation pour une longue autonomie.
L'ESP32 avec MicroPython
L'ESP32 ne se programme pas seulement en langage Arduino, mais aussi en MicroPython. Une fois MicroPython installé sur la carte avec Thonny, quelques lignes suffisent pour se connecter au Wi-Fi :
1import network, time
2from machine import Pin
3
4led = Pin(2, Pin.OUT)
5wlan = network.WLAN(network.STA_IF)
6wlan.active(True)
7wlan.connect("AgAdi", "Sifre123") # Wi-Fi adı ve şifresi / Wi-Fi name and password
8
9while not wlan.isconnected():
10 time.sleep(0.5)
11print("IP:", wlan.ifconfig()[0])
12
13while True:
14 led.value(not led.value()) # LED'i yakıp söndür / toggle the LED
15 time.sleep(0.5)Idées de projets avec l'ESP32
- Station météo Wi-Fi : suis depuis ton téléphone la température et l'humidité mesurées par un DHT11.
- Prise intelligente : allume une lampe via un relais depuis une page web ou un assistant vocal.
- Alarme de mouvement : envoie une notification Telegram quand un capteur PIR détecte quelqu'un.
- Horloge Internet : récupère l'heure sur un serveur NTP et affiche-la sur un LCD ou un afficheur 7 segments.
- Télécommande Bluetooth : pilote une voiture robot avec une application sur ton téléphone.
- Capteur économe : un appareil qui se réveille toutes les 10 minutes, envoie une mesure et se rendort.
Erreurs fréquentes et solutions
- Aucun port n'apparaît : le câble est peut-être un câble de charge seulement, ou le pilote USB-série manque ; utilise un câble de données et installe le pilote CP2102 ou CH340.
- « Failed to connect... Timed out waiting for packet header » : maintiens BOOT enfoncé au début du téléversement.
- La carte redémarre sans cesse : alimentation insuffisante (brownout) ; utilise un meilleur câble, un meilleur bloc et un condensateur.
- Pas de connexion au Wi-Fi : le réseau est peut-être en 5 GHz, ou il y a une erreur de majuscules dans le nom ou le mot de passe.
- Utiliser les GPIO 6–11 : ces broches sont reliées à la flash ; les utiliser fait planter la carte.
- Les valeurs analogiques déraillent au démarrage du Wi-Fi : le capteur est sur une broche ADC2 ; déplace-le sur une broche ADC1 entre GPIO 32 et 39.
L'ESP32 est le moyen le plus simple d'emmener sur Internet ce que tu as appris avec Arduino. Pour réviser les bases d'Arduino, lis Qu'est-ce qu'Arduino ? ; dans l'application BlueGrays, tu trouveras des dizaines de projets ESP32 – LED, serveur web, WebSocket, horloge NTP, météo, alarme Telegram – avec schémas et code.
Questions fréquentes
L'ESP32 est-il un Arduino ?
Non. L'ESP32 est un microcontrôleur distinct fabriqué par Espressif, alors qu'Arduino désigne un écosystème de cartes et de logiciels. Grâce au paquet fourni par Espressif, l'ESP32 se programme cependant dans l'Arduino IDE avec les commandes Arduino : la plupart des codes Arduino fonctionnent sur l'ESP32 avec de petites modifications.
L'ESP32 fonctionne-t-il en 5 V ?
La carte de développement peut être alimentée en 5 V par l'USB ou la broche VIN ; son régulateur abaisse cette tension à 3,3 V. Les broches GPIO fonctionnent en revanche en 3,3 V et ne tolèrent pas le 5 V : n'y branche jamais directement de signaux 5 V.
Faut-il acheter un ESP32 ou un Arduino Uno ?
Pour les projets qui ont besoin du Wi-Fi, du Bluetooth ou d'Internet, prends un ESP32. Si tu débutes en électronique et veux travailler sans souci avec des capteurs et modules 5 V en suivant les tutoriels à la lettre, l'Arduino Uno te réservera moins de surprises.
L'ESP32 se connecte-t-il au Wi-Fi 5 GHz ?
L'ESP32 classique, l'ESP32-S3 et l'ESP32-C3 ne gèrent que le Wi-Fi 2,4 GHz et ne voient pas les réseaux 5 GHz. Vérifie que la bande 2,4 GHz de ta box est activée.
Quelle est la différence entre l'ESP32 et l'ESP8266 ?
L'ESP8266 est une puce plus ancienne, à un seul cœur, qui ne gère que le Wi-Fi et n'a qu'une entrée analogique. L'ESP32 est double cœur, plus rapide, gère aussi le Bluetooth et offre beaucoup plus de broches, de canaux ADC et de mémoire. Pour les nouveaux projets, on préfère l'ESP32.
Peut-on utiliser l'ESP32 sans Internet ?
Oui. L'ESP32 peut créer son propre réseau Wi-Fi (mode point d'accès), plusieurs ESP32 peuvent communiquer sans box grâce à ESP-NOW, et il se connecte à un téléphone en Bluetooth. Tu peux aussi l'utiliser comme un Arduino puissant sans aucune de ses fonctions sans fil.
Projets à réaliser après cet article
Voir tous les projets
Clignotement LED avec ESP32
Enseigne l'utilisation de base des sorties GPIO avec l'ESP32. Nous obtenons un effet de clignotement en allumant et éteignant une LED à partir de la broche numérique. Version ESP32 du projet blink classique sur Arduino UNO ; le schéma des broches et la syntaxe restent les mêmes, la différence se situe uniquement au niveau des numéros de broches.

Connexion Wi-Fi STA ESP32 (avec écran LCD)
Dans ce projet, nous connectons l'ESP32 au réseau Wi-Fi domestique en mode Station (STA) de manière sécurisée et tolérante aux pannes. Nous isolons SSID/mot de passe dans un fichier `secrets.h` pour empêcher leur fuite sur Git, mettons en place une reconnexion automatique, et affichons le niveau RSSI et l'adresse IP sur un écran LCD I2C. La LED intégrée sert d'indicateur d'état.

Serveur Web asynchrone ESP32 (avec affichage de l'adresse IP sur l'écran LCD)
Dans ce projet, nous transformons l'ESP32 en un **serveur web asynchrone** que vous pouvez contrôler depuis votre téléphone ou votre ordinateur connecté au même réseau Wi-Fi. Grâce à la bibliothèque ESPAsyncWebServer, le serveur peut traiter plusieurs requêtes simultanément (contrairement au classique `WebServer.h` qui se bloque sur une seule requête). Depuis votre navigateur, vous pourrez vous connecter à l'adresse IP de l'ESP32 en ajoutant `/control` à l'URL, puis allumer et éteindre la LED co

Compteur ESP32 WebSocket (2 boutons + écran LCD + affichage Web en temps réel)
Dans ce projet, l'ESP32 utilise la prise en charge WebSocket d'ESPAsyncWebServer pour transmettre en temps réel les valeurs de température et d'humidité lues par le capteur DHT11 à tous les navigateurs connectés. Au lieu d'un polling HTTP standard, la communication bidirectionnelle s'effectue via une seule connexion TCP persistante, ce qui réduit le temps de latence à quelques millisecondes. Côté navigateur, un graphique linéaire en temps réel est tracé à l'aide de Chart.js et de JavaScript pur

ESP32 HTTPClient + API météo (avec écran LCD)
Dans ce projet, nous effectuons un appel REST à l'API météo (wttr.in) via Internet à l'aide de l'ESP32 et de la bibliothèque `HTTPClient.h`. À l’aide d’ArduinoJson v7, nous analysons la réponse JSON renvoyée et affichons les informations relatives à la ville, à la température, à l’humidité, à la météo et au vent sur un écran LCD I2C, en turc et en anglais. wttr.in est gratuit et ne nécessite pas de clé API : il suffit de saisir le nom d’une ville pour obtenir les conditions météo en temps réel d

ESP32 : heure réelle depuis Internet via NTP
L'ESP32 se connecte au Wi-Fi et récupère l'heure réelle avec une précision de la milliseconde depuis des serveurs NTP (Network Time Protocol). Grâce à `configTzTime()`, le fuseau horaire de la Turquie (TRT, UTC+3) est appliqué automatiquement et le passage DST est géré via la chaîne POSIX TZ. L'heure est affichée sur le moniteur série et sur un écran LCD I2C en option. Synchronisée une fois au démarrage, puis le RTC interne continue de compter.

Éclairage automatique avec le capteur de mouvement PIR ESP32
Dans ce projet, nous allons détecter toute personne entrant dans la pièce à l'aide du capteur de mouvement PIR HC-SR501 et allumer automatiquement la LED. Lorsqu'un mouvement sera détecté, la LED restera allumée pendant un certain temps et nous gérerons le temps à l'aide de la fonction `millis()` et d'un compteur, sans avoir recours à `delay()`. Nous obtiendrons ainsi un système d'éclairage à détecteur de mouvement qui ne bloque pas l'ESP32 et permet d'effectuer d'autres tâches. Dans la vie de t

Système d'Alarme de Mouvement ESP32 (PIR + Buzzer + LED + Telegram)
Un système d'alarme de sécurité intelligent qui active le buzzer et la LED lorsque le capteur PIR détecte un mouvement, tout en envoyant une notification instantanée au propriétaire via Telegram. Il intègre un cooldown de 30 secondes pour éviter les fausses alarmes. Idéal pour la sécurité domestique, la surveillance de garage, d'entrepôts ou de bureaux. Avec l'ESP32-CAM, des notifications photo sont possibles ; avec l'ESP32 DevKit V1 classique, des notifications texte sont envoyées.
Autres articles
Découvre en quoi l'ESP32 diffère de l'Arduino, quelles broches utiliser sans risque, comment l'installer dans l'Arduino IDE et réaliser ton premier projet Wi-Fi qui allume une LED depuis ton téléphone.

