Skip to the content
2 layers110 × 103 mmProjek akhir, the printed circuit board in 3D

Proyek KiCad untuk papan induk alat: ESP32-S3-DevKitC-1 N16R8, AD8232, TFT ST7789 1,47", INA219, modul buzzer pasif, tiga tombol, dan jalur catu baterai 18650 (TP4056 + boost MT3608) dengan saklar on-off.

Size
110 × 103 mm
Copper layers
2
Thickness
1.6 mm
Parts
29
Nets
48
Pads
121
Tracks, vias
132, 5
Pours
4
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
24 Aug 2026
Updated
5 Nov 2026

Overview

Projek akhir is an open-source printed circuit board by mrrizaldi, from the mrrizaldi/projek-akhir repository on GitHub. It is a 2-layer board of 110 × 103 mm with 29 parts on 48 nets, routed with 132 tracks and 5 vias.

It is built around the SS34 and AO3401A. Its parts include 9 connectors, 6 capacitors, 3 switches, 2 resistors and 2 ICs. It belongs with the ESP32 boards of this library.

Main components

2

README

hardware/mainboard/README.md

Mainboard (PCB rev2)

Proyek KiCad untuk papan induk alat: ESP32-S3-DevKitC-1 N16R8, AD8232, TFT ST7789 1,47", INA219, modul buzzer pasif, tiga tombol, dan jalur catu baterai 18650 (TP4056 + boost MT3608) dengan saklar on-off. Semua modul dipasang lewat header 2,54 mm. Papan dua lapis, 110 × 103 mm.

Kondisi: skematik dan layout lengkap, pemeriksaan otomatis lulus (lihat Pemeriksaan). Belum difabrikasi, dan butir di Yang belum terverifikasi harus dicek pada modul fisik sebelum Gerber dikirim.

Berkas

BerkasIsi
mainboard.kicad_pro, .kicad_sch, .kicad_pcbproyek KiCad 9.0.2
lib/PA.kicad_sym, lib/PA.pretty/simbol dan footprint ESP32-S3-DevKitC-1 (library proyek, dirujuk lewat ${KIPRJMOD})
cek_board.pypemeriksaan netlist, ERC, DRC, dan paritas skematik–PCB; memanggil cek_tata_letak.py
cek_tata_letak.pypemeriksaan pcbnew (/usr/bin/python3): lebar jalur per netclass, jarak courtyard ≥ 1 mm, teks depan dan belakang
tata_letak.pyalat layout (/usr/bin/python3): posisi terkunci, rute manual, pembersihan sesudah autoroute, pad GND solid, tuang zona, penempat teks, ukiran

Berkas dibuat dengan KiCad 9.0.2 dan bisa dibuka KiCad 10. Arah sebaliknya tidak bisa: berkas KiCad 10 (misalnya skematik rev2 yang disusun dengan KiCad 10.0.6) ditolak KiCad 9 dengan pesan Failed to load schematic.

Peta pin

Sama dengan firmware/include/perangkat.h. Nomor pad U1 mengikuti footprint resmi Espressif: pad 1–22 kolom kiri dari atas (3V3 … GND), pad 23–44 kolom kanan dari bawah (GND … GND). Urutan fisik kedua kolom sudah dicocokkan 44/44 dengan gambar pinout resmi ESP32-S3-DevKitC-1.

FungsiGPIOPad U1NetTujuan
EKG OUT / LO− / LO+1 / 2 / 4241 / 40 / 39ECG_OUT / ECG_LON / ECG_LOPJ3 pin 3 / 4 / 5
TFT SCK / MOSI9 / 815 / 12TFT_SCK / TFT_MOSIJ2 pin 3 / 4
TFT RES / DC10 / 1116 / 17TFT_RST / TFT_DCJ2 pin 5 / 6
Buzzer1319BUZZJ9 pin 2
Tombol 1 / 2 / 34 / 5 / 64 / 5 / 6BTN1..3SW1..3 ke GND
INA219 SDA / SCL17 / 1810 / 11I2C_SDA / I2C_SCLU2 pin 4 / 3
3V3–1, 2+3V3semua VCC modul, SDN AD8232, BLK TFT
5V–21+5Vkeluaran D2
GND–22, 23, 24, 44GNDsemua pin GND DevKit tersambung

