SirenSense
Shipped · award-winningA distributed road-safety system that hears an emergency-vehicle siren, works out which direction it is coming from, and warns the driver in time to give way.
Modern cars are heavily sound-insulated and their stereos are loud, so drivers often notice an approaching ambulance, police car or fire truck late — or not at all. Deaf and hard-of-hearing drivers cannot hear the siren in the first place. SirenSense solves this at the source: it detects the siren acoustically, classifies it on-device, computes its direction relative to the car, and warns the driver with a direction arrow and a spoken cue ("siren, left") in time to react.
How it works
The system is three linked units. A roof node carries a four-microphone array in a 190 mm cross; a convolutional neural network trained with Edge Impulse decides "siren / not siren" on-device, and a time-difference-of-arrival (TDOA / GCC-PHAT) calculation turns the tiny delays between microphones into a bearing. The bearing is sent over ESP-NOW to a cabin node, which draws the arrow, speaks the alert, logs the event with GPS, and listens on a LoRa radio for transponders in emergency vehicles up to ~2 km away. A Raspberry Pi HUD renders the driver display and an offline map.
Engineering worth noting
- Two custom PCBs designed in KiCad (roof node, cabin node) plus a transponder board, all fabricated at JLCPCB under my Tekkera Electronix label.
- Dual-I2S audio capture at 44.1 kHz across two synchronised buses feeding the four mics.
- A real debugging story: the radio link went silent in the car while both nodes reported "send OK". Both ESP32s had left Wi-Fi power-save on, which silently drops ESP-NOW broadcast frames — one line, esp_wifi_set_ps(WIFI_PS_NONE), fixed it.
- An encrypted LoRa transponder network (AES-128) so emergency fleets can pre-announce themselves 30–60 seconds before they are in sight.
The version you can see on the site is the working prototype that won Hack4Change and was submitted to the James Dyson Award. The three phases below trace the build from a breadboard to that unit.
First prototype — breadboard, no PCB
The earliest working rig: two ESP32-S3 dev boards, an OLED and a lot of jumper wires. This is where the detection pipeline and the two-node architecture were proven before any board was designed.
First custom PCB — one board, still fighting noise
The single-board version: the first SirenSense PCB in a printed shell, driving an OLED. It worked, but it still had the noise and integration problems you only find once everything is on one board — which is exactly what drove the redesign.
Final system — the one that won Hack4Change
The finished multi-board system: dedicated roof and cabin nodes with their own custom PCBs, real sensors, the Pi HUD and the offline map. This is the prototype that took first place.















