5Tech Edge Bridge (ESP32) — MVP de la Fase 1 — Manual de usuario y operación
Configuración, flasheo, ajuste de Wi-Fi / MQTT, comandos Bluetooth LE y el flujo de demostración del ESP32 Edge Bridge.
esp32-edge-bridge · Revisión Borrador (Preliminar) · 2026-07-08 · Estado: PRELIMINAR
PRELIMINAR. Este manual describe un MVP de la Fase 1 sobre una placa de desarrollo ESP32 lista para usar. Es un prototipo de monitoreo y automatización, no un producto terminado ni certificado. Los procedimientos y valores marcados con
[TBD]están pendientes de confirmación. Los documentos de ingeniería autorizados están enmodules/5tech-edge-iot-bridge/; siga siempre la documentación entregada con el firmware que flasheó.
Figura FIG-001 — 5Tech Edge Bridge, el MVP de la Fase 1 que conecta una entrada con un flujo de automatización por Wi-Fi, Bluetooth LE y MQTT.
1. Seguridad
Lea este capítulo antes de configurar, operar o modificar el Edge Bridge.
Figura FIG-002 — Palabras de advertencia (PELIGRO · ADVERTENCIA · PRECAUCIÓN · AVISO) y los pictogramas utilizados en este manual.
1.1 Palabras de advertencia
| Palabra de advertencia | Significado |
|---|---|
| PELIGRO | Peligro que causará la muerte o lesiones graves si no se evita. |
| ADVERTENCIA | Peligro que podría causar la muerte o lesiones graves si no se evita. |
| PRECAUCIÓN | Peligro que podría causar lesiones leves o moderadas si no se evita. |
| AVISO | Práctica no relacionada con lesiones personales — daños a la propiedad o al equipo, o un aviso importante (alcance / limitación) que el lector debe atender. |
1.2 Esto no es un dispositivo de seguridad
AVISO — No es un dispositivo de seguridad. El 5Tech Edge Bridge es un prototipo de monitoreo y automatización sobre una placa de desarrollo. No tiene certificación de seguridad de ningún tipo y no debe utilizarse para proteger a personas ni equipos, para detener maquinaria, para crear una zona de protección, ni como parte de ninguna función de seguridad funcional. Sus estados de peligro (
WARNING/DANGER) son señales de demostración en una canalización de datos, no salidas de seguridad. Nunca confíe en él donde un fallo pudiera causar lesiones o pérdidas. (Este es un aviso de alcance sobre lo que el dispositivo no es — unAVISOsegún §1.1, no una advertencia de peligro sobre el propio dispositivo.)
1.3 Uso previsto y público
El Edge Bridge está diseñado para uso por desarrolladores, técnicos e integradores en un banco de pruebas de confianza para validar la canalización de sensor a automatización y para demostrarla a clientes y partes interesadas. Cualquier otro uso — en particular el despliegue en campo, el uso de seguridad o la conexión a una red no confiable — se considera uso indebido para este MVP de la Fase 1.
1.4 Personal cualificado y competencia requerida
La puesta en marcha, la operación, el cableado y la modificación del Edge Bridge son únicamente para personal cualificado. Para este MVP de la Fase 1, eso significa una persona que:
- sea un desarrollador, técnico o integrador competente en electrónica de baja tensión y en la manipulación con seguridad ESD de una PCB desnuda;
- pueda flashear firmware y leer una consola serie, y entienda la lógica de 3.3 V y que los pines GPIO no toleran 5 V (§1.5);
- entienda MQTT / Bluetooth LE en una LAN de confianza y la naturaleza en texto plano y sin autenticación de este prototipo (§1.7);
- y, antes de cablear cualquier cosa a la salida
Con1o a las entradasDet1/Det2, pueda confirmar la tensión, la corriente y el aislamiento del circuito externo contra la ficha técnica.
Una persona sin esta competencia no debe poner en marcha, cablear ni modificar el dispositivo sin supervisión.
1.5 Seguridad eléctrica
La placa se alimenta desde una fuente USB 5 V y opera a baja tensión (lógica de 3.3 V). El riesgo de descarga eléctrica de la propia placa es mínimo, pero:
AVISO — Daño al equipo. Los pines GPIO son de lógica de 3.3 V y no son tolerantes a 5 V. Aplicar más de 3.3 V a una entrada GPIO, cortocircuitar pines o invertir una conexión puede destruir la placa. Alimente la placa desde una sola fuente a la vez (USB o un raíl externo de 3.3 V/5 V, no ambos). Observe precauciones ESD al manipular la placa desnuda.
- Use un cable USB apto para datos y un puerto o fuente USB en buen estado conocido.
- Si conecta un sensor externo o una carga a la salida
Con1, confirme que su tensión y corriente están dentro del valor nominal del pin ([TBD]) antes de cablear. No conmute la red eléctrica ni una carga inductiva directamente desde un pin GPIO.
1.6 Nota sobre radiofrecuencia (RF)
La placa transmite por Wi-Fi (2.4 GHz) y Bluetooth LE a través de la antena integrada del
módulo. La potencia de transmisión es baja y típica de un módulo ESP32 de consumo. Las homologaciones
de radio regionales para el prototipo ensamblado son [TBD] — este es un dispositivo de desarrollo,
así que opérelo únicamente donde tal uso esté permitido y manténgalo en una red de banco de confianza.
1.7 Riesgos residuales
Incluso cuando se utiliza según lo previsto, permanecen los siguientes: el dispositivo puede enclavar
un estado de peligro y seguir reportando DANGER después de que un sensor se recupere (esto es
deliberado — véase §3.3); en una red en texto plano, cualquiera que pueda alcanzar el broker puede
comandar el dispositivo; y Bluetooth LE y Wi-Fi comparten una antena, por lo que la capacidad de
respuesta de BLE varía con la carga de Wi-Fi. Ninguno de estos es una mitigación de seguridad.
2. Acerca de este manual
Alcance. Este manual cubre la configuración, el flasheo, el ajuste, la operación y la resolución de problemas del Edge Bridge MVP de la Fase 1 en una placa de desarrollo ESP32. No reemplaza la documentación de ingeniería detallada del repositorio del firmware.
Público. Desarrolladores, técnicos e integradores según se describe en §1.3.
Convenciones.
- Los avisos de seguridad utilizan las palabras de advertencia de §1.1 y aparecen antes del paso al que se aplican.
- Los procedimientos están numerados, con una acción por paso.
[TBD]marca un valor pendiente de confirmación. Nunca sustituya un[TBD]por un valor supuesto.- La
fuente monoespaciadadenota comandos, nombres de archivo, nombres de pines, temas (topics) y texto de interfaz/consola.
Documentos relacionados.
| Documento | Ubicación | Uso |
|---|---|---|
| Ficha técnica | datasheets/esp32-edge-bridge-datasheet/ |
Especificaciones de la placa de desarrollo, interfaces, pinout, valores nominales |
| Descripción general del producto | products/esp32-edge-bridge/ |
Posicionamiento y aspectos destacados |
| Firmware — configuración | modules/5tech-edge-iot-bridge/docs/setup.md |
Cadenas de herramientas, secrets, compilación, flasheo |
| Firmware — API MQTT | modules/5tech-edge-iot-bridge/docs/mqtt-api.md |
Temas y esquemas de carga útil |
| Firmware — API Bluetooth | modules/5tech-edge-iot-bridge/docs/bluetooth-api.md |
Tabla GATT, comandos BLE |
| Firmware — guion de demostración | modules/5tech-edge-iot-bridge/docs/demo-script.md |
El recorrido para cliente / inversor |
3. Descripción general del producto y teoría de funcionamiento
Figura FIG-003 — El Edge Bridge y sus conexiones: USB, entradas opcionales y las dos radios de 2.4 GHz.
3.1 Qué hace
El Edge Bridge lee una entrada, decide si esa entrada representa una condición WARNING o DANGER, y
vuelve a publicar la decisión como JSON estructurado por Bluetooth LE y MQTT para que un flujo de
automatización pueda actuar sobre ella. Funciona en una placa de desarrollo ESP32 estándar y no
necesita hardware de sensor para demostrarse.
3.2 Dónde se sitúa — Sense → Connect → Decide
- Sense — un sensor GPIO (Det1 / Det2), el botón integrado, un sensor simulado o un comando remoto indican una condición.
- Connect — el ESP32 resuelve su estado y publica por Wi-Fi a un broker MQTT; un canal Bluetooth LE da control local incluso sin red.
- Decide — un flujo de automatización (n8n / Node-RED / personalizado) se suscribe y alimenta paneles, alertas y registros.
3.3 Teoría de funcionamiento
- Identidad del dispositivo. Al arrancar, el dispositivo deriva su identidad de la MAC del módulo:
el id MQTT
5tech-bridge-a1b2c3y el nombre BLE5Tech-IoT-Bridge-a1b2c3(los últimos seis dígitos hex de la MAC). - Máquina de estados. Nueve estados —
BOOTING,WIFI_CONNECTING,MQTT_CONNECTING,READY,WARNING,DANGER,OFFLINE,CONFIG_MODE,ERROR. Una vez operativo, el estado se resuelve en prioridad estricta:error > danger > warning > config_mode > !wifi > READY. Cada estado tiene su propio patrón de parpadeo del LED integrado. - Enclavamiento de peligros. Los niveles de peligro se ordenan
NORMAL < WARNING < DANGER. Elevar a un nivel superior gana y publica un evento; elevar a un nivel igual o inferior es una operación nula. Un peligro se enclava — un sensor que se recupera no lo borra automáticamente. Solo unclearexplícito (o un tiempo de espera configurado, desactivado por defecto) devuelve aNORMAL. - Publicación. La telemetría se publica cada 5 s, un evento se publica de inmediato ante cualquier
cambio, y el estado se retiene en el broker con un Last Will, de modo que un suscriptor tardío
siempre ve el estado verdadero. Un peligro tiene prioridad sobre la conectividad: un dispositivo en
DANGERsigue reportandoDANGERincluso si Wi-Fi se cae. - Comandos. La misma gramática de comandos funciona en serie, Bluetooth LE y MQTT. Los comandos se ponen en cola y se ejecutan en el bucle principal, nunca en una tarea de callback de radio.
4. Controles e indicadores
Figura FIG-004 — Los pines, el botón integrado, el LED de estado y el conector USB, con una leyenda numerada.
Los números de pin exactos son los predeterminados de la Fase 1; confírmelos con la ficha técnica y la serigrafía de su placa.
| Control / Indicador | Función | Estados |
|---|---|---|
| Conector USB | Alimentación, flasheo, consola serie (115 200 baudios) | Conectado / desconectado |
LED de estado (GPIO2) |
Estado del dispositivo | Un patrón de parpadeo distinto por estado (READY, WARNING, DANGER, OFFLINE, CONFIG_MODE, …) |
Botón (GPIO0, BOOT integrado) |
Disparador manual | Pulsación corta = genera advertencia / borra un peligro activo · Pulsación larga (≥1.5 s) = genera peligro |
Entrada Det1 (GPIO18) |
Entrada digital, activa en bajo | Afirmada → WARNING; valor reflejado por BLE |
Entrada Det2 (GPIO19) |
Entrada digital, activa en bajo | Afirmada → DANGER; valor reflejado por BLE |
Salida Con1 (GPIO23) |
Contacto configurable remotamente | Establecido por BLE / MQTT / serie (set_con1 0\|1) |
Zumbador (GPIO25, opcional) |
Anunciación local | Desactivado por defecto (ENABLE_BUZZER = 0) |
AVISO. En la mayoría de los devkits ESP32,
GPIO2es el LED integrado. La Fase 1 lo usa para el estado del dispositivo, así queCon1se movió aGPIO23. Para restaurar el cableado original, establezcaCON1_GPIO = 2yENABLE_STATUS_LED = 0(una guarda en tiempo de compilación impone que nunca compartan un pin).
5. Operación
5.1 Antes de empezar
Necesita: una placa de desarrollo ESP32-WROOM-32, un cable USB apto para datos, un computador anfitrión
con la cadena de herramientas y (para la ruta Wi-Fi/MQTT) un broker MQTT como mosquitto en la misma
LAN de confianza. No se requiere hardware de sensor.
Hay dos variantes de firmware disponibles y son intercambiables en el cable:
| Variante ESP-IDF | Variante PlatformIO / Arduino | |
|---|---|---|
| Cadena de herramientas | ESP-IDF (compila con v5.4.4) | PlatformIO (compila con 6.1.19) |
| Compilación | idf.py build |
pio run |
La configuración completa de la cadena de herramientas está en modules/5tech-edge-iot-bridge/docs/setup.md.
5.2 Configurar secrets y flashear
AVISO.
secrets.hestá en gitignore y nunca debe confirmarse (commit). Solo se rastreasecrets.example.h.
Variante ESP-IDF:
- Copie la plantilla:
cp firmware/esp-idf/main/config/secrets.example.h firmware/esp-idf/main/config/secrets.h - Edite
secrets.h— establezcaWIFI_SSID,WIFI_PASSWORDyMQTT_HOST. - Compile y flashee:
cd firmware/esp-idf && idf.py set-target esp32 && idf.py build idf.py -p /dev/ttyUSB0 flash monitor
Variante Arduino / PlatformIO:
cp firmware/platformio/src/config/secrets.example.h firmware/platformio/src/config/secrets.h- Edite
secrets.hcomo arriba. cd firmware/platformio && pio run && pio run -t uploadpio device monitor
5.3 Primer encendido y comprobación de estado
- Conecte la placa por USB y abra el monitor serie a 115 200 baudios.
- Confirme que el dispositivo imprime su identidad (
5tech-bridge-…) e inicia su secuencia de arranque. - Obsérvelo asociarse con Wi-Fi, conectarse al broker e iniciar la publicidad Bluetooth LE.
- Confirme que el LED de estado se asienta en el patrón
READY. - Si Wi-Fi no se conecta en ~15 s, el dispositivo continúa fuera de línea: BLE y serie siguen
funcionando y el estado se lee como
OFFLINE. Esto es esperado, no un fallo.
5.4 Modo de banco (sin Wi-Fi)
Dejar WIFI_SSID en su marcador de posición es un modo de banco compatible: el dispositivo omite
Wi-Fi, arranca en CONFIG_MODE y permanece totalmente utilizable por Bluetooth LE y la consola serie.
Todos los comandos funcionan; solo la publicación MQTT no está disponible.
5.5 El flujo de demostración
- En un portátil en la misma LAN, suscríbase al broker:
mosquitto_sub -h <broker> -t "5tech/iotbridge/+/#" -v - Dispare una advertencia — desde la consola serie, desde un teléfono por Bluetooth LE (escriba
test_warningen la característica Cmd), o publicando en el tema de comandos. Las tres son equivalentes. - Observe
[STATE] READY -> WARNING, el cambio de cadencia del LED, y que el evento llega al broker. - Dispare
test_danger. El LED va más rápido y el peligro se enclava. - Envíe
clear. El dispositivo vuelve aREADY. - Explique el punto: solo el disparador está simulado — sustitúyalo por un sensor real y nada aguas abajo cambia.
5.6 Apagado ordenado
Simplemente desconecte el USB. En una desconexión abrupta, el broker publica el Last Will retenido,
por lo que el estado del dispositivo cambia a OFFLINE para cualquier suscriptor. En el siguiente
arranque, el dispositivo lo sobrescribe con un estado en vivo.
6. Configuración
6.1 Métodos de configuración
| Método | Uso | Notas |
|---|---|---|
secrets.h (en tiempo de compilación) |
Credenciales de Wi-Fi y del broker | En gitignore; requiere reflasheo |
| Banderas de características (banderas de compilación) | Activar/desactivar subsistemas | Protegidas con #ifndef; anule con -D |
| Comandos en tiempo de ejecución (serie / BLE / MQTT) | Disparar eventos, fijar umbrales, accionar Con1, reiniciar |
Gramática idéntica en los tres transportes |
6.2 Comandos en tiempo de ejecución
Aceptados como texto simple o JSON, en cualquier transporte.
| Comando | Efecto |
|---|---|
help |
Lista los comandos |
status |
Estado actual, como JSON |
config |
Configuración en ejecución, como JSON |
test_warning |
Genera un evento WARNING |
test_danger |
Genera un evento DANGER |
clear |
Borra el evento activo |
set_threshold <n> |
Fija el umbral de peligro (la forma JSON puede mover ambos límites) |
set_con1 <0\|1> |
Acciona el contacto Con1 |
reboot |
Reinicia (la respuesta se vacía primero) |
Ejemplos:
test_danger
{"command":"set_threshold","danger_threshold":40,"warning_threshold":90}
6.3 Umbrales
El valor del sensor se modela como una distancia en cm — menor significa más cerca significa peor.
Una lectura por debajo de warning_threshold (predeterminado 100) genera WARNING; por debajo de
danger_threshold (predeterminado 50) genera DANGER. set_threshold rechaza cualquier par donde
warning no sea estrictamente superior a danger o que deje el rango válido [0, 200]. Los umbrales no
se persisten — un reinicio restaura los valores predeterminados compilados.
6.4 Comandos Bluetooth LE
- Escanee en busca de
5Tech-IoT-Bridge-…, o filtre por el UUID de servicio4fafc201-1fb5-459e-8fcc-c5c9c331914b(más fiable — el nombre está en la respuesta de escaneo). - Conéctese y expanda el servicio personalizado.
- Active las notificaciones en la característica
Respantes de escribir enCmd. Las respuestas a unRespno suscrito se descartan — esta es la causa más común de "sin respuesta". - Escriba un comando como texto UTF-8 (p. ej.
test_danger) enCmd. Las respuestas llegan como notificaciones enResp, con la formaOK <cmd>: <message>oERR <cmd>: <message>. - Escriba
0x01(un byte en bruto, no el texto "1") enCon1para ponerGPIO23en alto;0x00lo pone en bajo.
6.5 Actualización de firmware
Flashee por USB (§5.2). No hay OTA ni actualización por BLE en la Fase 1.
7. Mantenimiento
El Edge Bridge es firmware sobre una placa de desarrollo; no hay tareas de mantenimiento físico programadas. "Mantenimiento" aquí significa mantener el firmware y su configuración en buen estado.
Figura FIG-005 — Puntos de atención rutinaria: la conexión USB, el archivo de secrets y los conjuntos de pruebas automatizadas.
| Intervalo | Tarea | Notas |
|---|---|---|
| Según necesidad | Reflashear tras un cambio de firmware | §5.2 |
| Según necesidad | Mantener secrets.h actualizado y sin confirmar |
Verifique con git check-ignore |
| Antes de etiquetar una compilación | Ejecutar el conjunto de pruebas de host (make -C tests/host) |
77 aserciones, sin hardware |
| Antes de etiquetar una compilación | Ejecutar la verificación de paridad en el cable | Confirma que ambas variantes siguen coincidiendo |
| Rutina | Inspeccionar el cable y el conector USB | Un cable solo de carga es un fallo común |
| Rutina | Mantener la placa seca, protegida de estática y libre de cortos | PCB desnuda, sin envolvente |
8. Resolución de problemas
| Síntoma | Causa posible | Acción |
|---|---|---|
| Sin salida serie | Baudios incorrectos o cable solo de carga | Use 115 200 baudios y un cable de datos; confirme el puerto serie |
| Sin respuesta BLE a un comando | Notificaciones de Resp no activadas |
Active las notificaciones en Resp antes de escribir en Cmd (§6.4) |
| Dispositivo no está en el broker | MQTT_HOST incorrecto, broker caído o puerto equivocado |
Compruebe secrets.h, confirme el broker en el puerto 1883, compruebe la LAN |
Atascado en CONFIG_MODE |
Credenciales Wi-Fi de marcador de posición o ausentes | Fije WIFI_SSID / WIFI_PASSWORD reales en secrets.h y reflashee |
El estado se lee OFFLINE |
Wi-Fi no conectado | Esperado sin Wi-Fi; BLE y serie siguen funcionando; compruebe credenciales/cobertura |
El broker muestra el dispositivo OFFLINE |
El Last Will se disparó en una desconexión abrupta | Normal tras una pérdida de energía; se autorrepara al reconectar |
| El peligro no se borra | Modelo de peligro con enclavamiento | Envíe clear explícitamente — un sensor que se recupera no lo borra automáticamente (§3.3) |
Con1 parece conmutar el LED |
Con1 en GPIO2 (cableado original) |
La Fase 1 usa GPIO23; véase el AVISO de §4 |
| BLE tartamudea bajo carga | Wi-Fi y BLE comparten una antena | Esperado en ESP32; reduzca la carga de Wi-Fi durante el trabajo con BLE |
| La compilación ESP-IDF falla por el tamaño de partición | La app desborda la partición predeterminada de 1 MB | Use CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE (Arduino: huge_app.csv) |
| Un comando se descarta silenciosamente | Cola de comandos (profundidad 8) llena | Reduzca la tasa de comandos; el descarte se registra en la serie |
Si un fallo persiste, capture el registro serie, la salida de status / config y los mensajes del
broker, y luego consulte los documentos de ingeniería en modules/5tech-edge-iot-bridge/.
9. Especificaciones
Este manual no duplica los valores de las especificaciones. Todas las especificaciones de la placa de desarrollo, de interfaz, eléctricas y ambientales se mantienen en la ficha técnica:
- Ficha técnica:
datasheets/esp32-edge-bridge-datasheet/document.md
| Área | Dónde encontrarla |
|---|---|
| Plataforma de hardware (placa de desarrollo ESP32) | Ficha técnica §1, §4 |
| Mecánica (factor de forma) | Ficha técnica §5 |
| Eléctrica (alimentación USB, nivel lógico) | Ficha técnica §6 |
| Interfaces y protocolos (Wi-Fi, BLE, MQTT, GPIO, serie) | Ficha técnica §7 |
| Ambiental y valores nominales | Ficha técnica §8 |
| Conformidad (n/a — prototipo de desarrollo) | Ficha técnica §9 |
10. Garantía y soporte
Garantía. Este es un MVP de la Fase 1 / prototipo de desarrollo, proporcionado tal cual para
evaluación y demostración. No conlleva garantía de producto comercial ni certificación. Los términos de
garantía de producción son [TBD] y pertenecen a la Fase 2.
Soporte.
- 5Tech — Vancouver, BC, Canadá
- Correo electrónico:
info@5tech.ca - Web:
https://5tech.ca
Al contactar con el soporte, tenga a mano: la variante y versión del firmware, el id del dispositivo
(5tech-bridge-…), el registro serie y los mensajes del broker en torno al problema.
AVISO — No es un dispositivo de seguridad. No despliegue este prototipo en ningún rol donde un fallo pudiera dañar a personas o equipos. Es un MVP de monitoreo y automatización, nada más. (Un aviso de alcance — un
AVISOsegún §1.1, no una advertencia de peligro sobre el propio dispositivo.)
Figuras
| ID | Título | Estado | Nombre de archivo | Propósito |
|---|---|---|---|---|
| FIG-001 | Edge Bridge — Render principal del prototipo | Ausente | renders/hero_edge-bridge.png |
Portada / imagen destacada del manual |
| FIG-002 | Símbolos de seguridad y palabras de advertencia | Ausente | figures/safety_symbols.png |
Palabras de advertencia y pictogramas para el capítulo de seguridad |
| FIG-003 | Descripción general del producto | Ausente | figures/overview.png |
Orientar al usuario sobre la placa y sus conexiones |
| FIG-004 | Controles e indicadores | Ausente | figures/controls_indicators.png |
Identificar los pines, el botón, el LED y el conector USB |
| FIG-005 | Puntos de mantenimiento | Ausente | figures/maintenance_points.png |
Localizar los puntos de atención rutinaria |
Este manual es preliminar y está sujeto a cambios. Véase revision.md para el control de cambios,
references.md para las fuentes e image_prompts.md para el índice de figuras/prompts.