La carte WeMos D1 met un ESP8266 avec WiFi sur un circuit imprimé au format Arduino Uno. Vous branchez le même câble micro-USB, vous programmez depuis le même IDE Arduino, mais votre montage accède au réseau sans module supplémentaire : la carte se connecte au WiFi, sert des pages web, envoie des relevés et se commande à distance.
Elle embarque un module ESP-12 (ESP-12E ou ESP-12F selon les lots) avec 4 Mo de mémoire flash, un convertisseur USB-série CH340, un bouton RESET et son antenne WiFi imprimée sur la carte. Le format Uno (68,6 × 53,4 mm) la rend compatible avec de nombreux shields Arduino, à condition de tenir compte de ses 3,3 V — c’est le point à ne jamais oublier.
Ce que cette carte change par rapport à une Uno
- Le WiFi est intégré — pas de module externe, pas de câblage supplémentaire : l’ESP8266 gère lui-même la connexion 802.11 b/g/n en 2,4 GHz.
- Le processeur est plus rapide — un Tensilica L106 32 bits cadencé à 80 MHz, réglable à 160 MHz.
- Elle coûte le prix d’une carte simple et remplace à la fois la carte et le module de communication dans la plupart des projets.
- Elle se programme de deux façons — par micro-USB comme une Arduino, ou par le réseau (mise à jour OTA) après la première mise en service.
- Elle a ses propres limites — 11 entrées-sorties seulement, une seule entrée analogique, et une logique en 3,3 V qui ne pardonne pas les 5 V.
Caractéristiques techniques
| Microcontrôleur | ESP8266EX, Tensilica L106 32 bits |
|---|---|
| Module radio | ESP-12 (ESP-12E ou ESP-12F selon le lot), antenne imprimée sur la carte |
| Fréquence | 80 MHz, réglable à 160 MHz |
| Mémoire flash | 4 Mo |
| Mémoire vive | 64 Ko pour les instructions, 96 Ko de données |
| Tension de fonctionnement | 3,3 V — logique non tolérante au 5 V |
| Entrées-sorties numériques | 11 broches (D0 à D8), toutes avec PWM, I2C, interruption et one-wire, sauf D0 |
| Entrée analogique | 1 seule (A0), convertisseur 10 bits, 3,2 V maximum en entrée |
| Connecteur de programmation | Micro-USB, convertisseur USB-série CH340 embarqué |
| Alimentation | Micro-USB en 5 V, jack DC, ou broche 5V — régulateur 3,3 V embarqué |
| Sorties d’alimentation | 5V et 3V3, plus une masse (GND) sur chaque rangée de broches |
| Boutons | Un bouton RESET ; selon le lot, un second bouton FLASH pour forcer le mode téléversement |
| Voyant | Une LED bleue intégrée, reliée à la broche D4 |
| Dimensions | 68,6 × 53,4 mm — gabarit et entraxes d’une Arduino Uno |
Brochage : la correspondance à retenir
La carte est sérigraphiée comme un ESP8266, pas comme une Uno : les broches portent les noms D0 à D8, et chacune correspond à une sortie précise du processeur. Ce tableau est la clé du montage — c’est lui qui évite les erreurs de câblage.
D0 | GPIO16 — PWM, I2C et interruptions indisponibles sur cette broche. À utiliser pour une sortie simple. |
|---|---|
D1 | GPIO5 — broche SCL du bus I2C. |
D2 | GPIO4 — broche SDA du bus I2C. |
D3 | GPIO0 — résistance de tirage vers le haut. Doit rester haute au démarrage : y câbler un bouton vers la masse place la carte en mode téléversement. |
D4 | GPIO2 — résistance de tirage vers le haut, et LED bleue intégrée. Cette LED s’allume quand la broche est à l’état bas. |
D5 | GPIO14 — horloge du bus SPI. |
D6 | GPIO12 — MISO du bus SPI. |
D7 | GPIO13 — MOSI du bus SPI. |
D8 | GPIO15 — résistance de tirage vers le bas. Doit être basse au démarrage, sinon la carte ne démarre pas. |
A0 | Entrée analogique, 3,2 V maximum. La dépasser abîme la broche définitivement. |
TX / RX | Liaison série matérielle, utilisée par le port USB. À laisser libres pendant la programmation. |
3V3 | Sortie 3,3 V pour alimenter un petit capteur. Quelques dizaines de milliampères seulement. |
5V | Alimentation en entrée quand la carte est alimentée autrement que par l’USB. À ne jamais relier à une broche de signal. |
RST | Réinitialisation, active à l’état bas. |
Trois broches demandent de l’attention au démarrage : D3 et D4 doivent être hautes, D8 doit être basse, sinon la carte reste bloquée en mode téléversement. Évitez donc d’y souder des composants qui tirent la ligne dans le mauvais sens — préférez D5, D6, D7, D1 ou D2 pour vos capteurs et vos LED.
Alimenter la carte
Trois solutions, au choix :
- Par le câble micro-USB — le cas le plus simple, 5 V fournis par l’ordinateur ou par un chargeur USB. À préférer pendant la mise au point.
- Par le jack d’alimentation — la carte accepte une tension d’entrée plus élevée que l’USB grâce à son régulateur de tension à découpage. Restez dans la plage raisonnable de 9 à 12 V et vérifiez la sérigraphie du régulateur de votre exemplaire avant de monter plus haut : les clones ne sont pas tous identiques sur ce point.
- Par la broche 5V — pour une alimentation stabilisée extérieure, en reliant aussi la masse. Une alimentation 5 V de 2 A convient pour une carte avec quelques capteurs et un relais.
Un point de vigilance : la logique est en 3,3 V. Une sortie d’Arduino Uno à 5 V branchée directement sur une broche de la carte l’abîme. Pour dialoguer avec un montage en 5 V (un shield, un capteur, un autre microcontrôleur), interposez un adaptateur de niveau.
Programmer la carte depuis l’IDE Arduino
Trois étapes, une seule fois :
- Installer le cœur ESP8266. Dans les Préférences de l’IDE, ajoutez le dépôt de cartes
http://arduino.esp8266.com/stable/package_esp8266com_index.json, puis installez la famille « esp8266 » depuis le gestionnaire de cartes. - Choisir la bonne carte. La référence « LOLIN(WEMOS) D1 R2 et mini » couvre les deux formats ; la carte apparaît ensuite comme n’importe quelle autre sur le port USB.
- Installer le pilote CH340 si le port n’apparaît pas. La carte se présente comme
/dev/ttyUSB0sous Linux, un portCOMsous Windows, et un portwchusbserialsous macOS.
Si le téléversement échoue alors que le port est bien détecté, essayez de maintenir le bouton FLASH pendant le début de la compilation — sur certains modules, l’entrée automatique en mode téléversement n’est pas fiable.
Mini-projet : une page web servie par la carte
Le projet le plus parlant pour cette carte, et il ne demande presque rien : la carte se connecte à votre réseau WiFi, puis répond aux adresses /on et /off pour allumer et éteindre une LED. Depuis un téléphone sur le même réseau, l’ordre passe en une seconde.
Ce qu’il faut
| La carte | Cette carte WeMos D1 — le WiFi et le microcontrôleur y sont déjà |
|---|---|
| Le voyant | LED 5mm Rouge |
| La protection de la LED | Résistance 1/4w 220 ohm |
| Les liaisons | 10 × fil mâle-femelle — les broches de la carte sont mâles |
| L’alimentation | Un simple câble micro-USB suffit pour tout ce montage |
Vous pouvez aussi ne rien câbler du tout au début : la carte porte une LED bleue reliée à la broche D4. Elle s’allume quand la broche est à l’état bas, ce qui inverse simplement le programme (LOW pour allumer).
Le câblage
| LED (patte longue) | → carte D5, en passant par la résistance de 220 ohms |
|---|---|
| LED (patte courte) | → carte GND |
La résistance n’est pas facultative : sans elle, la LED reçoit trop de courant et grille en quelques secondes.
Le programme
À copier dans l’IDE Arduino, puis à téléverser. Remplacez le nom de votre réseau et son mot de passe avant de compiler :
/*
* Mini serveur web - carte WeMos D1 avec WiFi
* Carte : WeMos D1 (coeur ESP8266 pour l’IDE Arduino)
* Montage : une LED sur D5, en serie avec une resistance de 220 ohms
*
* Composants, brochage et fiche complete : www.marocproduits.com
*/
#include "ESP8266WiFi.h"
#include "ESP8266WebServer.h"
const char* NOM_DU_RESEAU = "votre_reseau";
const char* MOT_DE_PASSE = "votre_mot_de_passe";
const byte PIN_LED = D5; // LED externe, via une resistance de 220 ohms
// Le serveur ecoute sur le port 80, comme un site classique.
ESP8266WebServer serveur(80);
void pageAccueil() {
serveur.send(200, "text/plain", "Carte WeMos D1 en ligne. Utilisez /on ou /off.");
}
void allumer() {
digitalWrite(PIN_LED, HIGH);
serveur.send(200, "text/plain", "LED allumee");
}
void eteindre() {
digitalWrite(PIN_LED, LOW);
serveur.send(200, "text/plain", "LED eteinte");
}
void setup() {
pinMode(PIN_LED, OUTPUT);
digitalWrite(PIN_LED, LOW);
Serial.begin(115200);
Serial.println();
Serial.print("Connexion au reseau WiFi");
// La carte se comporte comme un client du reseau, pas comme un point
// d’acces : elle a besoin du nom et du mot de passe de votre box.
WiFi.mode(WIFI_STA);
WiFi.begin(NOM_DU_RESEAU, MOT_DE_PASSE);
// Tant que la connexion n est pas etablie, on affiche un point
// toutes les 500 ms pour voir ou en est la carte.
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.print("Connecte. Ouvrez dans le navigateur : http://");
Serial.println(WiFi.localIP());
// Les adresses que la carte sait servir.
serveur.on("/", pageAccueil);
serveur.on("/on", allumer);
serveur.on("/off", eteindre);
serveur.begin();
}
void loop() {
// A chaque appel, la carte repond et passe au suivant.
serveur.handleClient();
}Comment ça marche
- Le moniteur série affiche l’adresse de la carte. Ouvrez-le à 115200 bauds après le téléversement : la carte indique l’adresse IP qu’elle a reçue de votre box, par exemple
192.168.1.42. C’est cette adresse qu’il faut taper dans le navigateur, suivie de/onou/off. - La connexion WiFi se fait une fois, dans
setup(). Le programme attend la connexion avant d’ouvrir le serveur : inutile de prévoir un délai fixe, la boucle d’attente s’en charge. - Le serveur est non bloquant.
handleClient()rend la main tout de suite : vous pouvez ajouter un capteur lu toutes les secondes dans la même boucle sans que le serveur cesse de répondre. - La LED est commandée par le texte de l’adresse. Chaque adresse est associée à une fonction, et la fonction écrit sur
PIN_LEDavant d’envoyer sa réponse.
Pour aller plus loin
- Un vrai bouton dans la page — servez du HTML à la place du texte simple pour obtenir une page avec deux boutons, plus agréable au téléphone.
- Un relevé automatique — ajoutez un capteur DHT22 sur
D2et renvoyez la température en texte, à consulter depuis n’importe quel navigateur du réseau. - Une commande qui survit aux coupures — ajoutez un module 1 relais 5v pour piloter une vraie lampe, en gardant le circuit de puissance séparé du montage.
- Une adresse fixe — réservez l’adresse de la carte dans votre box pour éviter qu’elle change après un redémarrage.
Variante : deux cartes dans le même projet
Si votre montage demande plus de broches, plus de vitesse ou deux bus série, passez à un ESP32 WROOM dual core : le WiFi et le Bluetooth sont intégrés, la logique reste en 3,3 V et le code Arduino se transpose presque sans changement. À l’inverse, si vous voulez la même famille dans un format plus petit, sans jack ni entraxes de Uno, la carte wifi NodeMCU V3 Lua ESP8266 offre deux rangées de broches sur un circuit plus compact.
Pour un projet qui doit tenir dans le temps, la sonde DS18B20 est un bon compagnon de cette carte : elle fonctionne en 3,3 V et se relève avec un seul fil de données.
Questions fréquentes
Quelle différence avec la WeMos D1 mini ?
Le processeur et le WiFi sont identiques, la forme change. La D1 mini est une petite carte à une seule rangée de broches, sans jack d’alimentation — pratique pour un montage léger et pour ses shields empilables. Celle de cette page adopte le gabarit d’une Uno : plus encombrante, mais elle accepte de nombreux shields Arduino et se pose directement sur une plaque ou dans un boîtier au format Uno.
Puis-je réutiliser un programme écrit pour une Arduino Uno ?
La logique, oui ; les numéros de broches, non. Sur une Uno, 2 désigne la deuxième broche numérique ; ici, c’est D2 qu’il faut écrire, et cette broche correspond à une autre sortie du processeur. Reprenez donc chaque broche du tableau de brochage plutôt que de recopier les numéros. Sur ce modèle, les positions du gabarit Uno ne correspondent pas une à une aux broches numériques de l’ESP8266.
Est-ce que tous les shields Arduino Uno fonctionnent ?
Beaucoup fonctionnent, mais aucun n’est garanti. Trois raisons de vérifier avant de les empiler : la carte travaille en 3,3 V et certains shields pilotent en 5 V, le brochage des signaux ne recouvre pas celui d’une Uno, et l’alimentation du shield consomme parfois plus que ce que la carte peut fournir. Un shield d’écran ou de prototypage sans électronique active passe généralement sans problème.
Le WiFi ne se connecte pas, que vérifier ?
Dans l’ordre : le réseau doit être en 2,4 GHz, l’ESP8266 ne connaît pas la bande 5 GHz — c’est de loin la cause la plus fréquente. Vérifiez ensuite le nom du réseau et le mot de passe, exacts et sans accent. Si votre box sépare les deux bandes sous un même nom, attribuez un nom distinct au réseau 2,4 GHz. Enfin, éloignez la carte d’un boîtier métallique, l’antenne imprimée n’aime pas être enfermée.
Pourquoi la carte s’arrête-t-elle pendant mes essais ?
Deux causes classiques. Un composant câblé sur D3, D4 ou D8 qui empêche la carte de démarrer correctement : déplacez-le sur une broche libre. Un montage qui tire plus de courant que l’alimentation ne peut en fournir : un relais ou un moteur branché directement sur la sortie 3V3 fait redémarrer la carte. Alimentez ces modules par une source séparée, en reliant les masses.
Que signifie la LED bleue qui clignote au démarrage ?
C’est la LED reliée à D4 que le programme de démarrage interne allume et éteint. Elle clignote aussi pendant le téléversement. Une fois votre programme en place, l’état de cette LED dépend uniquement de votre code.
Peut-on la programmer sans câble USB ?
Oui, après une première mise en service réussie. La mise à jour par le réseau (OTA pour « over the air ») se fait depuis l’IDE Arduino par le WiFi, à condition d’avoir prévu la fonction dans votre programme et de connaître l’adresse de la carte sur le réseau.
À combiner avec
Pour un premier projet complet sans réfléchir au câblage, prenez la carte avec une plaque d’essai 400 points et des fils mâle-femelle : les broches de la carte sont mâles, ces fils se clippent directement dessus. Ajoutez un capteur de mouvement PIR dont la sortie est déjà en 3,3 V, ou un DHT22 pour publier température et humidité sur une page web.
Pour une alimentation fixe et durable, une alimentation 5v 2A alimente la carte et ses capteurs par la broche 5V, ou un câble alimentation 9v la branche sur le jack. Et comme le gabarit est celui d’une Uno, le boîtier Uno R3 peut l’accueillir, en vérifiant les découpes pour le connecteur USB et le jack d’alimentation. Un afficheur LCD 1602 I2C se branche enfin en deux fils sur le bus I2C, D1 et D2.










