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:

  1. Verbinde Arduino über USB mit dem Computer
  2. 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
  3. Verbinde ESP (ESP -> Arduino) 1. VCC -> 3.3V
  4. GND -> GND
  5. RX0 -> RX0 (nicht TX)
  6. TX0 -> TX
  7. 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 ttyUSB0

Wie 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 picocom

installiert werden.

Versuche:

picocom /dev/ttyUSB0 -b 115200

Wenn 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 $USER

Melde 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:

  1. Verwende Docker und einsatzbereite Docker-Images
  2. 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:

  1. 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).
  2. Lade xtensa-lx106-elf.tar.bz2 aus diesem öffentlichen Ordner herunter.
  3. Entpacke die xtensa-lx106-elf.tar.bz2-Datei. Zum Beispiel in den /opt-Ordner:

sudo tar -xvf xtensa-lx106-elf.tar.bz2 -C /opt

  1. Ä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=0

Und 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.bin

Wichtiger 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!

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.