Skip to the content
PCBKitNew board
2 layers110 × 60 mmPcb project, the printed circuit board in 3D

Insert later

Size
110 × 60 mm
Copper layers
2
Thickness
1.6 mm
Parts
62
Nets
72
Pads
265
Tracks, vias
1,027, 131
Pours
1
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
10 Oct 2026
Updated
12 Oct 2026

Overview

Pcb project is an open-source printed circuit board by EvilOtter222, from the EvilOtter222/pcb-project repository on GitHub. It is a 2-layer board of 110 × 60 mm with 62 parts on 72 nets, routed with 1,027 tracks and 131 vias.

It is built around the RP2040, PAM8302AADCR and W25Q128JVSIQ, with the AP2112K-3.3 and MMBT2222A among its other parts. Its parts include 23 capacitors, 17 resistors, 10 switches, 6 connectors and 4 ICs. It belongs with the RP2040 boards of this library.

Main components

5

README

README.md

RP2040 Switch Inspired Console

A nintendo switch inspired handheld game console I designed in KiCad, built around a bare RP2040 chip.

pcb

About

Hi, I'm Kai (or @relufied), a 9th grader from New Jersey passionate about all things electronics and machine learning!

This is my first PCB ever. I've done a lot of embedded stuff before (Arduino, Picos, ESP chips) and I built an 8-bit breadboard computer, but everything I've made was on breadboards and protoboards. I had never opened PCB software before this.

