La carte ESP32 WROOM 38 broches réunit dans la paume de la main un microcontrôleur double cœur, le Wi-Fi et le Bluetooth. Son module ESP32-WROOM-32 cadencé à 240 MHz en fait l’une des cartes les plus rapides de la famille Arduino, et de loin la plus à l’aise pour tout ce qui doit communiquer : objets connectés, capteurs envoyant leurs mesures sur le réseau, automatismes pilotés depuis un téléphone.
Elle se programme exactement comme une carte Arduino, par un simple câble micro-USB, avec l’IDE Arduino ou PlatformIO. Aucun programmateur externe n’est nécessaire, et le module Wi-Fi est déjà soudé et certifié sur la carte.
À quoi sert une carte ESP32 ?
Un Arduino Uno sait lire des capteurs et commander des relais, mais il ne sait pas se connecter à un réseau : il faut lui ajouter un module Wi-Fi, un module Bluetooth, et les câbler. Sur l’ESP32, tout cela est déjà dans la puce, avec un processeur nettement plus puissant et beaucoup plus de mémoire.
- Domotique — piloter un éclairage, un volet ou une pompe depuis un navigateur, un bouton Wi-Fi ou une application.
- Objets connectés — publier une température, un niveau d’eau ou une consommation sur un serveur, une page web ou un tableau de bord.
- Capteurs autonomes — un montage sur pile qui se réveille, mesure, transmet et se rendort.
- Bluetooth — envoyer des mesures vers un téléphone sans passer par un réseau Wi-Fi.
- Traitement embarqué — deux cœurs à 240 MHz permettent de faire tourner une régulation, un écran graphique et une connexion réseau en même temps.
Autre avantage : la carte possède 34 entrées-sorties, un convertisseur analogique 12 bits, deux sorties analogiques réelles, le PWM, l’I2C, le SPI et même le bus CAN. C’est la carte qui remplace plusieurs modules empilés sur un Uno.
Caractéristiques techniques
| Module | ESP32-WROOM-32 (Espressif), blindage sérigraphié ESP32-WROOM-32 et FCC ID 2AC7Z-ESPWROOM32, antenne imprimée sur le circuit |
|---|---|
| Microcontrôleur | ESP32-D0WDQ6 — deux cœurs Xtensa 32 bits LX6, jusqu’à 240 MHz |
| Mémoire | 520 Ko de RAM, 448 Ko de ROM, 4 Mo de mémoire flash SPI, 8 Ko de RAM conservée en veille profonde |
| Wi-Fi | 802.11 b/g/n sur 2,4 GHz, jusqu’à 150 Mbit/s, modes station, point d’accès, station + point d’accès |
| Bluetooth | Bluetooth 4.2 classique (BR/EDR) et Bluetooth basse consommation (BLE) |
| Broches | 38 broches reportées sur deux rangées de 19, dont 34 entrées-sorties numériques |
| Tension logique | 3,3 V — les entrées ne supportent pas le 5 V |
| Alimentation | par le connecteur micro-USB (5 V) ou par la broche VIN, régulateur 3,3 V embarqué |
| Conversion analogique | ADC 12 bits sur les broches ADC1 (GPIO32 à GPIO39), DAC 8 bits sur GPIO25 et GPIO26 |
| Interfaces | 3 UART, 2 I2C, 4 SPI, I2S, PWM sur toutes les sorties, CAN (TWAI), 10 broches tactiles capacitives, capteur à effet Hall |
| Courant par sortie | 40 mA au maximum par broche — au-delà, il faut un transistor ou un relais |
| Veille profonde | quelques microampères, réveil par minuterie, par une broche ou par le réseau |
| Température de service | −40 °C à +85 °C |
| Dimensions du module | 18 × 25,5 × 3,1 mm |
Brochage : ce qu’il faut savoir avant de câbler
Toutes les broches sont sérigraphiées sur la carte, ce qui permet de les repérer sans schéma sous les yeux. Quelques groupes méritent une attention particulière, car ils expliquent la plupart des montages qui « ne marchent pas » :
| Alimentation | 3V3 (sortie 3,3 V), VIN (entrée 5 V, déjà présente sur le connecteur USB) et les broches GND. |
|---|---|
| Entrées seules | GPIO34, GPIO35, GPIO36 (VP) et GPIO39 (VN). Elles lisent une tension mais ne peuvent rien commander, et n’ont pas de résistance de tirage interne : elles ont besoin d’un composant externe entre la broche et la masse. |
| Broches de démarrage | GPIO0, GPIO2, GPIO5, GPIO12 et GPIO15. Leur niveau au moment de la mise sous tension décide du comportement de la carte : GPIO0 à la masse lance le mode téléversement, et GPIO12 ne doit jamais rester au niveau haut au démarrage, sinon la carte refuse de démarrer. |
| Lignes de la mémoire flash | GPIO6 à GPIO11. Ces six broches relient le module à sa mémoire flash et sont reportées sur le connecteur de cette version 38 broches, souvent sérigraphiées SD0, SD1, SD2, SD3, CMD et CLK. Ne rien y connecter : malgré leurs noms, ce ne sont pas des broches pour carte SD, et la carte cesse de démarrer si un composant y impose un niveau. |
| I2C | GPIO21 (SDA) et GPIO22 (SCL) par défaut — écrans, horloges et capteurs s’y branchent. |
| SPI | GPIO23 (MOSI), GPIO19 (MISO), GPIO18 (horloge) et GPIO5 (sélection) par défaut. |
| Port série | TX0 (GPIO1) et RX0 (GPIO3) : occupées par la liaison USB et le moniteur série. |
| LED de la carte | GPIO2 — pratique pour un premier essai, sans câbler quoi que ce soit. |
| Boutons | EN pour redémarrer la carte, BOOT pour forcer le mode téléversement. |
Un point qui surprend souvent : l’ADC2, utilisé par les broches GPIO0, GPIO2, GPIO4, GPIO12 à GPIO15 et GPIO25 à GPIO27, n’est plus lisible dès que le Wi-Fi est actif. Pour une mesure analogique sur un montage connecté, restez sur l’ADC1, c’est-à-dire les broches GPIO32 à GPIO39.
Programmer la carte depuis l’IDE Arduino
- Installez l’IDE Arduino, puis ouvrez Fichier → Préférences et ajoutez cette adresse dans le champ des URL de gestionnaire de cartes supplémentaires :
https://espressif.github.io/arduino-esp32/package_esp32_index.json - Ouvrez Outils → Type de carte → Gestionnaire de cartes, cherchez esp32 et installez le paquet esp32 by Espressif Systems.
- Branchez la carte par le câble micro-USB. Si aucun port neuf n’apparaît, le pilote du convertisseur USB est à installer : le module de la carte est un CP2102 ou un CH340 selon la série.
- Choisissez la carte ESP32 Dev Module, puis le port qui vient d’apparaître. Laissez la vitesse de téléversement à 921600 ; en cas de message d’erreur, descendez à 115200.
- Téléversez un premier programme : la LED de la carte se met à clignoter. Aucun composant n’est nécessaire pour cette étape, c’est un excellent contrôle de la chaîne complète.
Si le téléversement refuse de démarrer, la carte n’est pas en mode téléversement : appuyez sur BOOT, maintenez-la appuyée pendant l’appui sur EN, puis relâchez EN et enfin BOOT, et recommencez.
Mini-projet : un thermomètre qui se connecte au réseau et qui alerte
Ce montage lit une température, l’affiche dans le moniteur série, allume la LED de la carte au-delà d’un seuil, et se connecte à votre réseau Wi-Fi en indiquant son adresse. Une fois compris, il se réutilise tel quel pour n’importe quel autre capteur.
Ce qu’il faut
| La carte | La carte ESP32 WROOM 38 broches de cette page, avec son câble micro-USB |
|---|---|
| La sonde | Capteur de température LM35 |
| Le support | Plaque d’essai 400 points |
| Les liaisons | 10 × fil mâle-femelle |
Le câblage
| LM35 broche 1 | → carte 3V3 (alimentation de la sonde) |
|---|---|
| LM35 broche 2 | → carte GPIO34 (la sortie analogique) |
| LM35 broche 3 | → carte GND |
Pourquoi GPIO34 ? C’est une entrée de l’ADC1, la seule famille de convertisseurs qui reste lisible quand le Wi-Fi fonctionne. Une entrée seule suffit parfaitement ici : elle est faite pour lire une tension.
La LED, elle, est déjà soudée sur la carte et reliée à GPIO2 : rien à câbler de ce côté.
Le programme
À copier dans l’IDE Arduino, en remplaçant le nom du réseau et le mot de passe par les vôtres :
/*
* Thermometre connecte qui alerte au-dela d un seuil
* Carte : ESP32 Dev Module (module ESP32-WROOM-32, 38 broches)
* Montage : sonde LM35 sur GPIO34, LED de la carte sur GPIO2
*
* Composants, brochage et fiche complete : www.marocproduits.com
*/
#include "WiFi.h"
const char* RESEAU = "votre_reseau";
const char* MOT_DE_PASSE = "votre_mot_de_passe";
const int PIN_SONDE = 34; // sortie du LM35, sur une entree seule (ADC1)
const int PIN_LED = 2; // LED bleue presente sur la carte
const float SEUIL = 30.0; // temperature d alerte, en degres Celsius
void setup() {
Serial.begin(115200);
pinMode(PIN_LED, OUTPUT);
analogReadResolution(12); // convertisseur 12 bits : de 0 a 4095
Serial.println("Demarrage de la carte");
WiFi.begin(RESEAU, MOT_DE_PASSE);
Serial.print("Connexion au reseau");
int essais = 0;
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
essais = essais + 1;
if (essais == 20) { // 10 secondes : on continue sans reseau
break;
}
}
if (WiFi.status() == WL_CONNECTED) {
Serial.println();
Serial.print("Adresse IP : ");
Serial.println(WiFi.localIP());
} else {
Serial.println();
Serial.println("Pas de reseau : la mesure continue localement");
}
}
float lireTemperature() {
long somme = 0;
for (byte i = 0; i != 10; ++i) { // 10 lectures, pour lisser le bruit
somme = somme + analogRead(PIN_SONDE);
delay(5);
}
float tension = (somme / 10.0) * 3.3 / 4095.0; // en volts
return tension * 100.0; // LM35 : 10 mV par degre
}
void loop() {
float t = lireTemperature();
Serial.print("Temperature : ");
Serial.print(t, 1);
Serial.println(" C");
if (t >= SEUIL) {
digitalWrite(PIN_LED, HIGH);
Serial.println("Alerte : seuil depasse");
} else {
digitalWrite(PIN_LED, LOW);
}
delay(1000); // une mesure par seconde suffit
}Comment ça marche
- Le LM35 délivre une tension proportionnelle à la température : 10 mV par degré, soit 0,3 V à 30 °C. C’est pour cette raison que la conversion se termine par une multiplication par 100.
analogReadResolution(12)fait renvoyer par le convertisseur une valeur de 0 à 4095 pour une tension de 0 à 3,3 V. La formulevaleur * 3,3 / 4095redonne donc la tension en volts.- Les dix lectures successives et leur moyenne évitent qu’une mesure isolée fasse clignoter la LED pour rien.
- La connexion Wi-Fi teste son état dans une boucle avec un compteur d’essais : au bout de dix secondes sans réseau, le programme continue et le thermomètre fonctionne toujours, simplement sans adresse IP.
- La LED de la carte sert de témoin de seuil. Elle est reliée à
GPIO2, une broche de démarrage : elle supporte parfaitement d’être pilotée, mais elle ne doit pas être forcée par un composant externe au moment de la mise sous tension.
Pour aller plus loin
- Une mesure d’humidité en plus — remplacez le LM35 par un capteur DHT22 sur
GPIO4; la bibliothèque DHT fournit température et humidité d’un seul coup. - Un affichage local — ajoutez un écran OLED ou LCD en I2C sur
GPIO21etGPIO22, sans occuper une seule broche de mesure. - Un vrai site web — la bibliothèque
WebServerfournie avec le paquet esp32 permet de servir une page consultable depuis n’importe quel téléphone du réseau, affichant la même mesure. - Enregistrer les mesures — la carte peut aussi publier ses relevés vers un service en ligne, ce qui évite d’avoir un ordinateur allumé à côté.
Variante : commander un appareil depuis le réseau
Le même programme se transforme en interrupteur connecté : au lieu d’allumer une LED, la carte commande un module 1 relais 5 V sur une sortie libre, par exemple GPIO26.
Relais VCC | → carte VIN (5 V) |
|---|---|
Relais GND | → carte GND |
Relais IN | → carte GPIO26 |
Relais COM | → arrivée de la phase du circuit à commander |
Relais NO | → vers l’appareil (lampe, pompe, ventilateur) |
Le 230 V ne se câble pas à moitié. Coupez le disjoncteur avant toute intervention, ne travaillez jamais sur le circuit de puissance sous tension, et enfermez le relais et ses bornes dans un boîtier isolant. Si vous n’avez jamais câblé du secteur, restez en basse tension : tout le reste du montage est identique.
Deux points de vigilance : la plupart des modules relais se collent sur un niveau bas et consomment de quoi faire chuter la carte lors d’un redémarrage — une alimentation 5 V séparée est parfois nécessaire. Et le circuit de puissance doit rester physiquement séparé du circuit de commande.
Questions fréquentes
Quelle différence avec une carte Arduino Uno ?
L’ESP32 est plus rapide, possède beaucoup plus de mémoire, et intègre le Wi-Fi et le Bluetooth sans module supplémentaire. En échange, elle fonctionne en 3,3 V : un capteur qui sort du 5 V ne peut pas être branché directement sur une entrée, il faut un pont diviseur ou un adaptateur de niveau. Les deux cartes se programment avec le même IDE et le même langage.
Faut-il une carte à 30 ou à 38 broches ?
Les deux fonctionnent de façon identique pour la programmation. La version 38 broches reporte des broches supplémentaires, dont celles de la mémoire flash qui ne doivent pas être utilisées et une masse supplémentaire. Pour un montage sur plaque d’essai, la version 30 broches laisse un peu plus de place autour de la plaque : la carte ESP32 WROOM 30 broches est disponible pour ce cas.
La carte chauffe-t-elle ?
Un peu de chaleur autour du régulateur est normale, surtout alimentée en 5 V par l’USB. Une chaleur franche sur le module lui-même signale en revanche un court-circuit ou une broche sollicitée au-delà de 40 mA : débranchez et vérifiez le câblage.
Peut-on l’alimenter par une pile ?
Oui. Une alimentation stabilisée de 5 V sur VIN convient, et une pile lithium 18650 avec son support fait un montage autonome classique. La carte consomme peu en veille profonde, ce qui permet de tenir plusieurs mois sur une batterie pour un capteur qui ne se réveille que quelques secondes par heure.
Pourquoi le téléversement échoue-t-il ?
Trois causes couvrent presque tous les cas : un câble USB qui ne transporte que l’alimentation (essayez-en un autre), le pilote du convertisseur USB non installé, ou une carte qui n’est pas passée en mode téléversement — auquel cas la séquence BOOT puis EN décrite plus haut règle le problème. Un composant branché sur GPIO0, GPIO2 ou GPIO12 peut également empêcher le démarrage : débranchez-le le temps du téléversement.
À combiner avec
Pour démarrer sans rien câbler de travers, la plaque d’essai 400 points et les fils mâle-femelle couvrent tous les montages de cette page. Si vous cherchez une carte plus simple pour une première connexion Wi-Fi, la carte NodeMCU V3 ESP8266 coûte moins cher à l’usage et suffit pour publier une mesure. Et pour un montage qui doit commander un appareil du secteur, le module 1 relais 5 V est le complément direct de cette carte.













Avis
Il n’y a pas encore d’avis.