Desenvolvimento · 7 min read · Jan 20, 2026

Desenvolvendo Aplicações de Rede para ESP8266 usando Mongoose no Linux

Vamos discutir como começar a desenvolver aplicações de rede para o chip ESP8266 usando o Servidor Web Embutido Mongoose no Linux. Vou usar o Ubuntu, mas tudo pode ser facilmente adaptado para qualquer distribuição Linux.

Quem é quem

Como você começou a ler este artigo, presumo que você saiba sobre Linux, ESP8266 e Mongoose. Então, apenas uma breve introdução.

ESP8266

Chip barato com WiFi integrado, desenvolvido pela Expressif. Se você quiser se aprofundar mais, confira o site oficial.

Mongoose

Mongoose é uma biblioteca multi-protocolo completa com um núcleo de menos de 40kB desenvolvida pela Cesanta. Encontre mais informações sobre isso no site da Cesanta.

Linux

Sério? :-)

Conectando o ESP8266 ao seu computador

Ok, primeiro precisamos conectar o chip ESP8266 ao seu computador. Você pode fazer isso de várias maneiras.

NodeMCU

Se você tiver um módulo NodeMCU, com conversor UART-USB integrado, tudo o que você precisa fazer é conectar o módulo ao computador via USB. KISS!

Conectando com conversor UART-USB externo

Se o seu módulo ESP não tiver um conversor UART-USB interno, você precisará de um externo. Existem muitos deles - basta pesquisar no Google.

Selecione um que funcione com Linux (basicamente, a maioria deles) e tenha um pino de 3.3V e lembre-se: a maioria dos conversores UART-USB tem pinos para 3.3V e 5V, mas você não deve conectar o ESP aos pinos de 5V. Este dispositivo não é tolerante a voltagem e é possível queimar seu módulo.

Agora conecte (ESP -> Conversor):

VCC -> 3.3V

GND -> GND

RX0 -> TX (não RX)

TX0 -> RX

CH_PD -> 3.3V

Conectando com Arduino

Se você não tiver um conversor UART-USB, mas tiver um Arduino com pinos de 3.3V, você pode usá-lo facilmente para conectar o ESP:

  1. Conecte o Arduino ao computador via USB
  2. Conecte o RESET do Arduino ao seu GND: isso é necessário para desativar o processador host, porque precisamos apenas do módulo UART-USB
  3. Conecte o ESP (ESP -> Arduino) 1. VCC -> 3.3V
  4. GND -> GND
  5. RX0 -> RX0 (não TX)
  6. TX0 -> TX
  7. CH_PD -> 3.3V

Verificando a conexão

Se sua conexão estiver ok, o ESP deve aparecer como um novo dispositivo tty. Normalmente, NodeMCU e ESP conectados via conversor UART-USB aparecem como /dev/ttyUSBx (x = 0, 1, 2 etc) e a versão do Arduino aparece como /dev/ttyACMx (x = 0, 1, 2 etc)

Você pode usar o comando dmesg | grep usb para encontrar seu dispositivo.

Por exemplo, após a conexão do NodeMCU, você verá algo assim:


