

Sound Source DOA Localization
Real-time sound source direction of arrival localization on STM32 using GCC-PHAT and microphone array.
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 107
- Nets
- 107
- Pads
- 371
- Tracks, vias
- 680, 296
- Pours
- 13
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 29 Jul 2026
- Updated
- 19 Aug 2026
Overview
Sound Source DOA Localization is an open-source printed circuit board by duongductin, from the duongductin/STM32-Sound-Source-DOA-Localization repository on GitHub, published under the MIT licence. It is a 2-layer board with 107 parts on 107 nets, routed with 680 tracks and 296 vias.
It is built around the AP2112K-3.3, WS2812B and CMA-4544PF-W, with the BC3AAPC and X322516MLB4SI among its other parts. Its parts include 48 capacitors, 17 diodes, 16 resistors, 5 ICs and 4 connectors. It belongs with the audio and music boards and the STM32 boards of this library.
Main components
5AP2112K-3.3
SOT253.3V 600mA CMOS Low Dropout Linear Regulator with EnableDiodes IncorporatedUncategorisedWS2812B
5mm X 5mm Surface Mount RGB LED with Intelligent ControlWorldsemiUncategorisedCMA-4544PF-W
--44dB@±2dB 2.2kΩ 3V~10V 4.65mm 500uA 60dB 9.7mm Omnidirectional 插件,D=9.7mm Microphones ROHSCUIBuzzersBC3AAPC
--10℃~+100℃ - Button And Strip Battery Connector ROHSMPDButton And Strip Battery ConnectorX322516MLB4SI
SMD3225-4P-40℃~+85℃ 16MHz 50Ω 9pF Crystal Oscillator ±10ppm ±20ppm SMD3225-4P Crystals ROHSYXCCrystals
README
README.md📍 STM32 Sound Source DOA Localization
An embedded acoustic direction of arrival localization system using a triangular microphone array and an STM32F446RE microcontroller.
📌 Overview
This project determines the direction of an incoming sound source using three microphones arranged in a triangular configuration. By calculating the Time Difference of Arrival (TDOA) of the acoustic signal across each sensor via the GCC-PHAT algorithm, the microcontroller displays the estimated direction on a ring of WS2812B addressable LEDs.
✨ Key Features
- Real-Time Signal Processing: Optimized TDOA estimation using the GCC-PHAT algorithm running on an ARM Cortex-M4 microcontroller.
- Visual Interface: Dynamic directional display using WS2812B addressable LEDs.
- Flexible Power Supply: Dual-power capability supporting both USB and 3 AA battery inputs managed by a low-dropout (LDO) regulator.
🛠️ Hardware Architecture
| Component | Description |
|---|---|
| Microcontroller | STM32F446RE (ARM Cortex-M4 with FPU) |
| Acoustic Sensors | 3x MAX9814 Microphone Amplifiers |
| Display | WS2812B Addressable LED Ring |
| Power Management | Low-Dropout (LDO) regulator with shared ground for USB / AA battery input |
Complete schematic and PCB layouts KiCad files are available in the Hardware/ directory.
📁 Repository Structure
.
├── Docs/ # Full schematic PDF
├── Hardware/ # KiCad schematics (.kicad_sch), PCB layout (.kicad_pcb)
├── Media/ # Photos, videos and 3D renders
├── Software/ # STM32CubeIDE project, drivers, and C source code
├── Tools/ # Python Signal & GCC-PHAT Plotter
├── .gitignore
├── LICENSE # MIT License
└── README.md⚙️ Building and Flashing
Prerequisites
- STM32CubeIDE
- KiCad (optional, to view or edit hardware design)
- ST-LINK V2/V3 programmer/debugger
Quick Start
- Clone the repository.
- Open STM32CubeIDE and import the project from the Software/ subdirectory.
- Build the project and flash it to the board via ST-LINK.
🖼️ Media
Live Demonstration
💡 Additional photos, 3D renders and PCB layout image can be found in the Media/ directory.
🔍 Debugging & Verification Tools
To validate signal processing and angle calculations, two tools were developed:
- Python Signal & GCC-PHAT Plotter (Tools/): Early test script to visualize signals and cross-correlation results. Used during initial development to plot microphone signals and correlation peaks. Includes two sample text files demonstrating algorithm validation before codebase refactoring.
- Google Sheets and Google Apps Script GCC-PHAT Visualizer: A spreadsheet with extension script to visualize different steps of the GCC-PHAT process. Copy spreadsheet
- Desmos Interactive Geometry: An interactive mathematical model to visualize and verify the sound source coordinates calculations from sensor geometry. View Desmos Model
📄 License
This project is licensed under the MIT License — see the LICENSE file for details.
Parts
107| Qty | Value | Footprint | References |
|---|---|---|---|
| 33 | 100n | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C202, C203, C204, C205, C206, C207, C209, C210, C401, C402, C403, C501, C502, C503, C601, C602 +17 |
| 16 | WS2812B | LED_SMD:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm | D701, D702, D703, D704, D705, D706, D707, D708, D709, D710, D711, D712, D713, D714, D715, D716 |
| 5 | MountingHole | MountingHole:MountingHole_3.2mm_M3 | H101, H102, H103, H104, H105 |
| 3 | 0.47u | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C404, C504, C604 |
| 3 | 100k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R401, R501, R601 |
| 3 | 10k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R201, R202, R304 |
| 3 | 150k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R402, R502, R602 |
| 3 | 2.2k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R403, R503, R603 |
| 3 | 2.2u | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C405, C505, C605 |
| 3 | 4.7u | Capacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolder | C201, C213, C717 |
| 3 | CMA-4544PF-W | CMA_4544PF_W:CMA_CUI_9P7X9P7_CUD | MK401, MK501, MK601 |
| 3 | MAX9814 | Package_DFN_QFN:DFN-14-1EP_3x3mm_P0.4mm_EP1.78x2.35mm | U401, U501, U601 |
| 3 | NetTie_2 | Net_tie:Net_tie | NT401, NT501, NT601 |
| 2 | 10u | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C301, C303 |
| 2 | 15p | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C211, C212 |
| 2 | 1u | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C208, C302 |
| 2 | 5.1k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R301, R302 |
| 1 | 1k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R303 |
| 1 | 220 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R701 |
| 1 | AP2112K-3.3 | Package_TO_SOT_SMD:SOT-23-5 | U301 |
| 1 | BC3AAPC | BC3AAPC:CONN_BC3AAPC_MPD | J301 |
| 1 | Conn_01x03_Pin | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J303 |
| 1 | Conn_01x05_Pin | Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_Vertical | J201 |
| 1 | FerriteBead 600R | Inductor_SMD:L_0805_2012Metric_Pad1.05x1.20mm_HandSolder | FB201 |
| 1 | LED RED | LED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolder | D301 |
| 1 | STM32F446RETx | Package_QFP:LQFP-64_10x10mm_P0.5mm | U201 |
| 1 | SW_SPDT 09.03290.01 | 09.03290:09.03290_EAO | SW301 |
| 1 | USB_C_Receptacle_PowerOnly_6P | Connector_USB:USB_C_Receptacle_GCT_USB4125-xx-x_6P_TopMnt_Horizontal | J302 |
| 1 | X322516MLB4SI | Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm | Y201 |
The 104 most common of 107 parts.
Similar boards
- 2 layers80 × 65 mm

- 4 layers61.8 × 27.5 mm

Audio Processing HW V1.0
aitesam961/OpenADSP
An Embedded Digital Signal Processing Device for Audio signals.
83 parts4GPL-3.0 - 2 layers87.9 × 98.7 mm

Bitdoglab smd
BitDogLab/BitDogLab
Open-source educational hardware for embedded systems, programming, electronics, and physical computing.
138 parts203 - 4 layers76.3 × 99.3 mm

- 2 layers100 × 100 mm

- 4 layers30 × 30 mm

- 2 layers74.2 × 78.1 mm

- 2 layers24 × 100 mm

USB C PD PSU
niektb/sluisbrinkie-eurorack-published
Published Modules of the Sluisbrinkie project
67 parts34
Questions
What parts does the Sound Source DOA Localization use?
107 parts, built around the AP2112K-3.3, WS2812B, CMA-4544PF-W and BC3AAPC. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Sound Source DOA Localization KiCad files?
From the duongductin/STM32-Sound-Source-DOA-Localization repository on GitHub, at the commit this page was made from: the board is Hardware/Sound-Source-DOA-Localization.kicad_pcb and its schematic Hardware/LEDs.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Sound Source DOA Localization design in my own project?
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).