
VolAnti detects multicopter acoustic blade signatures on an ESP32-S3 using a four-microphone array and comb filtering, offering an accessible £35–£45 weekend breadboard path alongside an open custom PCB.
| Qty | Part / Designation | Specification / Package | Role in build | Planning cost |
|---|---|---|---|---|
| 1 | U3 | ESP32-S3-DevKitC-1-N16R8 | Dual-core microcontroller, 16 MB flash, 8 MB octal PSRAM | £8–£12 |
| 4 | M1–M4 | ICS-43434 or INMP441 breakout boards | Bottom-port or top-port digital I2S MEMS microphones | £10–£16 |
| 1 | DISP1 | Waveshare 1.54-inch B&W e-paper module V2 | 200 × 200 SPI e-paper display (optional; serial console mirrors data) | £10–£14 |
| 1 | LED1 | WS2812B RGB LED breakout | Single-pixel visual alert indicator; includes 330 Ω resistor | £1–£2 |
| 1 | BZ1 | Active 3 V buzzer | TMB12A03 or similar active buzzer with BC337/2N2222 driver | £1–£2 |
| 1 | MTR1 | 3 V ERM coin vibration motor | 10 mm coin motor with NPN driver circuit (optional) | £1–£2 |
| 1 | SW1 | 6 mm momentary tactile button | Alert snooze switch (GPIO21 to GND) | £0.50 |
| 1 | Passives kit | 1 kΩ, 330 Ω resistors; 1N4148 diodes; 10 µF, 100 nF capacitors | Audio rail decoupling and peripheral driver clamping | £2–£3 |
| 1 | Bench supplies | Solderless breadboard, jumper wire bundle, USB-C data cable | System interconnect and host power delivery | £3–£5 |
| Qty | Part / Designation | Specification / Source | Assembly role | Planning cost |
|---|---|---|---|---|
| 5 | Custom PCB | 84 × 84 mm, 4 layers, ENIG finish, 1.6 mm thickness (Flux CAD) | Bare board batch from fab house | £18–£25 (batch of 5) |
| 1 | SMD Assembly | Pre-populated SMT parts (ESP32-S3-WROOM-1, 4x ICS-43434, Ra-01H, BQ24074, TPS63020) | Turnkey automated SMD placement (per board estimate) | £25–£35 |
| 1 | BT1 | 1S 3.7 V 2500 mAh LiPo (LP785060) | Protected pouch cell, JST-PH 2.0, max 61 × 51 × 8 mm | £7–£10 |
| 1 | ANT1 | Helical spring antenna (868 or 915 MHz) | Solder-type coil antenna for Ra-01H LoRa transceiver | £1–£2 |
| 1 | BZ1 | TMB12A03 through-hole buzzer | Hand-soldered active buzzer (LCSC C96222) | £0.50–£1 |
| 1 | J3 | 8-pin 2.54 mm right-angle male header | Interconnect for Waveshare 1.54-inch e-paper display | £0.50 |
| 1 | Enclosure set | 4 3D-printed parts (base, lid, grille ring, mount in PETG) | 91 × 91 × 29 mm weatherproof body (STL/STEP provided) | £4–£7 filament |
| 1 | Acoustic hardware | 4 EVA foam rings (Ø8 mm OD, Ø5 mm ID), 4 woven speaker cloth discs | Microphone acoustic seals and weather protection | £2–£4 |
| 1 | Sealant & fast | Permatex 22072 neutral-cure silicone, M2.5 and ST2.9 screws | Enclosure perimeter gasket; avoids acetic acid damage | £3–£5 |

| Peripheral function | DevKit breadboard pin (devkit) | Custom PCB pin (pcb) | Electrical notes |
|---|---|---|---|
I2S Serial Clock (SCK) | GPIO4 | GPIO4 | Shared clock to all 4 MEMS microphones |
I2S Word Select (WS) | GPIO5 | GPIO5 | Shared frame sync to all 4 MEMS microphones |
I2S Serial Data A (SD_A) | GPIO6 | GPIO6 | West mic (L/R to GND), East mic (L/R to 3V3) |
I2S Serial Data B (SD_B) | GPIO7 | GPIO7 | North mic (L/R to GND), South mic (L/R to 3V3) |
E-Paper SPI (CS, DIN, CLK) | GPIO10, GPIO11, GPIO12 | GPIO10, GPIO11, GPIO12 | Standard 4-wire SPI interface |
E-Paper Control (DC, RST, BUSY) | GPIO13, GPIO14, GPIO15 | GPIO13, GPIO14, GPIO15 | Panel command/data, reset, and busy status |
| WS2812B RGB Data | GPIO16 | GPIO16 | Driven via 330 Ω series current-limiting resistor |
| Active Buzzer Drive | GPIO17 | GPIO17 | NPN transistor driver with 1N4148 flyback clamp |
| Vibration Motor Drive | GPIO18 | GPIO18 | NPN switch with 470 µF decoupling capacitor |
| Snooze Button | GPIO21 | GPIO21 | Active-low input with internal pull-up |
LoRa SPI (NSS, SCK, MOSI, MISO) | Not fitted | GPIO38, GPIO39, GPIO40, GPIO41 | Dedicated SPI bus for Ra-01H module |
LoRa Control (RST, DIO0) | Not fitted | GPIO42, GPIO2 | Reset line and packet interrupt line |

git clone https://github.com/agamrossen/VolAnti.git
cd VolAnti/firmware
idf.py set-target esp32s3
idf.py menuconfigmenuconfig, navigate to VolAnti Configuration to choose your hardware layout:CONFIG_VOLANTI_BOARD_DEVKIT=y.CONFIG_VOLANTI_BOARD_PCB=y (the default setting).idf.py erase-flash flash monitorI on the serial terminal (115200 baud). The firmware prints its active GPIO configuration and verifies that all four I2S microphone channels are delivering audio frames. If an individual microphone reports silence, inspect the corresponding data line and L/R bias resistor. 10/tests/audio_vectors. A builder can verify the DSP pipeline without flying a drone by playing the test vectors through a standard loudspeaker placed 1 meter from the array while running the serial monitor. 4hackaday.com
hackaday.io
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.