I applied the targeted cleanup without touching the main routed trace set: disabled/shrunk U6 dummy mount pads, disabled DRC-listed via/fill/stitch artifacts, and added RF launch width/0.5 mm keepout rules around the LNA/antenna feed.
DRC is still not clean: the checker continues to report the same 42 overlap items, which indicates these are generated footprint/route artifacts that are not being removed by normal layout-rule overrides; the RF route also cannot be manually completed because the matching-network pad net metadata is inconsistent (U6:LNA_IN on RF_ESP32_FEED, ANT1:1 on RF_ANT_FEED, and C15 pad appears empty to the router).
Next best fix is schematic/layout net cleanup for the RF pi-match chain, then regenerate the U6 footprint without the dummy mount pads instead of trying to suppress them in layout.
I executed the RF net metadata fix: merged the ESP32 RF feed and antenna-side feed into a single RF_ANT_FEED net, then successfully routed U6:LNA_IN → ANT1:1.
DRC is still not clean: after refresh it reports 7 airwires and 45 overlap errors; the remaining overlaps are still generated via/through-hole/U6 dummy-pad artifacts that normal layout overrides are not clearing. Also note the RF route was completed but is not final RF-quality yet because the router used a long multi-layer path with vias; the next real fix is to regenerate/replace the U6 footprint and RF matching layout, not keep suppressing generated artifacts.
CameraPen is now a three-PCB miniature camera system inside a two-section pen body:
Battery → Charging PCB → Camera PCB → OV3660 → Main PCB ESP32-S3R8 → Button
Final product direction:
No USB-C connector on the final pen body.
Charging through external dock contacts using pogo pins and exposed copper pads.
Bare OV3660 camera module connected by 24-pin FPC/FFC.
Custom narrow ESP32-S3R8 bare-QFN main PCB instead of ESP32-CAM module.
Mechanical Allocation
Total Assembly
Fully assembled pen length: 138 mm.
Section ① — Battery + Charging
Battery length allocation: 55 mm.
Charging PCB allocation: 12 mm.
Total Section ① electronics allocation: 67 mm.
Thread-side inner diameter: about 8 mm.
Section ② — Camera + Main PCB + Button
Nominal section length: 83 mm.
Effective usable length after overlap/thread allowance: about 71 mm.
Inner diameter/channel: about 9 mm.
Placement order: Camera PCB → OV3660 → Main PCB → Button.
PCB Split
Charging PCB
Battery charging and power entry.
Must fit in the 12 mm allocation.
Uses exposed copper charging contacts for the final charging interface.
External charger/dock should provide pogo pins, not a USB-C plug on the pen.
Camera PCB
Carries the 24-pin OV3660 FFC/FPC connector.
Provides local camera rail decoupling and possibly camera LDO/filter placement depending on final layout.
Needs careful orientation control for J3.
Main PCB
Carries ESP32-S3R8 bare QFN, support passives, RF/crystal circuitry, programming access, and button.
Must fit within the remaining length and 9 mm internal diameter.
ESP32-S3R8 Custom Controller Update
The oversized ESP32-CAM module was removed and replaced by U6 ESP32-S3R8.
Added support components:
R7 10 kΩ pull-up for ESP_EN / CHIP_PU.
R8 4.7 kΩ pull-up for CAM_SIOD.
R9 4.7 kΩ pull-up for CAM_SIOC.
C9 10 µF bulk/local 3V3 decoupling.
C10 100 nF 3V3 decoupling.
C11 100 nF VDDA/RF-side decoupling.
Power connections:
ESP32-S3R8 VDD3P3, VDD3P3_RTC, VDD3P3_CPU, VDDA, and VDD_SPI are tied to 3V3 in the current schematic.
ESP32-S3R8 exposed pad / GND is tied to GND.
Camera GPIO mapping:
Table
Camera Net
ESP32-S3R8 GPIO
CAM_D0
GPIO4
CAM_D1
GPIO5
CAM_D2
GPIO6
CAM_D3
GPIO7
CAM_D4
GPIO14
CAM_D5
GPIO17
CAM_D6
GPIO18
CAM_D7
GPIO21
CAM_PCLK
GPIO11
CAM_VSYNC
GPIO12
CAM_HREF
GPIO13
CAM_MCLK
GPIO10
CAM_SIOD
GPIO8
CAM_SIOC
GPIO9
CAM_RESET
GPIO33
CAM_PWDN
GPIO34
BUTTON / boot
GPIO0
Important remaining hardware items before production:
Add ESP32-S3 40 MHz crystal network on XTAL_P/XTAL_N using Espressif reference values.
Add RF antenna and matching network from LNA_IN; this is mandatory for Wi-Fi/BLE performance and compliance.
Add programming/UART pads for U0TXD, U0RXD, EN, GPIO0, 3V3, and GND.
Verify whether any embedded flash/PSRAM SPI pins must be left per Espressif reference design or connected/strapped for the selected ESP32-S3R8 variant.
Confirm boot strap requirements for GPIO0/GPIO45/GPIO46.
Charging Interface Decision
USB-C is too large for the final pen body. The final charging concept is:
Pen side: exposed copper pads on the Charging PCB.
TP_CHG_P: circular positive pad, about 1.6 mm diameter.
TP_CHG_N: large rounded-rectangle ground/dock-alignment pad, about 1.4 mm × 4.6 mm.
A true same-center concentric pad/ring was attempted, but Flux reported overlapping copper because the current testpoint primitive cannot represent an isolated annular ground ring with an independent center positive island. If true concentric charging remains mandatory, create/import a custom annular-contact footprint and verify the exported Gerbers before fabrication.
Electrical requirements:
Polarity-safe contact geometry or mechanical keying.
Short-circuit protection/current limiting on charger output.
ESD/contact protection if contacts are exposed.
Clear test points for VBAT/GND/charge input during bring-up.