Skip to the content
4 layers95.2 × 85.7 mmESP32PLC, the printed circuit board in 3D

Hoàng Duy — PCB Design, Embedded Systems and IoT portfolio

Size
95.2 × 85.7 mm
Copper layers
4
Thickness
0.2 mm
Parts
190
Nets
156
Pads
662
Tracks, vias
871, 485
Pours
37
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
22 Oct 2026
Updated
6 Nov 2026

Overview

ESP32PLC is an open-source printed circuit board by duyhohoang, from the duyhohoang/duyhohoang.github.io repository on GitHub. It is a 4-layer board of 95.2 × 85.7 mm with 190 parts on 156 nets, routed with 871 tracks and 485 vias.

It is built around the ESP32-S3-WROOM-1U-N8R8, SP3485CN-L and TPS5430DDA, with the TP5551-TR, AMS1117-3.3 and ULN2003 among its other parts. Its parts include 68 resistors, 38 capacitors, 21 diodes, 16 ICs and 13 connectors. It belongs with the home automation and IoT boards and the ESP32 and RISC-V boards of this library.

Main components

10

README

README.md

Hardware Lab portfolio

Existing black-and-pink portfolio for PCB Design, Embedded Systems and IoT. Next.js App Router, React, TypeScript and Motion. Self-hosted fonts and local imagery; no backend, API, database, server actions or runtime Node server.

Local development

Use Node 24.19.0 (.node-version) and pnpm 11.25.0 (packageManager).

sh
pnpm install --frozen-lockfile
pnpm dev

Development: http://127.0.0.1:3000. For production:

sh
pnpm lint
pnpm test
pnpm build
pnpm check:export
pnpm preview

Static preview: http://127.0.0.1:3001. Deploy only out/. next.config.ts already preserves export, trailing slashes, unoptimized local images and disabled framework header. The postbuild helper preserves Windows-generated Next segment payload aliases; it is harmless on Linux.

Public configuration

Copy .env.example to .env.local if overriding defaults. src/data/contact.ts contains the owner-provided public email, hoangduy2206.ute@gmail.com. NEXT_PUBLIC_CONTACT_EMAIL overrides it; an explicitly empty value disables composition and shows a configuration warning. Public variables are embedded at build time and must never contain secrets.

The contact form validates fields and composes a safely encoded mailto: draft. Visitors finish sending in their own email app. No delivery is performed or reported by this website. A direct Send Email link works without JavaScript; form submission is disabled until hydration to avoid leaking form fields into a GET URL.

Set NEXT_PUBLIC_SITE_URL to your real HTTPS Pages origin or custom domain and rebuild before enabling search indexing. Without it, the local preview intentionally emits noindex/disallow and localhost canonical/sitemap URLs.

GitHub Pages production

The selected address is https://duyhohoang.github.io/, published from repository duyhohoang.github.io. The included GitHub Actions workflow builds and deploys only out/ on main pushes. Enable Settings → Pages → Source: GitHub Actions in that repository. See DEPLOY.md for setup and validation.

Alternative Cloudflare deployment

For the current Workers project, wrangler.jsonc explicitly serves static files from out/; build with pnpm build and deploy with npx wrangler@4.151.3 deploy. No OpenNext migration or runtime server is needed.

For the alternative Pages workflow, see DEPLOY.md for GitHub connection, build settings, free Pages address, custom domain and automatic deploys. Use the Next.js (Static HTML Export) preset, pnpm build, output out, production branch main. This is prepared locally, not publicly deployed.

Implementation and validation

  • src/components/PortfolioHome.tsx: existing homepage sections and content.
  • src/components/backgrounds/CircuitBackground.tsx: SVG decoration; visibility-aware CSS pulses, static on mobile/reduced motion.
  • src/hooks/usePortfolioMotion.ts: one shared reveal observer and finite animations, with lifecycle cleanup.
  • src/components/ContactForm.tsx, src/lib/contact.ts: validated email draft composition.
  • src/data/portfolio-media.ts: replaceable local portrait and hardware media.
  • scripts/review-fidelity.mjs: twelve reference-sized production screenshots.
  • scripts/test-animations.mjs: production interactions, motion, six viewport widths, navigation cleanup and no-JS checks.
  • docs/PHASE4-REPORT.md: validation evidence and remaining limitations.

Project studies remain illustrative, with validation status identified. No employment, education, manufacturing results or client metrics have been invented.

Parts

