Passive drone detection · prototype v0

Hear the drone. Point to it. Know if it's identified.

Small sensor nodes listen for rotor noise, estimate the direction it's coming from, and check whether the aircraft is broadcasting FAA Remote ID. When two nodes hear the same drone, the system works out where it is. Everything shows up on one live map.

  • ~$230core parts per node
  • 3independent signals: sound, bearing, Remote ID
  • 0transmissions. It only listens.
node A node B position fix no Remote ID

How it works

Each node combines three cheap signals. None of them needs a camera or radar.

1

Hear

A 4-microphone array feeds a classifier trained on rotor harmonics. It runs on a Raspberry Pi 5 and only alerts when 2 of the last 3 half-second windows agree. Audio stays in a 1-second memory buffer and is never stored.

2

Point

The time differences between the microphones give a compass bearing to the sound (SRP-PHAT direction finding), so every alert says which way to look.

3

Identify

The node listens for Bluetooth Remote ID, the broadcast most drones flying in the US must send. A drone you can hear but that isn't broadcasting is flagged at the highest severity.

4

Locate

When two nodes hear the same aircraft within a few seconds, their bearing lines cross. The crossing point is plotted as a position fix. More nodes means more coverage and better fixes.

One dashboard for every node

A small web app, written in standard-library Python, that runs on a laptop, a spare Pi or a server.

Live map with node positions, bearing lines and position fixes, beside an alert feed

Live map and alerts

Bearing lines, position fixes and an alert list that updates as detections arrive, with an optional sound for drones with no Remote ID.

Review and export

Mark each detection as acknowledged, a confirmed drone or a false alarm, add notes, and export to CSV.

Remote ID allowlist

See every broadcast heard, including drone and pilot positions. Allowlist your own aircraft so they don't raise alarms.

Node health

Each node checks in every 15 seconds with detector status, temperature, free disk and uptime. Offline nodes turn red.

Accuracy you can measure

False alarms per day and precision for each node, calculated from your own reviews, so you can see how it's performing on your site.

Simple to run

No database server, no extra installs. Each node runs a small uplink that retries automatically if the connection drops.

Detections table with severity and review status
Detections
Nodes table with online status and health
Nodes

What's in a node

Off-the-shelf parts, about $230 per node at late-2026 US retail. Check prices before ordering.

Raspberry Pi 5, 8 GB + active cooler + 27 W supply$97
Seeed ReSpeaker USB Mic Array v2.0 (4 mics)$75
64 GB microSD (A2)$12
Windscreen for the array$10
ESP32 board as a Remote ID test transmitter$8
Tripod or mast mount$25
Core node~$230

Optional for field use: power bank and IP65 enclosure (~$60). Later upgrades include a Hailo AI HAT, camera, Wi-Fi Remote ID adapter, a 7-mic array and a HackRF for passive RF detection.

Where the project is

  1. Sensor node softwareClassifier, bearing estimation, Remote ID decoder and detector. Verified on synthetic signals: bearing error under 1°, clean detection on replay.
  2. Management dashboardMap, alerts, review, nodes, Remote ID allowlist and stats. Tested with simulated nodes; simulated position fixes land a median 46 m from the drone with ±4° bearing noise.
  3. Field testsBuild nodes, record real data and measure what matters: detection range at 25–300 m, false alarms per hour, bearing error, and Remote ID pickup range.
  4. v1Beamform toward the bearing before classifying, use a larger array, add Wi-Fi Remote ID, and add camera confirmation.

Real-world range and accuracy haven't been measured yet. The numbers above come from synthetic tests.

See it running

The dashboard is running on this machine with simulated nodes and drones.

Open the dashboard