Urutan pin header modul:

RefModulPin 1 → n
J3AD8232GND, 3V3, OUT, LO−, LO+, SDN
J2TFT ST7789GND, VCC, SCL, SDA, RES, DC, CS, BLK (CS ke GND, BLK ke 3V3)
U2INA219VCC, GND, SCL, SDA, VIN−, VIN+
J9buzzer A18009GND, I/O, VCC
J1boost MT3608VIN+, VIN−, VOUT+, VOUT−
J10saklar on-off berlampu (di casing)masuk (VSYS), keluar ke boost (VSW), GND lampu
J4 / J5 / J6TP4056IN+ IN− / B+ B− / OUT+ OUT−
J8kabel holder 18650 (JST PH)+, −

Catu daya

text
 J8 baterai ── J5 B+/B− (TP4056) ── J6 OUT+ = VBAT_OUT ── U2 VIN+ ─shunt─ VIN− = VBAT_SENSE
                                                                             │
                     J4 IN+ = VCHG ──┬── gate Q1 (R1 10k ke GND)             D
                                     │                                   Q1 AO3401A
                                     └── D1 SS34 ──► VSYS ◄──────────────── S
                                                      │
                                              J10 saklar on-off
                                                      │ VSW
                                     J1 VIN+ ◄────────┘    J1 VOUT+ = VBOOST ── D2 SS34 ──► +5V ── U1 pin 5V, C1 47 µF, C2 100 nF
  • Tanpa charger: gate Q1 ditarik R1 ke GND, Q1 menyala, baterai mencatu boost.
  • Dengan charger: VCHG 5 V mematikan Q1, sehingga baterai hanya menerima arus isi dari TP4056 dan tidak mencatu beban. Boost dicatu dari VCHG lewat D1. Katoda D1 ada di VSYS (masukan boost), bukan di +5V. Kalau katoda D1 di +5V, body diode Q1 tetap mengalirkan baterai ke boost dan sel terkuras selama dicas.
  • Saklar J10 memutus VSYS sebelum boost. OFF berarti alat mati total, juga saat charger tercolok, sedangkan pengisian baterai tetap berjalan karena TP4056 ada di depan saklar. Lampu saklar dicatu dari VSYS (±3,0–4,6 V).
  • R2 1 MΩ (R_Dummy di skematik rev2) dipertahankan apa adanya: beban ±4 µA dari VBAT_SENSE ke GND.

Layout

AreaIsiAlasan
TengahU1, USB menghadap tepi bawahsemua GPIO terpakai ada di kolom kiri kecuali EKG
Kanan atasJ3 AD8232, C4pad 39–41 U1 sejajar J3 pin 3–5, jalur EKG lurus 9 mm
Kanan bawahjalur baterai, INA219, Q1, D1, D2, header TP4056/boost/bateraijauh dari AD8232; modul boost di luar papan lewat kabel
KiriTFT, buzzer; tombol SW1–SW3 berjajar tegak di tepi kiri (x 53–57,5, y 57,5–88)SPI TFT berlawanan sisi dengan jalur analog; tombol mudah dijangkau dari sisi papan
Atas U1rule area antena_devkittanpa tembaga dan via di bawah antena WROOM
Bawahrule area holder_18650 80 × 24 mm (x 66–146, y 116,5–140,5) + garis silkscreentempat holder 18650 berkabel yang ditempel; baterai 65 × 18 mm, holder ±77 × 21 mm, margin 1,5 mm tiap sisi; footprint dilarang, jalur dan GND pour boleh