190
QtyValueFootprintReferences
1910K/0603/1%IVS_FOOTPRINTS:R_0603R3, R15, R16, R21, R23, R24, R25, R26, R58, R59, R63, R64, R71, R72, R73, R74 +3
16100nF/0603/50VIVS_FOOTPRINTS:C_0603C1, C3, C6, C16, C41, C43, C46, C47, C48, C49, C50, C51, C53, C55, C56, C58
12100K/0603/1%IVS_FOOTPRINTS:R_0603R81, R82, R83, R84, R86, R87, R88, R89, R91, R92, R93, R94
10RED/0603IVS_FOOTPRINTS:LED_0603LE2, LE3, LE6, LE7, LE8, LE9, LE10, LE11, LE12, LE13
84K7/0603/1%IVS_FOOTPRINTS:R_0603R50, R51, R52, R53, R54, R55, R56, R57
7Screw_Terminal_01x04IVS_FOOTPRINTS:KF-5.08-4PJ1, J7, J8, J11, J12, J13, J14
61K/0603/1%IVS_FOOTPRINTS:R_0603R2, R13, R67, R68, R69, R75
61uF/0603/50VIVS_FOOTPRINTS:C_0603C30, C40, C42, C52, C54, C57
6D_DiodeIVS_FOOTPRINTS:D_SMA_TVSD8, D9, D18, D19, D20, D21
6LESD5D5.0CT1GDiode_SMD:D_SOD-523D11, D12, D13, D14, D16, D17
410uF/0603/6.3VIVS_FOOTPRINTS:C_0603C2, C4, C5, C17
4120R/0603/1%IVS_FOOTPRINTS:R_0603R18, R19, R20, R22
41M/0603/1%IVS_FOOTPRINTS:R_0603R76, R77, R78, R79
44.7K/0603/1%IVS_FOOTPRINTS:R_0603R9, R10, R11, R12
45.1K/0603/1%IVS_FOOTPRINTS:R_0603R5, R6, R7, R8
4MountingHole_PadIVS_FOOTPRINTS:MountingHole_2.2mm_M2_Pad_ViaH1, H2, H3, H4
4N_MosfetIVS_FOOTPRINTS:SOT23-3Q6, Q7, Q8, Q9
4OptoPackage_DIP:SMDIP-4_W9.53mm_Clearance8mmU9, U10, U11, U12
4Relay_G5NB-1A-E_DC5IVS_FOOTPRINTS:Relay_G5NB-1A-E DC5RL1, RL2, RL3, RL4
3165R/0603/1%IVS_FOOTPRINTS:R_0603R60, R61, R62
3D_TVSIVS_FOOTPRINTS:D_SMA_TVSD3, D4, D7
3TP5551-TRPackage_TO_SOT_SMD:SOT-23-5IC2, IC3, IC4
2100nF/50V/0603IVS_FOOTPRINTS:C_0603C7, C15
210uF/0603/50VIVS_FOOTPRINTS:C_0603C44, C45
210uF/50V/0603IVS_FOOTPRINTS:C_0603C10, C12
210uF/6.3V/0603IVS_FOOTPRINTS:C_0603C11, C14
24.7uF/50V/0603IVS_FOOTPRINTS:C_0603C8, C9
2D_SchottkyDiode_SMD:D_SOD-123D10, D15
2NPNIVS_FOOTPRINTS:SOT23-3Q1, Q2
2PolyfuseABC:FUSER_MF-MSMF075_24-2F3, F4
2SW_PushButton_Switch_SMD:SW_Push_1P1T_NO_CK_KMR2SW1, SW2
2Screw_Terminal_01x02IVS_FOOTPRINTS:KF-5.08-2PJ15, J16
2TYPE-C-31-M-12ABC:HRO_TYPE-C-31-M-12J9, J10
2TestPointIVS_FOOTPRINTS:TestPoint_Pad_D1.0mmTP1, TP2
10R/0603/1%IVS_FOOTPRINTS:R_0603R17
11uF/0603/6.3VIVS_FOOTPRINTS:C_0603C18
122.1R/0603/50VIVS_FOOTPRINTS:R_0603R65
1220uF/6.3V/6.3x5.4Capacitor_SMD:CP_Elec_6.3x5.4C13
122uH/CDRH127-220ABC:INDPM120120X800NL1
124LC512_IPCPackage_DFN_QFN:DFN-8-1EP_3x2mm_P0.5mm_EP1.3x1.5mmU7
13.3K/0603/1%IVS_FOOTPRINTS:R_0603R4
147.5K/0603/50VIVS_FOOTPRINTS:R_0603R66
1AMS1117-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U2
1BZT52H-C5V1IVS_FOOTPRINTS:SOD-123D6
1Battery_CellIVS_FOOTPRINTS:BatteryHolder_CR1220BT1
1CP2102N-Axx-xQFN28Package_DFN_QFN:QFN-28-1EP_5x5mm_P0.5mm_EP3.25x3.25mm_ThermalViasU6
1Conn_01x04_PinIVS_FOOTPRINTS:Conn_XH-P2.54mm-4PJ4
1ESP32-S3-WROOM-1U-N8R8ABC:XCVR_ESP32-S3-WROOM-1U-N8R8U1
1LM35-LPPackage_TO_SOT_THT:TO-92_InlineU4
1Micro_SD_Card_Det1IVS_FOOTPRINTS:MicroSD_Socket_9PJ3
1P_MosfetIVS_FOOTPRINTS:TO-252-2Q3
1RTC_DS3231MPackage_SO:SOIC-16W_7.5x10.3mm_P1.27mmIC1
1RUEF250/30V/2.5AABC:FUSRR505W81L660T250H1360F2
1SK6812MINILED_SMD:LED_SK6812MINI_PLCC4_3.5x3.5mm_P1.75mmD2
1SMAJ281-E3/61IVS_FOOTPRINTS:D_SMAD5
1SP3485CNPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU5
1SS54/5A/40VIVS_FOOTPRINTS:D_SMA_TVSD1
1TPS5430DDAIVS_FOOTPRINTS:SOIC8E(EXPOSED PAD)U3
1ULN2003Package_SO:SOIC-16_3.9x9.9mm_P1.27mmU8

