Sviluppo ESP8266 · 7 min read · Jan 20, 2026
Sviluppare applicazioni di rete per ESP8266 utilizzando Mongoose in Linux
Discutiamo di come iniziare a sviluppare applicazioni di rete per il chip ESP8266 utilizzando il server web integrato Mongoose in Linux. Userò Ubuntu, ma tutto può essere facilmente adattato per qualsiasi distribuzione Linux.
Chi è chi
Poiché hai iniziato a leggere questo articolo, presumo che tu sappia qualcosa su Linux, ESP8266 e Mongoose. Quindi solo una breve introduzione.
ESP8266
Chip economico con WiFi integrato, sviluppato da Expressif. Se vuoi approfondire, controlla il sito ufficiale.
Mongoose
Mongoose è una libreria multi-protocollo completa con un core di meno di 40kB sviluppata da Cesanta. Trova ulteriori informazioni al riguardo sul sito di Cesanta.
Linux
Davvero? :-)
Collegare l’ESP8266 al computer
Ok, dobbiamo prima collegare il chip ESP8266 al computer. Puoi farlo in diversi modi.
NodeMCU
Se hai un modulo NodeMCU, con convertitore UART-to-USB integrato, tutto ciò che devi fare è collegare il modulo al computer tramite USB. KISS!
Collegamento con convertitore UART-USB esterno
Se il tuo modulo ESP non ha un convertitore UART-USB interno, hai bisogno di uno esterno. Ce ne sono a tonnellate - basta cercare su Google.
Seleziona uno che funzioni con Linux (fondamentalmente, la maggior parte di essi) e abbia un pin da 3.3V e ricorda: la maggior parte dei convertitori UART-USB ha pin sia per 3.3V che per 5V, ma non dovresti collegare l’ESP ai pin da 5V. Questo dispositivo non è tollerante alla tensione ed è possibile bruciare il tuo modulo.
Ora collega (ESP -> Convertitore):
VCC -> 3.3V
GND -> GND
RX0 -> TX (non RX)
TX0 -> RX
CH_PD -> 3.3V
Collegamento con Arduino
Se non hai un convertitore UART-USB, ma hai un Arduino con pin da 3.3V, puoi facilmente usarlo per collegare l’ESP:
- Collega Arduino al computer tramite USB
- Collega il RESET di Arduino al suo GND: è necessario disabilitare il processore host, perché abbiamo bisogno solo del modulo UART-USB
- Collega ESP (ESP -> Arduino) 1. VCC -> 3.3V
- GND -> GND
- RX0 -> RX0 (non TX)
- TX0 -> TX
- CH_PD -> 3.3V
Verifica della connessione
Se la tua connessione è ok, l’ESP dovrebbe apparire come un nuovo dispositivo tty. Di solito, NodeMCU e ESP collegati tramite convertitore UART-USB appaiono come /dev/ttyUSBx (x = 0, 1, 2 ecc.) e la versione di Arduino appare come /dev/ttyACMx (x = 0, 1, 2 ecc.)
Puoi usare il comando dmesg | grep usb per trovare il tuo dispositivo.
Ad esempio, dopo il collegamento di NodeMCU vedrai qualcosa del genere:
[ 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 ttyUSB0Come puoi vedere, NodeMCU è ora disponibile come /dev/ttyUSB0.
Come controllo finale, usa qualsiasi terminale per connetterti a un nuovo dispositivo; io userò picocom. Questo è un terminale leggero. In Ubuntu può essere installato con:
sudo apt install picocomProva:
picocom /dev/ttyUSB0 -b 115200Se tutto è ok, dovresti vedere “ Terminale pronto ” nell’output di picocom.
Risoluzione dell’errore “Access Denied”
Se picocom dice “Access Denied”, di solito significa che l’utente attuale non è membro del gruppo dialout: in Linux, per accedere alle porte seriali l’utente deve essere un membro di questo gruppo.
Esegui:
sudo usermod -aG docker $USERcomando, disconnettiti, accedi di nuovo e prova a connettere di nuovo l’ESP. “Access denied” dovrebbe essere scomparso.
Costruire Mongoose
Scarica l’ultima versione di Mongoose da qui.
Mongoose è fornito con un esempio per ESP8266 e RTOS SDK. Il tutorial e il codice di esempio si trovano qui.
Nota: ESP8266 ha due versioni di SDK. La prima è non-OS e la seconda è basata su RTOS. In questo articolo userò quest’ultima. Per trovare le differenze tra di esse, cerca su Google o leggi questa risposta nel forum ufficiale.
Per costruire l’esempio hai due opzioni:
- Usa docker e immagini docker pronte all’uso
- Installa SDK e toolchain sul tuo computer
Utilizzare Docker
Questo è più semplice e credo sia il modo migliore. Le immagini docker di Cesanta contengono tutto ciò di cui hai bisogno per costruire Mongoose per ESP (e non solo Mongoose - qualsiasi applicazione ESP). Quindi, non devi installare nulla localmente e puoi facilmente condividere il tuo codice con amici e colleghi in modo che possano costruire il tuo firmware e ottenere esattamente lo stesso risultato.
La guida all’installazione di docker è disponibile qui. Prova, è davvero semplice, devi solo aggiungere il repository docker al tuo Linux e installarlo come un programma normale con apt.
Una volta installato docker, vai alla cartella mongoose/examples/ESP8266_RTOS e esegui build.sh
Alla prima costruzione, docker scaricherà l’immagine richiesta. Potrebbe richiedere un po’ di tempo, a seconda della tua connessione internet. Ma, una volta completato build.sh, nella cartella ./bin troverai due file .bin.
Questo è il firmware. L’hai fatto!
Utilizzare SDK locale
Se docker è troppo semplice per te o per qualsiasi motivo vuoi utilizzare strumenti installati localmente, puoi farlo anche.
È un po’ più difficile e noioso, ma nulla di troppo complicato. Soprattutto, dato che Cesanta ha costruito alcuni strumenti per te e non devi costruirli da sorgente.
Ecco come funziona:
- Clona ESP RTOS SDK da questo repo. Il makefile di esempio lo cerca nella cartella /opt/ESP8266_RTOS_SDK, quindi puoi mettere un repo clonato in questa cartella o modificare il percorso prima di costruire l’esempio (vedi sotto).
- Scarica xtensa-lx106-elf.tar.bz2 da questa cartella pubblica.
- Estrai il file xtensa-lx106-elf.tar.bz2. Ad esempio, nella cartella /opt:
sudo tar -xvf xtensa-lx106-elf.tar.bz2 -C /opt
- Modifica la tua variabile PATH, ad esempio, se hai estratto la toolchain nella cartella /opt usa il seguente comando:
export PATH=/opt/xtensa-lx106-elf/bin:$PATH
(Consiglio anche di aggiungere questo comando ai tuoi file .bashrc o .profile, per mantenere le modifiche dopo il riavvio del sistema)
Ora esegui:
$ export SDK_PATH=/opt/ESP8266_RTOS_SDK # Metti qui il tuo percorso SDK$ export BIN_PATH=./bin; mkdir ./bin$ make clean; make BOOT=none APP=0 SPI_SPEED=40 SPI_MODE=dio SPI_SIZE_MAP=0E ora, se tutto è installato correttamente, avrai il firmware nella cartella ./bin
L’hai fatto di nuovo!
Flashing ESP
Ci sono molti strumenti disponibili per flashare l’ESP8266. Useremo esptool. Per usarlo, clona questo repo e aggiungi il percorso a esptool.py nella tua variabile PATH (questo è facoltativo, e solo conveniente).
Ora, disconnetti picocom, se è ancora connesso (Suggerimento: premi Ctrl+A; Ctrl+D per uscire) ed esegui:
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.binNota importante: se il tuo modulo non è un NodeMCU, devi mettere a terra GPIO0 prima di flashare (mettere a terra GPIO0 commuta il modulo in modalità flash). Dopo il flashing, disconnetti GPIO0 da terra e riavvia l’ESP.
Se non si sono verificati errori, vedrai un output simile a questo:
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...Pronto! Ora il dispositivo è flashato con il tuo firmware.
Primi risultati
Ora dovresti vedere apparire una rete WiFi “Mongoose”. L’esempio imposta un AP. Usa la password “Mongoose” per connetterti, quindi naviga su http://192.168.4.1/, e vedrai una pagina di saluto “Hello, world”.
Congratulazioni! Hai appena eseguito un server web su ESP8266!
Prossimi passi
I prossimi passi dipendono da te. Puoi usare l’esempio descritto come punto di partenza.
Guarda il suo file user_main.c. Imposta un punto di accesso WiFi e avvia il server web. Puoi facilmente cambiare la modalità AP in modalità stazione (e connetterti alla tua rete WiFi) e utilizzare l’API di Mongoose per implementare ciò che desideri. Questo è un modo comune per utilizzare Mongoose, quindi puoi utilizzare un altro esempio di Mongoose per costruire il tuo programma e avere http, tcp, udp, mqtt e molte altre funzionalità sul tuo dispositivo ESP.
Usa i documenti di Espressif (ad esempio questo) per imparare a controllare il modulo WiFi ESP8266 (e non solo WiFi) e la documentazione di Mongoose per scoprire le funzionalità di Mongoose.
Punks non è morto!
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.