Jalur yang dirute manual dan dikunci (locked): tiga jalur EKG (F.Cu), catu AD8232 (3V3 dari pad 2 U1 lewat B.Cu ke C4/J3 pin 2, SDN ke 3V3), I2C ke INA219 (SDA di F.Cu; SCL turun lewat via ke B.Cu di x 118 dan menyeberang di bawah SDA, karena urutan pin INA219 SCL–SDA terbalik terhadap urutan dari DevKit), 3V3 ke INA219, 3V3 sisi kiri (U1 pad 2 ke C3), dan seluruh jalur daya (termasuk cabang gate Q1 dan R2). Gate Q1 lewat B.Cu karena urutan pin SOT-23 (G, D, S searah jarum jam) berlawanan dengan arah net di sekitarnya, dan gate tidak membawa arus. Sisa sinyal digital dirute Freerouting 2.3.0. GND dituang di kedua lapis.

Batas JLCPCB untuk 2 lapis 1 oz (halaman PCB Capabilities): jalur/clearance 0,10 mm, jalur ke lubang PTH 0,28 mm (rekomendasi 0,35 mm), via lubang 0,15 / pad 0,25 mm (lubang < 0,3 mm lebih mahal), ring PTH 0,18 mm (rekomendasi 0,25 mm), teks silkscreen tinggi 1,0 mm dan garis 0,15 mm, tembaga ke tepi 0,2 mm. Profil papan ini adalah profil "ideal teknis": lebar mengikuti kebutuhan arus menurut IPC-2221 (1 oz, kenaikan suhu 10 °C: 0,3 mm ±1 A, 1,0 mm ±2,4 A), jarak dan ring mengikuti rekomendasi JLCPCB.

Netclass (mainboard.kicad_pro)NetLebarClearanceVia
Defaultsinyal digital, +3V3, GND0,3 mm0,35 mm0,9/0,4 mm
ECG/ECG_*0,4 mm0,35 mm0,9/0,4 mm
Power/+5V /VBOOST /VSYS /VSW /VCHG /VBAT_OUT /VBAT_SENSE /BAT+ /BAT-1,0 mm0,35 mm1,2/0,6 mm

Arus terbesar di papan: jalur baterai/boost ±1 A puncak (MT3608 dibatasi 2 A), sehingga 1,0 mm memberi margin di atas batas boost. Sinyal hanya membawa miliampere; 0,3 mm dipilih karena tiga kali minimum JLCPCB dan muat di sela pin DevKit tanpa menyempit (0,3 + 2 × 0,35 = 1,0 mm ≤ celah 1,04 mm).

Jarak antar-courtyard komponen minimal 1,0 mm. Semua pad GND memakai thermal relief kecuali C2-2, yang disambung penuh (solid) karena hanya mendapat satu spoke di sela antara U1 dan jalur +5V.

Teks: referensi di silkscreen (tinggi ≥ 1,0 mm, batas JLCPCB) dan value di Fab, sejajar sumbu header dan di sisi yang berlawanan, tanpa menumpuk dan tidak di atas pad. Pengecualian: ref C4 mendatar di atas C4, karena celah 9 mm antara U1 dan J3 tidak muat teks tegak.

Perbedaan terhadap skematik rev2

Skematik rev2 (mainboard.kicad_sch, KiCad 10.0.6, PCB belum di-layout) dipakai sebagai acuan rangkaian. Perbedaannya:

BagianRev2Mainboard iniAlasan
Net 3V3label 3.3V (ESP, AD8232, buzzer) dan simbol +3.3V (TFT)satu net +3V3nama berbeda di KiCad = dua net terpisah; VCC TFT tidak tersambung ke 3V3 ESP
Pull-up tombolR11–R13 1 kΩ ke +5Vdihapus, INPUT_PULLUPGPIO ESP32-S3 maksimum 3,6 V
BLK TFTtidak tersambungke 3V3backlight selalu menyala
Katoda D1ke +5Vke VSYSbaterai tidak terkuras saat dicas
Saklar dayatidak adaJ10 di VSYS
Simbol U1ESP32-S3-DEVKITC-1-N8R8ESP32-S3-DevKitC-1-N16R8papan yang dipakai N16R8
GND DevKithanya pin GND kanan ataskeempat pin GND
Header boost2 pin (Input, Output)4 pin dengan GNDGND modul boost punya jalur sendiri
Footprint header J1–J9belum diisiPinSocket/PinHeader 2,54 mm, JST PH untuk baterai
Nama netSCL, OUT, buzz, dll.berprefiks (I2C_, TFT_, ECG_)nama sama otomatis menyatu di KiCad

