

SpecVue
4-layer ESP32-S3 smart-glasses PCB with camera live streaming and on-device object classification over Wi-Fi.
- Size
- 90 × 17 mm
- Copper layers
- 4
- Thickness
- 1.6 mm
- Parts
- 76
- Nets
- 71
- Pads
- 290
- Tracks, vias
- 922, 133
- Pours
- 5
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 29 Jul 2026
- Updated
- 20 Oct 2026
Overview
SpecVue is an open-source printed circuit board by Rujul-Rumale, from the Rujul-Rumale/SpecVue repository on GitHub, published under the CERN-OHL-P-2.0 licence. It is a 4-layer board of 90 × 17 mm with 76 parts on 71 nets, routed with 922 tracks and 133 vias.
It is built around the ESP32-S3, W25Q128JVSIQ and AMS1117-3.3, with the AP2121AK-1.3TRG1, MP34DT05TR-A and AO3401A among its other parts. Its parts include 36 capacitors, 17 resistors, 7 ICs, 4 diodes and 3 connectors. It belongs with the radio and wireless and wearables boards and the ESP32 boards of this library.
Main components
7ESP32-S3
QFN-56-EP(7x7)-40℃~+105℃ -98.4dBm 150Mbps 2.412GHz~2.484GHz 2.4GHz 21dBm 340mA 3V~3.6V 88mA SPI、USB、UART、ADC、I2C、I2S、PWM WiFi transceiver QFN-56-EP(7x7) RF Transceiver ICs ROHSEspressif SystemsRF Transceiver ICsW25Q128JVSIQ
SOIC-8-208mil-40℃~+85℃ 100,000 cycles 120ms@(32KB) 128Mbit 133MHz 1uA 2.7V~3.6V 20 Years 3ms Power-on reset、Hardware write protection、Software write protection、Write enable latch、Absolute write protection SPI SOIC-8-208mil NOR FLASH ROHSWinbondNOR FLASHAMS1117-3.3
SOT-223-40℃~+125℃ 0.003%Vout 1 1.1V@(800mA) 15V 1A 3.3V 5mA 72dB@(120Hz) Fixed Over Current Protection、Short Circuit Protection、Thermal shutdown Positive SOT-223 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSAdvanced Monolithic SystemsVoltage Regulators - Linear, Low Drop Out (LDO) RegulatorsAP2121AK-1.3TRG1
SOT-23-5-40℃~+85℃@(Ta) 1 1.3V 25uA 300mA 30uVrms 600mV@(100mA) 6V 70dB@(1kHz) Fixed Over Current Protection、Enable Positive SOT-23-5 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSDiodes IncorporatedVoltage Regulators - Linear, Low Drop Out (LDO) RegulatorsMP34DT05TR-A
HCLGA-4LD(3x4)-26dB -40℃~+85℃ 1.8V 1mm 3mm 4mm 64dB 650uA Omnidirectional Omnidirectional pickup HCLGA-4LD(3x4) MEMS Microphones ROHSSTMicroelectronicsMEMS MicrophonesAO3401A
SOT-231 P-Channel 14nC@10V 30V 47mΩ@10V、60mΩ@4.5V、85mΩ@2.5V 4A 55pF 645pF 80pF 900mV SOT-23 MOSFETs ROHSAlpha & Omega SemiconductorMOSFETsSS14
SMA(DO-214AC)-55℃~+150℃ 1A 25A 300uA@40V 40V 550mV@1A Independent SMA(DO-214AC) Schottky Diodes ROHSMDDSchottky Diodes
README
README.mdSpecVue
A 4-layer PCB for smart glasses featuring an ESP32-S3 with camera live streaming and on-device object classification over Wi-Fi.
Overview
This board is a compact (90×17 mm) smart glasses controller designed around the ESP32-S3. It captures video from a parallel-interface camera module, runs a lightweight object classifier (e.g., TensorFlow Lite Micro / ESP-DL) on the ESP32-S3, and streams results (bounding boxes, labels) over Wi-Fi — optionally with live video. Li-Po battery powered with built-in charging.
Block Diagram
USB-C ─┬─► MCP73831 (Charger) ──► Li-Po Battery
│ │
└──► VSYS ◄────────────────────┘
│
┌──────┼──────────┐
│ │ │
AMS1117 AP2121AK LP2985
3.3V 1.3V 2.8V
│ │ │
VDD_CPU Core Rail Camera IO
& I/O (1.3v) (2.8v)
┌──────────────── Data Flow ────────────────┐
Camera ──► ESP32-S3 ──┬─► TFLite Micro ──► Wi-Fi ──► Detected objects
(DVP) (capture) │ (classifier) (MQTT/UDP)
└─► Wi-Fi ──► Live video stream (optional)Specifications
| Parameter | Value |
|---|---|
| Board dimensions | 90 mm × 17 mm |
| Layer count | 4 (F.Cu, In1.Cu, In2.Cu, B.Cu) |
| Board thickness | 1.6 mm |
| Copper weight | 1 oz (0.035 mm) all layers |
| Dielectric | FR4 (εr = 4.5) |
| Input power | USB VBUS (5 V) or Li-Po battery (3.7–4.2 V) |
| Charger current | 500 mA (set by R1 = 2 kΩ) |
Power Tree
| Rail | Voltage | Regulator | Max Current | Supplies |
|---|---|---|---|---|
| VSYS | Battery / 5V | (direct from USB-Diode-BAT path) | — | Input to all regulators |
| 3.3 V | 3.3 V | AMS1117-3.3 (U4) | 800 mA | ESP32-S3 core + I/O, flash, mic |
| 1.3 V | 1.3 V | AP2121AK-1.3 (U6) | 400 mA | Camera core (1.3v rail) |
| 2.8 V | 2.8 V | LP2985-2.8 (U5) | 150 mA | Camera analog/digital IO (2.8v rail) |
Power Path
- USB VBUS feeds the MCP73831-2-OT (U3) Li-Po charger IC.
- Battery connects through AO3401A (Q1) P-FET for reverse-polarity protection.
- The FET's output (VSYS) is shared between USB and battery — no external power mux needed (Q1's body diode provides OR-ing).
- VSYS powers all three LDOs in parallel.
- SS14 (D4) Schottky diode provides additional input protection.
Microcontroller
ESP32-S3 (U1), QFN-56 7×7 mm, 0.4 mm pitch.
- Dual-core Xtensa LX7 @ up to 240 MHz
- Built-in Wi-Fi 802.11 b/g/n + BLE 5.0
- 512 kB SRAM, supports external PSRAM
- 40 MHz main crystal (Y2, 2520 package, 10 ppm) with 15 pF load caps
- CHIP_PU (pin 4) pulled high with a resistor, with reset button (Reset)
GPIO Allocation
| GPIO(s) | Function | Connected To |
|---|---|---|
| GPIO4 | ADC / Battery monitor | Voltage divider on VBAT |
| GPIO10–16, GPIO38–40, GPIO47–48 | Camera parallel data bus | J4 FFC connector |
| GPIO17 | I2C SCL | J4 pin 5 (camera control) |
| GPIO18 | I2C SDA | J4 pin 4 (camera control) |
| GPIO0 | Boot mode selection | Flash button |
| GPIO46 | Strapping pin | Pull-up/pull-down resistors |
| U0TXD, U0RXD | Serial console | Debug UART |
Note: Several GPIOs (21, 33, 37, 41–46) are available for future expansion or current sensing.
Memory
W25Q128JVS (U2) — 128 Mbit (16 MB) SPI flash, SOIC-8 package.
| ESP32-S3 Pin | Flash Pin | Net |
|---|---|---|
| GPIO26 (SPICS0) | CS# | SPICS0 |
| GPIO27 (SPID) | DO/IO1 | SPID |
| GPIO28 (SPIQ) | DI/IO0 | SPIQ |
| GPIO29 (SPIWP) | WP#/IO2 | SPIWP |
| GPIO30 (SPIHD) | HOLD#/IO3 | SPIHD |
| GPIO31 (SPICLK) | CLK | SPISCK |
The ESP32-S3 uses its dedicated SPI2 controller for flash, with four I/O lines for Quad-SPI operation. The flash operates at 3.3 V from the VDD_CPU rail.
Camera Interface
J4 — Molex 5034802400, 24-pin 0.5 mm pitch FFC connector.
| Pin | Net | Typical Camera Function |
|---|---|---|
| 1 | NC | — |
| 2, 22 | 2.8 V | AVDD (analog supply) |
| 3, 11 | GND | Ground |
| 4 | IO18/SDA | SCCB / I2C data |
| 5 | IO17/SCL | SCCB / I2C clock |
| 6 | IO16 | D0 (data bit 0) |
| 7 | IO15 | D1 |
| 8 | IO14 | D2 |
| 9 | IO13 | D3 |
| 10 | IO12 | D4 |
| 12 | IO11 | D5 |
| 13 | IO10 | D6 |
| 14 | IO48 | XCLK (camera master clock) |
| 15 | 2.8 V | DVDD (digital supply) |
| 16 | 1.3 V | DOVDD (core supply) |
| 17 | IO47 | D7 (data bit 7) |
| 18 | NC/Pull config | Camera ID / detection |
| 19 | IO38 | VSYNC (vertical sync) |
| 20 | Pull-down (10 kΩ) | PWDN (power-down, pulled low for normal operation) |
| 21 | IO39 | HREF / HSYNC (horizontal sync) |
| 23 | IO40 | PCLK (pixel clock) |
| 24 | (shared pull) | Reset / detection |
The pinout is compatible with OV2640/OV5640/GC2035 8-bit parallel (DVP) camera modules. The 1.3 V rail (core) and 2.8 V rails (analog + digital IO) match typical CMOS sensor requirements.
Audio
MP34DT05TR-A (U7) — MEMS digital microphone, PDM output.
| Mic Pin | Net |
|---|---|
| VDD | 3.3 V (from AMS1117) |
| GND | GND |
| CLK | PDM clock from ESP32-S3 |
| DAT | PDM data to ESP32-S3 |
| LDO | Output from internal LDO (decoupled with 0.1 µF + 10 µF) |
The MP34DT05TR-A uses a 4-pin custom footprint. The PDM clock and data connect to ESP32-S3 GPIOs for audio capture alongside video streaming.
USB-C
J1 — USB-C receptacle, 14-pin (USB 2.0 only).
| Feature | Implementation |
|---|---|
| CC1, CC2 | 5.1 kΩ pulldown (R17, R14) — sink-only, no PD |
| D+, D- | Series 33 Ω resistors for HS impedance matching |
| VBUS | Direct to charger input |
| SHIELD | Connected to GND via filter |
No SBU lines or e-marker chip — this is a straightforward USB 2.0 sink configuration.
Battery Charger
MCP73831-2-OT (U3) — Single-cell Li-Po linear charger.
| Component | Value | Purpose |
|---|---|---|
| R1 | 2 kΩ | PROG resistor — sets charge current to 500 mA |
| STAT | LED (D1) | Charge status indicator — on during charging, off when done, blink for fault |
Status LEDs
| LED | Color | Driven By | Function |
|---|---|---|---|
| D1 | Red (0603) | MCP73831 STAT | Charging status — on during charging, off when done |
| D2 | (0603) | VDD_CPU via 470 Ω | Power indicator (always on when 3.3 V present) |
| D3 | (0603) | GPIO1 — ESP32-S3 | User indicator |
All LEDs have ~470 Ω series current-limiting resistors.
Antenna
AE1 — 2.4 GHz PCB antenna (TI SWRA117D reference design), left-edge placement.
This is a PCB trace antenna based on Texas Instruments application note SWRA117D. It uses an inverted-F or meandered PCB trace pattern on the board edge with a ground clearance keep-out area beneath it. The RF feed uses a pi-network (C20, C21, L6) for impedance matching. No separate antenna component is needed — the antenna is part of the PCB itself.
PCB Stackup
| Layer | Material | Thickness | Type |
|---|---|---|---|
| Top solder mask | — | 0.01 mm | — |
| F.Cu | Copper | 0.035 mm | Signal + traces |
| Prepreg | FR4 (εr = 4.5) | 0.1 mm | — |
| In1.Cu | Copper | 0.035 mm | Signal routing |
| Core | FR4 | 1.24 mm | — |
| In2.Cu | Copper | 0.035 mm | Signal routing |
| Prepreg | FR4 (εr = 4.5) | 0.1 mm | — |
| B.Cu | Copper | 0.035 mm | Signal + traces |
| Bottom solder mask | — | 0.01 mm | — |
Component Count
| Category | Count |
|---|---|
| Resistors (0402) | 17 |
| Capacitors (0402) | 36 |
| Inductors | 2 |
| ICs | 7 |
| Connectors | 3 (USB-C, FFC, pin header) |
| LEDs (0603) | 3 |
| Push buttons | 2 |
| Crystal | 1 |
| Antenna | 1 |
| Transistor (P-FET) | 1 |
| Test points | 2 |
| Schottky diode | 1 |
| Total footprints | ~76 |
Getting Started
Prerequisites
- KiCad 9.x or later (files saved with generator v9.0)
- A 24-pin 0.5 mm pitch FFC camera module (OV2640/OV5640 compatible)
Opening the Project
git clone <repo-url>
cd SpecVue
# Open SpecVue.kicad_pro in KiCadFirst-Time Setup — Footprint Libraries
Two custom footprints live in the project root as .kicad_mod files. The first time you open the project, KiCad may show warnings like "Footprint library 'FFC24' not found". This is expected — the footprint geometry is already embedded in the PCB (the board displays correctly), but the schematic-to-footprint link needs a library entry.
To resolve (one-time setup):
- In KiCad, open Preferences → Manage Footprint Libraries (or PCB Editor → Preferences → Footprint Libraries)
- Switch to the Project tab
- Click Add empty row (folder+star icon) and configure each:
| Nickname | Library Path | Type |
|---|---|---|
FFC24 | ./MOLEX_5034802400.kicad_mod | KiCad |
footprints | ./MP34DT05TR-A_STM.kicad_mod (or use folder containing it) | KiCad |
Alternatively, use a single entry pointing to the project root:
| Nickname | Library Path | Type |
|---|---|---|
Custom | ./ (project directory) | KiCad |
Then update the footprints via Tools → Update Footprints from Library and reassign FFC24: and footprints: references to the new library.
(If you skip this step, the schematic will show footprint warnings, but the PCB opens and edits fine — the geometry is stored in the .kicad_pcb file.)
Generating Gerbers
File → Fabrication → Gerbers in KiCad (no pre-built gerbers are committed).
Bill of Materials
See SpecVue.csv — all components listed with DigiKey part numbers. Key ICs:
| Ref | Part | Package | DigiKey (or equivalent) |
|---|---|---|---|
| U1 | ESP32-S3 | QFN-56 7×7 mm | Espressif |
| U2 | W25Q128JVS | SOIC-8 | W25Q128JVS |
| U3 | MCP73831-2-OT | SOT-23-5 | MCP73831T-2ATI/OT |
| U4 | AMS1117-3.3 | SOT-223 | AMS1117-3.3 |
| U5 | LP2985-2.8 | SOT-23-5 | LP2985-2.8DBVR |
| U6 | AP2121AK-1.3 | SOT-23-5 | AP2121AK-1.3TRG1 |
| U7 | MP34DT05TR-A | Custom (MEMS mic) | MP34DT05TR-A |
| J1 | USB-C (14-pin) | HC-TYPE-C-16P-01A | HCTL |
| J2 | Programming header | 1×02 pin header 2.54 mm | — |
| J4 | Molex 5034802400 | 24-pin FFC 0.5 mm | 5034802400 |
| Y2 | 40 MHz crystal | 2520 SMD 10 ppm | — |
| Q1 | AO3401A | SOT-23 | P-Channel MOSFET |
| D4 | SS14 | SMA | Schottky diode |
Firmware Development
Use ESP-IDF or Arduino-ESP32 with the ESP32-S3 target. Key framework integration points:
- Camera:
esp32-cameralibrary (8-bit DVP mode) - Classification: TensorFlow Lite Micro or ESP-DL for on-device inference; output is label + confidence per frame
- Communication: Stream detected objects via MQTT or UDP to a companion app/server; optionally embed bounding boxes in a live video stream
- Audio: I2S peripheral in PDM mode for the MEMS mic
- Wi-Fi: ESP32 native Wi-Fi stack for video streaming and detection telemetry
Board Dimensions
┌──────────────────────────────────┐
│ 90.00 mm │
│ │
│ │ 17.00 mm
│ │
└──────────────────────────────────┘The 90×17 mm aspect fits within a standard glasses temple arm. No mounting holes — the board is intended to be secured by enclosure pressure or adhesive within the frame.
License
This hardware design is released under the CERN Open Hardware Licence Version 2 - Permissive (CERN-OHL-P-2.0).
Copyright (c) 2026 Rujul Rumale.
You may use, study, modify, manufacture, and distribute this design and products made from it; you must retain the copyright and licence notices. See LICENSE for the full text.
Parts
76| Qty | Value | Footprint | References |
|---|---|---|---|
| 15 | 0.1uF | Capacitor_SMD:C_0402_1005Metric | C10, C11, C15, C18, C19, C21, C22, C23, C24, C27, C28, C29, C32, C35, C41 |
| 15 | 10uF | Capacitor_SMD:C_0402_1005Metric | C1, C2, C3, C5, C6, C7, C8, C9, C12, C16, C20, C25, C30, C34, C36 |
| 4 | 10K | Resistor_SMD:R_0402_1005Metric | R3, R5, R21, R22 |
| 3 | LED | LED_SMD:LED_0603_1608Metric | D1, D2, D3 |
| 2 | 12pF | Capacitor_SMD:C_0402_1005Metric | C4, C33 |
| 2 | 15pF | Capacitor_SMD:C_0402_1005Metric | C14, C31 |
| 2 | 1uF | Capacitor_SMD:C_0402_1005Metric | C13, C26 |
| 2 | 200K | Resistor_SMD:R_0402_1005Metric | R12, R19 |
| 2 | 33R | Resistor_SMD:R_0402_1005Metric | R2, R18 |
| 2 | 4.7K | Resistor_SMD:R_0402_1005Metric | R6, R7 |
| 2 | 470R | Resistor_SMD:R_0402_1005Metric | R16, R25 |
| 2 | 5.1K | Resistor_SMD:R_0402_1005Metric | R14, R17 |
| 1 | +3V3 | TestPoint:TestPoint_Pad_D1.0mm | +3V3 |
| 1 | 100K | Resistor_SMD:R_0402_1005Metric | R20 |
| 1 | 1K | Resistor_SMD:R_0402_1005Metric | R15 |
| 1 | 24_0.5_FFC | FFC24:MOLEX_5034802400 | J4 |
| 1 | 2K | Resistor_SMD:R_0402_1005Metric | R1 |
| 1 | 2nH | Inductor_SMD:L_0402_1005Metric | L3 |
| 1 | 4.7nH | Inductor_SMD:L_0402_1005Metric | L6 |
| 1 | 40MHz(10ppm) | Crystal:Crystal_SMD_2520-4Pin_2.5x2.0mm | Y2 |
| 1 | AMS1117-3.3 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U4 |
| 1 | AO3401A | Package_TO_SOT_SMD:SOT-23 | Q1 |
| 1 | AP2121AK-1.3TRG1 | Package_TO_SOT_SMD:SOT-23-5 | U6 |
| 1 | Antenna | RF_Antenna:Texas_SWRA117D_2.4GHz_Left | AE1 |
| 1 | Conn_01x02_Pin | Connector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_Vertical | J2 |
| 1 | ESP32-S3 | Package_DFN_QFN:QFN-56-1EP_7x7mm_P0.4mm_EP4x4mm | U1 |
| 1 | Flash | Button_Switch_SMD:SW_Push_1P1T-SH_NO_CK_KMR2xxG | Flash |
| 1 | GND | TestPoint:TestPoint_Pad_D1.0mm | GND1 |
| 1 | LP2985-28DBVR | Package_TO_SOT_SMD:SOT-23-5 | U5 |
| 1 | MCP73831-2-OT | Package_TO_SOT_SMD:SOT-23-5 | U3 |
| 1 | MP34DT05TR-A | footprints:MP34DT05TR-A_STM | U7 |
| 1 | Reset | Button_Switch_SMD:SW_Push_1P1T-SH_NO_CK_KMR2xxG | Reset |
| 1 | SS14 | Diode_SMD:D_SMA | D4 |
| 1 | USB_C_Receptacle_USB2.0_14P | Connector_USB:USB_C_Receptacle_HCTL_HC-TYPE-C-16P-01A | J1 |
| 1 | W25Q128JVS | Package_SO:SOIC-8_5.3x5.3mm_P1.27mm | U2 |
Similar boards
- 2 layers34.8 × 65.9 mm