The idea came from a handheld I made with an ESP32 and a capacitive touch TFT (my reddit post a year ago: https://www.reddit.com/r/arduino/comments/1r4qdw3/breakout_game_with_tft_and_arduino/). I wanted to build something like that again, but with everything on one board, so the RP2040 goes straight on the PCB. I picked the RP2040 because it's cheap, it's fast-ish, and I've used it a bunch.

Made for Hack Club Half Life (week 1).

Features

  • RP2040 with 16MB of flash (W25Q128) and a 12MHz crystal
  • 2.0" 240x320 IPS display (ST7789, SPI) on a 14 pin ribbon connector
  • 8 buttons for controls, plus boot and reset buttons
  • Joy-Con style analog thumbstick
  • Speaker with a PAM8302A amp (PWM audio)
  • USB-C for power and programming (no battery)
  • 3 pin debug header in case USB doesn't work on my first board
  • 6 pin expansion header with serial and I2C for add-ons later, like a gyro
  • 110 x 60mm, 2 layer board with a ground fill on both sides

Pictures

FrontBack
frontback

PCB:

pcb

Schematic:

schematic

All the SMD parts are on the back and the front only has the buttons. There's a slot cut in the board so the display ribbon can go through to its connector on the back.

How it works

Power: USB-C gives 5V and an AP2112K regulator turns it into 3.3V for the chip, flash and display. The 5.1k resistors on the CC pins make chargers see the board as a device.

Display: SPI on GPIO17 to GPIO21. The backlight runs off 5V through a 47 ohm resistor and an NPN transistor, switched by GPIO22.

Buttons: Each one connects its pin to ground, and the firmware uses the RP2040's internal pull-ups.

Thumbstick: The stick has no datasheet, so all 4 outer ribbon pins go to GPIO26 to GPIO29 (the ADC pins) through 330 ohm resistors. The code picks which ones are power, ground, X and Y. The click goes to GPIO10. The code I gave you might not work the first time, so try swapping the order of the pins.

Sound: GPIO15 makes a PWM signal, a 10k/1k divider shrinks it, and a 22nF cap filters it before it goes into the PAM8302A. GPIO14 turns the amp on.

Firmware

The test code is in firmware/firmware.ino. It's Arduino code using the Earle Philhower RP2040 core and the Adafruit ST7789 library.

It's a short and simple sanity test tests. it turns on the screen and backlight, shows which buttons are pressed, shows the thumbstick X and Y values, beeps the speaker at startup and when the stick is clicked, and sends a message out to the expansion header.

The board isn't built yet, so the code hasn't been tested. The comments will explain how to use and implement the code for each of these features.

Pin map

PinWhat it does
GPIO0, GPIO1Expansion header (serial)
GPIO2 to GPIO9The 8 buttons
GPIO10Thumbstick click
GPIO12, GPIO13Expansion I2C
GPIO14Amp on/off
GPIO15Audio (PWM)
GPIO17 to GPIO21Display (SPI)
GPIO22Backlight
GPIO26 to GPIO29Thumbstick
SWCLK, SWDIODebug header

Files

  • pcb-project.kicad_sch: schematic
  • pcb-project.kicad_pcb: PCB
  • gerbers/ and gerbers.zip: files to send to JLCPCB
  • firmware/: code
  • bom.csv and BOM.md: parts list
  • JOURNAL.md: my journal (synced from Half Life)

BOM

The full list is in BOM.md and bom.csv. Parts are about $29, and about $64 with tax and shipping (estimated). The board is from JLCPCB and the parts are from LCSC, Mouser and BuyDisplay. I already had the thumbstick and speaker.

Building it

  1. Order the board from JLCPCB with gerbers.zip (default settings, 2 layers, tented vias)
  2. Solder the SMD parts on the back. There are pads under for hotplate use.
  3. Solder the buttons, headers and speaker connector with an iron.
  4. Put the display ribbon through the slot, then plug in the thumbstick and speaker.
  5. Hold BOOT, plug in USB-C, and drag the firmware onto the drive that shows up.

Future plans!

The design is done. DRC shows 0 unconnected items, and 2 cosmetic errors. I did this last minute but if I had more time I would use a 40 pin tft instead of a 14 pin one.

What I learned

  1. KiCad from scratch: schematic, footprints, ERC, placement, routing, DRC and gerbers
  2. Everything a bare RP2040 needs to boot: flash, crystal, decoupling caps and USB resistors
  3. How vias actually work (they're holes in the board, not as simple as a color swap)
  4. The autorouter is a scam. I used Freerouting to speed things up (and got the okay by @Shadow in even though it's normally not allowed in the Half Life huddle), but it left 27 connections it couldn't do and a mess of vias and pins that were surround by layers and layers of wires :( . I routed all 27 connections of those by hand, and next time I'm routing everything by hand.
  5. Time management (how to cram 16 hours of development in the span of 3 days)

Parts

62
QtyValueFootprintReferences
14100nFCapacitor_SMD:C_0603_1608MetricC1, C2, C3, C4, C5, C6, C7, C8, C10, C11, C15, C18, C21, C23
10SW_PushButton_Switch_THT:SW_PUSH_6mmSW1, SW2, SW3, SW4, SW5, SW6, SW7, SW8, SW9, SW10
51kResistor_SMD:R_0603_1608MetricR1, R2, R3, R10, R12
4330Resistor_SMD:R_0603_1608MetricR14, R15, R17, R18
310kResistor_SMD:R_0603_1608MetricR8, R11, R13
310uFCapacitor_SMD:C_0805_2012MetricC16, C17, C20
31uFCapacitor_SMD:C_0603_1608MetricC9, C12, C19
215pFCapacitor_SMD:C_0603_1608MetricC13, C14
227Resistor_SMD:R_0603_1608MetricR6, R7
25.1kResistor_SMD:R_0603_1608MetricR4, R5
112MHzCrystal:Crystal_SMD_Abracon_ABM8G-4Pin_3.2x2.5mmY1
122nFCapacitor_SMD:C_0603_1608MetricC22
147Resistor_SMD:R_0805_2012MetricR9
1AP2112K-3.3Package_TO_SOT_SMD:SOT-23-5U3
1Conn_01x02Connector_JST:JST_PH_B2B-PH-K_1x02_P2.00mm_VerticalJ4
1Conn_01x03Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ1
1Conn_01x05Connector_FFC-FPC:TE_0-1734839-5_1x05-1MP_P0.5mm_HorizontalJ5
1Conn_01x06Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ6
1Conn_01x14Connector_FFC-FPC:Hirose_FH12-14S-0.5SH_1x14-1MP_P0.50mm_HorizontalJ3
1MMBT2222APackage_TO_SOT_SMD:SOT-23Q1
1PAM8302AADPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU4
1RP2040Package_DFN_QFN:QFN-56-1EP_7x7mm_P0.4mm_EP3.2x3.2mmU1
1USB_C_Receptacle_USB2.0_16PConnector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12J2
1W25Q128JVSPackage_SO:SOIC-8_5.3x5.3mm_P1.27mmU2

Questions

How big is the Pcb project PCB?

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

What parts does the Pcb project use?

62 parts, built around the RP2040, PAM8302AADCR, W25Q128JVSIQ and AP2112K-3.3. 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 Pcb project KiCad files?

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

Can I use the Pcb project design in my own project?

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

Similar boards

  • 4 layers81.7 × 100.6 mmFinal Project PCB, the printed circuit board in 3D

    Final Project PCB

    ndesserich/ECE-36200-Final-Project-PCB

    A PCB that integrates an RP2350 and various peripherals to play games.

    80 parts1
  • 4 layers184.3 × 131 mmPortaPi R1, the printed circuit board in 3D

    PortaPi R1

    JakeBoothy/PortaPi

    A portable Raspberry Pi Zero W2

    199 parts
  • 2 layers151 × 95 mmDeneme, the printed circuit board in 3D

    Deneme

    g210101021/OpenStylophone-RP2040

    Overview • Technical Summary • Architecture • Hardware Audit & Remediation • Schematic Subsystems • PCB Layout • Firmware Roadmap • Bill of Materials • Author

    143 parts
  • 4 layers36 × 36 mmFc f405, the printed circuit board in 3D

    Fc f405

    fkontiebo/flight-controller

    Contrôleur de vol 4 layers basé sur STM32F405RGT6, conçu comme plateforme de navigation autonome avec bus CAN.

    97 partsMIT
  • 2 layers76 × 22 mmMatenode, the printed circuit board in 3D

    Matenode

    cr1tbit/matenode

    Power your blinking LEDs from a battery! Or just plain USB-C.

    107 parts
  • 2 layers71.4 × 128 mmGbczero, the printed circuit board in 3D

    Gbczero

    hahhen/gbczero

    A Gameboy Color made with a Raspberry Pi Zero 2W

    78 parts
  • 2 layers312.5 × 122.3 mmSHEGO75-V5, the printed circuit board in 3D

    SHEGO75-V5

    Charading/Shego75HE

    My endgame 75% hall effect keyboard

    392 parts75
  • 2 layers120 × 25 mmGrooveboard rp, the printed circuit board in 3D

    Grooveboard rp

    ianklug/grooveboard

    A four-key mechanical keyboard for rhythm games.

    47 parts58CC-BY-SA-4.0