Desarrollo ESP8266 · 7 min read · Jan 20, 2026
Desarrollar aplicaciones de red para ESP8266 usando Mongoose en Linux
Hablemos sobre cómo comenzar a desarrollar aplicaciones de red para el chip ESP8266 utilizando el servidor web embebido Mongoose en Linux. Usaré Ubuntu, pero todo se puede adaptar fácilmente para cualquier distribución de Linux.
Quién es quién
Dado que comenzaste a leer este artículo, asumo que sabes sobre Linux, ESP8266 y Mongoose. Así que solo una breve introducción.
ESP8266
Chip económico con WiFi integrado, desarrollado por Expressif. Si deseas profundizar más, consulta el sitio oficial.
Mongoose
Mongoose es una biblioteca completa de múltiples protocolos con un núcleo de menos de 40kB desarrollado por Cesanta. Encuentra más información sobre ello en el sitio de Cesanta.
Linux
¿De verdad? :-)
Conectando ESP8266 a tu computadora
Ok, primero necesitamos conectar el chip ESP8266 a tu computadora. Puedes hacerlo de varias maneras.
NodeMCU
Si tienes un módulo NodeMCU, con un convertidor UART a USB a bordo, solo tienes que conectar el módulo a la computadora a través de USB. ¡KISS!
Conexión con un convertidor UART-USB externo
Si tu módulo ESP no tiene un convertidor UART-USB interno, necesitas uno externo. Hay muchos de ellos: solo búscalo en Google.
Selecciona uno que funcione con Linux (básicamente, la mayoría de ellos) y tenga un pin de 3.3V y recuerda: la mayoría de los convertidores UART-USB tienen pines tanto para 3.3V como para 5V, pero no debes conectar el ESP a los pines de 5V. Este dispositivo no es tolerante a voltaje y es posible que quemes tu módulo.
Ahora conecta (ESP -> Convertidor):
VCC -> 3.3V
GND -> GND
RX0 -> TX (no RX)
TX0 -> RX
CH_PD -> 3.3V
Conectando con Arduino
Si no tienes un convertidor UART-USB, pero tienes un Arduino con pines de 3.3V, puedes usarlo fácilmente para conectar el ESP:
- Conecta Arduino a la computadora a través de USB
- Conecta el RESET de Arduino a su GND: es necesario para deshabilitar el procesador host, porque solo necesitamos el módulo UART-USB
- Conecta ESP (ESP -> Arduino) 1. VCC -> 3.3V
- GND -> GND
- RX0 -> RX0 (no TX)
- TX0 -> TX
- CH_PD -> 3.3V
Verificando la conexión
Si tu conexión está bien, el ESP debería aparecer como un nuevo dispositivo tty. Por lo general, NodeMCU y ESP conectados a través de un convertidor UART-USB aparecen como /dev/ttyUSBx (x = 0, 1, 2, etc.) y la versión de Arduino aparece como /dev/ttyACMx (x = 0, 1, 2, etc.)
Puedes usar el comando dmesg | grep usb para encontrar tu dispositivo.
Por ejemplo, después de conectar NodeMCU verás algo como esto:
[ 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 puedes ver, NodeMCU ahora está disponible como /dev/ttyUSB0.
Como verificación final, usa cualquier terminal para conectarte a un nuevo dispositivo; voy a usar picocom. Este es un terminal ligero. En Ubuntu se puede instalar con:
sudo apt install picocomIntentando:
picocom /dev/ttyUSB0 -b 115200Si todo está bien, deberías ver “ Terminal listo ” en la salida de picocom.
Solucionando el error “Acceso Denegado”
Si picocom dice “Acceso Denegado”, eso generalmente significa que el usuario actual no es miembro del grupo dialout: en Linux, para acceder a los puertos seriales, el usuario debe ser miembro de este grupo.
Ejecuta:
sudo usermod -aG docker $USERcomando, cierra sesión, vuelve a iniciar sesión y trata de conectar el ESP nuevamente. “Acceso denegado” debería haber desaparecido.
Construyendo Mongoose
Descarga la última versión de Mongoose desde aquí.
Mongoose se envía con un ejemplo para ESP8266 y RTOS SDK. El tutorial y el código de ejemplo se encuentran aquí.
Nota: ESP8266 tiene dos versiones de SDK. La primera es sin OS y la segunda está basada en RTOS. En este artículo usaré la última. Para encontrar las diferencias entre ellas, busca en Google o lee esta respuesta en el foro oficial.
Para construir el ejemplo tienes dos opciones:
- Usar docker y las imágenes de docker listas para usar
- Instalar SDK y toolchain en tu computadora
Usando Docker
Esto es más simple y creo que es la mejor manera. Las imágenes de docker de Cesanta contienen todo lo que necesitas para construir Mongoose para ESP (y no solo Mongoose, cualquier aplicación ESP). Así que no necesitas instalar cosas localmente y puedes compartir fácilmente tu código con amigos y colegas para que puedan construir tu firmware y obtener exactamente el mismo resultado.
La guía de instalación de docker está disponible aquí. Prueba, es realmente simple, solo necesitas agregar el repositorio de docker a tu Linux e instalarlo como un programa habitual con apt.
Una vez que docker esté instalado, ve a la carpeta mongoose/examples/ESP8266_RTOS y ejecuta build.sh
En la primera construcción, docker descargará la imagen requerida. Puede tardar un tiempo, dependiendo de tu canal de internet. Pero, una vez que build.sh se complete, en la carpeta ./bin encontrarás dos archivos .bin.
¡Ese es el firmware! ¡Lo hiciste!
Usando SDK local
Si docker es demasiado simple para ti o por cualquier razón deseas usar herramientas instaladas localmente, también puedes hacerlo.
Es un poco más difícil y aburrido, pero nada demasiado complicado. Especialmente, dado que Cesanta construyó algunas herramientas para ti y no necesitas construirlas desde el código fuente.
Así es como funciona:
- Clona el SDK de ESP RTOS desde este repositorio. El archivo makefile de ejemplo lo busca en la carpeta /opt/ESP8266_RTOS_SDK, por lo tanto, puedes poner el repositorio clonado en esta carpeta o modificar la ruta a él antes de construir el ejemplo (ver más abajo).
- Descarga xtensa-lx106-elf.tar.bz2 desde esta carpeta pública.
- Descomprime el archivo xtensa-lx106-elf.tar.bz2. Por ejemplo, en la carpeta /opt:
sudo tar -xvf xtensa-lx106-elf.tar.bz2 -C /opt
- Modifica tu variable PATH, por ejemplo, si descomprimiste la toolchain en la carpeta /opt, usa el siguiente comando:
export PATH=/opt/xtensa-lx106-elf/bin:$PATH
(también recomendaría agregar este comando a tus carpetas .bashrc o .profile, para mantener los cambios después del reinicio del sistema)
Ahora ejecuta:
$ export SDK_PATH=/opt/ESP8266_RTOS_SDK # Pon tu ruta al SDK aquí$ export BIN_PATH=./bin; mkdir ./bin$ make clean; make BOOT=none APP=0 SPI_SPEED=40 SPI_MODE=dio SPI_SIZE_MAP=0Y ahora, si todo está instalado correctamente, tendrás el firmware en la carpeta ./bin
¡Lo hiciste de nuevo!
Flasheando ESP
Hay muchas herramientas disponibles para flashear el ESP8266. Vamos a usar esptool. Para usarlo, clona este repositorio y agrega la ruta a esptool.py en tu variable PATH (esto es opcional, y solo conveniente).
Ahora, desconecta picocom, si aún está conectado (Consejo: presiona Ctrl+A; Ctrl+D para salir de él) y ejecuta:
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: si tu módulo no es un NodeMCU, necesitas conectar GPIO0 a tierra antes de flashear (conectar GPIO0 a tierra cambia el módulo a modo de flasheo). Después de flashear, desconecta GPIO0 de tierra y reinicia el ESP.
Si no ocurrieron errores, verás una salida como esta:
Conectando...
Borrando flash...
Tardó 0.58s en borrar el bloque de flash
Escribió 35840 bytes en 0x00000000 en 1.8 segundos (157.5 kbit/s)...
Borrando flash...
Tardó 2.02s en borrar el bloque de flash
Escribió 301056 bytes en 0x00020000 en 15.4 segundos (156.7 kbit/s)...
Borrando flash...
Tardó 0.11s en borrar el bloque de flash
Escribió 1024 bytes en 0x0007e000 en 0.1 segundos (163.5 kbit/s)...
Saliendo...¡Listo! Ahora el dispositivo está flasheado con tu firmware.
Primeros resultados
Ahora deberías ver aparecer una red WiFi “Mongoose”. El ejemplo configura un AP. Usa la contraseña “Mongoose” para conectarte, luego navega a http://192.168.4.1/, y verás una página de saludo “Hola, mundo”.
¡Felicidades! ¡Acabas de ejecutar un servidor web en ESP8266!
Próximos pasos
Los próximos pasos dependen de ti. Puedes usar el ejemplo descrito como punto de partida.
Mira su archivo user_main.c. Configura un punto de acceso WiFi y comienza el servidor web. Puedes cambiar fácilmente el modo AP a modo estación (y conectarte a tu red WiFi) y usar la API de Mongoose para implementar lo que desees. Esta es una forma común de usar Mongoose, así que puedes usar otro ejemplo de Mongoose para construir tu programa y tener http, tcp, udp, mqtt y más, más, más características en tu dispositivo ESP.
Usa los documentos de Espressif (por ejemplo, este) para aprender cómo manejar el módulo WiFi ESP8266 (y no solo WiFi) y la documentación de Mongoose para descubrir las características de Mongoose.
¡Los punks no están muertos!
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.