GUIDE / TERMINAL

Aprende a combinar búsqueda, regex y filtros multi-regla en SerialFlow Terminal para aislar los mensajes importantes de la salida serie ruidosa.

Cómo usar los filtros del monitor serie para encontrar lo que necesitas

En el desarrollo de sistemas embebidos e IoT con microcontroladores como el ESP32, ESP8266 o STM32, el puerto serie (UART) es el canal primordial para inspeccionar el estado interno del hardware y el software. Sin embargo, tan pronto como entran en juego el programador de tareas FreeRTOS, la pila de red Wi-Fi y protocolos como MQTT o HTTP, el flujo serie se inunda con decenas o cientos de líneas por segundo.

Intentar detectar un fallo crítico, una excepción de memoria o un error esporádico de desconexión mediante desplazamiento visual manual en una pantalla pequeña resulta prácticamente imposible. La fatiga por exceso de información y la velocidad de desplazamiento hacen que los mensajes clave desaparezcan de la vista en cuestión de segundos.

Con SerialFlow Terminal, dispones de un monitor serie profesional para Android optimizado tanto para el banco de pruebas como para intervenciones de campo mediante USB OTG. En esta guía paso a paso, aprenderás a combinar búsquedas directas, expresiones regulares (regex) y filtros multirregla para eliminar el ruido y localizar de inmediato cualquier problema en tu firmware.


Por qué los filtros serie son esenciales en proyectos IoT

Al depurar un microcontrolador ESP32, diferentes capas del sistema generan registros de manera concurrente:

  • Gestor de arranque (Bootloader) y ROM: Informes sobre el motivo del reinicio (Power-on, Watchdog, Deep Sleep), frecuencias de reloj y cabeceras de particiones.
  • Controlador Wi-Fi y Bluetooth: Eventos de escaneo, negociación de tramas de baliza (beacons), cambios de estado de conexión y nivel de señal (RSSI).
  • Protocolos de aplicación: Enlace TCP/IP, comprobación de certificados TLS, transacciones HTTP y paquetes periódicos de mantenimiento de conexión (ping MQTT).
  • Lógica de usuario y sensores: Muestreo de datos en bucle, diagnósticos de memoria y tiempos de ejecución.

Si no aplicas filtros, una excepción grave del sistema suele quedar sepultada de inmediato bajo un alud de lecturas de sensores o mensajes informativos de rutina. SerialFlow Terminal resuelve esto diferenciando dos herramientas complementarias: la búsqueda en el historial y el filtrado dinámico en tiempo real.


Búsqueda frente a filtrado: Cuándo usar cada herramienta

Para optimizar tu flujo de trabajo, es importante conocer las diferencias clave entre ambas funciones:

  1. La herramienta de búsqueda (Search):

    • Recorre el búfer de texto ya recibido en memoria.
    • Permite desplazarse entre coincidencias hacia adelante o hacia atrás (Next / Previous).
    • Admite distinción entre mayúsculas y minúsculas (Case Sensitive).
    • Mejor caso de uso: Verificar si ocurrió un evento puntual durante la inicialización, como comprobar qué dirección IP asignó el router tras el arranque.
  2. La herramienta de filtrado (Filter):

    • Modifica en tiempo real la visibilidad de los mensajes que llegan al monitor.
    • Oculta al instante todas las líneas que no coinciden con las reglas definidas.
    • Admite criterios positivos (incluir líneas) y negativos (excluir líneas irrelevantes).
    • Mejor caso de uso: Monitorear un dispositivo en pruebas prolongadas para observar únicamente advertencias, errores o el comportamiento de un subsistema específico.

Guía paso a paso: Estrategias de filtrado en SerialFlow Terminal

Paso 1: Conexión del hardware y configuración serie

Conecta tu placa ESP32 a tu teléfono o tableta Android utilizando un cable USB con capacidad de datos y un adaptador OTG adecuado. Abre SerialFlow Terminal.

  1. Selecciona el chip conversor USB a serie detectado (como CP2102, CH340, FT232 o el puerto nativo USB-CDC de los chips ESP32-S3 y C3).
  2. Configura los parámetros serie para que coincidan con tu firmware (generalmente una velocidad de 115200 baudios, 8 bits de datos, 1 bit de parada y sin paridad).
  3. Abre la conexión y verifica que los caracteres se muestren con claridad en la pantalla.

Consejo: Si necesitas actualizar o reemplazar el firmware antes de comenzar a depurar, puedes programar la placa directamente desde tu móvil con ESPFlash y luego alternar a SerialFlow Terminal para la inspección serie.

Paso 2: Filtrado por palabras clave de subsistemas

