SirenSense — un proyecto de Tekkera Electronix · tekkera.com

SirenSenseRegistro técnico
← Visión general de SirenSense

Arquitectura sin la capa de marketing.

Cómo está construido realmente el prototipo, las decisiones que hay detrás y los límites de lo que se ha medido. Es un sistema de desarrollo, no un producto de automoción certificado. Las matemáticas del rumbo se derivan en la página de visión general; esta página es el registro del hardware y de su estado.

Construido por un solo ingeniero en Tekkera Electronix — Ibrahim Najjar. Las protoboards, las placas, el firmware, el procesado de señal y la carcasa salieron todos de las mismas manos.

Cuatro micrófonos INMP441, un ESP32-S3

La matriz no se reparte entre dos controladores. A un INMP441 se le puede indicar qué ranura de una trama estéreo I²S debe escribir, de modo que cada par opuesto comparte una línea de datos — un micrófono en la ranura izquierda, su opuesto en la derecha — y ambos pares funcionan en un solo dominio de reloj.

Este / OesteI²S0 maestro · datos GPIO 4
Norte / SurI²S1 esclavo · datos GPIO 14
Relojes compartidosBCLK GPIO 6 · WS GPIO 5 · encaminados internamente por la matriz de GPIO
Formato de muestreo44.1 kHz · ranuras estéreo de 32-bit · datos de micrófono de 24-bit
Entrada del DSPLos 16 bits más altos de cada muestra, hacia la cadena de correlación
Comprobación de arranqueEl bucle de retorno y la calibración confirman que ambos buses están activos y alineados
INMP441 E [L] ─┐
INMP441 O [R] ─┴─ DATA4  → I²S0 MAESTRO ─┐
                                BCLK6 / WS5
INMP441 N [L] ─┐                         │ matriz GPIO interna
INMP441 S [R] ─┴─ DATA14 → I²S1 ESCLAVO ←┘

Por qué no se resta una corrección fija de la cadena

Cada par opuesto lo captura el mismo controlador I²S, así que los dos nunca comparten controlador entre pares. Restar un desfase de cadena supuesto entre controladores a cualquiera de los dos ejes inyecta un retardo que no es un retardo. Este montaje midió aproximadamente 9° de error de rumbo por una corrección de ese tipo y la eliminó. Dos periféricos en un mismo dominio de reloj evitan el problema en lugar de compensarlo.

Cara frontal de la placa derivadora de micrófono INMP441 a medida
Placa derivadora de micrófono a medida, cara frontal.
Cara posterior de la placa derivadora de micrófono INMP441 a medida
Placa derivadora de micrófono, cara posterior.
Diseño de la placa del nodo de techo dibujado en KiCad
Diseño de la placa del nodo de techo en KiCad.

Primero la detección, después la dirección

El clasificador decide si una ventana contiene o no una sirena; solo las ventanas que lo superan se envían a la estimación de dirección. Ese orden es lo que mantiene la cadena de rumbo alejada del audio irrelevante.

Clasificador de audio

  • Exportación de audio de Edge Impulse con características de energía de banco de filtros mel
  • Entrenado con grabaciones de ambulancias al borde de la carretera con tráfico, viento y desplazamiento Doppler, no con muestras limpias de estudio
  • La confianza de la clasificación condiciona la ruta de aviso
  • Arduino/PlatformIO en el nodo de techo para ejecutar el modelo exportado
  • Las pruebas de falsos positivos en condiciones reales siguen pendientes como tarea del conjunto de datos

Estimación de dirección

  • Dos ejes de retardo, este–oeste y norte–sur, sobre una cruz de 190 mm
  • Una muestra a 44.1 kHz son 22.68 µs, equivalentes a 2.35° cerca de la perpendicular
  • La interpolación 8× sobre la estimación de retardo da un paso teórico de 0.29° en la rejilla de retardo
  • 0.29° es resolución, no exactitud medida

La temperatura y lo que no corrige

Corregir la velocidad del sonido cambia un modelo de distancia o de retardo, pero ambos ejes llevan el mismo factor d/c y se cancela en cuanto se combinan con atan2. Por eso el diseño no afirma que la compensación de temperatura mejore la exactitud del rumbo. La derivación, con todos los símbolos explicados, está en la página de visión general.

No está confirmado qué estimador se entrega

El rumbo basado en retardo descrito arriba es el enfoque de diseño documentado. El estimador tal como está hoy en el repositorio público combina la energía por canal con atan2 y un filtro de deriva, y la cadena gcc_phat no aparece en ningún punto de ese árbol; sus canales son delantero–izquierdo, delantero–derecho, trasero–izquierdo y trasero–derecho en lugar de la cruz norte–este–sur–oeste. Cuál de los dos entrega la versión actual debería confirmarse antes de afirmar ninguno de los dos como un hecho.

El rail de alimentación del micrófono forma parte de la cadena de señal

