
Mic array
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.

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.
Mic test 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 30 × 22 mm with 5 parts on 11 nets.
It is built around the SPH0641LU4H-1. Its parts include 2 capacitors, 2 ICs and 1 connector.
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: 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.
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)xc7s50csga324-1), VHDL i Vivado.
Spartan-7 har ingen DFSDM-hårdvara, så PDM läses och decimeras i logiken.Ärligt läge, oktober 2026:
| Del | Status |
|---|---|
| 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.
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älpskriptKräver Vivado 2026.1 (xsim). Se fpga/README.md.
fpga/sim/run_xsim.shcd 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Öppna hardware/kicad/mic_array.kicad_pcb i KiCad 10. Designkontroller (KiCads DRC
plus egna kontroller):
pytest hardware/testsÖppna punkter finns som GitHub Issues (översikt i TODO.md). Ändringar loggas i CHANGELOG.md.
fpga/, software/, tools/): MIThardware/): CERN-OHL-P-2.0| Qty | Value | Footprint | References |
|---|---|---|---|
| 2 | 100nF C0G | Capacitor_SMD:C_0603_1608Metric | C1, C2 |
| 2 | SPH0641LU4H-1 | Sensor_Audio:Knowles_LGA-5_3.5x2.65mm | U1, U2 |
| 1 | PMOD 1 CLK 2 DATA 5 GND 6 3V3 | Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical | J1 |
It measures 30 × 22 mm and has 2 copper layers, 1.6 mm thick.
5 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.
From the willevic2002/ultrasonic-array repository on GitHub, at the commit this page was made from: the board is hardware/kicad/mic_test.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
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).

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.


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


0xjmux/iot_leddriver_hw
ESP32-based WS2812B LED Strip Driver PCB, designed for music visualization

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


Purdue-Northwest-Vibration-Anaylsis/Purdue-Northwest-Vibration-Analysis
Vibration analysis senior design project for purdue northwest.

JackToaster/Wearable-LED-Ring
Tiny LED ring with a microphone for wearable music-reactive lighting