Skip to the content
2 layersSound Source DOA Localization, the printed circuit board in 3D

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

5

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.

Illustration photo

📌 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

ComponentDescription
MicrocontrollerSTM32F446RE (ARM Cortex-M4 with FPU)
Acoustic Sensors3x MAX9814 Microphone Amplifiers
DisplayWS2812B Addressable LED Ring
Power ManagementLow-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

text
.
├── 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

  1. Clone the repository.
  2. Open STM32CubeIDE and import the project from the Software/ subdirectory.
  3. Build the project and flash it to the board via ST-LINK.

🖼️ Media

Live Demonstration

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
QtyValueFootprintReferences
33100nCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC202, C203, C204, C205, C206, C207, C209, C210, C401, C402, C403, C501, C502, C503, C601, C602 +17
16WS2812BLED_SMD:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mmD701, D702, D703, D704, D705, D706, D707, D708, D709, D710, D711, D712, D713, D714, D715, D716
5MountingHoleMountingHole:MountingHole_3.2mm_M3H101, H102, H103, H104, H105
30.47uCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC404, C504, C604
3100kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR401, R501, R601
310kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR201, R202, R304
3150kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR402, R502, R602
32.2kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR403, R503, R603
32.2uCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC405, C505, C605
34.7uCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC201, C213, C717
3CMA-4544PF-WCMA_4544PF_W:CMA_CUI_9P7X9P7_CUDMK401, MK501, MK601
3MAX9814Package_DFN_QFN:DFN-14-1EP_3x3mm_P0.4mm_EP1.78x2.35mmU401, U501, U601
3NetTie_2Net_tie:Net_tieNT401, NT501, NT601
210uCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC301, C303
215pCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC211, C212
21uCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC208, C302
25.1kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR301, R302
11kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR303
1220Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR701
1AP2112K-3.3Package_TO_SOT_SMD:SOT-23-5U301
1BC3AAPCBC3AAPC:CONN_BC3AAPC_MPDJ301
1Conn_01x03_PinConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ303
1Conn_01x05_PinConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ201
1FerriteBead 600RInductor_SMD:L_0805_2012Metric_Pad1.05x1.20mm_HandSolderFB201
1LED REDLED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolderD301
1STM32F446RETxPackage_QFP:LQFP-64_10x10mm_P0.5mmU201
1SW_SPDT 09.03290.0109.03290:09.03290_EAOSW301
1USB_C_Receptacle_PowerOnly_6PConnector_USB:USB_C_Receptacle_GCT_USB4125-xx-x_6P_TopMnt_HorizontalJ302
1X322516MLB4SICrystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY201

The 104 most common of 107 parts.

Similar boards

  • 2 layers80 × 65 mmRandom sampler, the printed circuit board in 3D

    Random sampler

    Terrazed/random_sampler-kicad

    96 parts
  • 4 layers61.8 × 27.5 mmAudio Processing HW V1.0, the printed circuit board in 3D

    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 mmBitdoglab smd, the printed circuit board in 3D

    Bitdoglab smd

    BitDogLab/BitDogLab

    Open-source educational hardware for embedded systems, programming, electronics, and physical computing.

    138 parts203
  • 4 layers30 × 30 mmTransceiver, the printed circuit board in 3D

    Transceiver

    someonelse20/farsight-rc

    Custom remote controler with esp32 to stream telemetry.

    50 parts
  • 2 layers74.2 × 78.1 mmPcb main, the printed circuit board in 3D

    Pcb main

    h4ctar/retro-gauge

    Open Source Motorcycle Tachometer

    43 parts3GPL-3.0
  • 2 layers24 × 100 mmUSB C PD PSU, the printed circuit board in 3D

    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).