Skip to the content
PCBKitNew board
2 layers84 × 84 mmMic array, the printed circuit board in 3D

Egenbyggd 3D-ultraljudssensor för min robot: en 40 kHz-sändare och en array med 16 digitala MEMS-mikrofoner (PDM). Riktning och avstånd till hinder bestäms med chirp, matchat filter och beamforming.

Size
84 × 84 mm
Copper layers
2
Thickness
1.6 mm
Parts
37
Nets
11
Pads
144
Tracks, vias
0, 0
Pours
1
Routed
Not yet
KiCad
KiCad 7 (file 20221018)
Created
15 Oct 2026
Updated
21 Oct 2026

Overview

Mic array is an open-source printed circuit board by willevic2002, from the willevic2002/ultrasonic-array repository on GitHub, published under the MIT licence. It is a 2-layer board of 84 × 84 mm with 37 parts on 11 nets.

It is built around the SPH0641LU4H-1. Its parts include 16 capacitors, 16 ICs and 1 connector.

Main components

1

README

README.md

ultrasonic-array

Egenbyggd 3D-ultraljudssensor för min robot: en 40 kHz-sändare och en array med 16 digitala MEMS-mikrofoner (PDM). Riktning och avstånd till hinder bestäms med chirp, matchat filter och beamforming. Idén liknar Sonairs ADAR: ett platt kort som ser i 3D (riktning + avstånd) inom en kupol framför sig. Se docs/notes.md.

Lärprojekt. Det här är ingen certifierad säkerhetsfunktion och ska inte användas som enda skydd mot kollisioner.

Skiss av sensorenheten

Skiss: enheten framifrån (skalenlig), från sidan med synfältet, och fyra enheter runt en robot. Genereras av tools/draw_sketch.py från hardware/mic_placement.csv.

Arkitektur

text
 40 kHz-givare ◄── drivare (TC4427A, 10-12 V) ◄── TX ─┐
                                                      │
 16 x SPH0641LU4H-1 ── 8 x DATA + 1 x CLK ──► FPGA (Boolean Board, Spartan-7)
   (Vogel-spiral, 84x84 mm)                    │  klockgenerering, PDM-inläsning,
                                               │  CIC-decimering
                                               ▼
                                         Raspberry Pi
                                           beamforming, loggning, (ROS 2)
  • Mikrofoner: Knowles SPH0641LU4H-1, PDM med ultraljudsläge. Två mikrofoner delar en DATA-linje (SELECT väljer klockflank). 16 mikrofoner blir 8 DATA-linjer + 1 delad CLK.
  • Sändare: Murata MA40S4S (not for new designs, ersättare ska väljas) och drivare med 10-12 V. Sitter i mitten av arrayen.
  • FPGA: Real Digital Boolean Board (XC7S50, xc7s50csga324-1), VHDL i Vivado. Spartan-7 har ingen DFSDM-hårdvara, så PDM läses och decimeras i logiken.
  • Raspberry Pi: SPI-master. Startar en ping, läser inspelningen (16 kanaler x 2048 sampel) och kör matchat filter och beamforming. Se docs/pipeline.md.

Status

Ärligt läge, oktober 2026:

DelStatus
Steg 1: färdig HC-SR04-modul avläst med STM32✅ Fungerar (utanför detta repo)
PDM-mikrofonerna (SPH0641LU4H-1)❌ Inte testade i hårdvara än
Steg 3: eget kort, 16 mikrofoner🚧 Utkast. Placering klar och reproducerbar från skript, designkontroller (DRC + egna) går igenom, footprints är platshållare, inga ledningar, inget jordplan, ingen sändare
fpga/: hela kedjan (klocka, 16 kanaler, CIC, chirp, inspelning, SPI till Pi)🧪 Simulerad i xsim, bitexakt mot Python-modellen, syntetiserad med timing uppfylld. Otestad i hårdvara
fpga/constraints/: pinnar🧪 Valda på PMOD JA/JB/JC, utlästa ur schemat, ska verifieras
software/: delay-and-sum offline🧪 Testad på syntetisk data, aldrig körd på riktig mätdata
software/: SPI-klient för Pi:n, matchat filter, Python-modell av PDM/CIC🧪 Testad mot en falsk FPGA och i simuleringen av hela kedjan
software/: ROS 2❌ Inte påbörjat

Alla tekniska fakta om mikrofonen och Boolean Board (pinnar, klockintervall, tidsparametrar) ska verifieras mot datablad. Se docs/datasheets.md.