En entornos como ESP-IDF o el núcleo Arduino para ESP32, las líneas de depuración suelen incorporar etiquetas de severidad y módulos, tales como [I], [W], [E] o nombres de librerías.

  • Monitorear solo errores críticos: Configura el filtro con el término [E] o ERROR. De este modo, la consola ocultará automáticamente todos los mensajes informativos cotidianos y mostrará únicamente los fallos.
  • Depurar la conectividad Wi-Fi: Introduce wifi o IP_EVENT. Podrás seguir fácilmente la secuencia de asociación y detectar de inmediato si la autenticación falla por contraseña errónea o señal débil.
  • Rastrear transacciones MQTT: Filtra por MQTT o PUBLISH para observar el intercambio de mensajes con el intermediario (broker) sin distraerte con las lecturas analógicas de los sensores.

Paso 3: Uso de expresiones regulares (Regex) para cazar cuelgues del sistema

Cuando un microcontrolador experimenta reinicios inesperados, la causa casi siempre reside en punteros nulos, corrupción de memoria o bloqueos de tareas que activan el temporizador guardián (Watchdog).

Activa el modo Regex en SerialFlow Terminal e introduce la siguiente expresión:

(Guru Meditation|panic|abort\(\)|assert failed|watchdog)

Por qué funciona esta regla:

  • Guru Meditation: Atrapa las excepciones fatales nativas del núcleo del ESP32.
  • panic: Detecta caídas críticas del núcleo del sistema operativo FreeRTOS.
  • abort\(\): Captura llamadas intencionadas de parada ante estados incoherentes.
  • assert failed: Aísla condiciones de error lógico evaluadas en el código fuente.
  • watchdog: Detecta reinicios provocados por tareas bloqueadas en bucles infinitos.

Al aplicar este filtro, la salida permanecerá limpia hasta el milisegundo exacto en que ocurra el incidente, preservando el volcado de registros y la traza de retorno (Backtrace) en pantalla.

Paso 4: Combinación de filtros multirregla para limpiar ruido continuo

En proyectos avanzados, a menudo necesitas observar varias fuentes a la vez mientras silencias tareas repetitivas. Por ejemplo, te interesa ver los eventos de red pero quieres suprimir las líneas de latido (heartbeat) emitidas cada segundo.

SerialFlow Terminal permite encadenar reglas de filtro:

  1. Regla de inclusión: Define un patrón como (wifi|mqtt|http) para mantener visibles los módulos de telecomunicaciones.
  2. Regla de exclusión: Añade una condición negativa con términos como heartbeat, ping o tick.

El resultado es un flujo despejado que reduce cientos de líneas intrascendentes a las pocas decenas que verdaderamente importan para tu diagnóstico.


Caso práctico: Diagnosticar una desconexión intermitente en MQTT

Supongamos que un sensor ambiental ESP32 funciona durante unos minutos y de forma repentina deja de publicar datos en el servidor MQTT.

Procedimiento de diagnóstico:

  1. Pausar la consola: En cuanto notes que el LED de estado indica desconexión, pulsa el botón Pausa en SerialFlow Terminal para congelar el texto visible mientras la app continúa almacenando datos en segundo plano.
  2. Aplicar filtro combinado: Utiliza la expresión:
    (MQTT_EVENT_DISCONNECTED|wifi_disconnect|heap)
    
  3. Analizar la causa raíz:
    • Si la línea de desconexión viene precedida de un mensaje de memoria baja (low heap: 1800 bytes), el fallo se debe a fragmentación de la memoria RAM disponible para la capa criptográfica TLS.
    • Si se reporta wifi_disconnect reason: 201, el problema proviene del punto de acceso Wi-Fi y no del cliente MQTT.
  4. Exportar el registro: Utiliza la función de compartir o exportar registro de SerialFlow Terminal para enviar el fragmento filtrado a tus compañeros de equipo en formato de texto plano.

Resolución de problemas comunes en el filtrado serie

  • Aparición de caracteres extraños o símbolos corruptos: Indica que los baudios configurados no coinciden con la velocidad definida en Serial.begin(...). Modifica la velocidad en la configuración de la app hasta que el texto sea legible.
  • El filtro no muestra ninguna línea: Comprueba si la opción de distinguir mayúsculas y minúsculas (Case Sensitive) está activada por error. El término error no coincidirá con ERROR si la opción está encendida. Desactívala o usa el prefijo regex (?i).
  • Ausencia de los registros iniciales de arranque: Si conectas el terminal cuando la placa ya ha iniciado, te perderás los primeros mensajes. Tras abrir el puerto en SerialFlow Terminal, pulsa brevemente el botón físico RESET / EN de tu placa para capturar la secuencia de inicio completa desde el bootloader.

Conclusión

El filtrado inteligente en el monitor serie transforma un torrente caótico de datos en una herramienta de diagnóstico clara y accionable. Con SerialFlow Terminal, puedes realizar depuraciones de nivel profesional directamente desde tu dispositivo Android.

Una vez identificada y corregida la causa del error en tu entorno de desarrollo, puedes emplear ESPFlash para grabar la nueva versión de firmware en la placa por USB OTG de forma inmediata, cerrando el ciclo de prueba y corrección en cuestión de minutos.