Arduino ou ESP32 : différences, comparatif et lequel choisir
Arduino ou ESP32 ? Compare Uno et ESP32 : vitesse, RAM, Wi-Fi, 5 V/3,3 V, ADC, broches et autonomie, avec comparaison Pico, code commun et choix par projet.
Arduino ou ESP32 ? Voici la réponse courte : si ton projet a besoin du Wi-Fi, du Bluetooth, d'Internet ou d'une vraie puissance de calcul, choisis l'ESP32 ; si tu apprends les bases de l'électronique, veux utiliser des capteurs et modules 5 V sans souci et suivre chaque tutoriel à la lettre, choisis l'Arduino Uno. Les deux cartes se programment dans l'Arduino IDE avec les mêmes commandes digitalWrite, analogRead et Serial. La vraie différence est matérielle : vitesse, mémoire, tension de fonctionnement, broches et connexion sans fil.
Dans ce guide, nous comparons avec de vrais chiffres l'Arduino Uno R3 et la carte ESP32 la plus répandue, l'ESP32 DevKit (avec le module ESP-WROOM-32) : que changent concrètement le processeur et la mémoire, quels modules sont concernés par la différence entre 5 V et 3,3 V, comment évoluent la lecture analogique et le PWM, et combien d'heures chaque carte tient-elle sur batterie ? Ensuite, nous ferons tourner le même code sur les deux cartes, comparerons rapidement le Raspberry Pi Pico et résumerons dans un tableau quelle carte choisir selon le type de projet.

