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:
- Conecte o Arduino ao computador via USB
- Conecte o RESET do Arduino ao seu GND: isso é necessário para desativar o processador host, porque precisamos apenas do módulo UART-USB
- Conecte o ESP (ESP -> Arduino) 1. VCC -> 3.3V
- GND -> GND
- RX0 -> RX0 (não TX)
- TX0 -> TX
- 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 ttyUSB0Como 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 picocomTentando:
picocom /dev/ttyUSB0 -b 115200Se 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 $USERcomando, 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:
- Usar docker e imagens docker prontas para uso
- 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:
- 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).
- Baixe xtensa-lx106-elf.tar.bz2 desta pasta pública.
- Descompacte o arquivo xtensa-lx106-elf.tar.bz2. Por exemplo, para a pasta /opt:
sudo tar -xvf xtensa-lx106-elf.tar.bz2 -C /opt
- 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=0E 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.binNota 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!
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.