

Voice Unit
auto probe
- Size
- 60 × 42 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 33
- Nets
- 24
- Pads
- 182
- Tracks, vias
- 235, 44
- Pours
- 3
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 17 Aug 2026
- Updated
- 13 Oct 2026
Overview
Voice Unit is an open-source printed circuit board by gravitymir, from the gravitymir/auto_probe repository on GitHub, published under the MIT licence. It is a 2-layer board of 60 × 42 mm with 33 parts on 24 nets, routed with 235 tracks and 44 vias.
It is built around the ESP32-S3-WROOM-1-N16R8, M2.5 and ICS-43434, with the SS34 among its other parts. Its parts include 10 capacitors, 5 resistors, 4 connectors, 3 ICs and 3 diodes. It belongs with the ESP32 boards of this library.
Main components
4ESP32-S3-WROOM-1-N16R8
SMD,25.5x18mm-103.5dBm -40℃~+65℃ 2.4GHz 20.5dBm 355mA 3V~3.6V 95mA ESP32-S3R8 On-board PCB Antenna UART、SPI、I2C、GPIO、I2S、USB SMD,25.5x18mm WiFi Modules ROHSEspressif SystemsWiFi ModulesM2.5
-0.45mm 2.5mm 2mm 5mm DIN934 Hex M2.5X0.45 Nickel plated Silver white - Hexagonal nutsShuntianHex NutICS-43434
LGA-6(3.5x2.7)-26dB -40℃~+85℃ 0.98mm 1.65V~3.63V 2.65mm 3.5mm 550uA 64dB I2S Omnidirectional Omnidirectional pickup LGA-6(3.5x2.7) MEMS Microphones ROHSTDK InvenSenseMEMS MicrophonesSS34
SMA(DO-214AC)-55℃~+125℃ 3A 40V 500uA@40V 550mV@3A Independent SMA(DO-214AC) Schottky Diodes ROHSMDDSchottky Diodes
README
README.mdauto_probe
Отладочные core-платы на STM32 — исходники KiCad, гербера и генератор, который их собирает.
Платы не рисовались мышкой: схема, размещение, разводка и шелкография описаны Python-скриптами
поверх pcbnew API. Любую правку можно повторить одной командой, а результат каждый раз
прогоняется через набор проверок.
Платы
| STM32G474RE-CoreBoard | STM32H723ZG-CoreBoard | |
|---|---|---|
| МК | STM32G474RET6, LQFP64 | STM32H723ZGT6, LQFP144 |
| Размер | 70 × 70 мм | 84 × 84 мм |
| Слоёв | 4 (GND / +3V3 внутренние) | 4 (GND / +3V3 внутренние) |
| Выводы | 4 × гребёнка 1×16, шаг 2.54 | 4 × гребёнка 2×18, шаг 2.54 |
| Питание | USB-C → AP2112K-3.3 | USB-C → AP2112K-3.3 |
| Кварцы | 8 МГц HSE + 32.768 кГц LSE | 25 МГц HSE + 32.768 кГц LSE |
| Отладка | 1×10, распиновка WeAct STLink V2.1 | 1×10, распиновка WeAct STLink V2.1 |
| Формат файлов | KiCad 7 | KiCad 10 |
| Статус | готова к заказу | готова к заказу |
Все выводы микроконтроллера выведены на гребёнки; шаг 2.54 мм — плата садится в макетку. У H723 внутренние ряды гребёнок отстоят от центра ровно на 11 × 2.54 мм, то есть противоположные гребёнки разнесены на 22 шага и плата ложится на сетку 0.1″.
Что на плате (G474)
Гребёнки. J2 — левая, J3 — нижняя, J4 — правая, J5 — верхняя. Назначение каждого
контакта подписано на шелкографии и продублировано в PINOUT.csv.
На каждой гребёнке выведены GND и +3V3 — они подключены к внутренним полигонам через
thermal relief, отдельных дорожек к ним нет.
J6 — разъём прошивки, 1×10, распиновка один-в-один с WeAct MiniDebugger / STLink V2.1, шлейф садится без переходников:
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|
| 5V | GND | RX (PB6) | TX (PB7) | NRST | SWO (PB3) | GND | SWCLK | SWDIO | 3V3 |
Контакт 1 (5V) связан с VBUS разъёма USB-C. USB и отладчик одновременно не подключайте.
USB-C (J1) — не только питание: D+/D− заведены на PA12/PA11, то есть на встроенный USB 2.0 FS device. Через него работают USB CDC (виртуальный COM-порт) и штатный DFU-бутлоадер STM32 — прошивка без отладчика вообще. CC1/CC2 притянуты 5.1 кОм к земле (роль устройства).
Кнопки. SW1 — RST, SW2 — BOOT0 (для входа в DFU: зажать BOOT, нажать RST).
Светодиод. D1 на PA5 (LED_A), через 1 кОм.
R3 (0 Ω) связывает +3V3 и +3V3A (VDDA / VREF+) в одной точке. Если АЦП будет шуметь — на это же место ставится ферритовая бусина, переразводить ничего не нужно.
Чем отличается H723
Раскладка повторяет G474: кристалл смещён к нижнему левому углу (OFFX / OFFY в
генераторе), поэтому верхнее и правое кольца шире — там и стоят светодиод, кнопки RST и
BOOT, разъём прошивки, USB-C и брендинг. USB-C стоит на плате целиком: корпус упирается
в контур, но за него не свисает.
Электрически устроена так же: те же гребёнки со всеми выводами, тот же USB-C с D+/D− на встроенный USB FS (PA11/PA12), те же кнопки RST и BOOT0, светодиод (здесь на PB0 через 1 кОм), тот же R3 между +3V3 и +3V3A. Разъём прошивки J6 — тот же 1×10 с распиновкой WeAct, но UART другой:
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|
| 5V | GND | RX (PC10) | TX (PC11) | NRST | SWO (PB3) | GND | SWCLK | SWDIO | 3V3 |
Взят USART3 на PC10/PC11, а не USART1: у LQFP144 эта пара выходит на верхнюю гребёнку рядом со SWCLK, тогда как PA9/PA10 попадают на правую гребёнку за коридором USB-C, куда дорожку уже не проложить. Ещё из отличий: 25 МГц HSE вместо 8 МГц, две банки VCAP1/VCAP2 по 2.2 мкФ, отдельная развязка VDD33USB и 11 конденсаторов развязки под корпусом вместо 4.
HSE стоит в корпусе SMD-3225 с четырьмя падами: у JLCPCB 25 МГц в нём — Basic Part
(Yangxing X322525MOB4SI, C9006), тогда как двухпадовый 5032 только Extended и с
перебоями в наличии. Два лишних пада — экран корпуса, они связаны диагональю под
самим кварцем и посажены на полигон одной via. Нагрузочная ёмкость этого кварца
12 пФ, поэтому обвязка обоих генераторов — 18 пФ; кварц с другой CL ставить нельзя,
частота уйдёт.
Подписан каждый из 144 контактов, оба ряда. У J2, J3 и J5 ряды подписаны с разных сторон
гребёнки — внутренний изнутри, внешний снаружи. Напротив USB-C правое кольцо занято самим
разъёмом и его коридором, поэтому у J4 обе строки остаются слева. Подпись, которой не
хватило места, генератор сам переносит за гребёнку и сообщает об этом в отчёте сборки.
Полная карта — в PINOUT.csv.
Шрифт шелкографии — 0.8 мм при толщине линии 0.15 мм: это минимум, который JLCPCB
печатает без расплывания. В кольце между гребёнкой и краем платы остаётся 3.7 мм, и
пятизначное имя таким шрифтом туда уже не входит — у нескольких цепей на шелке
короткая форма (3V3A, PC2C, USBDP). В цепях, схеме и PINOUT.csv имена полные.
Рядом с деталью печатается только обозначение: под корпусом МК банки развязки стоят сеткой 3.2 мм, и номиналы читаемым шрифтом там просто не помещаются. Вместо этого на обратной стороне, в свободных площадках у J4, напечатана таблица «обозначение — номинал» на все 35 компонентов платы.
Схема H723 нарисована на листе A1: один символ LQFP144 занимает 76 × 188 мм, и вместе с четырьмя гребёнками 2×18 и 26 конденсаторами на A2 (как у G474) он не раскладывается.
Как открыть
Футпринты у обеих плат лежат в собственной библиотеке проекта auto_probe.pretty рядом с
платой и подключаются через fp-lib-table — системные библиотеки KiCad не нужны, и проект
не зависит от того, какая версия KiCad стоит у вас или у сборщика.
boards/STM32G474RE-CoreBoard/STM32G474RE-CoreBoard.kicad_pro
boards/STM32H723ZG-CoreBoard/STM32H723ZG-CoreBoard.kicad_proG474 сохранена в формате KiCad 7 (KiCad 8/9/10 открывают её и конвертируют при первом сохранении), H723 — в формате KiCad 10: её собирали уже им. Платы независимы, так что разные форматы никому не мешают, но KiCad 7 файл H723 не откроет.
Как заказать
Для JLCPCB / PCBWay достаточно одного архива:
boards/STM32G474RE-CoreBoard/STM32G474RE-CoreBoard_gerbers.zip
boards/STM32H723ZG-CoreBoard/STM32H723ZG-CoreBoard_gerbers.zipВнутри: 4 слоя меди, паяльная маска, шелкография, паста, контур платы (.gm1) и сверловка
(PTH / NPTH раздельно). Параметры заказа: 4 слоя, 1.6 мм, HASL или ENIG, минимальный
зазор 0.2 мм, минимальное отверстие 0.2 мм.
Для монтажа на заводе — BOM.csv и pos.csv рядом с платой. В BOM G474 проставлены
номера LCSC для микроконтроллера, стабилизатора и USB-C; у H723 — для стабилизатора и
USB-C, номер самого STM32H723ZGT6 подставьте сами. Пассивку подберите из JLCPCB Basic
Parts по номиналу и типоразмеру.
Генератор
gen/
├── kigen.py разбор библиотек символов, генерация .kicad_sch
├── pcbhelp.py обёртка над pcbnew: размещение, дорожки, via, полигоны, текст
├── kicadenv.py где лежат библиотеки KiCad и различия API между версиями
├── build_g474.py сборка платы G474 целиком
├── build_h723.py сборка платы H723
├── outputs.py BOM.csv и PINOUT.csv из готовой платы
├── export.py гербера, сверловка, pos.csv, PDF и архив для завода
├── drc.py геометрический контроль зазоров + несоединённые цепи
├── conn.py связность цепей (union-find)
├── crtyd.py пересечения courtyard
└── silkchk.py наложения шелкографии и печать поверх падовНужен Python с модулем pcbnew — от KiCad 7 или KiCad 10 (в Debian/Ubuntu — пакет
kicad, в Windows — C:\Program Files\KiCad\10.0\bin\python.exe). Каталоги системных
библиотек скрипты находят сами:
python3 gen/build_h723.py boards/STM32H723ZG-CoreBoard
python3 gen/outputs.py boards/STM32H723ZG-CoreBoard/STM32H723ZG-CoreBoard.kicad_pcb
python3 gen/export.py boards/STM32H723ZG-CoreBoard
python3 gen/drc.py boards/STM32H723ZG-CoreBoard/STM32H723ZG-CoreBoard.kicad_pcb
python3 gen/silkchk.py boards/STM32H723ZG-CoreBoard/STM32H723ZG-CoreBoard.kicad_pcbexport.py зовёт kicad-cli; им же гоняется штатный DRC:
kicad-cli pcb drc --schematic-parity --severity-error boards/STM32H723ZG-CoreBoard/STM32H723ZG-CoreBoard.kicad_pcbПозиции надписей, выставленные вручную в KiCad, хранятся в build_g474.py в таблицах
REF_AT и VAL_AT — пересборка их не затирает. Остальные надписи расставляет автоподбор,
который считает занятыми чужие надписи, контуры, пады (шелк поверх открытой меди не
печатается) и корпуса деталей (иначе надпись уезжает под чип и её не видно).
Проверки
У KiCad 7 в CLI нет DRC, поэтому проверки написаны отдельно. Текущее состояние обеих плат:
| проверка | G474 | H723 |
|---|---|---|
| зазоры меди | 0 нарушений при штатных 0.2 мм | 0 нарушений при штатных 0.2 мм |
| DRC самого KiCad | 0 ошибок | 0 ошибок |
| схема против платы | — | 0 расхождений |
| несоединённые цепи | 0 | 0 |
| пересечения courtyard | 0 | 0 |
| отверстие-отверстие | минимум 0.387 мм | минимум 0.278 мм |
| наложения шелкографии | 0 | 0 |
| шелкография поверх падов | 0 | 0 |
Обе платы проходят штатный DRC самого KiCad (проверено в KiCad 10) — 0 ошибок при netclass
clearance 0.2 мм. Сигнальные дорожки 0.15 мм, силовые 0.35 мм; минимум JLCPCB для этого
процесса — 0.09 мм. У H723 есть ещё и проверка схемы против платы (--schematic-parity),
её умеет только CLI KiCad 10.
Веер из 144 выводов на четыре гребёнки 2×18 упирается не в ширину дорожки, а в угол: крайние дорожки идут под 42°, и поперёк соседа от шага 0.5 мм остаётся 0.5·cos42° = 0.37 мм. Отсюда и вынос гребёнок на 27.94 мм от центра — на 26 мм веер в зазор 0.2 мм не укладывался ни при какой разумной ширине.
Что осталось
- На D+/D− нет защиты от статики (например, USBLC6-2SC6) — для прототипа терпимо.
- D+/D− заодно выведены на J4 контакты 3 и 4. Удобно для отладки, но это отвод на дифференциальной паре: если USB начнёт капризничать при определении — снимите с них всё.
- VBUS не заведён на вывод МК, определить подключение кабеля программно нельзя.
Лицензия
MIT — см. LICENSE.
Референсные материалы ST (схемы Nucleo MB1367 / MB1364, их гербера и BOM) в репозиторий не включены: они распространяются по ST Open Platform License Agreement. Разбор того, что из них полезно и как это открыть в KiCad, — в docs/.
Parts
33| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | 100nF | auto_probe:C_0402_1005Metric | C2, C4, C6, C10 |
| 4 | 10uF | auto_probe:C_0805_2012Metric | C1, C3, C7, C8 |
| 4 | M2.5 | auto_probe:MountingHole_2.7mm_M2.5 | H1, H2, H3, H4 |
| 2 | 1uF | auto_probe:C_0402_1005Metric | C5, C9 |
| 2 | 5.1k | auto_probe:R_0402_1005Metric | R4, R5 |
| 2 | ICS-43434 | auto_probe:InvenSense_ICS-43434-6_3.5x2.65mm | MK1, MK2 |
| 2 | SS34 | auto_probe:D_SMA | D1, D2 |
| 1 | 100k | auto_probe:R_0402_1005Metric | R2 |
| 1 | 10k | auto_probe:R_0402_1005Metric | R1 |
| 1 | 1k | auto_probe:R_0402_1005Metric | R3 |
| 1 | 5V IN | auto_probe:JST_PH_B4B-PH-K_1x04_P2.00mm_Vertical | J3 |
| 1 | BOOT | auto_probe:SW_SPST_SKQG_WithoutStem | SW2 |
| 1 | ESP32-S3-WROOM-1-N16R8 | auto_probe:ESP32-S3-WROOM-1 | U1 |
| 1 | LED | auto_probe:LED_0805_2012Metric | D3 |
| 1 | LOGIC | auto_probe:PinHeader_1x04_P2.54mm_Vertical | J4 |
| 1 | MAX98357A | auto_probe:TQFN-16-1EP_3x3mm_P0.5mm_EP1.6x1.6mm | U2 |
| 1 | RESET | auto_probe:SW_SPST_SKQG_WithoutStem | SW1 |
| 1 | SPEAKER | auto_probe:PinHeader_1x02_P2.54mm_Vertical | J2 |
| 1 | TLV75733 | auto_probe:SOT-23-5 | U3 |
| 1 | USB-C | auto_probe:USB_C_Receptacle_HRO_TYPE-C-31-M-12 | J1 |
Questions
How big is the Voice Unit PCB?
It measures 60 × 42 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Voice Unit use?
33 parts, built around the ESP32-S3-WROOM-1-N16R8, M2.5, ICS-43434 and SS34. 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 Voice Unit KiCad files?
From the gravitymir/auto_probe repository on GitHub, at the commit this page was made from: the board is boards/Voice-Unit/Voice-Unit.kicad_pcb and its schematic boards/Battery-Unit/Battery-Unit.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Voice Unit 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 gravitymir/auto_probe
7- 4 layers84 × 84 mm