El nodo de techo aloja un módulo de radio, un convertidor conmutado y cuatro micrófonos digitales dentro de una carcasa pequeña. La protección de la batería, la conversión y el filtrado se diseñaron en conjunto, y no como algo secundario. La cadena, en orden:

  1. Celda LiFePO₄ 26650 — todo el nodo funciona con una sola celda.
  2. Módulo USB-C TP5000 — carga con el perfil LiFePO₄, no con uno de Li-ion.
  3. BMS 1S — el negativo de la batería va solo a B−; el retorno protegido del sistema se toma de P−.
  4. Convertidor elevador MT3608 — eleva hasta un rail de alimentación regulado de 5 V.
  5. Filtro π — 220 µF de almacenamiento, 10 µH en serie, 100 nF cerámico.
  6. AMS1117-3.3 — el rail de alimentación del micrófono, con una disposición de ESR documentada.
  7. Perla de ferrita y 100 nF — 100 Ω en cada rama de micrófono, no una sola vez en la alimentación.
  8. Adaptador de 12 V a 5 V — una alimentación independiente para la unidad de cabina.

Dos formas de equivocarse con esto

En este nodo el MT3608 es un convertidor elevador, no un convertidor reductor: la celda queda por debajo del rail de 5 V, así que un componente reductor nunca regularía. Y el retorno protegido debe venir del terminal P− del BMS — tomarlo de B− puentea la protección de descarga y anula el circuito de protección.

Controlador en tiempo real junto a una interfaz Linux

La E/S sensible al tiempo se separa de la interfaz más completa. La lectura de sensores y el enlace de radio se quedan en un microcontrolador; el renderizado, las cámaras y la aplicación viven en la Pi, y ambos se comunican por un enlace UART estructurado.

Controlador ESP32-S3

  • Firmware ESP-IDF v5
  • Mensajes ESP-NOW procedentes del nodo de techo
  • Interfaces de LoRa, GPS, radar, audio, microSD y MPU6050
  • Mensajes UART estructurados hacia la Raspberry Pi
  • Placa de cabina fabricada; montaje y puesta en marcha completa en curso

Aplicación para Raspberry Pi

  • Interfaz pygame de ocho páginas
  • Avisos de sirena, navegación vectorial sin conexión y diagnósticos del sistema
  • Cámaras frontal y orientada al conductor
  • Indicadores OBD-II, control multimedia mediante MPRIS y vista de cámara trasera
  • Gestionada como servicio de Linux con systemd

Corrección de sensores

Un DS18B20 conectado a la Raspberry Pi no se enumeró durante el desarrollo, así que el AHT21 es la fuente de reserva actual. El sitio no afirma contar con dos sensores de temperatura validados de forma independiente.

Diseño de la placa del nodo de cabina en KiCad
Diseño de la placa del nodo de cabina.
Electrónica del interior del prototipo de cabina de SirenSense
Interior del prototipo de cabina.
La interfaz de cabina de SirenSense en su pantalla
Interfaz de Raspberry Pi.

Un canal de posición directo

Un demostrador aparte, transportado por el propio vehículo de emergencia. Emite un mensaje de posición compacto que los nodos SirenSense cercanos pueden situar en su mapa, de modo que un aviso puede indicar una dirección y una distancia, y no solo un rumbo.

ControladorESP32-S3
RadioSX1278 · 433 MHz LoRa
PosiciónReceptor GNSS BN-880
Interfaz localPantalla OLED de estado
PaqueteCarga útil protegida con AES-128
Acceso al canalJitter tipo ALOHA, de 800 a 1500 ms
Estado de montajeUnidad de demostración en placa perforada construida; placa diseñada
Alcance urbano4 km objetivo de diseño — aún no caracterizado en campo

El alcance de radio no se ha caracterizado en una prueba de campo urbana controlada. La cifra anterior es una estimación de ingeniería, y cualquier mejora del tiempo de respuesta que implique lo es por el mismo motivo.

Sin saltos silenciosos del prototipo al producto

Un estado claro es una característica de ingeniería, no un descargo de responsabilidad. Estas etiquetas describen el proyecto tal como está hoy y solo cambian cuando la prueba correspondiente está completa.

Placa y carcasa del nodo de techoConstruidas y demostradas
Captura sincronizada de cuatro canalesImplementada, con comprobaciones de bucle de retorno y calibración al arrancar
Clasificación de sirenas con TinyMLPrototipo funcional; ampliación del conjunto de datos en curso
Cadena de direcciónRumbo basado en retardo derivado e implementado como el diseño documentado. El estimador del repositorio público toma actualmente la dirección de la energía por canal con atan2. No está confirmado cuál de los dos entrega la versión actual
Exactitud del rumbo en campoNo caracterizada — no se afirma ninguna cifra única garantizada
Placa de cabinaFabricada; montaje final y puesta en marcha completa en curso
Interfaz de Raspberry PiSoftware funcional; validación en Pi 5 y en el vehículo pendiente
TranspondedorUnidad de demostración en placa perforada construida; placa de producción y pruebas de alcance pendientes
Resistencia a la intemperieIP67 objetivo de estanqueidad — no certificado de forma independiente
V16 ProUna evolución sustancialmente más capaz del concepto de baliza V16 de la DGT española. No certificado por la DGT; no sustituye reglamentariamente a un dispositivo V16 certificado

La implementación es pública

El código fuente, los archivos de la placa y la documentación que resumen las secciones anteriores.