Ukuran footprint pasif mengikuti rev2: R dan C 0805 HandSolder, tombol SW_PUSH_6mm_H7.3mm. C1 memakai CP_Radial_D5.0mm_P2.00mm (pad sama dengan rev2) agar tanda polaritas tercetak.

Footprint ESP32-S3-DevKitC-1

Diambil dari library resmi Espressif (espressif/kicad-libraries, ESP32-S3-DevKitC.kicad_mod dan simbol ESP32-S3-DevKitC). Posisi pad tidak diubah: 2 × 22 pin, pitch 2,54 mm, jarak antar-baris 22,86 mm. Yang diubah hanya lubang dan pad: lubang 0,8 mm menjadi 1,0 mm, pad oval 2,0 mm (mendatar) × 1,5 mm (tegak), ring 0,25 mm sesuai rekomendasi JLCPCB. Pin header persegi 0,64 mm berdiagonal 0,9 mm, sehingga tidak masuk lubang 0,8 mm; 1,0 mm sama dengan footprint PinSocket KiCad. Pad 1,5 mm tegak menyisakan celah 1,04 mm antar-pin satu kolom, cukup untuk jalur 0,3 mm + clearance 2 × 0,35 mm. Jalur 3V3 ke AD8232 dan I2C ke INA219 menyeberangi kolom pin lewat celah ini. Simbol diturunkan dari format KiCad 10 ke format KiCad 9 tanpa mengubah pin.

Pemeriksaan

bash
python3 hardware/mainboard/cek_board.py

Hasil yang diharapkan:

text
netlist: 87/87 pin sesuai peta
+5V di luar jalur daya: tidak ada
ERC: error 0 warning 0
DRC error: 0, unconnected: 0, paritas skematik: 0
lebar jalur: 0 temuan
jarak courtyard: 0 temuan
teks: 0 temuan
LULUS

Skrip keluar dengan kode 1 bila satu pin saja menyimpang dari peta di atas, bila ada jalur lebih tipis dari netclass-nya, dua courtyard berjarak < 1 mm, atau teks menumpuk, di atas pad, keluar tepi, atau tidak searah header. Peta pin di skrip (PIN_U1, PIN_LAIN) wajib diperbarui bersamaan dengan perangkat.h setiap kali pin dipindah.

Ukiran nama

Silkscreen sisi belakang, dicerminkan agar terbaca dari bawah, di balik area holder (yang bebas footprint sehingga sisi belakangnya tanpa pad):

BarisTeksTinggiPosisi
1Muhammad Rafi Rizaldi2,5 mm(106; 125)
231236000012,0 mm(106; 131)

Teksnya diatur di UKIRAN dan POSISI_UKIRAN (tata_letak.py).

Mengubah desain

Perubahan rangkaian:

  1. Buka mainboard.kicad_pro di KiCad 9 atau lebih baru.
  2. Ubah skematik. Penerapan ke board lewat skrip pcbnew (lihat skill kicad-pcb-pa aturan 5), bukan F8, agar nama net tetap /NAMA.

Rute ulang seluruh papan (posisi di POSISI, rute manual di fungsi rute_* pada tata_letak.py), dijalankan dari hardware/mainboard/:

bash
/usr/bin/python3 tata_letak.py hapus
/usr/bin/python3 tata_letak.py rute
/usr/bin/python3 tata_letak.py tuang

