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:

  1. Collega Arduino al computer tramite USB
  2. Collega il RESET di Arduino al suo GND: è necessario disabilitare il processore host, perché abbiamo bisogno solo del modulo UART-USB
  3. Collega ESP (ESP -> Arduino) 1. VCC -> 3.3V
  4. GND -> GND
  5. RX0 -> RX0 (non TX)
  6. TX0 -> TX
  7. 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 ttyUSB0

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

Prova:

picocom /dev/ttyUSB0 -b 115200

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

comando, 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:

  1. Usa docker e immagini docker pronte all’uso
  2. 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:

  1. 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).
  2. Scarica xtensa-lx106-elf.tar.bz2 da questa cartella pubblica.
  3. Estrai il file xtensa-lx106-elf.tar.bz2. Ad esempio, nella cartella /opt:

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

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

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

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

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.