- 2 layers58 × 44 mm

- 4 layers70 × 70 mm

- 2 layers45 × 28 mm

- 2 layers22 × 23.4 mm

- 2 layers16 × 18 mm

- 2 layers13 × 13.4 mm

Similar boards
- 2 layers30 × 60 mm

Capture clip
vaknin/PCB
Hardware ideas to fab-ready PCBs as code: Rust pcbgen on KiCad 10, Freerouting, ESP-IDF firmware with QEMU/Wokwi simulation, CadQuery enclosures
52 parts - 2 layers54 × 31 mm

Gamer companion
donaldbell/productspeedrun
Let's see how quickly we can get a product idea off the ground.
41 parts - 4 layers65 × 56 mm

Sensor HAT
Eniemooo/Sensor-HAT
Open-hardware indoor air sensor (CO2, VOC/NOx, T/RH, light, sound): HAT for Raspberry Pi or standalone with Seeed XIAO + ESPHome. KiCad 10.
112 parts - 4 layers128 × 51.4 mm

Quack face
HeyPCB/quack-face
Face board for the Open Duck Mini's head: eye LEDs, projector driver, I2S amp and mic, antenna servos, shaped to the head. 4-layer KiCad 10 board plus printed standoffs, fit-checked in the head CAD.
55 partsCERN-OHL-S-2.0 - 4 layers67 × 46 mm

Agentcast dongle
ThyFriendlyFox/agentcast-prototype
An HDMI dongle with a far-field mic array. Plug it into any TV; people in the room talk, a cloud agent does the work, and the TV shows the results. The product spec is docs/office-agent-dongle.md.
46 parts - 4 layers60 × 84 mm

StratosCore Claude
pantojinho/StratosCore
StratosCore is an open-source portable field, aviation, meteorological, navigation and radio computer based on the ESP32-S3-WROOM-1-N16R8.
277 parts1 - 2 layers64 × 46 mm

- 4 layers58 × 102 mm