Lalu autoroute sisa sinyal dengan Freerouting (server MCP kicad: open_project, autoroute dengan maxPasses 60), kemudian:

bash
/usr/bin/python3 tata_letak.py bersih
/usr/bin/python3 tata_letak.py solid
/usr/bin/python3 tata_letak.py teks
/usr/bin/python3 tata_letak.py ukiran
/usr/bin/python3 tata_letak.py tuang
python3 cek_board.py

Hasil yang diharapkan: baris terakhir cek_board.py adalah LULUS. Freerouting bisa melapor sukses sambil meninggalkan sambungan; bila DRC melapor unconnected, sambungan itu ditambahkan ke fungsi rute_* di tata_letak.py lalu seluruh urutan diulang dari hapus.

Yang belum terverifikasi

  1. Jarak antar-baris header DevKit fisik. Footprint memakai 22,86 mm (resmi Espressif). Ukur papan N16R8 yang dipakai, karena klon bisa berbeda.
  2. Urutan pin tiap modul (J2, J3, U2, J9) terhadap silkscreen modul yang dipegang. Urutan pin TFT 1,47" berbeda antar-vendor.
  3. Ruang mekanik modul. Ukuran dari penjual saling berbeda (AD8232 35×22 sampai 36×33 mm, TFT 19,5×44,5 atau 22×38,5 mm, INA219 22×20 mm), dan outline badan modul belum digambar di PCB. Bila dibaringkan ke arah dalam papan, badan TFT menutupi C6 dan badan AD8232 menutupi H2. Komponen SMD di bawahnya aman selama modul terangkat di atas female header. Kepala baut H2 perlu dicek terhadap sisi bawah modul AD8232.
  4. Jalur catu dengan D1 di VSYS belum diuji di breadboard. Ukur VSYS dan +5V dengan charger tercolok dan tercabut, dan pastikan arus baterai ≈ 0 saat dicas.
  5. Konektor baterai memakai JST PH 2 mm. Sesuaikan dengan kabel holder 18650 yang dipakai, dan ukur holdernya: area di papan 80 × 24 mm.
  6. Tegangan lampu saklar J10. Lampu dicatu VSYS ±3,0–4,6 V. Lampu LED 12 V atau neon 220 V tidak akan menyala di tegangan ini; cek tulisan di badan saklar sebelum memakai pin lampu.

Ekspor fabrikasi

Berkas untuk JLCPCB dibuat dengan pengaturan dari panduan resmi JLCPCB untuk KiCad: lapisan F/B.Cu, F/B.Paste, F/B.Silkscreen, F/B.Mask, Edge.Cuts, ekstensi Protel, silkscreen dikurangi mask, via di-tent (setelan papan (tenting front back)), zona dituang sebelum plot, drill Excellon mm desimal origin absolut dengan PTH dan NPTH terpisah plus peta drill.

bash
hardware/mainboard/ekspor_fab.sh

Hasil: hardware/mainboard/fab/mainboard-gerber-jlcpcb.zip (14 berkas di akar zip), yang di-upload di tombol Add gerber file. Folder fab/ tidak di-commit karena dibuat ulang oleh perintah di atas.

Pemeriksaan isi zip terhadap papan (Kondisi uji: 18 Okt 2026):

Yang dicekGerber/drillPapan
Lubang PTH101 (0,4 ×3, 0,6 ×2, 0,75 ×2, 0,8 ×2, 1,0 ×80, 1,1 ×12)sama
Lubang NPTH4 × 3,2 mmsama
Flash F.Cu / B.Cu122 / 101117 pad + 5 via / 96 pad THT + 5 via
Bukaan mask depan121 tanpa via117 pad + 4 lubang baut (via ter-tent)
Pad paste depan / belakang21 / 021 pad SMD / 0
Garis potong110,0 × 103,0 mmsama

Tampilan visual Gerber dicek di pratinjau JLCPCB setelah upload dan, bila memilih Confirm Production File, di berkas produksi yang dikirim engineer.

