NodeMCU ESP8266 : brochage, Arduino IDE et serveur web Wi-Fi
Le NodeMCU ESP8266 : correspondance D1–D8 et GPIO, installation dans Arduino IDE, Wi-Fi, serveur web pour une LED, limite 3,3 V et différences avec ESP32.
Le NodeMCU est une carte de développement bon marché qui associe la puce ESP8266 compatible Wi-Fi à une connexion USB, un régulateur 3,3 V et des broches adaptées à la breadboard. Tu la programmes avec les mêmes commandes que dans l'Arduino IDE, et à elle seule elle peut rejoindre ton réseau domestique et servir une page web que tu ouvres sur ton téléphone. Si tu veux mettre un capteur de température en ligne, commander un relais depuis ton téléphone ou piloter un ruban LED à la maison, le NodeMCU ESP8266 est l'un des points de départ les moins chers.
Dans ce guide, tu verras pas à pas les caractéristiques du NodeMCU, la correspondance déroutante entre D1–D8 et GPIO, les broches qui influencent le démarrage de la carte, l'installation dans l'Arduino IDE, la connexion au Wi-Fi et un serveur web qui allume une LED depuis ton téléphone. Dans les dernières sections, tu trouveras les différences entre l'ESP8266 et l'ESP32 ainsi que les solutions aux erreurs les plus fréquentes.