More from duyhohoang/duyhohoang.github.io

1
  • 2 layers100 × 88.2 mmMP1, the printed circuit board in 3D

    MP1

    duyhohoang/duyhohoang.github.io

    Hoàng Duy — PCB Design, Embedded Systems and IoT portfolio

    109 parts

Similar boards

  • 2 layers100 × 100 mmRover drive PCB, the printed circuit board in 3D

    Rover drive PCB

    NeuroCircuits/ESP32-S3-Rover-Controller-PCB

    Custom ESP32-S3 based controller PCB for a 6-wheel robotic platform, featuring servo control, DC motor drivers, IMU, RFID, USB programming, and dedicated power regulation.

    66 parts
  • 2 layers112.7 × 121.4 mmPCBOFBEATPAD, the printed circuit board in 3D

    PCBOFBEATPAD

    Axe-1st/OrphBeatPad

    A custom Beat pad with awesome design!

    74 parts2
  • 2 layers100 × 100 mmXDuinoRail Protoboard, the printed circuit board in 3D

    XDuinoRail Protoboard

    chatelao/xDuinoRail-Decoder

    The friendly decoder development plattform for model railroad tinkers.

    42 partsAGPL-3.0
  • 2 layers105.2 × 71.1 mmOnyx PCB, the printed circuit board in 3D

    Onyx PCB

    CuriousMotor/Onyx-Stepper-Motherboard

    The successor of the iconic Arduino-CNC-shield

    96 parts56MIT
  • 2 layers68 × 54 mmController, the printed circuit board in 3D

    Controller

    byrantech/stepcraft-3-d600-controller

    Open-source FluidNC Controller for the Stepcraft-3/D.600 system.

    97 parts2MIT
  • 4 layers49.8 × 67.3 mmRAPID CanOpen Module, the printed circuit board in 3D

    RAPID CanOpen Module

    conorcurley5/rcom-module

    PCB files for RCOM module

    44 parts
  • 4 layers89.5 × 62.6 mmPenguin, the printed circuit board in 3D

    Penguin

    jeevan9s/penguin-bot

    intelligent hybrid robot

    165 parts1
  • 2 layers62.4 × 57 mmEcho button thing, the printed circuit board in 3D

    Echo button thing

    bootsie123/echo-button-thing

    A PCB replacement for the Echo Button allowing support for Home Assistant through ESPHome

    33 parts6GPL-3.0

Questions

How big is the ESP32PLC PCB?

It measures 95.2 × 85.7 mm and has 4 copper layers, 0.2 mm thick.

What parts does the ESP32PLC use?

190 parts, built around the ESP32-S3-WROOM-1U-N8R8, SP3485CN-L, TPS5430DDA and TP5551-TR. 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 ESP32PLC KiCad files?

From the duyhohoang/duyhohoang.github.io repository on GitHub, at the commit this page was made from: the board is public/assets/projects/personal/esp32-plc/ESP32PLC.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the ESP32PLC design in my own project?

Its repository states no licence, so its author keeps all rights: ask duyhohoang before reusing the design.