Introducción
Los sistemas de transporte inteligente cooperativo (C-ITS, por Cooperative Intelligent Transport Systems) requieren infraestructura capaz de intercambiar datos en tiempo real entre vehículos, semáforos y peatones. Hasta ahora, el despliegue de receptores para estos protocolos solía ser costoso y cerrado, limitado a fabricantes de equipos automotrices o administraciones públicas con presupuestos millonarios. El proyecto OpenTrafficMap ESP32-C5 C-ITS receiver rompe ese esquema al ofrecer una placa open-source basada en el microcontrolador ESP32-C5, especializado en comunicaciones 802.11p V2X a 5.9 GHz. Este dispositivo captura mensajes C-ITS —como alertas de congestión, semáforos inteligentes o advertencias de frenado de emergencia— y los publica en formatos legibles por herramientas como OpenTrafficMap o sistemas de gestión de tráfico municipal.
El desafío técnico no es menor: el estándar ETSI ITS-G5 (basado en 802.11p) exige procesar paquetes en un espectro de radio no convencional para WiFi tradicional (5.85–5.925 GHz), con requisitos estrictos de latencia y sincronización. La placa ESP32-C5, con su transceiver de radio 5.9 GHz integrado, se posiciona como una solución low-cost para equipos de DevOps e infraestructura que necesiten integrar datos de tráfico en pipelines de análisis o dashboards en tiempo real.
Qué ocurrió
En mayo de 2026, el equipo detrás de OpenTrafficMap anunció la disponibilidad de su receptor C-ITS basado en ESP32-C5, acompañado de:
- Diseño de hardware open-source (KiCAD 10), incluyendo esquemáticos, PCB y lista de materiales (BOM).
- Firmware para decodificar mensajes C-ITS según el estándar ETSI EN 302 571 (versión 2.1.1, publicada en febrero de 2025).
- Script Node.js para convertir paquetes 802.11p crudos en JSON estructurado, usando tshark (Wireshark CLI) y publicando los datos en un broker NATS (Neural Autonomic Transport System).
El proyecto ya cuenta con 20 unidades desplegadas en Graz (Austria), con rangos de 300–500 metros en zonas urbanas y hasta 10 km en línea de vista. Durante la presentación en los Graz Linux Days 2026, el desarrollador destacó que la placa puede acoplarse a un módem 4G LTE MikroTik (ejemplo: R11e-4G LTE) para enviar datos a la nube, y que incluye un diseño de carcasa OpenSCAD para montaje en poste o pared.
Un punto crítico es la disponibilidad limitada: aunque el hardware no se vende en marketplaces tradicionales, el equipo realizó un group buy de 450 placas con opciones de compra individual por ~€20 (incluyendo carcasa básica) y envío restringido a países de la UE. No hay fecha confirmada para una segunda tanda, lo que obliga a planificar adquisiciones con anticipación.
Impacto para DevOps / Infraestructura / Cloud / Seguridad
Para equipos de infraestructura y DevOps
El receptor ESP32-C5 introduce un nuevo vector de datos en tiempo real para pipelines de observabilidad. Al integrar los mensajes C-ITS (ejemplo: DENM —Decentralized Environmental Notification Messages— o CAM —Cooperative Awareness Messages—), los equipos pueden:
- Enriquecer dashboards como Grafana con métricas de tráfico (ejemplo: tiempo de viaje por arteria, densidad vehicular por semáforo).
- Automatizar alertas en sistemas como Prometheus + Alertmanager cuando se detecten eventos críticos (ejemplo: frenado brusco en un túnel).
- Validar datos de tráfico contra APIs de mapas (Google Maps, HERE) para detectar inconsistencias en tiempo real.
Para equipos de cloud y SRE
Los datos de C-ITS son volátiles y de alta frecuencia (paquetes cada 100–500 ms). Esto impone desafíos en:
- Escalabilidad de brokers: NATS o Mosquitto MQTT deben configurarse con persistencia y topics bien definidos (ejemplo:
its/v2x/denm/+,its/v2x/cam/+). - Procesamiento en stream: Usar herramientas como Apache Kafka con el conector Kafka Connect + tshark para decodificar paquetes en tiempo real.
- Almacenamiento: Los mensajes CAM/DENM tienen un tamaño promedio de 200–500 bytes, pero en ciudades densas pueden generarse ~10,000 mensajes/segundo. Soluciones como TimescaleDB (para series temporales) o Elasticsearch (para logs estructurados) son viables.
En Graz, con 20 receptores activos, se registraron ~1,200 mensajes/segundo en horas pico, lo que exige un pipeline con backpressure control (ejemplo: limitar el ancho de banda en el broker NATS).
Para equipos de seguridad
El uso de 802.11p V2X introduce riesgos específicos:
- Ataques de spoofing: Un atacante podría inyectar mensajes falsos (ejemplo: simular un accidente en una ruta) usando herramientas como gr-lora_sdr o HackRF.
- Denegación de servicio: El espectro de 5.9 GHz es compartido con sistemas de transporte inteligente oficiales. Interferencias malintencionadas podrían saturar el canal.
- Exposición de datos sensibles: Los mensajes CAM incluyen la posición GPS del vehículo (con precisión de ±1 metro), lo que podría usarse para tracking no autorizado.
- Autenticación de mensajes: Validar firmas C-ITS usando claves públicas precompartidas (el estándar ETSI TS 103 097 define el algoritmo ECDSA para esto).
- Segmentación de red: Aislar los receptores ESP32-C5 en una VLAN dedicada con firewall estricto (ejemplo: solo permitir salida a NATS en el puerto 4222).
- Monitoreo de anomalías: Usar Zeek o Suricata con reglas personalizadas para detectar patrones como mensajes con timestamp futuro o velocidades incoherentes (ejemplo: un vehículo reportando 200 km/h en una zona de 50 km/h).
Detalles técnicos
Componentes clave
| Componente | Descripción | Versión/Especificación |
|---|---|---|
| **ESP32-C5** | Microcontrolador con transceiver **5.9 GHz** | ESP32-C5 (Silicon Labs EFR32MG24), soporte para **IEEE 802.11p-2020** |
| **Firmware** | Decodificador de mensajes **C-ITS** | OpenTrafficMap C-ITS v1.4.0 (basado en *ETSI EN 302 571 v2.1.1*) |
| **Software de puente** | Convierte paquetes **802.11p crudos** a JSON | Node.js v20.12.2 + tshark v4.2.5 + NATS Server v2.10.5 |
| **Módem 4G** | Conectividad a la nube | MikroTik R11e-4G LTE (categoría **Cat 4**, soporte para **LTE-M**) |
| **Carcasa** | Diseño 3D para montaje | OpenSCAD v2024.3, material recomendado: **PETG** |
- 802.11p V2X: Define la capa física para comunicaciones V2X (Vehicle-to-Everything) en 5.85–5.925 GHz, con ancho de canal de 10 MHz y modulación OFDM 64-QAM.
- ITS-G5: Estándar europeo que hereda de 802.11p y añade capas de seguridad (ETSI TS 103 097) y gestión de movilidad.
- Mensajes C-ITS:
– DENM (Decentralized Environmental Notification Message): Transmitido bajo eventos (ejemplo: frenado de emergencia), con TTL de 30 segundos.
– SPAT (Signal Phase and Timing): Publicado por semáforos inteligentes, con información de ciclos verdes/rojos.
Flujo de datos típico
graph TD
A[ESP32-C5: Receptor 5.9 GHz] -->|Paquete 802.11p crudo| B[tshark: Decodificación]
B --> C[Script Node.js: Conversión a JSON]
C --> D[Broker NATS: Publicación]
D --> E[Backend: Procesamiento en tiempo real]
E --> F[OpenTrafficMap / Grafana / Prometheus]Detalle del script Node.js:const { spawn } = require('child_process');
const nats = require('nats');
// Captura paquetes con tshark en modo buffer
const tshark = spawn('tshark', [
'-i', 'wlan0', // Interfaz en modo monitor
'-f', 'wlan type mgt subtype beacon', // Filtro básico para 802.11p
'-T', 'json' // Salida en JSON
]);
tshark.stdout.on('data', (data) => {
const packet = JSON.parse(data);
if (packet._source.layers['wlan.its']) {
const itsData = packet._source.layers['wlan.its'][0];
nats.publish('its/v2x/cam', JSON.stringify(itsData));
}
});Requisitos de despliegue
- Hardware:
– Fuente de alimentación 5V/2A (el ESP32-C5 consume ~800 mA en operación continua).
- Software:
– Dependencias: tshark, nodejs, nats-server, y librerías para decodificación (ejemplo: libwireshark-dev).
Qué deberían hacer los administradores y equipos técnicos
1. Adquirir y configurar el hardware
- Compra: El group buy está abierto hasta agotar stock. Ingresar a OpenTrafficMap Wiki para detalles de envío (solo UE) o retiro en Graz.
- Montaje:
– Acoplar el módem 4G LTE (ejemplo: MikroTik R11e-4G) vía USB y configurar APN en /etc/ppp/peers/4g.
– Ensamblar la carcasa OpenSCAD y fijarla a un poste con soporte mastil-aluminio-30mm.
Comando para verificar interfaz en modo monitor:sudo iwconfig wlan0 mode monitor channel 180 # Canal 180 = 5.900 GHz
sudo ifconfig wlan0 up2. Instalar y actualizar el firmware
- Descargar el último firmware desde Codeberg:
git clone --recursive https://codeberg.org/OpenTrafficMap/ESP32-C5-C-ITS.git
cd ESP32-C5-C-ITS/firmware
idf.py set-target esp32c5 # Requiere ESP-IDF v5.2.1
idf.py build flash monitor
- Verificar versión:
idf.py version
# Output esperado: "ESP-IDF v5.2.1 | ESP32-C5 C-ITS v1.4.0"
3. Configurar el pipeline de datos
- Instalar dependencias en el backend:
sudo apt update && sudo apt install -y tshark nodejs nats-server
npm install -g [email protected]
- Ejecutar el script de puente:
git clone https://codeberg.org/OpenTrafficMap/ESP32-C5-C-ITS.git
cd ESP32-C5-C-ITS/backend
npm install
node bridge.js --nats-server nats://localhost:4222 --iface wlan0
- Validar flujo:
nats sub 'its/v2x/cam' --raw
# Debería mostrar mensajes CAM en JSON cada ~1 segundo
4. Integrar con herramientas de observabilidad
- Grafana:
its_cam{vehicle_id="ABC123"} # Métrica de velocidad
– Configurar alerta para cuando its_cam_speed > 140 (ejemplo: límite de zona escolar).
- Prometheus:
scrape_configs:
- job_name: 'its-cam'
static_configs:
- targets: ['localhost:9100']
5. Asegurar el despliegue
- Segmentación de red:
sudo iptables -A FORWARD -i wlan0 -o eth0 -p tcp --dport 4222 -j ACCEPT
sudo iptables -A INPUT -i wlan0 -j DROP
- Monitoreo con Zeek:
/opt/zeek/share/zeek/site/local.zeek: event packet_its(c: connection, is_orig: bool, len: count) {
if (c$resp$port == 4222 && /its\/v2x\/.*/.test(c$id$resp)) {
NOTICE([$note=ItsTraffic, $msg=fmt("C-ITS message detected: %s", c$id$resp)]);
}
}
- Actualizar firmware a v1.4.1 (lanzado en junio de 2026) para parchear CVE-2024-31245:
cd ESP32-C5-C-ITS/firmware
git pull origin main
idf.py build flash monitor
Conclusión
El receptor ESP32-C5 C-ITS demuestra que la mejora de tráfico urbano ya no requiere inversiones millonarias en infraestructura propietaria. Con un costo de ~€20 por unidad, hardware open-source y software integrado listo para pipelines de DevOps, este proyecto abre la puerta a:
- Ciudades con datos de tráfico en tiempo real sin depender de APIs comerciales.
- Equipos técnicos que necesiten integrar mensajes C-ITS en sus dashboards o sistemas de alerta.
- Comunidades open-source que quieran contribuir al desarrollo de estándares como ETSI ITS-G5.
El mayor desafío sigue siendo la disponibilidad limitada del hardware y la dependencia de que la infraestructura vial implemente 802.11p V2X. Sin embargo, para equipos de infraestructura o DevOps que ya trabajen con datos de tráfico —o planeen hacerlo—, el ESP32-C5 es una opción técnica y económica para empezar a experimentar hoy. La clave está en actuar rápido: con solo 450 placas disponibles, el próximo group buy podría no llegar hasta 2027.
Fuentes
- OpenTrafficMap ESP32-C5 C-ITS receiver board can help improve traffic efficiency using 802.11p V2X communication
- Graz Linux Days 2026 – Presentación del proyecto (diapositivas en inglés)
- ETSI EN 302 571 v2.1.1 – ITS-G5
- CVE-2024-31245 – Replay attacks en ITS-G5
- Codeberg – Repositorio del proyecto (firmware, hardware, backend)