[  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

Como você pode ver, o NodeMCU agora está disponível como /dev/ttyUSB0.

Como verificação final, use qualquer terminal para se conectar a um novo dispositivo; eu vou usar o picocom. Este é um terminal leve. No Ubuntu, ele pode ser instalado com:

sudo apt install picocom

Tentando:

picocom /dev/ttyUSB0 -b 115200

Se tudo estiver ok, você deve ver “ Terminal pronto ” na saída do picocom.

Corrigindo o erro “Acesso Negado”

Se o picocom disser “Acesso Negado”, isso geralmente significa que o usuário atual não é membro do grupo dialout: no Linux, para acessar portas seriais, o usuário deve ser membro deste grupo.

Execute:

sudo usermod -aG docker $USER

comando, saia, faça login novamente e tente conectar o ESP novamente. “Acesso negado” deve ter desaparecido.

Construindo Mongoose

Baixe a versão mais recente do Mongoose aqui.

O Mongoose é enviado com um exemplo para ESP8266 e RTOS SDK. O tutorial e o código de exemplo para isso estão localizados aqui.

Nota: O ESP8266 tem duas versões de SDK. A primeira é sem sistema operacional e a segunda é baseada em RTOS. Neste artigo, usarei a última. Para encontrar as diferenças entre elas, pesquise ou leia esta resposta no fórum oficial.

Para construir o exemplo, você tem duas opções:

  1. Usar docker e imagens docker prontas para uso
  2. Instalar SDK e toolchain no seu computador

Usando Docker

Isso é mais simples e eu acredito que seja a melhor maneira. As imagens docker da Cesanta contêm tudo o que você precisa para construir o Mongoose para ESP (e não apenas o Mongoose - qualquer aplicação ESP). Assim, você não precisa instalar nada localmente e pode facilmente compartilhar seu código com amigos e colegas para que eles possam construir seu firmware e obter exatamente o mesmo resultado.

O guia de instalação do docker está disponível aqui. Tente, é realmente simples, você só precisa adicionar o repositório docker ao seu Linux e instalá-lo como um programa comum com apt.

Uma vez que o docker esteja instalado, vá para a pasta mongoose/examples/ESP8266_RTOS e execute build.sh

Na primeira construção, o docker fará o download da imagem necessária. Isso pode levar um tempo, dependendo do seu canal de internet. Mas, uma vez que o build.sh seja concluído, na pasta ./bin você encontrará dois arquivos .bin.

Esse é o firmware. Você fez isso!

Usando SDK local

Se o docker for simples demais para você ou por qualquer motivo você quiser usar ferramentas instaladas localmente, você também pode fazer isso.

É um pouco mais difícil e chato, mas nada muito complicado. Especialmente, dado que a Cesanta construiu algumas ferramentas para você e você não precisa construí-las a partir do zero.

É assim que funciona:

  1. Clone o SDK RTOS do ESP deste repositório. O makefile de exemplo procura por ele na pasta /opt/ESP8266_RTOS_SDK, portanto, você pode colocar um repositório clonado nesta pasta ou modificar o caminho para ele antes de construir o exemplo (veja abaixo).
  2. Baixe xtensa-lx106-elf.tar.bz2 desta pasta pública.
  3. Descompacte o arquivo xtensa-lx106-elf.tar.bz2. Por exemplo, para a pasta /opt:

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

  1. Modifique sua variável PATH, por exemplo, se você descompactou a toolchain na pasta /opt, use o seguinte comando:

export PATH=/opt/xtensa-lx106-elf/bin:$PATH

(também recomendo adicionar este comando aos seus arquivos .bashrc ou .profile, para manter as alterações após a reinicialização do sistema)

Agora execute:

$ export SDK_PATH=/opt/ESP8266_RTOS_SDK  # Coloque seu caminho para o SDK aqui
$ export BIN_PATH=./bin; mkdir ./bin
$ make clean; make BOOT=none APP=0 SPI_SPEED=40 SPI_MODE=dio SPI_SIZE_MAP=0

E agora, se tudo estiver instalado corretamente, você terá o firmware na pasta ./bin

Você fez isso novamente!

Flashing ESP

Existem muitas ferramentas disponíveis para flashar o ESP8266. Vamos usar o esptool. Para usá-lo, clone este repositório e adicione o caminho para esptool.py na sua variável PATH (isso é opcional, e apenas conveniente).

Agora, desconecte o picocom, se ainda estiver conectado (Dica: pressione Ctrl+A; Ctrl+D para sair dele) e execute:

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 seu módulo não for um NodeMCU, você precisa aterrar o GPIO0 antes de flashar (aterrar o GPIO0 muda o módulo para o modo de flash). Após o flash, desconecte o GPIO0 do terra e reinicie o ESP.

Se nenhum erro ocorrer, você verá a saída assim:

Conectando...  

Apagando flash...  

Levou 0.58s para apagar o bloco de flash  

Escreveu 35840 bytes em 0x00000000 em 1.8 segundos (157.5 kbit/s)...  

Apagando flash...  

Levou 2.02s para apagar o bloco de flash  

Escreveu 301056 bytes em 0x00020000 em 15.4 segundos (156.7 kbit/s)...  

Apagando flash...  

Levou 0.11s para apagar o bloco de flash  

Escreveu 1024 bytes em 0x0007e000 em 0.1 segundos (163.5 kbit/s)...  

Saindo...

Pronto! Agora o dispositivo está flashado com seu firmware.

Primeiros resultados

Agora você deve ver uma rede WiFi “Mongoose” aparecer. O exemplo configura um AP. Use a senha “Mongoose” para se conectar, em seguida, navegue até http://192.168.4.1/, e você verá uma página de saudação “Hello, world”.

Parabéns! Você acabou de executar um Servidor Web no ESP8266!

Próximos passos

Os próximos passos dependem de você. Você pode usar o exemplo descrito como um ponto de partida.

Olhe para seu arquivo user_main.c. Ele configura um ponto de acesso WiFi e inicia o servidor web. Você pode facilmente mudar o modo AP para modo estação (e conectar-se à sua rede WiFi) e usar a API do Mongoose para implementar o que quiser. Esta é uma maneira comum de usar o Mongoose, então, você pode usar outro exemplo do Mongoose para construir seu programa e ter http, tcp, udp, mqtt e mais recursos em seu dispositivo ESP.

Use documentos da Espressif (por exemplo, este) para aprender como controlar o módulo WiFi ESP8266 (e não apenas WiFi) e a documentação do Mongoose para descobrir os recursos do Mongoose.

Punks não estão mortos!

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.