Développement ESP8266 · 8 min read · Jan 20, 2026
Développer des applications réseau pour ESP8266 en utilisant Mongoose sous Linux
Discutons de la façon de commencer à développer des applications réseau pour la puce ESP8266 en utilisant le serveur Web embarqué Mongoose sous Linux. J’utiliserai Ubuntu, mais tout cela peut être facilement adapté à n’importe quelle distribution Linux.
Qui est qui
Puisque vous avez commencé à lire cet article, je suppose que vous connaissez Linux, ESP8266 et Mongoose. Donc, juste une courte introduction.
ESP8266
Puce peu coûteuse avec WiFi intégré, développée par Expressif. Si vous souhaitez plonger dans plus de détails, consultez le site officiel.
Mongoose
Mongoose est une bibliothèque multi-protocole complète avec un cœur de moins de 40kB développée par Cesanta. Trouvez plus d’informations à ce sujet sur le site de Cesanta.
Linux
Vraiment ? :-)
Connexion de l’ESP8266 à votre ordinateur
Ok, nous devons d’abord connecter la puce ESP8266 à votre ordinateur. Vous pouvez le faire de plusieurs manières.
NodeMCU
Si vous avez un module NodeMCU, avec un convertisseur UART-USB intégré, il vous suffit de connecter le module à l’ordinateur via USB. KISS !
Connexion avec un convertisseur UART-USB externe
Si votre module ESP n’a pas de convertisseur UART-USB interne, vous avez besoin d’un externe. Il y en a des tonnes - il suffit de googler.
Sélectionnez-en un qui fonctionne avec Linux (en gros, la plupart d’entre eux) et qui a une broche de 3,3V et rappelez-vous : la plupart des convertisseurs UART-USB ont des broches pour 3,3V et 5V, mais vous ne devez pas connecter l’ESP aux broches de 5V. Cet appareil n’est pas tolérant à la tension et il est possible de griller votre module.
Connectez maintenant (ESP -> Convertisseur) :
VCC -> 3.3V
GND -> GND
RX0 -> TX (pas RX)
TX0 -> RX
CH_PD -> 3.3V
Connexion avec Arduino
Si vous n’avez pas de convertisseur UART-USB, mais que vous avez un Arduino avec des broches de 3,3V, vous pouvez facilement l’utiliser pour connecter l’ESP :
- Connectez l’Arduino à l’ordinateur via USB
- Connectez le RESET de l’Arduino à son GND : cela est nécessaire pour désactiver le processeur hôte, car nous avons seulement besoin du module UART-USB
- Connectez l’ESP (ESP -> Arduino) 1. VCC -> 3.3V
- GND -> GND
- RX0 -> RX0 (pas TX)
- TX0 -> TX
- CH_PD -> 3.3V
Vérification de la connexion
Si votre connexion est correcte, l’ESP devrait apparaître comme un nouvel appareil tty. En général, NodeMCU et ESP connectés via un convertisseur UART-USB apparaissent comme /dev/ttyUSBx (x = 0, 1, 2, etc.) et la version Arduino apparaît comme /dev/ttyACMx (x = 0, 1, 2, etc.)
Vous pouvez utiliser la commande dmesg | grep usb pour trouver votre appareil.
Par exemple, après la connexion de NodeMCU, vous verrez quelque chose comme ça :
[ 1496.765417] usb 2-3.3: new full-speed USB device number 15 using xhci_hcd[ 1496.867729] usb 2-3.3: New USB device found, idVendor=10c4, idProduct=ea60[ 1496.867736] usb 2-3.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3[ 1496.867740] usb 2-3.3: Product: CP2102 USB to UART Bridge Controller[ 1496.867743] usb 2-3.3: Manufacturer: Silicon Labs[ 1496.867745] usb 2-3.3: SerialNumber: 4202[ 1497.900384] usbcore: registered new interface driver usbserial[ 1497.900423] usbcore: registered new interface driver usbserial_generic[ 1497.900457] usbserial: USB Serial support registered for generic[ 1497.903897] usbcore: registered new interface driver cp210x[ 1497.903989] usbserial: USB Serial support registered for cp210x[ 1497.904382] usb 2-3.3: cp210x converter now attached to ttyUSB0Comme vous pouvez le voir, NodeMCU est maintenant disponible en tant que /dev/ttyUSB0.
En vérification finale, utilisez n’importe quel terminal pour vous connecter à un nouvel appareil ; je vais utiliser picocom. C’est un terminal léger. Sous Ubuntu, il peut être installé avec :
sudo apt install picocomEssai :
picocom /dev/ttyUSB0 -b 115200Si tout va bien, vous devriez voir “ Terminal prêt “ dans la sortie de picocom.
Correction de l’erreur “Accès refusé”
Si picocom dit “Accès refusé”, cela signifie généralement que l’utilisateur actuel n’est pas membre du groupe dialout : sous Linux, pour accéder aux ports série, l’utilisateur doit être membre de ce groupe.
Exécutez :
sudo usermod -aG docker $USERcommande, déconnectez-vous, reconnectez-vous et essayez de vous connecter à l’ESP à nouveau. “Accès refusé” devrait avoir disparu.
Construction de Mongoose
Téléchargez la dernière version de Mongoose ici.
Mongoose est livré avec un exemple pour ESP8266 et RTOS SDK. Le tutoriel et le code d’exemple pour cela se trouvent ici.
Remarque : l’ESP8266 a deux versions de SDK. La première est sans OS et la seconde est basée sur RTOS. Dans cet article, j’utiliserai cette dernière. Pour trouver les différences entre elles, googlez ou lisez cette réponse sur le forum officiel.
Pour construire l’exemple, vous avez deux options :
- Utiliser docker et des images docker prêtes à l’emploi
- Installer le SDK et la chaîne d’outils sur votre ordinateur
Utilisation de Docker
C’est plus simple et je crois que c’est la meilleure façon. Les images docker de Cesanta contiennent tout ce dont vous avez besoin pour construire Mongoose pour ESP (et pas seulement Mongoose - n’importe quelle application ESP). Donc, vous n’avez pas besoin d’installer des choses localement et vous pouvez facilement partager votre code avec des amis et des collègues afin qu’ils puissent construire votre firmware et obtenir exactement le même résultat.
Le guide d’installation de docker est disponible ici. Essayez, c’est vraiment simple, il vous suffit d’ajouter le dépôt docker à votre Linux et de l’installer comme un programme habituel avec apt.
Une fois docker installé, allez dans le dossier mongoose/examples/ESP8266_RTOS et exécutez build.sh
Lors de la première construction, docker téléchargera l’image requise. Cela peut prendre un certain temps, selon votre connexion Internet. Mais, une fois que build.sh est terminé, dans le dossier ./bin, vous trouverez deux fichiers .bin.
C’est le firmware. Vous l’avez fait !
Utilisation du SDK local
Si docker est trop simple pour vous ou pour une raison quelconque, vous souhaitez utiliser des outils installés localement, vous pouvez le faire aussi.
C’est un peu plus difficile et ennuyeux, mais rien de trop compliqué. Surtout, étant donné que Cesanta a construit certains outils pour vous et que vous n’avez pas besoin de les construire à partir de la source.
Voici comment cela fonctionne :
- Clonez le SDK RTOS ESP depuis ce dépôt. Le makefile d’exemple le recherche dans le dossier /opt/ESP8266_RTOS_SDK, donc, vous pouvez soit mettre un dépôt cloné dans ce dossier, soit modifier le chemin avant de construire l’exemple (voir ci-dessous).
- Téléchargez xtensa-lx106-elf.tar.bz2 depuis ce dossier public.
- Décompressez le fichier xtensa-lx106-elf.tar.bz2. Par exemple, dans le dossier /opt :
sudo tar -xvf xtensa-lx106-elf.tar.bz2 -C /opt
- Modifiez votre variable PATH, par exemple, si vous avez décompressé la chaîne d’outils dans le dossier /opt, utilisez la commande suivante :
export PATH=/opt/xtensa-lx106-elf/bin:$PATH
(en outre, je vous recommande d’ajouter cette commande à vos dossiers .bashrc ou .profile, pour conserver les modifications après le redémarrage du système)
Maintenant, exécutez :
$ export SDK_PATH=/opt/ESP8266_RTOS_SDK # Mettez votre chemin vers le SDK ici$ export BIN_PATH=./bin; mkdir ./bin$ make clean; make BOOT=none APP=0 SPI_SPEED=40 SPI_MODE=dio SPI_SIZE_MAP=0Et maintenant, si tout est installé correctement, vous aurez le firmware dans le dossier ./bin
Vous l’avez encore fait !
Flashage de l’ESP
Il existe de nombreux outils disponibles pour flasher l’ESP8266. Nous allons utiliser esptool. Pour l’utiliser, clonez ce dépôt et ajoutez le chemin vers esptool.py dans votre variable PATH (c’est optionnel, et juste pratique).
Maintenant, déconnectez picocom, s’il est encore connecté (Indice : appuyez sur Ctrl+A ; Ctrl+D pour quitter) et exécutez :
esptool.py --port /dev/ttyUSB0 --baud 230400 \
write_flash --flash_mode=dio --flash_size=4m \
0x00000 ${BIN_PATH}/eagle.flash.bin \
0x20000 ${BIN_PATH}/eagle.irom0text.bin \
0x7e000 ${SDK_PATH}/bin/esp_init_data_default.binRemarque importante : si votre module n’est pas un NodeMCU, vous devez mettre à la terre GPIO0 avant de flasher (mettre à la terre GPIO0 passe le module en mode flash). Après le flashage, déconnectez GPIO0 de la terre et redémarrez l’ESP.
S’il n’y a pas eu d’erreurs, vous verrez une sortie comme ceci :
Connecting...
Erasing flash...
Took 0.58s to erase flash block
Wrote 35840 bytes at 0x00000000 in 1.8 seconds (157.5 kbit/s)...
Erasing flash...
Took 2.02s to erase flash block
Wrote 301056 bytes at 0x00020000 in 15.4 seconds (156.7 kbit/s)...
Erasing flash...
Took 0.11s to erase flash block
Wrote 1024 bytes at 0x0007e000 in 0.1 seconds (163.5 kbit/s)...
Leaving…Prêt ! Maintenant, l’appareil est flashé avec votre firmware.
Premiers résultats
Maintenant, vous devriez voir un réseau WiFi “Mongoose” apparaître. L’exemple configure un AP. Utilisez le mot de passe “Mongoose” pour vous connecter, puis naviguez vers http://192.168.4.1/, et vous verrez une page de bienvenue “Hello, world”.
Félicitations ! Vous venez de faire fonctionner un serveur Web sur l’ESP8266 !
Prochaines étapes
Les prochaines étapes dépendent de vous. Vous pouvez utiliser l’exemple décrit comme point de départ.
Regardez son fichier user_main.c. Il configure un point d’accès WiFi et démarre le serveur Web. Vous pouvez facilement changer le mode AP en mode station (et vous connecter à votre réseau WiFi) et utiliser l’API Mongoose pour implémenter ce que vous voulez. C’est une façon courante d’utiliser Mongoose, donc, vous pouvez utiliser un autre exemple de Mongoose pour construire votre programme et avoir http, tcp, udp, mqtt et encore plus de fonctionnalités sur votre appareil ESP.
Utilisez les documents d’Espressif (par exemple celui-ci) pour apprendre à contrôler le module WiFi ESP8266 (et pas seulement WiFi) et la documentation de Mongoose pour découvrir les fonctionnalités de Mongoose.
Punks pas morts !
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.