Butir di Yang belum terverifikasi dicek sebelum zip di-upload.

Parts

29
QtyValueFootprintReferences
5100nFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC2, C3, C4, C5, C6
4M3MountingHole:MountingHole_3.2mm_M3H1, H2, H3, H4
2SS34Diode_SMD:D_SMAD1, D2
110kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR1
11MResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR2
147uFCapacitor_THT:CP_Radial_D5.0mm_P2.00mmC1
1AD8232 GND 3V3 OUT LO- LO+ SDNConnector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_VerticalJ3
1AO3401APackage_TO_SOT_SMD:SOT-23Q1
1BTN1Button_Switch_THT:SW_PUSH_6mm_H7.3mmSW1
1BTN2 DUMPButton_Switch_THT:SW_PUSH_6mm_H7.3mmSW2
1BTN3 RECButton_Switch_THT:SW_PUSH_6mm_H7.3mmSW3
1Baterai 18650Connector_JST:JST_PH_B2B-PH-K_1x02_P2.00mm_VerticalJ8
1Boost MT3608 VIN+ VIN- VOUT+ VOUT-Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ1
1Buzzer A18009 GND IO VCCConnector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_VerticalJ9
1ESP32-S3-DevKitC-1-N16R8PA:ESP32-S3-DevKitC-1U1
1INA219 VCC GND SCL SDA VIN- VIN+Connector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_VerticalU2
1Saklar on-off lampu IN OUT GNDConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ10
1TFT ST7789 GND VCC SCL SDA RES DC CS BLKConnector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_VerticalJ2
1TP4056 B+ B-Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ5
1TP4056 IN+ IN-Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ4
1TP4056 OUT+ OUT-Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ6

Similar boards

  • 6 layers84 × 98 mmFujiNet-5200-Rev0, the printed circuit board in 3D

    FujiNet-5200-Rev0

    FujiNetWIFI/fujinet-hardware

    Schematics and design files for FujiNet hardware

    145 parts142
  • 2 layers191.5 × 76 mmPcb project, the printed circuit board in 3D

    Pcb project

    CrashOverride85/zc95

    4 channel EStim box inspired by the mk312bt, with Lua scripting support

    337 parts117GPL-3.0
  • 6 layers64.8 × 69.9 mmEzDV, the printed circuit board in 3D

    EzDV

    tmiw/ezDV

    A FreeDV device based on the ESP32.

    130 parts114
  • 2 layers85 × 56 mmHB RF ETH, the printed circuit board in 3D

    HB RF ETH

    alexreinert/PCB

    Some of my PCBs

    96 parts104
  • 2 layers148.6 × 192.2 mmBadge, the printed circuit board in 3D

    Badge

    NuttyShell/NuttyBadge

    NuttyBadge: A NuttyShell crafted multi-tool. Opensourced Hardawre and Software

    169 parts31GPL-3.0
  • 2 layers70 × 65 mmFluepdot, the printed circuit board in 3D

    Fluepdot

    Fluepke/Fluepdot

    Project for controlling Annax flipdot panels used by the Berliner Verkehrsbetriebe

    116 parts17AGPL-3.0
  • 2 layers262.5 × 107.9 mmCommodore pet clone, the printed circuit board in 3D

    Commodore pet clone

    DLehenbauer/commodore-pet-clone

    Open hardware clone of the Commodore PET 4032

    316 parts13CC0-1.0
  • 4 layers64 × 30 mmLuluu rounded, the printed circuit board in 3D

    Luluu rounded

    fu5ha/luluu

    A cute and smart arm warmer sleeve ^_^

    71 parts9

Questions

How big is the Projek akhir PCB?

It measures 110 × 103 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Projek akhir use?

29 parts, built around the SS34 and AO3401A. 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 Projek akhir KiCad files?

From the mrrizaldi/projek-akhir repository on GitHub, at the commit this page was made from: the board is hardware/mainboard/mainboard.kicad_pcb and its schematic hardware/mainboard/mainboard.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Projek akhir design in my own project?

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