Que sont l'ESP8266 et le NodeMCU ?
L'ESP8266 est un microcontrôleur 32 bits avec Wi-Fi intégré qu'Espressif a lancé en 2014. Grâce à son prix très bas, il a popularisé les projets Wi-Fi dans le monde des makers. Le nom NodeMCU désignait à l'origine un firmware basé sur Lua écrit pour cette puce, ainsi que sa carte de développement open source ; aujourd'hui, il sert de nom générique aux cartes équipées du module ESP-12E. On ne la programme presque plus en Lua : la plupart utilisent l'Arduino IDE ou MicroPython.
| Caractéristique | Valeur |
|---|---|
| Puce | ESP8266EX, Tensilica L106, 32 bits |
| Fréquence d'horloge | 80 MHz (peut monter à 160 MHz) |
| RAM | Environ 80 Ko de RAM utilisateur (40 à 50 Ko restent pour ton programme avec le Wi-Fi connecté) |
| Mémoire flash | 4 Mo (module ESP-12E) |
| Wi-Fi | 802.11 b/g/n, 2,4 GHz uniquement ; station, point d'accès ou les deux |
| Bluetooth | Aucun |
| GPIO utilisables | Environ 11 (D0–D8, RX, TX) |
| Entrée analogique | 1 canal (A0), 10 bits, environ 0–3,2 V sur la carte |
| PWM | Logicielle, 1 kHz par défaut, plage 0–255 |
| Tension de fonctionnement | 3,3 V (alimentée en 5 V par USB ou VIN) |
| Consommation | 70 à 80 mA en moyenne connectée au Wi-Fi, jusqu'à 170 mA en émission |
On trouve deux versions courantes du NodeMCU. La V2 (Amica) est étroite, utilise un convertisseur USB-série CP2102 et laisse une rangée de trous libres de chaque côté une fois enfichée dans la breadboard. La V3 (LoLin) est plus large, utilise un CH340G et recouvre presque entièrement une breadboard standard ; avec une V3, il est donc bien plus pratique de placer deux breadboards côte à côte. Les deux versions ont le même brochage et exécutent le même code. Si tu veux une carte plus petite, la Wemos D1 Mini embarque la même puce et fonctionne avec les mêmes programmes.
Brochage du NodeMCU : correspondance D1–D8 et GPIO
Le point le plus déroutant du NodeMCU, c'est que les repères D imprimés sur la carte ne correspondent pas aux vrais numéros GPIO de la puce. Par exemple, la broche marquée D1 est en réalité le GPIO 5. Si tu sélectionnes la carte NodeMCU dans l'Arduino IDE, tu peux écrire D1 dans ton code et le compilateur le transforme automatiquement en 5 ; mais si tu écris digitalWrite(1, HIGH), tu pilotes le GPIO 1, c'est-à-dire la broche TX du port série. En MicroPython, on utilise toujours le numéro GPIO.
| Repère | GPIO | Fonction supplémentaire | Remarque |
|---|---|---|---|
| D0 | GPIO 16 | Réveil après sommeil profond | Pas d'interruptions ; reliée à RST pour le deep sleep |
| D1 | GPIO 5 | I2C SCL | Sûre, usage général |
| D2 | GPIO 4 | I2C SDA | Sûre, usage général |
| D3 | GPIO 0 | Bouton FLASH | Si elle est à LOW au démarrage, la carte passe en mode programmation |
| D4 | GPIO 2 | LED intégrée (logique inversée), TX1 | Doit être à HIGH au démarrage |
| D5 | GPIO 14 | SPI SCK | Sûre, usage général |
| D6 | GPIO 12 | SPI MISO | Sûre, usage général |
| D7 | GPIO 13 | SPI MOSI | Sûre, usage général |
| D8 | GPIO 15 | SPI CS | Doit être à LOW au démarrage ; la carte a une résistance pull-down |
| RX | GPIO 3 | UART RX | À laisser libre quand tu utilises le moniteur série |
| TX | GPIO 1 | UART TX | Envoie les messages de démarrage à la mise sous tension |
| A0 | ADC0 | Entrée analogique | Lecture analogique uniquement, environ 0–3,2 V |
| SD2, SD3 | GPIO 9, 10 | Reliées à la mémoire flash | À ne pas utiliser |
D'après ce tableau, les broches que tu peux utiliser sans crainte dans tes premiers projets sont D1, D2, D5, D6 et D7. D3, D4 et D8 déterminent en revanche le mode de démarrage : à la mise sous tension, l'ESP8266 lit les niveaux de GPIO 0, GPIO 2 et GPIO 15 et, pour un démarrage normal, attend GPIO 0 et GPIO 2 à HIGH et GPIO 15 à LOW. Si un bouton, un relais ou un capteur branché sur ces broches modifie le niveau au démarrage, la carte démarre en mode téléversement au lieu de lancer ton programme, ou ne démarre pas du tout. D3 et D4 restent utilisables pour des boutons, car un bouton n'est pas enfoncé au démarrage ; garde en revanche loin de ces broches les modules dont la sortie est à LOW.
La broche A0 est elle aussi un cas particulier : l'entrée analogique de la puce ESP8266 ne mesure que 0 à 1 V, mais grâce au pont diviseur de 220 kΩ et 100 kΩ présent sur la carte NodeMCU, tu peux appliquer environ 0 à 3,2 V sur A0, et analogRead(A0) renvoie cette plage sous forme de 0 à 1023. Comme il n'y a qu'une seule entrée analogique, tu auras besoin d'un CAN I2C comme l'ADS1115 pour utiliser plusieurs capteurs analogiques. Les broches D1 et D2 forment le bus I2C par défaut ; tu trouveras les bases de l'I2C dans Qu'est-ce que l'I2C ?.
Installer l'ESP8266 dans l'Arduino IDE
- Dans l'Arduino IDE, ouvre Fichier > Préférences et ajoute https://arduino.esp8266.com/stable/package_esp8266com_index.json dans le champ « URL de gestionnaire de cartes supplémentaires ».
- Ouvre Outils > Type de carte > Gestionnaire de cartes, cherche esp8266 et installe le paquet ESP8266 Community.
- Dans le menu Outils > Type de carte, choisis NodeMCU 1.0 (ESP-12E Module). Pour une Wemos D1 Mini, choisis plutôt LOLIN(WEMOS) D1 R2 & mini.
- Branche la carte avec un câble de données et sélectionne son port dans Outils > Port. Si aucun port n'apparaît, installe le pilote CH340 pour les cartes V3 ou le pilote CP2102 pour les cartes V2.
- Laisse Upload Speed à 115200 ; une fois les téléversements fiables, tu peux passer à 921600 pour aller plus vite.
Premier programme : faire clignoter la LED intégrée
Sur le NodeMCU, le module ESP-12E porte une LED bleue reliée au GPIO 2 (D4) ; les cartes V2 (Amica) ont une seconde LED sur D0. Ces LED fonctionnent en logique inversée : elles s'allument quand la broche est à LOW et s'éteignent à HIGH. Dans le cœur Arduino, la constante LED_BUILTIN est déjà définie à 2 :
1// NodeMCU dahili LED'i: GPIO2 (D4), ters mantık / onboard LED: GPIO2 (D4), inverted logic
2
3void setup() {
4 pinMode(LED_BUILTIN, OUTPUT);
5}
6
7void loop() {
8 digitalWrite(LED_BUILTIN, LOW); // LOW = yanar / LOW = on
9 delay(500);
10 digitalWrite(LED_BUILTIN, HIGH); // HIGH = söner / HIGH = off
11 delay(500);
12}Se connecter au Wi-Fi
Le vrai point fort de l'ESP8266, c'est le Wi-Fi. Le programme ci-dessous connecte la carte à ton réseau domestique en mode station et affiche dans le moniteur série l'adresse IP attribuée par la box ainsi que la force du signal. S'il ne parvient pas à se connecter en 20 secondes, il arrête d'attendre et affiche un avertissement. Remplace le nom du réseau et le mot de passe par les tiens, puis ouvre le moniteur série à 115200 bauds :
1#include <ESP8266WiFi.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 Serial.println();
9 WiFi.mode(WIFI_STA); // istemci modu / station mode
10 WiFi.begin(ssid, password);
11 Serial.print("Baglaniyor / connecting");
12 unsigned long start = millis();
13 while (WiFi.status() != WL_CONNECTED) {
14 delay(500);
15 Serial.print('.');
16 if (millis() - start > 20000) { // 20 sn'de bağlanamazsa / give up after 20 s
17 Serial.println("\nBaglanamadi, ag adini ve sifreyi kontrol et / failed, check SSID and password");
18 return;
19 }
20 }
21 Serial.println();
22 Serial.print("IP: ");
23 Serial.println(WiFi.localIP()); // modemin verdiği adres / address given by the router
24 Serial.print("Sinyal / RSSI: ");
25 Serial.print(WiFi.RSSI()); // -50 iyi, -80 zayıf / -50 good, -80 weak
26 Serial.println(" dBm");
27}
28
29void loop() {
30}| Valeur RSSI | Qualité du signal | À quoi t'attendre |
|---|---|---|
| -30 à -50 dBm | Excellente | Connexion stable et rapide |
| -50 à -67 dBm | Bonne | Suffisante pour un serveur web et des données de capteurs |
| -67 à -80 dBm | Faible | Coupures occasionnelles, pages lentes à charger |
| Moins de -80 dBm | Très faible | La connexion peut échouer ; rapproche la carte de la box |
Piloter une LED depuis ton téléphone : un serveur web simple
Transformons maintenant le NodeMCU en petit serveur web. Branche une LED sur la broche D1 (GPIO 5) avec une résistance de 220 Ω : la patte longue de la LED va à D1 via la résistance, la patte courte à GND. Pour une LED rouge, cette résistance donne un courant de (3,3 V − 2 V) / 220 Ω ≈ 6 mA, bien en dessous de la limite de la broche ; pour calculer la valeur adaptée à ta LED, utilise le Calculateur de résistance pour LED. Après le téléversement, ouvre l'adresse affichée dans le moniteur série dans le navigateur d'un téléphone connecté au même Wi-Fi.
1#include <ESP8266WiFi.h>
2#include <ESP8266WebServer.h>
3#include <ESP8266mDNS.h>
4
5const char* ssid = "AgAdi"; // Wi-Fi adın / your Wi-Fi name
6const char* password = "Sifre123"; // Wi-Fi şifren / your Wi-Fi password
7
8const int LED_PIN = D1; // GPIO5, 220 ohm direnç ile LED / LED through a 220 ohm resistor
9bool ledOn = false;
10
11ESP8266WebServer server(80);
12
13void handleRoot() {
14 String html = "<!DOCTYPE html><html><head><meta charset='utf-8'>"
15 "<meta name='viewport' content='width=device-width,initial-scale=1'>"
16 "<title>NodeMCU</title></head>"
17 "<body style='font-family:sans-serif;text-align:center'>"
18 "<h1>NodeMCU LED</h1><p>LED: <b>";
19 html += ledOn ? "ACIK / ON" : "KAPALI / OFF";
20 html += "</b></p><p>A0: ";
21 html += analogRead(A0); // 0-1023 arası analog değer / analog value 0-1023
22 html += "</p><p><a href='/on'><button>AC / ON</button></a> "
23 "<a href='/off'><button>KAPAT / OFF</button></a></p></body></html>";
24 server.send(200, "text/html", html);
25}
26
27void setLed(bool on) {
28 ledOn = on;
29 digitalWrite(LED_PIN, on ? HIGH : LOW);
30 server.sendHeader("Location", "/"); // ana sayfaya yönlendir / redirect to the main page
31 server.send(303, "text/plain", "");
32}
33
34void setup() {
35 pinMode(LED_PIN, OUTPUT);
36 digitalWrite(LED_PIN, LOW);
37 Serial.begin(115200);
38 WiFi.mode(WIFI_STA);
39 WiFi.begin(ssid, password);
40 while (WiFi.status() != WL_CONNECTED) {
41 delay(500);
42 Serial.print('.');
43 }
44 Serial.println();
45 Serial.print("Tarayicida ac / open in browser: http://");
46 Serial.println(WiFi.localIP());
47
48 if (MDNS.begin("nodemcu")) { // http://nodemcu.local adresi / address http://nodemcu.local
49 MDNS.addService("http", "tcp", 80);
50 }
51
52 server.on("/", handleRoot);
53 server.on("/on", []() { setLed(true); });
54 server.on("/off", []() { setLed(false); });
55 server.onNotFound([]() { server.send(404, "text/plain", "Bulunamadi / not found"); });
56 server.begin();
57}
58
59void loop() {
60 server.handleClient(); // gelen istekleri işle / handle incoming requests
61 MDNS.update();
62}| Partie du code | À quoi elle sert |
|---|---|
| ESP8266WebServer server(80) | Crée un serveur sur le port 80 (HTTP) |
| server.on("/on", ...) | Allume la LED quand le navigateur demande /on |
| sendHeader("Location", "/") et send(303) | Après l'action, redirige le navigateur vers la page principale ; recharger la page ne renvoie donc pas la commande |
| analogRead(A0) | Affiche la valeur de A0 sur la page ; tu peux y brancher une LDR ou un potentiomètre |
| MDNS.begin("nodemcu") | Permet de joindre l'appareil par le nom nodemcu.local au lieu de son IP |
| server.handleClient() | Doit être appelée en continu dans loop ; elle traite les requêtes entrantes |
Si la page ne s'ouvre pas, vérifie que ton téléphone est connecté au même réseau Wi-Fi que le NodeMCU, et non à un réseau invité ou aux données mobiles. Le nom nodemcu.local fonctionne généralement sur les ordinateurs et les iPhone ; certains téléphones Android ne gèrent pas le mDNS, il te faudra alors l'adresse IP. Si tu branches un module relais à la place de la LED, le même code te permet de commander une vraie lampe ; tous les détails sont dans Qu'est-ce qu'un module relais ?.
Mode point d'accès (AP) : connexion sans box
S'il n'y a pas de Wi-Fi à proximité, le NodeMCU peut créer son propre réseau. En mode point d'accès, tu connectes ton téléphone directement au réseau NodeMCU-AP, et la carte répond généralement à l'adresse 192.168.4.1. Ce mode est idéal pour un système d'arrosage au jardin ou un appareil de mesure utilisé sur le terrain. Pour combiner le serveur web précédent avec ce mode, il suffit d'utiliser les lignes softAP à la place des lignes WiFi.begin ; le mode WIFI_AP_STA assure les deux rôles à la fois. Le mot de passe doit compter au moins 8 caractères, sinon le réseau n'est pas créé.
1#include <ESP8266WiFi.h>
2
3void setup() {
4 Serial.begin(115200);
5 WiFi.mode(WIFI_AP); // kendi ağını kur / create its own network
6 bool ok = WiFi.softAP("NodeMCU-AP", "12345678"); // ad ve en az 8 karakter şifre / name and 8+ char password
7 Serial.println(ok ? "AP hazir / AP ready" : "AP hatasi / AP error");
8 Serial.print("IP: ");
9 Serial.println(WiFi.softAPIP()); // genellikle 192.168.4.1 / usually 192.168.4.1
10}
11
12void loop() {
13 Serial.print("Bagli cihaz / stations: ");
14 Serial.println(WiFi.softAPgetStationNum());
15 delay(3000);
16}L'ESP8266 avec MicroPython
En plus du langage Arduino, le NodeMCU peut aussi se programmer en MicroPython. Une fois le firmware MicroPython flashé sur la carte avec esptool, tu exécutes du code Python directement depuis un éditeur comme Thonny. Comme la mémoire de l'ESP8266 est limitée, les gros programmes MicroPython peuvent provoquer des erreurs de mémoire ; pour des projets Wi-Fi et capteurs simples, c'est néanmoins très pratique. Attention : en MicroPython, le numéro de broche est le GPIO, pas le repère D :
1import network, time
2from machine import Pin
3
4led = Pin(2, Pin.OUT) # D4 = GPIO2, dahili LED / onboard LED
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()) # ters mantık: 0 = yanar / inverted: 0 = on
15 time.sleep(0.5)ESP8266 ou ESP32 ?
| Caractéristique | ESP8266 (NodeMCU) | ESP32 (DevKit) |
|---|---|---|
| Processeur | Un cœur, 80/160 MHz | Deux cœurs, 240 MHz |
| RAM | Environ 80 Ko de RAM utilisateur | 520 Ko |
| Wi-Fi | 802.11 b/g/n, 2,4 GHz | 802.11 b/g/n, 2,4 GHz |
| Bluetooth | Aucun | Classic et BLE |
| GPIO | Environ 11 | Environ 34 (certaines en entrée seule) |
| Entrée analogique | 1 canal, 10 bits | 18 canaux, 12 bits |
| PWM | Logicielle | PWM matérielle à 16 canaux (LEDC) |
| I2C et UART | I2C logiciel, 1 UART complet plus un UART1 en émission seule | 2 I2C matériels, 3 UART |
| Broches tactiles et CNA | Aucun | 10 broches tactiles, 2 CNA |
| Prix | Moins cher | Un peu plus cher |
En résumé, l'ESP8266 reste largement suffisant pour envoyer les données d'un capteur sur internet, commander un relais depuis ton téléphone ou servir une page web simple, et il coûte moins cher. Pour les nouveaux projets qui demandent du Bluetooth, de nombreuses entrées analogiques, une caméra, beaucoup de puissance de calcul ou plusieurs tâches en parallèle, l'ESP32 est le meilleur choix. Le code se transpose facilement : il suffit souvent d'écrire WiFi.h au lieu de ESP8266WiFi.h, WebServer.h au lieu de ESP8266WebServer.h et ESPmDNS.h au lieu de ESP8266mDNS.h, de supprimer la ligne MDNS.update() (absente sur l'ESP32) et d'utiliser les numéros GPIO au lieu des repères de carte comme D1. Pour en savoir plus, lis Qu'est-ce que l'ESP32 ? et Arduino ou ESP32 ?.
Alimentation et sommeil profond
Le NodeMCU s'alimente en 5 V par l'USB ou la broche VIN, et le régulateur de la carte abaisse cette tension à 3,3 V. Le pic de 170 mA pendant l'émission Wi-Fi peut faire chuter la tension sur un port USB faible ou avec un câble fin et provoquer un redémarrage spontané de la carte ; utilise donc un bon câble et un adaptateur d'au moins 1 A. Pour les projets sur batterie, ESP.deepSleep() endort la puce à environ 20 µA ; pour qu'elle se réveille à la fin de la minuterie, tu dois relier la broche D0 (GPIO 16) à la broche RST. Cependant, le convertisseur USB-série et le régulateur de la carte continuent de consommer pendant le sommeil, c'est pourquoi un module ESP-12 nu ou une carte basse consommation donnent de meilleurs résultats pour une longue autonomie. Pour estimer l'autonomie, utilise le Calculateur d'autonomie de batterie.
Idées de projets avec le NodeMCU
- Thermomètre Wi-Fi : Affiche la température et l'humidité mesurées par un DHT11 sur une page que tu ouvres sur ton téléphone.
- Prise connectée : Allume et éteins une lampe avec un module relais et un bouton sur une page web.
- Alerte d'arrosage : Branche un capteur d'humidité du sol sur A0 et affiche une alerte sur la page quand la terre s'assèche.
- Ruban LED Wi-Fi : Choisis depuis ton téléphone la couleur et l'effet d'un ruban WS2812B.
- Horloge internet : Récupère l'heure auprès d'un serveur NTP et affiche-la sur un écran LCD I2C.
- Alarme de mouvement : Envoie un message Telegram quand un capteur PIR détecte un mouvement.
Erreurs fréquentes et solutions
| Symptôme | Cause probable | Solution |
|---|---|---|
| Aucun port n'apparaît | Câble de charge uniquement ou pilote manquant | Utilise un câble de données ; installe le pilote CH340 ou CP2102 |
| « Failed to connect to ESP8266: Timed out waiting for packet header » | La carte n'a pas pu passer en mode téléversement | Maintiens FLASH, appuie sur RST et relâche-le, relâche FLASH, puis relance le téléversement |
| La carte ne démarre pas ou redémarre sans cesse | Un circuit sur D3, D4 ou D8 perturbe les niveaux de démarrage | Déplace ce circuit sur des broches sûres comme D5, D6 ou D7 |
| Caractères bizarres dans le moniteur série | Mauvaise vitesse en bauds | Choisis la même vitesse que dans le code ; les messages de démarrage sont à 74880 bauds |
| Pas de connexion au Wi-Fi | Réseau 5 GHz, mauvais mot de passe ou signal faible | Utilise un réseau 2,4 GHz, vérifie majuscules et minuscules, regarde le RSSI |
| La LED reste éteinte et le moniteur série se tait | 1 écrit au lieu de D1 dans le code (GPIO 1 = TX) | Utilise le repère D1 ou le GPIO 5 dans ton code |
| Erreur « Soft WDT reset » | Une boucle dans loop() qui dure trop longtemps | Ajoute yield() ou delay(1) dans les longues boucles ; les deux laissent tourner les tâches Wi-Fi de fond et le watchdog |
Le NodeMCU ESP8266 est le moyen le plus économique de transposer ce que tu as appris avec Arduino dans le monde sans fil : en quelques lignes de code, il rejoint ton réseau domestique et te permet de créer des appareils pilotés depuis ton téléphone. Dans l'application BlueGrays, tu trouveras des projets sans fil sur ESP32, comme la connexion Wi-Fi, le serveur web, le WebSocket, l'horloge NTP et le mDNS, avec schémas de câblage et code pas à pas, et tu pourras facilement adapter la même logique à ton NodeMCU.
Questions fréquentes
Le NodeMCU et l'ESP8266, est-ce la même chose ?
ESP8266 est le nom de la puce Wi-Fi fabriquée par Espressif. Le NodeMCU est une carte de développement qui ajoute au module ESP-12E portant cette puce une connexion USB, un régulateur et des broches adaptées à la breadboard. En bref, tout NodeMCU est une carte ESP8266, mais toute carte ESP8266 n'est pas un NodeMCU ; l'ESP-01 et la Wemos D1 Mini utilisent la même puce.
Le NodeMCU fonctionne-t-il en 5 V ?
La carte peut être alimentée en 5 V par l'USB ou la broche VIN, et le régulateur abaisse cette tension à 3,3 V. En revanche, les broches GPIO fonctionnent en 3,3 V et ne tolèrent pas officiellement le 5 V. Branche les signaux 5 V via un pont diviseur de tension ou un convertisseur de niveau.
Quel GPIO correspond à D1 sur le NodeMCU ?
D1 est le GPIO 5, et c'est la broche SCL par défaut de l'I2C. Les autres correspondances courantes sont D2 = GPIO 4, D4 = GPIO 2, D5 = GPIO 14, D6 = GPIO 12, D7 = GPIO 13 et D8 = GPIO 15. Dans l'Arduino IDE, tu peux écrire directement D1 dans ton code ; en MicroPython, tu dois utiliser le numéro GPIO.
L'ESP8266 peut-il se connecter au Wi-Fi 5 GHz ?
Non, l'ESP8266 ne gère que les réseaux 802.11 b/g/n de la bande 2,4 GHz. Vérifie que la bande 2,4 GHz de ta box est activée ; si les deux bandes partagent le même nom, donner un nom distinct à la bande 2,4 GHz règle souvent les problèmes de connexion.
Quelle est la différence entre le NodeMCU V2 et le V3 ?
La V2 (Amica) est plus étroite, utilise un convertisseur USB-série CP2102 et laisse des trous libres des deux côtés de la breadboard. La V3 (LoLin) est plus large et utilise un CH340G. Les broches, le processeur et le code sont identiques ; seuls la taille et le pilote USB à installer changent.
L'ESP8266 a-t-il le Bluetooth ?
Non, l'ESP8266 n'a pas de matériel Bluetooth ; il ne gère que le Wi-Fi. Pour les projets qui demandent du Bluetooth ou du BLE, utilise un ESP32 ou ajoute à ta carte un module Bluetooth séparé comme le HC-05.
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.

Clignotement de la LED interne de l'ESP32
Faire clignoter la LED bleue intégrée à l'ESP32 DevKit V1. Aucun composant externe n'est nécessaire ! Le premier projet que vous devriez essayer lorsque vous achetez un ESP32. Le GPIO 2 est connecté à la LED interne.

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, puis allumer et éteindre la LED co

Compteur ESP32 WebSocket (2 boutons + écran LCD + affichage Web en temps réel)
Dans ce projet, deux boutons reliés à l'ESP32 (GPIO 5 incrémente, GPIO 4 décrémente) modifient un compteur. La valeur se met à jour instantanément sur un écran LCD I2C 16x2 et, grâce au support WebSocket d'ESPAsyncWebServer, dans tous les navigateurs connectés sans recharger la page. Au lieu du polling HTTP, une seule connexion persistante est utilisée et l'ESP32 envoie la nouvelle valeur à tous avec ws.textAll().

ESP32 mDNS : accès à l'appareil via bluegrays-esp.local (avec écran LCD)
Dans ce projet, en ajoutant un service mDNS (Multicast DNS) à l'ESP32, nous permettons d'accéder à l'appareil via un nom d'hôte lisible, tel que `bluegrays-esp.local`, plutôt qu'à l'aide d'une adresse IP. Même si l'adresse IP attribuée par le DHCP venait à changer, vous pourrez toujours accéder à l'appareil sous le même nom. En exécutant également un petit serveur web sur l'appareil, nous envoyons des commandes de contrôle des LED depuis un navigateur via l'adresse `http://bluegrays-esp.local/`.

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.

Mise à jour OTA de l'ESP32 — Installation sans fil du firmware (avec écran LCD)
Dans ce projet, vous allez apprendre à installer un nouveau firmware sur l'ESP32 via Wi-Fi, sans câble USB. Grâce à la bibliothèque `ArduinoOTA`, l'ESP32 devient visible sur le réseau et apparaît automatiquement sous le nom `bluegrays-ota` dans l'onglet « Network port » de l'IDE Arduino. La première installation s'effectue via USB, puis toutes les mises à jour se font sans fil — une fonctionnalité essentielle pour les appareils sur le terrain. L'écran LCD I2C affiche l'état du Wi-Fi, l'adresse I
Autres articles
Découvre le brochage du NodeMCU ESP8266, carte populaire et bon marché, installe-le dans l'Arduino IDE, connecte-le au Wi-Fi et crée pas à pas un serveur web qui allume une LED depuis ton téléphone ; avec ses différences face à l'ESP32.

