
ADC Silence Detector
markusbichl/ADC_Silence_Detector
WCH CH32X033 based Silence detector for turntable to Toslink converter
A simple audio recording device that magnetically attaches to the back of a Pixel device
Recorder is an open-source printed circuit board by zeeman-effect, from the zeeman-effect/pixel-snap-voice repository on GitHub. It is a 4-layer board of 59.6 × 85.6 mm with 60 parts on 69 nets, routed with 752 tracks and 224 vias.
It is built around the ESP32-S3-MINI-1U-N8, ES8311 and MKDV4GCL-ABB, with the AP2112K-3.3, AP22804AW5 and BQ24073RGTR among its other parts. Its parts include 18 capacitors, 15 resistors, 7 ICs, 2 diodes and 2 connectors. It belongs with the ESP32 boards of this library.
A one-off slim rectangular voice-note recorder that snaps to the back of a Google Pixel 10 using Pixelsnap / Qi2 magnets (MagSafe-style accessory rings work). It records raw WAV files, charges and dumps data over USB, can share those files over its own Wi-Fi network, and leaves transcription to a computer.
This repo holds hardware, firmware, simulation, and (later) a local transcription helper. The first board is meant to be ordered from quick-turn services after the sims pass — not invented from unsolved problems.
/recordings in a browser (and read-only WebDAV)MCU choice and why we did not switch off Espressif: docs/audio-platform.md.
| Path | Role |
|---|---|
docs/architecture.md | Electrical + mechanical constraints |
docs/audio-platform.md | Why ESP32-S3 + codec, not a different MCU |
docs/bom.md | Living bill of materials |
docs/manufacturing.md | JLCPCB / print / CNC |
docs/phase0-bringup.md | Off-the-shelf DevKit path before a custom PCB |
firmware/ | ESP-IDF app + portable recorder/WAV core |
sim/host/ | HOST_SIM HAL, tests, PC WAV fixture |
sim/spice/ | USB → charger → battery → 3.3 V model |
hardware/cad/ | Parametric envelope (OpenSCAD) + keepout checker |
hardware/kicad/ | KiCad 10 schematic / PCB / stackup notes |
scripts/ | check_gates.py ship gate, setup-ubuntu.sh toolchain install |
.claude/skills/ | Agent skills, including vendored KiStack KiCad workflows |
software/ | Local whisper.cpp CLI (transcribe.py) |
The hardware checks need KiCad 10 (kicad-cli plus its pcbnew Python module), the host sim needs CMake and a C compiler, the power-path sim needs ngspice, and route_pcb.py needs the freerouting autorouter.
Ubuntu 24.04 (a dev box, CI runner, container, or a cloud coding agent): from the repo root, run
bash scripts/setup-ubuntu.shIt installs build-essential, CMake, ngspice, KiCad 10 from the official KiCad PPA, and freerouting 2.4.1 into /opt/freerouting, then builds the host sim into build/host. It is safe to run again. It uses sudo for apt unless it is already root. For a cloud agent or CI job, make that command the environment's setup or install step.
Windows or macOS: there is no script. Install by hand:
pcbnew scripts (generate_pcb.py, route_pcb.py, check_placement.py) with KiCad's bundled python, not system Python.route_pcb.py. Put it on PATH, unpack it to ~/.local/opt/freerouting/, or set PSV_FREEROUTING to the launcher.Python packages are in requirements.txt: numpy (for route_pcb.py) and cadquery (only for the metal tray STEP). Install them into a virtual environment made with --system-site-packages, so KiCad's pcbnew stays importable. The file also lists what comes with KiCad and Blender instead of pip.
Firmware needs ESP-IDF on top of this. See firmware/README.md.
From the repo root, with CMake and a C compiler (MSVC, MinGW, or clang):
cmake -S sim/host -B build/host
cmake --build build/host
./build/host/recorder_test # Windows: build/host/Debug/recorder_test.exe
./build/host/recorder_simMechanical keepouts (Python 3, no extra packages):
python hardware/cad/check_envelope.pyPower path (needs ngspice):
ngspice -b sim/spice/power_path.cirdocs/phase0-bringup.md.After you change the product schematic sources, run python hardware/kicad/recorder/generate_recorder.py then python hardware/kicad/recorder/verify_schematic.py. That overwrites sheets only. It does not write recorder.kicad_pcb. Edit the board (or rebuild it on purpose with generate_pcb.py) until traces and DRC are clean. Do not order boards until python scripts/check_gates.py is clean and kicad-cli pcb drc is clean and kicad-cli has written Gerbers from hardware/kicad/recorder/recorder.kicad_pcb.
Dump WAVs over USB, then run a local model (whisper.cpp) on the computer:
python software/transcribe.py /path/to/recordings/20260828-181742.wav| Qty | Value | Footprint | References |
|---|---|---|---|
| 9 | 10k | Resistor_SMD:R_0603_1608Metric | R1, R10, Rboot, Rsd0, Rsd1, Rsd2, Rsd3, Rsd4, Rstat |
| 9 | 1uF | Capacitor_SMD:C_0603_1608Metric | C2, C6, C9, C10, C11, C12, C13, C15, C16 |
| 4 | M1.6 NPTH | PSV:MountingHole_1.7mm_M1.6 | H1, H2, H3, H4 |
| 2 | 100nF | Capacitor_SMD:C_0603_1608Metric | C3, C14 |
| 2 | 10uF | Capacitor_SMD:C_0805_2012Metric | C8, C20 |
| 2 | 1k | Resistor_SMD:R_0603_1608Metric | Rchg, Rled |
| 2 | 3.01k | Resistor_SMD:R_0603_1608Metric | R8, R11 |
| 2 | 4.7k | Resistor_SMD:R_0603_1608Metric | R5, R6 |
| 2 | 4.7uF | Capacitor_SMD:C_0603_1608Metric | C4, C5 |
| 1 | 0R | Resistor_SMD:R_0603_1608Metric | Ragnd |
| 1 | 1.8k | Resistor_SMD:R_0603_1608Metric | R4 |
| 1 | 10uF | Capacitor_SMD:C_0603_1608Metric | C21 |
| 1 | 12.288MHz | Oscillator:Oscillator_SMD_Abracon_ASE-4Pin_3.2x2.5mm | Y1 |
| 1 | 2.2uF | Capacitor_SMD:C_0603_1608Metric | C7 |
| 1 | 22uF | Capacitor_SMD:C_0805_2012Metric | C1 |
| 1 | 49.9k | Resistor_SMD:R_0603_1608Metric | R9 |
| 1 | 500mA PTC | Fuse:Fuse_0603_1608Metric | F1 |
| 1 | AP2112K-3.3 | Package_TO_SOT_SMD:SOT-23-5 | U4 |
| 1 | AP22804AW5 | Package_TO_SOT_SMD:SOT-23-5 | U5 |
| 1 | BQ24073RGTR | Package_DFN_QFN:VQFN-16-1EP_3x3mm_P0.5mm_EP1.6x1.6mm | U3 |
| 1 | EN | TestPoint:TestPoint_Pad_D1.5mm | TP_EN |
| 1 | ES8311 | Package_DFN_QFN:QFN-20-1EP_3x3mm_P0.4mm_EP1.65x1.65mm | U2 |
| 1 | ESP32-S3-MINI-1U-N8 | PSV:ESP32-S3-MINI-1U | U1 |
| 1 | GND | TestPoint:TestPoint_Pad_D1.5mm | TP_GND |
| 1 | GPIO0 | TestPoint:TestPoint_Pad_D1.5mm | TP_BOOT |
| 1 | IM73A135 | PSV:IM73A135_PG-LLGA-5-3 | MK1 |
| 1 | LP5907MFX-2.8 | Package_TO_SOT_SMD:SOT-23-5 | U8 |
| 1 | MKDV4GCL-ABB | PSV:ZDSD32GLGEAG | J3 |
| 1 | USBLC6-2SC6 | Package_TO_SOT_SMD:SOT-23-6 | U7 |
| 1 | VDD33 | TestPoint:TestPoint_Pad_D1.5mm | TP_3V3 |
| 1 | YZ103915020T | PSV:YZ103915020T_4P | J2 |
| 1 | chg | LED_SMD:LED_0603_1608Metric | D2 |
| 1 | pigtail 1S | PSV:Battery_Pigtail_2P | BT1 |
| 1 | record | Button_Switch_SMD:SW_SPST_EVQP7C | SW1 |
| 1 | status | LED_SMD:LED_0603_1608Metric | D1 |
It measures 59.6 × 85.6 mm and has 4 copper layers, 0.8 mm thick.
60 parts, built around the ESP32-S3-MINI-1U-N8, ES8311, MKDV4GCL-ABB and AP2112K-3.3. 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 zeeman-effect/pixel-snap-voice repository on GitHub, at the commit this page was made from: the board is hardware/kicad/recorder/recorder.kicad_pcb and its schematic hardware/kicad/example_project/example_project.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask zeeman-effect before reusing the design.

markusbichl/ADC_Silence_Detector
WCH CH32X033 based Silence detector for turntable to Toslink converter

cshariq/Serene
Can't hear your friend talking on the highway? Do you need to blast your music just to hear it well? Well, you're in luck, because Serene is a portable noise-cancelling device that can remove all of that noise!

JamesTwallin/gas_sensor
A tiny plug-in board for the rev E phone-companion board. It stands upright in a notch in rev E's sensor end, between the two gas sensor cans, and pokes 4.5 mm out through a slot in the case face, so its tip sits in the…

yedidiaSch/FalconDrone
[IN PROGRESS] High-performance flight controller for quadcopters, providing real-time stabilization and attitude control using FreeRTOS and C++ on STM32

mail2adnanyazik-bit/pandapute
A small, esp 32 based portable computer - an upgraded version of the cardputer adv, with more functionality, processing power, and ease of use.


alvarop/debugotron
Debugotron is a collection of debugging/automation tools I've wanted in the past but didn't have access to. Currently, the tools include:

artixzhang/rock-module
Extension PCB boards for Radxa Rock 3C for Audio and Display Screen functions