← SIRENSENSE OVERVIEW

Architecture without the marketing layer.

This page records how the prototype is actually built, the decisions behind it, and the limits of what has been measured. It is a development system, not a certified automotive product.

Roof node · audio capture

Four INMP441 microphones on one ESP32-S3.

The design does not divide the array across two controllers. One ESP32-S3 captures all four channels using the left/right slot selection built into the microphones and two I²S peripherals sharing one clock domain.

Physical array

North, south, east and west microphones are positioned on a 190 mm cross. Each opposing pair shares an I²S data line: one device drives the left slot and the other drives the right slot.

East / WestI²S0 master · DATA GPIO 4
North / SouthI²S1 slave · DATA GPIO 14
ClockBCLK GPIO 6 · WS GPIO 5
Sample format44.1 kHz · 32-bit stereo slots · 24-bit microphone data
DSP inputTop 16 bits used by the correlation pipeline

Shared clocks

I²S0 generates BCLK and WS. The ESP32-S3 GPIO matrix routes those signals internally into I²S1, so the second pair runs as a slave without separate physical clock pins. Startup loopback and calibration checks verify that both buses are active and aligned.

INMP441 E [L] ─┐
INMP441 W [R] ─┴─ DATA4 → I²S0 MASTER ─┐
BCLK6 / WS5
INMP441 N [L] ─┐ │ internal GPIO matrix
INMP441 S [R] ─┴─ DATA14 → I²S1 SLAVE ←┘
Why no fixed pipeline correction is subtracted: each opposing pair is captured by the same I²S controller. Subtracting an inter-controller pipeline offset from either axis would create a false delay and can inject roughly 9° of bearing error. This correction was removed from the design after reviewing the actual data path.

Classification and bearing

Detection first, direction second.

The TinyML classifier decides whether the window contains a siren. Direction finding then uses time differences across the array. That separation keeps the bearing pipeline focused on relevant audio.

Audio classifier

The roof-node firmware uses an Edge Impulse audio export with MFE features. Training data includes real roadside ambulance recordings captured with traffic, wind and Doppler shifts rather than relying only on clean online samples.

  • Arduino/PlatformIO on the roof node to support the exported model
  • Classification confidence gates the warning path
  • Real-world false-positive testing remains an ongoing dataset task

GCC-PHAT bearing

Time-delay estimates from east/west and north/south pairs form the two axes used by atan2. With a 190 mm baseline at 44.1 kHz, one sample is approximately 2.3° near broadside. Eight-times interpolation gives a theoretical delay-grid step near 0.29°.

0.29° is not measured angular accuracy. It is the interpolated delay-grid resolution. Enclosure acoustics, noise, reverberation, geometry and calibration determine real bearing error.
Temperature note: correcting the speed of sound can affect a distance or delay model, but the common scale cancels when the two axes are combined with atan2. The design therefore does not claim that temperature compensation improves bearing accuracy.

Power integrity

The microphone rail is part of the signal chain.

The roof node has a radio, switching converter and sensitive digital microphones in the same enclosure. Battery protection, conversion and filtering were designed together instead of treated as an afterthought.

LiFePO₄ 26650
1S BMS · battery negative only to B− · system ground from P−
MT3608 boost converter to 5 V
220 µF + 10 µH + 100 nF π filter
AMS1117-3.3 with documented ESR arrangement
Per microphone: 100 Ω ferrite bead + 100 nF ceramic

Charging and distribution

  • A TP5000 USB-C module charges the single LiFePO₄ cell with the correct chemistry profile.
  • The protected system return uses the BMS P− terminal; bypassing it at B− would defeat discharge protection.
  • The MT3608 is a boost converter in this node, not a buck converter.
  • Bulk capacitance handles slower load changes; the ceramic capacitors and ferrite branches reduce higher-frequency coupling into the microphone boards.
  • The cabin system is supplied from a separate 12 V to 5 V vehicle adapter.

Cabin node · Copilot

Real-time controller beside a Linux interface.

The cabin architecture separates time-sensitive safety I/O from the richer user interface. An ESP32-S3 handles embedded sensors and links; a Raspberry Pi runs the display, cameras and higher-level application.

ESP32-S3 controller

  • ESP-IDF v5 firmware
  • ESP-NOW messages from the roof node
  • LoRa, GPS, radar, audio, microSD and MPU6050 interfaces
  • Structured UART messages to the Raspberry Pi
  • Cabin PCB fabricated; assembly and complete bring-up are in progress

Raspberry Pi application

  • Eight-page pygame interface
  • Siren alerts, offline vector navigation and system diagnostics
  • Front and driver-facing cameras
  • OBD-II gauges, media control through MPRIS and rear-camera view
  • Managed as a Linux service with systemd
Sensor correction: a DS18B20 connected to the Raspberry Pi did not enumerate during development, so the AHT21 is the current fallback source. The site does not claim two independently validated temperature sensors.

Emergency-vehicle transponder

A direct position channel.

The transponder is a separate demonstrator intended for ambulances and other emergency vehicles. It broadcasts a compact position message that nearby SirenSense prototypes can place on their map.

Demonstrator hardware

ControllerESP32-S3
RadioSX1278 · 433 MHz LoRa
PositionBN-880 GNSS receiver
Local UIOLED status display
PacketAES-128 protected payload
AccessALOHA-style jitter · 800 to 1500 ms

Current status

A perfboard demonstration unit has been built and a PCB has been designed. The radio range has not yet been characterised in a controlled urban field test.

Design targets only: references to 1–2 km urban range or 30–60 seconds of potential response-time improvement are estimates, not validated guarantees.

Validation register

No silent jump from prototype to product.

Clear status is an engineering feature. These labels describe the project today and will change only when the corresponding tests are complete.

SubsystemStatus
Roof-node PCB and enclosureBuilt and demonstrated
Four-channel synchronized captureImplemented with startup checks
TinyML siren classificationWorking prototype; dataset expansion ongoing
GCC-PHAT direction pipelineImplemented; field accuracy not yet characterised as a single guaranteed number
Cabin PCBFabricated; final assembly and complete bring-up ongoing
Raspberry Pi interfaceWorking software; Pi 5 and in-car validation pending
TransponderPerfboard demo built; production PCB and range tests pending
Weather resistanceDesign intent only; no IP certification
V16 ProExperimental feature; not DGT certified

Project files

Follow the implementation in the public repositories.