- 2 layers33.8 × 65.9 mm

E book
LizOnAir/E-book
A e-ink display that allows me to read my book at anytime and anywhere.
97 parts - 2 layers36 × 68.9 mm

- 4 layers62 × 46.9 mm

4LayerLabProject
ZharbolatDinmukhamed/Haptic-Glove-PCB
A wrist-mounted PCB for a haptic feedback glove, developed as part of my Research Assistantship at the Tactile Laboratory, Nazarbayev University.
122 parts - 4 layers68.6 × 53.3 mm

- 4 layers97 × 78 mm

Blindo
STB1019/BLINDO2.0
Blindo is an open source project made by the members of IEEE Student Branch 1019 from Brescia University (Università degli Studi di Brescia) in collaboration with the organization (Informatici Senza…
117 parts - 4 layers53.4 × 92.4 mm

Main revb
conol-ai/openwalkietalkie
OpenMicroDial firmware — Rust/embassy on SiFli SF32LB52 (LilyGo T-Display SF32 dev board)
142 parts3MIT - 4 layers96 × 71.9 mm

260510-Digital hearing aid
RV-crtl/Digital-Hearing-Aid-G1
Anna — controls · Ryan — BT/telecoil · Mariya — microphone/DSP · Naomi — speaker output · Interface contracts
236 parts
Questions
How big is the SpecVue PCB?
It measures 90 × 17 mm and has 4 copper layers, 1.6 mm thick.
What parts does the SpecVue use?
76 parts, built around the ESP32-S3, W25Q128JVSIQ, AMS1117-3.3 and AP2121AK-1.3TRG1. 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 SpecVue KiCad files?
From the Rujul-Rumale/SpecVue repository on GitHub, at the commit this page was made from: the board is SpecVue.kicad_pcb and its schematic SpecVue.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the SpecVue design in my own project?
Its repository publishes it under the CERN-OHL-P-2.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).