Réponse courte : laquelle et dans quel cas ?
| Ta situation | Carte conseillée | Pourquoi ? |
|---|---|---|
| Tu débutes en électronique | Arduino Uno | 5 V, broches robustes, le plus d'exemples et de cours |
| Tu as besoin du Wi-Fi ou d'Internet | ESP32 | Wi-Fi intégré, pas de module en plus |
| Liaison Bluetooth avec le téléphone | ESP32 | Bluetooth classique et BLE intégrés |
| Tu utilises des modules et shields 5 V | Arduino Uno | Pas besoin de convertisseur de niveau |
| Écran, beaucoup de LED, gros volume de données | ESP32 | 520 Ko de RAM (2 Ko sur l'Uno) |
| Capteur qui tient des mois sur batterie | ESP32 (carte basse consommation) | Environ 10 µA en sommeil profond |
| Programmer en Python | Raspberry Pi Pico | Prise en charge de MicroPython très mûre |
| Budget minimal | ESP32 ou Pico | Bien plus de fonctions pour le prix d'un clone d'Uno |
Que sont l'Arduino Uno et l'ESP32 ?
L'Arduino Uno R3 est la carte la plus connue de la plateforme Arduino, née en Italie. Son cœur est le microcontrôleur 8 bits ATmega328P, cadencé à 16 MHz. La carte fonctionne en 5 V et son brochage n'a pas changé depuis des années ; des centaines de shields (cartes d'extension qui s'enfichent dessus), de livres et de cours sont donc compatibles. Sa conception simple te permet de voir exactement ce qui se passe : quand tu écris HIGH sur une broche, il y a vraiment 5 V dessus. Le nouvel Uno R4 embarque un processeur Arm 32 bits à 48 MHz et 32 Ko de RAM, et la version R4 WiFi ajoute un ESP32-S3 sur la carte pour le sans-fil ; dans cet article, « Uno » désigne le R3, toujours le plus répandu. Pour mieux connaître la plateforme, lis Qu'est-ce qu'Arduino ?.

L'ESP32, lui, est un système sur puce (SoC) 32 bits lancé par Espressif en 2016, avec le Wi-Fi et le Bluetooth sur la même puce. La carte que tu as en main est une carte de développement qui porte cette puce : elle comprend un convertisseur USB-série, un régulateur 3,3 V et les boutons EN et BOOT. Détail important : l'ESP32 n'est pas un Arduino, mais grâce au cœur Arduino fourni par Espressif, il se programme dans l'Arduino IDE exactement comme un Arduino. Pour l'installation et les premiers projets, Qu'est-ce que l'ESP32 ? est un bon point de départ.
Le grand tableau comparatif : Arduino Uno, ESP32 et Raspberry Pi Pico
| Caractéristique | Arduino Uno R3 | ESP32 DevKit (WROOM-32) | Raspberry Pi Pico |
|---|---|---|---|
| Processeur | ATmega328P, AVR 8 bits | Xtensa LX6, 32 bits, double cœur | RP2040, Arm Cortex-M0+ 32 bits, double cœur |
| Fréquence | 16 MHz | Jusqu'à 240 MHz | 133 MHz |
| RAM (SRAM) | 2 Ko | 520 Ko | 264 Ko |
| Mémoire programme (flash) | 32 Ko (0,5 Ko pour le bootloader) | Généralement 4 Mo | 2 Mo |
| EEPROM | 1 Ko | Aucune (émulée en flash) | Aucune (système de fichiers en flash) |
| Niveau logique | 5 V | 3,3 V (ne tolère pas 5 V) | 3,3 V (ne tolère pas 5 V) |
| Alimentation | USB 5 V ou 7–12 V (jack/VIN) | USB 5 V ou 5 V sur VIN | USB 5 V ou 1,8–5,5 V sur VSYS |
| GPIO utilisables | 20 (14 numériques + 6 analogiques) | Environ 25 (hors broches restreintes) | 26 |
| Entrées analogiques (ADC) | 6 canaux, 10 bits | 18 canaux, 12 bits (seul l'ADC1 avec le Wi-Fi actif) | 3 canaux, 12 bits |
| Sortie analogique (DAC) | Aucune | 2 canaux, 8 bits | Aucune |
| PWM | 6 broches, 8 bits, 490/980 Hz | 16 canaux, fréquence réglable, sur presque toutes les broches | 16 canaux, sur tous les GPIO |
| Wi-Fi | Non | 802.11 b/g/n, 2,4 GHz | Non (oui sur le Pico W) |
| Bluetooth | Non | Bluetooth 4.2 : classique + BLE | Non (oui sur le Pico W) |
| UART / I2C / SPI | 1 / 1 / 1 | 3 / 2 / 2 (accessibles à l'utilisateur) | 2 / 2 / 2 |
| Courant par broche | 20 mA conseillés (40 mA max.) | Environ 20 mA conseillés | 4 mA par défaut (réglable jusqu'à 12 mA) |
| Consommation typique de la carte | Environ 45 mA | 50–130 mA en moyenne avec le Wi-Fi, pics à 240 mA | Environ 25 mA |
| Veille la plus basse | Puce sous 1 µA, carte environ 30 mA | Puce environ 10 µA en sommeil profond | Carte environ 1 mA en mode dormant |
| Programmation | Arduino C/C++ | Arduino C/C++, ESP-IDF, MicroPython | MicroPython, SDK C/C++, Arduino |
| Prix approximatif | Original 25–30 $, clone 5–10 $ | DevKit clone 4–8 $ | 4 $ (Pico W 6 $) |
Processeur et mémoire : que signifient les chiffres en pratique ?
Le processeur de l'Uno exécute environ 16 millions d'instructions par seconde et travaille sur des nombres de 8 bits à la fois ; une opération 32 bits sur un long ou un float demande des dizaines d'instructions, et il n'y a pas d'unité de calcul flottant (FPU) matérielle. L'ESP32 tourne à 240 MHz sur des nombres de 32 bits et possède une FPU simple précision. Dans un calcul riche en float, l'ESP32 peut donc être des dizaines, voire des centaines de fois plus rapide que l'Uno. Tu ne verras aucune différence pour faire clignoter une LED ou lire un capteur quelques fois par seconde, mais elle devient décisive pour le filtrage, le traitement audio, le chiffrement ou le calcul d'animations pour des centaines de LED. Petite astuce : la FPU de l'ESP32 ne gère que le type float ; les opérations en double se font en logiciel et sont nettement plus lentes.
La différence de mémoire, tu la rencontreras bien plus souvent. Les 2 Ko de RAM de l'Uno sont partagés entre tes variables, les tampons de Serial et l'espace réservé par les bibliothèques. Quand la RAM est pleine, le compilateur ne prévient presque jamais ; le programme se bloque au hasard ou se comporte bizarrement. Situations typiques où l'Uno manque vite de RAM :
- Écran OLED : le seul tampon d'image d'un écran SSD1306 128×64 occupe 1 Ko, soit la moitié de la RAM (voir Écran OLED).
- LED adressables : chaque LED WS2812B occupe 3 octets ; un ruban de 300 LED demande 900 octets (voir WS2812B NeoPixel).
- Données d'Internet : le JSON renvoyé par un service météo peut peser plusieurs Ko ; il ne tient pas dans l'Uno mais l'ESP32 le traite sans peine.
- Concaténation de String : des objets String qui grossissent dans une boucle fragmentent la petite RAM et peuvent provoquer un plantage des heures plus tard.
- Carte SD : la bibliothèque SD réserve un tampon de secteur de 512 octets ; avec les bibliothèques d'écran et de capteurs, on atteint vite la limite.
La différence de tension : 5 V et 3,3 V
C'est la différence la plus souvent oubliée. Les broches de l'Uno fonctionnent en logique 5 V : une sortie HIGH vaut 5 V et les entrées au-dessus de 3 V sont lues comme HIGH. Les broches de l'ESP32 fonctionnent en logique 3,3 V et ne tolèrent pas le 5 V. Appliquer 5 V sur une broche ne tue peut-être pas l'ESP32 tout de suite, mais cela force les diodes de protection internes et peut détruire la puce à la longue ou d'un coup. Dans l'autre sens, c'est moins grave : le HIGH de 3,3 V de l'ESP32 dépasse de justesse le seuil de 3 V de l'Uno et il est donc généralement lu comme HIGH, mais ce n'est pas non plus une conception sûre. Voici comment se comportent les modules courants avec chaque carte :
| Module | Avec l'Arduino Uno | Avec l'ESP32 | Remarque |
|---|---|---|---|
| Capteur de distance HC-SR04 | Direct | Pont diviseur sur la ligne ECHO | La broche ECHO sort du 5 V |
| Module relais 5 V | Direct | La plupart marchent, certains ne se coupent pas | Sur les modules actifs à l'état bas, un HIGH de 3,3 V peut ne pas relâcher complètement le relais |
| Servo SG90 | Direct | Signal direct, alimentation en 5 V | N'alimente pas le servo par la broche 3V3 de la carte |
| DHT11 / DHT22 | Direct | Direct en 3,3 V | Fonctionne aux deux tensions |
| LCD I2C (16x2) | Direct | Alimentation 5 V, convertisseur de niveau conseillé | Les résistances de pull-up du module tirent les lignes à 5 V |
| OLED SSD1306 | Direct | Direct (3V3) | Régulateur présent sur la carte |
| Ruban WS2812B | Direct | Fonctionne le plus souvent | Pour un résultat garanti, un convertisseur de niveau comme le 74AHCT125 |
| MPU6050 (GY-521) | Direct | Direct (3V3) | Régulateur 3,3 V présent sur la carte |
Broches, lecture analogique et PWM
Sur l'Uno, les 20 broches se comportent à peu près de la même façon : chacune peut être une entrée ou une sortie, fournit sans problème jusqu'à 20 mA et n'influence pas le démarrage. L'ESP32 DevKit a plus de broches sur le papier, mais elles ne se valent pas : les GPIO 6–11 sont reliés à la flash interne et inutilisables, les GPIO 34–39 sont uniquement des entrées, et les GPIO 0, 2, 5, 12 et 15 doivent avoir certains niveaux au démarrage. En pratique, tu peux utiliser confortablement 20 à 25 broches. Le brochage de ta carte est disponible dans l'outil Brochage.
En lecture analogique, l'ADC 10 bits de l'Uno découpe la plage 0–5 V en 1024 pas ; chaque pas vaut environ 4,9 mV et la mesure est assez linéaire. L'ADC 12 bits de l'ESP32 donne 4096 pas, mais avec le réglage par défaut il ne distingue pas les valeurs sous environ 0,15 V ni au-dessus de 3,1 V, il est bruité et les broches ADC2 ne fonctionnent pas du tout quand le Wi-Fi est actif. Pour une tension précise sur l'ESP32, utilise analogReadMilliVolts() et branche le capteur sur les broches ADC1 (GPIO 32–39). Côté PWM, l'ESP32 prend l'avantage : l'Uno ne propose du PWM 8 bits que sur 6 broches à 490 ou 980 Hz, alors que l'ESP32 peut diriger 16 canaux à fréquence et résolution réglables vers presque n'importe quelle broche de sortie. Il possède aussi 2 DAC (GPIO 25 et 26) qui produisent une vraie tension analogique. Pour les bases du PWM, lis Qu'est-ce que le PWM ?.
Le même code sur les deux cartes : qu'est-ce qui change ?
Bonne nouvelle : tout ce que tu as appris sur Arduino vaut aussi pour l'ESP32. Le code ci-dessous lit un potentiomètre, affiche la tension dans le Moniteur série et allume la LED de la carte quand la valeur dépasse la moitié. La ligne #if defined(ESP32) détecte pour quelle carte le code est compilé et ne change que le numéro de broche, la tension de référence et la résolution de l'ADC. Relie les bornes extrêmes du potentiomètre à 5V et GND sur l'Uno, ou à 3V3 et GND sur l'ESP32 ; branche le curseur sur A0 pour l'Uno ou sur GPIO 34 pour l'ESP32, puis ouvre le Moniteur série à 115200 bauds. Les principales différences hors du code sont dans le tableau.
1// Aynı kod Uno ve ESP32'de çalışır / The same sketch runs on Uno and ESP32
2#if defined(ESP32)
3const int LED_PIN = 2; // DevKit dahili LED / DevKit onboard LED
4const int POT_PIN = 34; // ADC1 pini, Wi-Fi ile de çalışır / ADC1 pin, works with Wi-Fi too
5const float VREF = 3.3; // ESP32 pinleri 3,3 V / ESP32 pins are 3.3 V
6const int ADC_MAX = 4095; // 12 bit
7#else
8const int LED_PIN = 13; // Uno dahili LED / Uno onboard LED
9const int POT_PIN = A0;
10const float VREF = 5.0; // Uno referansı 5 V / Uno reference is 5 V
11const int ADC_MAX = 1023; // 10 bit
12#endif
13
14void setup() {
15 Serial.begin(115200);
16 pinMode(LED_PIN, OUTPUT);
17}
18
19void loop() {
20 int raw = analogRead(POT_PIN);
21 float volts = raw * VREF / ADC_MAX;
22 Serial.print("Ham / raw: ");
23 Serial.print(raw);
24 Serial.print(" Gerilim / voltage: ");
25 Serial.println(volts, 2);
26 digitalWrite(LED_PIN, raw > ADC_MAX / 2 ? HIGH : LOW); // yarıdan fazlaysa LED yanar / LED on above half
27 delay(250);
28}| Sujet | Arduino Uno | ESP32 |
|---|---|---|
| LED intégrée | Broche 13 | GPIO 2 sur la plupart des DevKit clones (aucune sur le DevKitC d'Espressif) |
| Plage de analogRead | 0–1023 (10 bits) | 0–4095 (12 bits) |
| Interruptions externes (attachInterrupt) | Seulement broches 2 et 3 | Presque toutes les broches (ajoute IRAM_ATTR à la fonction d'interruption) |
| Deuxième port série | Nécessite SoftwareSerial | Serial2 matériel (GPIO 16 et 17) |
| EEPROM | Vraie EEPROM, 1 Ko | En flash ; EEPROM.commit() ou Preferences |
| Téléversement | Un clic | Certaines cartes demandent d'appuyer sur BOOT |
| Durée de compilation | Quelques secondes | La première compilation peut prendre une minute |
Wi-Fi, Bluetooth et Internet
Ce qui distingue vraiment l'ESP32, c'est la connexion sans fil. La carte rejoint les réseaux Wi-Fi 2,4 GHz, peut créer son propre point d'accès, fait tourner un serveur web, envoie des données à une installation domotique via MQTT, récupère l'heure sur Internet par NTP et peut mettre à jour son firmware sans fil (OTA). Côté Bluetooth, le Bluetooth classique (profil port série) et le BLE basse consommation sont pris en charge, et avec ESP-NOW plusieurs ESP32 peuvent dialoguer sans box. Rien de tout cela n'est intégré à l'Uno : pour le Bluetooth il faut un module comme le HC-05, et pour le Wi-Fi une puce séparée comme l'ESP-01 avec des commandes AT. Le code ci-dessous lit le même potentiomètre, cette fois par Wi-Fi : ouvre l'adresse affichée dans le Moniteur série dans le navigateur d'un téléphone connecté au même réseau et tu verras la tension en millivolts ; la page se rafraîchit toute seule toutes les deux secondes.
1#include <WiFi.h>
2#include <WebServer.h>
3
4const char* ssid = "AgAdi"; // Wi-Fi adın / your Wi-Fi name
5const char* password = "Sifre123"; // Wi-Fi şifren / your Wi-Fi password
6const int POT_PIN = 34; // ADC1 pini / ADC1 pin
7
8WebServer server(80);
9
10void handleRoot() {
11 uint32_t mv = analogReadMilliVolts(POT_PIN); // kalibre edilmiş mV / calibrated mV
12 String html = "<meta name='viewport' content='width=device-width'>"
13 "<meta http-equiv='refresh' content='2'>"
14 "<h1>ESP32</h1><p>Pot: ";
15 html += mv;
16 html += " mV</p>";
17 server.send(200, "text/html", html);
18}
19
20void setup() {
21 Serial.begin(115200);
22 WiFi.begin(ssid, password);
23 while (WiFi.status() != WL_CONNECTED) delay(500);
24 Serial.print("Telefonda aç / open on your phone: http://");
25 Serial.println(WiFi.localIP());
26 server.on("/", handleRoot);
27 server.begin();
28}
29
30void loop() {
31 server.handleClient();
32}Consommation et fonctionnement sur batterie
Sur le papier, l'ESP32 est à la fois la carte la plus gourmande et la plus sobre. Quand il envoie des données en Wi-Fi, il tire des pics jusqu'à 240 mA ; c'est pourquoi il redémarre avec l'erreur « Brownout detector was triggered » sur un port USB faible. En sommeil profond, en revanche, la puce ne consomme qu'environ 10 µA. La carte Uno consomme environ 45 mA sans rien faire ; même avec l'ATmega328P endormi, la puce USB-série, le régulateur et la LED d'alimentation continuent de tirer environ 30 mA. Prenons un exemple : une batterie de 2000 mAh alimente un Uno qui tourne en continu pendant environ 2000 / 45 ≈ 44 heures. Un ESP32 avec le Wi-Fi toujours actif (100 mA en moyenne) tient environ 20 heures. Mais si l'ESP32 se réveille toutes les 10 minutes pendant 3 secondes, envoie une mesure à 120 mA et dort à 10 µA pendant les 597 secondes restantes, le courant moyen vaut (3 × 120 + 597 × 0,01) / 600 ≈ 0,61 mA et la même batterie tient en théorie plus de 3000 heures, soit plus de quatre mois. Il faut pour cela une carte basse consommation ou un module nu ; le régulateur et la puce USB des DevKit classiques consomment quelques mA même en veille. Tu peux calculer ton propre scénario avec l'outil Autonomie batterie.
Et le Raspberry Pi Pico dans tout ça ?
La troisième option sérieuse est le Raspberry Pi Pico. Sa puce RP2040 possède deux cœurs Cortex-M0+ à 133 MHz, 264 Ko de RAM et 2 Mo de flash, pour environ 4 dollars. Comme l'ESP32, il fonctionne en 3,3 V et offre 26 GPIO, mais seulement 3 entrées analogiques. Ses gros atouts : une prise en charge de MicroPython très mûre, un chargement du firmware très simple puisqu'il apparaît sur l'ordinateur comme une clé USB, et les blocs PIO, qui génèrent des protocoles au timing précis sans charger le processeur. Si tu veux du sans-fil, prends le Pico W (Wi-Fi et Bluetooth) ; pour plus de puissance, le Pico 2 avec la puce RP2350. Plus de détails dans Qu'est-ce que le Raspberry Pi Pico ?. La même lecture de potentiomètre s'écrit ainsi sur le Pico en MicroPython (curseur sur GP26, bornes extrêmes sur 3V3 et GND) :
1from machine import ADC, Pin
2import time
3
4pot = ADC(26) # GP26 = ADC0, potansiyometre orta ucu / pot wiper
5led = Pin("LED", Pin.OUT) # dahili LED (Pico ve Pico W) / onboard LED (Pico and Pico W)
6
7while True:
8 raw = pot.read_u16() # 0–65535 (12 bit ölçüm ölçeklenir / 12-bit reading, scaled)
9 volts = raw * 3.3 / 65535
10 print("Ham / raw:", raw, " Gerilim / voltage: {:.2f}".format(volts))
11 led.value(raw > 32767) # yarıdan fazlaysa yanar / on above half
12 time.sleep(0.25)Prix et facilité d'apprentissage
Le prix seul tranche rarement. Un Uno R3 original coûte environ 25–30 $, tandis que les clones à puce USB CH340 se trouvent à 5–10 $ ; les ESP32 DevKit clones coûtent 4–8 $ et le Pico 4 $. Entre un ESP32 et un clone d'Uno, l'écart de prix est donc quasi nul ; le vrai coût se cache dans les à-côtés : utiliser des modules 5 V avec l'ESP32 demande quelques résistances ou un convertisseur de niveau à 1–2 $, et ajouter le Wi-Fi à l'Uno demande un module séparé. Côté apprentissage, l'Uno garde l'avantage : tu choisis la carte et cliques sur Téléverser, les messages d'erreur et les exemples sont les mêmes depuis des années, et il n'y a aucun problème de niveaux avec les modules 5 V. Avec l'ESP32, tu dois d'abord installer le paquet de cartes d'Espressif et, si besoin, le pilote de la puce USB (CP2102 ou CH340), choisir le bon modèle de carte et, sur certaines cartes, maintenir le bouton BOOT pendant le téléversement ; de plus, une partie des exemples en ligne a été écrite pour d'anciennes versions du cœur et peut ne pas compiler (dans le cœur 3.x, par exemple, ledcAttach remplace ledcSetup). Ces obstacles se franchissent en quelques heures, mais si tu montes tes premiers circuits, il est plus facile sur l'Uno de savoir si un problème vient du code ou du câblage.
Quelle carte pour quel projet ?
| Projet | Carte idéale | Pourquoi ? |
|---|---|---|
| Premiers exercices avec LED, boutons et buzzer | Arduino Uno | Tolérant, 5 V, plein d'exemples |
| Voiture robot (L298N, HC-SR04) | Arduino Uno | Compatible direct avec les modules 5 V |
| Station météo Wi-Fi | ESP32 | Envoie les données au téléphone et sur Internet |
| Domotique avec relais | ESP32 | Web, MQTT et assistants vocaux |
| Télécommande Bluetooth depuis le téléphone | ESP32 | BLE et Bluetooth classique intégrés |
| Capteur distant sur batterie | ESP32 (carte basse consommation) | Sommeil profond et envois Wi-Fi brefs |
| Apprendre Python | Raspberry Pi Pico | MicroPython est pris en charge en priorité |
| Des centaines de LED adressables | ESP32 ou Pico | Beaucoup de RAM, processeur rapide |
| Diffusion d'images avec caméra | ESP32-CAM | Caméra et lecteur microSD sur la carte |
| Shields moteur et shields 5 V | Arduino Uno | Les shields suivent le brochage de l'Uno |
Erreurs fréquentes et idées reçues
- « L'ESP32 est toujours meilleur » : il est plus puissant, mais ses broches 3,3 V, ses broches sensibles au démarrage, le bouton BOOT et les chutes de tension peuvent décourager un débutant. Pour apprendre les bases, l'Uno réserve moins de surprises.
- Brancher un capteur 5 V directement sur l'ESP32 : relier sans pont diviseur des signaux 5 V, comme la sortie ECHO du HC-SR04, peut endommager la broche.
- Lire une broche ADC2 avec le Wi-Fi actif : les GPIO 0, 2, 4, 12–15 et 25–27 ne lisent rien en analogique pendant que le Wi-Fi tourne ; déplace le capteur sur GPIO 32–39.
- Oublier la RAM de l'Uno : si le code compile mais que la carte se fige au hasard, la RAM est peut-être pleine ; mets les textes fixes dans F("...") et évite de concaténer des String dans une boucle.
- Alimenter l'ESP32 par un USB faible : si la carte redémarre au lancement du Wi-Fi, utilise un bon câble de données et un adaptateur d'au moins 1 A.
- Confondre Pico et Pico W : le Pico simple n'a pas de Wi-Fi ; pour un projet sans fil, achète le modèle avec un W dans son nom.
En résumé, l'Arduino Uno est la carte pour apprendre, l'ESP32 la carte pour se connecter et le Raspberry Pi Pico la carte pour expérimenter avec Python. Si tu te demandes quel modèle de la famille Arduino te convient, jette un œil à Quel Arduino acheter ?. Dans l'application BlueGrays, tu trouveras des dizaines de projets pour Arduino, ESP32 et Pico, de la LED qui clignote au serveur web Wi-Fi et de l'horloge NTP à l'écran météo, chacun avec son schéma et son code pas à pas.
Questions fréquentes
L'ESP32 est-il meilleur qu'Arduino ?
En puissance brute, en mémoire et en connexion sans fil, oui : l'ESP32 tourne à 240 MHz et dispose de 520 Ko de RAM, du Wi-Fi et du Bluetooth. Mais avec ses broches 3,3 V, ses GPIO restreints et son démarrage plus complexe, l'Arduino Uno réserve moins de surprises aux débutants. Le meilleur choix dépend des besoins de ton projet.
Peut-on programmer l'ESP32 avec l'Arduino IDE ?
Oui. Après avoir ajouté le paquet de cartes esp32 d'Espressif à l'Arduino IDE, tu programmes l'ESP32 avec les commandes Arduino. Les fonctions pinMode, digitalWrite, analogRead, Serial ou Wire fonctionnent de la même façon ; ce qui change surtout, ce sont les numéros de broches et les niveaux de tension.
Le code Arduino fonctionne-t-il sur l'ESP32 ?
La plupart du code fonctionne avec de petites modifications. Il faut adapter les numéros de broches à l'ESP32, tenir compte du fait qu'analogRead renvoie 0–4095 et remplacer le code qui accède aux registres propres à l'AVR ou les bibliothèques comme SoftwareSerial par leurs équivalents ESP32.
Peut-on ajouter le Wi-Fi à un Arduino Uno ?
Oui : un module comme l'ESP-01 (ESP8266) s'utilise via le port série avec des commandes AT, ou tu peux acheter l'Uno R4 WiFi. Mais l'ESP-01 demande une alimentation 3,3 V et une conversion de niveau, et les 2 Ko de RAM de l'Uno peinent avec les tâches web. C'est pourquoi il est le plus souvent plus simple et moins cher d'utiliser directement un ESP32.
Arduino ou Raspberry Pi Pico ?
Pour rester dans l'écosystème Arduino en C/C++, travailler avec des modules 5 V et trouver le plus d'exemples, l'Arduino Uno convient mieux ; pour programmer en Python, payer peu et obtenir un timing précis avec le PIO, choisis le Raspberry Pi Pico. Comme le Pico fonctionne en 3,3 V, il faut faire attention aux signaux 5 V, comme avec l'ESP32.
Peut-on utiliser l'ESP32 avec des capteurs 5 V ?
Si le capteur fonctionne aussi en 3,3 V, le plus simple est de l'alimenter par la broche 3V3. Pour les capteurs qui ne fonctionnent qu'en 5 V et sortent du 5 V, place un pont diviseur ou un convertisseur de niveau sur la ligne de sortie. Appliquer directement 5 V sur les broches de l'ESP32 peut endommager la puce.
Projets à réaliser après cet article
Voir tous les projets
Eclairage à Led
Projet d'entrée basique qui allume et éteint une seule LED à certains intervalles avec Arduino. Enseigne l'utilisation des fonctions digitalWrite et delay.

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.

Clignotement LED Intégrée Raspberry Pi Pico (GP25 LED Onboard)
Le projet d'ouverture de la série Raspberry Pi Pico ! Nous faisons clignoter la LED intégrée (LED verte connectée à GP25) pour vérifier que la carte fonctionne — une première expérience classique "Hello World". AUCUN composant externe, juste Pico et câble USB. Le code est écrit en **MicroPython** (le langage officiellement soutenu par la Raspberry Pi Foundation). Apprends la classe `machine.Pin`, le mode `Pin.OUT`, les méthodes `led.on()/off()` et `time.sleep()` dans Thonny IDE. Suis chaque basc

Température et humidité avec DHT11
Projet qui mesure la température et l'humidité ambiantes à l'aide d'un capteur DHT11 et les affiche sur un écran LCD I2C. Enseigne l'utilisation d'un capteur numérique de température et d'humidité.

Luminosité d'une LED avec un Potentiomètre sur ESP32 (Analogique → PWM)
Dans ce projet, nous contrôlons la luminosité d'une LED de manière analogique à l'aide d'un potentiomètre. La broche ADC de l'ESP32 lit la tension entre 0 et 3,3 V provenant du potentiomètre, puis cette valeur est convertie en signal PWM (modulation de largeur d'impulsion) envoyé à la LED. Ainsi, la LED s'allume et s'éteint progressivement. Avec Arduino Core 3.0+, `analogWrite()` est utilisable directement; sur ESP32-S2/S3, la résolution de l'ADC est fixée à 12 bits.

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

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
Autres articles
- Qu'est-ce que l'ESP32 ? Caractéristiques, installation dans l'Arduino IDE et premier projet Wi-Fi
- Quel Arduino acheter ? Uno, Nano, Mega et Leonardo comparés
- Qu'est-ce que le Raspberry Pi Pico ? Installation de MicroPython, brochage et premiers projets
- Qu'est-ce qu'Arduino ? Le guide complet pour débutants
Découvre chiffres à l'appui les vraies différences entre l'Arduino Uno et l'ESP32 : vitesse, mémoire, tension, lecture analogique, Wi-Fi et autonomie. Fais tourner le même code sur les deux cartes, compare-les au Pico et choisis la bonne carte pour ton projet.