Repo-struktur

text
hardware/    KiCad-kort, footprints och genereringsskript (CERN-OHL-P)
fpga/        VHDL-källor, testbänkar, constraints
software/    Python: inläsning av loggdata och beamforming
docs/        datablad-länkar, anteckningar, bilder
tools/       hjälpskript

Bygga och köra

FPGA-simulering

Kräver Vivado 2026.1 (xsim). Se fpga/README.md.

bash
fpga/sim/run_xsim.sh

Python

bash
cd software
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
pytest
python -m beamforming data.npz --mics ../hardware/mic_placement.csv --range 1.0
python -m sonar --fake --out /tmp/x.npz --mics ../hardware/mic_placement.csv  # avstånd + riktning

Kortet

Öppna hardware/kicad/mic_array.kicad_pcb i KiCad 10. Designkontroller (KiCads DRC plus egna kontroller):

bash
pytest hardware/tests

Se hardware/README.md.

TODO

Öppna punkter finns som GitHub Issues (översikt i TODO.md). Ändringar loggas i CHANGELOG.md.

Licens

Parts

37
QtyValueFootprintReferences
16100nF C0GCapacitor_SMD:C_0603_1608MetricC1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16
16SPH0641LU4H-1Sensor_Audio:Knowles_LGA-5_3.5x2.65mmU1, U2, U3, U4, U5, U6, U7, U8, U9, U10, U11, U12, U13, U14, U15, U16
4M3MountingHole:MountingHole_3.2mm_M3H1, H2, H3, H4
1CLK D1-D8 3V3 GND GNDConnector_PinHeader_2.54mm:PinHeader_1x12_P2.54mm_VerticalJ1

Questions

How big is the Mic array PCB?

It measures 84 × 84 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Mic array use?

37 parts, built around the SPH0641LU4H-1. 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 Mic array KiCad files?

From the willevic2002/ultrasonic-array repository on GitHub, at the commit this page was made from: the board is hardware/kicad/mic_array.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Mic array 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).

More from willevic2002/ultrasonic-array

1
  • 2 layers30 × 22 mmMic test, the printed circuit board in 3D

    Mic test

    willevic2002/ultrasonic-array

    Egenbyggd 3D-ultraljudssensor för min robot: en 40 kHz-sändare och en array med 16 digitala MEMS-mikrofoner (PDM). Riktning och avstånd till hinder bestäms med chirp, matchat filter och beamforming.

    5 partsMIT

Similar boards

  • 4 layers179.6 × 161 mmArray, the printed circuit board in 3D

    Array

    Iari-Lab/OpenAcousticCamera

    266 parts26
  • 2 layersSsl, the printed circuit board in 3D

    Ssl

    meerstern/Sound_Direction_Sensor

    This board detects the direction of sound with 4-pdm mems mic using GCC-PHAT algorithm.

    56 parts17
  • 2 layers20 × 15 mmSPH0641LU, the printed circuit board in 3D

    SPH0641LU

    meerstern/SPH0641LU

    The Converter board of Kicad Data for SPH0641LU

    7 parts10
  • 4 layers57 × 56 mmIot led strip pcb, the printed circuit board in 3D

    Iot led strip pcb

    0xjmux/iot_leddriver_hw

    ESP32-based WS2812B LED Strip Driver PCB, designed for music visualization

    85 parts9
  • 2 layers100 × 100 mmAcoustic camera, the printed circuit board in 3D

    Acoustic camera

    mhbbParsa/acoustic_camera

    FPGA acoustic camera with real-time sound source localisation using Goertzel beamforming, displayed as a live heatmap on VGA/webcam overlay

    68 parts6MIT
  • 2 layers43.2 × 44.5 mmUmic, the printed circuit board in 3D

    Umic

    anfractuosity/wavecatcher

    Wavecatcher - simple board for acoustic cryptanalysis

    34 parts4
  • 2 layers67.1 × 88.4 mmDE429 001 INSTALL, the printed circuit board in 3D

    DE429 001 INSTALL

    Purdue-Northwest-Vibration-Anaylsis/Purdue-Northwest-Vibration-Analysis

    Vibration analysis senior design project for purdue northwest.

    48 parts2
  • 2 layers75 × 5.5 mmCc ring, the printed circuit board in 3D

    Cc ring

    JackToaster/Wearable-LED-Ring

    Tiny LED ring with a microphone for wearable music-reactive lighting

    42 parts1