Entwicklung · 7 min read · Jan 20, 2026
Entwickeln von Netzwerk-Anwendungen für ESP8266 mit Mongoose in Linux
Lass uns besprechen, wie man Netzwerk-Anwendungen für den ESP8266-Chip mit dem Mongoose Embedded Web Server in Linux entwickelt. Ich werde Ubuntu verwenden, aber alles kann leicht für jede Linux-Distribution angepasst werden.
Wer ist wer
Da du angefangen hast, diesen Artikel zu lesen, gehe ich davon aus, dass du über Linux, ESP8266 und Mongoose Bescheid weißt. Also nur eine kurze Einführung.
ESP8266
Günstiger Chip mit integriertem WiFi, entwickelt von Expressif. Wenn du mehr ins Detail gehen möchtest, schau dir die offizielle Seite an.
Mongoose
Mongoose ist eine vollständige Multi-Protokoll-Bibliothek mit einem Kern von unter 40kB, entwickelt von Cesanta. Finde weitere Informationen dazu auf der Cesanta-Seite.
Linux
Wirklich? :-)
Verbindung des ESP8266 mit deinem Computer
Ok, wir müssen zuerst den ESP8266-Chip mit deinem Computer verbinden. Du kannst dies auf verschiedene Arten tun.
NodeMCU
Wenn du ein NodeMCU-Modul hast, musst du es nur über USB mit dem Computer verbinden. KISS!
Verbindung mit externem UART-USB-Konverter
Wenn dein ESP-Modul keinen internen UART-USB-Konverter hat, benötigst du einen externen. Es gibt viele davon - einfach googeln.
Wähle einen aus, der mit Linux funktioniert (grundsätzlich die meisten von ihnen) und einen 3.3V-Pin hat und denke daran: die meisten UART-USB-Konverter haben Pins für sowohl 3.3V als auch 5V, aber du solltest den ESP nicht mit 5V-Pins verbinden. Dieses Gerät ist nicht spannungstolerant und es ist möglich, dein Modul zu beschädigen.
Jetzt verbinde (ESP -> Konverter):
VCC -> 3.3V
GND -> GND
RX0 -> TX (nicht RX)
TX0 -> RX
CH_PD -> 3.3V
Verbindung mit Arduino
Wenn du keinen UART-USB-Konverter hast, aber einen Arduino mit 3.3V-Pins, kannst du ihn leicht verwenden, um den ESP zu verbinden:
- Verbinde Arduino über USB mit dem Computer
- Verbinde den RESET von Arduino mit seinem GND: dies ist erforderlich, um den Host-Prozessor zu deaktivieren, da wir nur das UART-USB-Modul benötigen
- Verbinde ESP (ESP -> Arduino) 1. VCC -> 3.3V
- GND -> GND
- RX0 -> RX0 (nicht TX)
- TX0 -> TX
- CH_PD -> 3.3V
Verbindung überprüfen
Wenn deine Verbindung in Ordnung ist, sollte der ESP als neues tty-Gerät erscheinen. Normalerweise erscheinen NodeMCU und ESP, die über den UART-USB-Konverter verbunden sind, als /dev/ttyUSBx (x = 0, 1, 2 usw.) und die Arduino-Version erscheint als /dev/ttyACMx (x = 0, 1, 2 usw.)
Du kannst den Befehl dmesg | grep usb verwenden, um dein Gerät zu finden.
Zum Beispiel, nach der Verbindung von NodeMCU wirst du etwas wie das sehen:
[ 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 ttyUSB0Wie du sehen kannst, ist NodeMCU jetzt als /dev/ttyUSB0 verfügbar.
Als letzte Überprüfung, verwende ein beliebiges Terminal, um eine Verbindung zu einem neuen Gerät herzustellen; ich werde picocom verwenden. Dies ist ein leichtgewichtiges Terminal. In Ubuntu kann es mit:
sudo apt install picocominstalliert werden.
Versuche:
picocom /dev/ttyUSB0 -b 115200Wenn alles in Ordnung ist, solltest du „ Terminal bereit “ in der picocom-Ausgabe sehen.
Behebung des Fehlers „Zugriff verweigert“
Wenn picocom „Zugriff verweigert“ sagt, bedeutet das normalerweise, dass der aktuelle Benutzer kein Mitglied der dialout-Gruppe ist: In Linux muss der Benutzer, um auf serielle Ports zuzugreifen, Mitglied dieser Gruppe sein.
Führe den Befehl aus:
sudo usermod -aG docker $USERMelde dich ab, melde dich wieder an und versuche erneut, den ESP zu verbinden. „Zugriff verweigert“ sollte verschwunden sein.
Mongoose bauen
Lade die neueste Mongoose-Version von hier herunter.
Mongoose wird mit einem Beispiel für ESP8266 und RTOS SDK geliefert. Das Tutorial und der Beispielcode dafür befinden sich hier.
Hinweis: ESP8266 hat zwei Versionen des SDK. Die erste ist ein Non-OS und die zweite ist RTOS-basiert. In diesem Artikel werde ich letzteres verwenden. Um die Unterschiede zwischen ihnen zu finden, google oder lies diese Antwort im offiziellen Forum.
Um das Beispiel zu bauen, hast du zwei Optionen:
- Verwende Docker und einsatzbereite Docker-Images
- Installiere das SDK und die Toolchain auf deinem Computer
Verwendung von Docker
Das ist einfacher und ich glaube, der bessere Weg. Die Docker-Images von Cesanta enthalten alles, was du benötigst, um Mongoose für ESP zu bauen (und nicht nur Mongoose - jede ESP-Anwendung). Du musst also nichts lokal installieren und kannst deinen Code leicht mit Freunden und Kollegen teilen, damit sie deine Firmware bauen und das genau gleiche Ergebnis erhalten.
Die Docker-Installationsanleitung ist hier verfügbar. Probiere es aus, es ist wirklich einfach, du musst nur das Docker-Repository zu deinem Linux hinzufügen und es wie ein übliches Programm mit apt installieren.
Sobald Docker installiert ist, gehe zum mongoose/examples/ESP8266_RTOS-Ordner und führe build.sh aus.
Beim ersten Build wird Docker das erforderliche Image herunterladen. Es kann eine Weile dauern, abhängig von deinem Internetanschluss. Aber sobald build.sh abgeschlossen ist, findest du im ./bin-Ordner zwei .bin-Dateien.
Das ist die Firmware. Du hast das gemacht!
Verwendung des lokalen SDK
Wenn Docker dir zu einfach ist oder du aus irgendeinem Grund lokale Tools verwenden möchtest, kannst du das auch tun.
Es ist ein bisschen schwieriger und langweilig, aber nichts zu kompliziert. Besonders, da Cesanta einige Tools für dich gebaut hat und du sie nicht aus dem Quellcode bauen musst.
So funktioniert es:
- Klone das ESP RTOS SDK aus diesem Repo. Die Beispiel-Makefile sucht es im /opt/ESP8266_RTOS_SDK-Ordner, daher kannst du entweder ein geklontes Repo in diesen Ordner legen oder den Pfad dazu vor dem Bauen des Beispiels ändern (siehe unten).
- Lade xtensa-lx106-elf.tar.bz2 aus diesem öffentlichen Ordner herunter.
- Entpacke die xtensa-lx106-elf.tar.bz2-Datei. Zum Beispiel in den /opt-Ordner:
sudo tar -xvf xtensa-lx106-elf.tar.bz2 -C /opt
- Ändere deine PATH-Variable, zum Beispiel, wenn du die Toolchain in den /opt-Ordner entpackt hast, verwende den folgenden Befehl:
export PATH=/opt/xtensa-lx106-elf/bin:$PATH
(ich würde auch empfehlen, diesen Befehl zu deiner .bashrc oder .profile-Datei hinzuzufügen, um die Änderungen nach einem Systemneustart beizubehalten)
Jetzt führe aus:
$ export SDK_PATH=/opt/ESP8266_RTOS_SDK # Setze hier deinen Pfad zum SDK$ export BIN_PATH=./bin; mkdir ./bin$ make clean; make BOOT=none APP=0 SPI_SPEED=40 SPI_MODE=dio SPI_SIZE_MAP=0Und jetzt, wenn alles korrekt installiert ist, hast du die Firmware im ./bin-Ordner.
Du hast es wieder getan!
Flashen des ESP
Es gibt viele Tools, um den ESP8266 zu flashen. Wir werden esptool verwenden. Um es zu verwenden, klone dieses Repo und füge den Pfad zu esptool.py in deine PATH-Variable ein (das ist optional und einfach praktisch).
Jetzt trenne picocom, falls es noch verbunden ist (Hinweis: drücke Ctrl+A; Ctrl+D, um es zu verlassen) und führe aus:
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.binWichtiger Hinweis: Wenn dein Modul kein NodeMCU ist, musst du GPIO0 vor dem Flashen auf Masse legen (Masse an GPIO0 schaltet das Modul in den Flash-Modus). Nach dem Flashen trenne GPIO0 von der Masse und starte den ESP neu.
Wenn keine Fehler aufgetreten sind, siehst du eine Ausgabe wie diese:
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...Fertig! Jetzt ist das Gerät mit deiner Firmware geflasht.
Erste Ergebnisse
Jetzt solltest du ein „Mongoose“-WiFi-Netzwerk sehen. Das Beispiel richtet einen AP ein. Verwende das Passwort „Mongoose“, um dich zu verbinden, und navigiere dann zu http://192.168.4.1/, und du wirst eine „Hallo, Welt“-Begrüßungsseite sehen.
Herzlichen Glückwunsch! Du hast gerade einen Webserver auf dem ESP8266 ausgeführt!
Nächste Schritte
Die nächsten Schritte hängen von dir ab. Du kannst das beschriebene Beispiel als Ausgangspunkt verwenden.
Sieh dir die user_main.c-Datei an. Sie richtet einen WiFi-Zugangspunkt ein und startet den Webserver. Du kannst den AP-Modus leicht in den Station-Modus ändern (und dich mit deinem WiFi-Netzwerk verbinden) und die Mongoose-API verwenden, um alles zu implementieren, was du möchtest. Dies ist eine gängige Methode zur Verwendung von Mongoose, also kannst du ein anderes Mongoose-Beispiel verwenden, um dein Programm zu erstellen und http, tcp, udp, mqtt und viele weitere Funktionen auf deinem ESP-Gerät zu haben.
Verwende die Dokumente von Espressif (zum Beispiel dieses hier), um zu lernen, wie man das ESP8266-WiFi-Modul (und nicht nur WiFi) steuert und die Mongoose-Dokumentation, um die Funktionen von Mongoose zu entdecken.
Punks sind nicht tot!
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.