

C64pico
This is a tiny emulated C64 running on a Raspberry Pi Pico! Full details of the build can be found at https://www.youtube.com/watch?v=hgLhGpbC6E4
- Size
- 102 × 81.5 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 97
- Nets
- 78
- Pads
- 485
- Tracks, vias
- 1,072, 148
- Pours
- 2
- Routed
- Yes
- KiCad
- KiCad 6 (file 20211014)
- Created
- 8 May 2022
- Updated
- 8 Nov 2022
Overview
C64pico is an open-source printed circuit board by silvervest, from the silvervest/c64pico repository on GitHub. It is a 2-layer board of 102 × 81.5 mm with 97 parts on 78 nets, routed with 1,072 tracks and 148 vias.
It is built around the ATMEGA328PB-AU, BQ24230RGTT and 1N5819WS, with the 3X6, CF4240FH0R0-05-NH and CPT-9019S-SMT-TR among its other parts. Its parts include 66 switches, 8 resistors, 3 capacitors, 2 ICs and 2 diodes. It belongs with the AVR (ATmega, ATtiny) boards of this library.
Main components
6ATMEGA328PB-AU
TQFP-32(7x7)-40℃~+85℃ 1.8V~5.5V 10bit 1KB 20MHz 27 2KB 32KB 8 Bit AVR Built-in FLASH Power-on reset (POR)、Undervoltage detection (BOR/LVD/LVR/LVI)、Watchdog reset、External pin reset (NRST)、Built-in general-purpose timer、Programmable watchdog、Touch function TQFP-32(7x7) Microcontrollers (MCU/MPU/SOC) ROHSMicrochip TechnologyMicrocontrollers (MCU/MPU/SOC)BQ24230RGTT
VQFN-16-EP(3x3)-40℃~+125℃ 1 4.2V 4.35V~6.4V 500mA 6.5uA Charging IC Lithium Battery Support 恒流充电、恒压充电、涓流充电、自动再充电、充电终止、可编程充电电流、软启动、欠压锁定、Short-Circuit Protection、过压保护 VQFN-16-EP(3x3) Battery Management ROHSTexas InstrumentsBattery Management1N5819WS
SOD-3231 Independent 1A 25A 40V 500uA@40V 600mV@1A SOD-323 Schottky Diodes ROHSGuangdong HottechSchottky Diodes3X6
-- Cross slot pan head machine screw ROHSXHHDPhillips Pan Head Machine ScrewsCF4240FH0R0-05-NH
SMD,P=0.5mm,卧贴-55℃~+85℃ 0.3mm 0.5mm 0.97mm 40P Double-Sided Contacts, Top and Bottom Entry Gold Hinged Lid Phosphor bronze Surface Mount, Right Angle SMD,P=0.5mm,卧贴 FFC, FPC (Flat Flexible) Connector Assemblies ROHSCviluxFFC, FPC (Flat Flexible) Connector AssembliesCPT-9019S-SMT-TR
--30℃~+70℃ 1.9mm 4kHz 5mA 65dB 9mm 9mm Passive (Externally Driven) Piezoelectric SMD SMD,9x9mm Buzzers ROHSCUIBuzzers
README
README.mdC64 Pico
This is a tiny emulated C64 running on a Raspberry Pi Pico! Full details of the build can be found at https://www.youtube.com/watch?v=hgLhGpbC6E4
It was designed to dangle around my neck from a lanyard while I was wandering the halls and sections of PAX Aus 2022. It measures 102x81x16mm!
Building
Wanna build one yourself? I go over the full build steps of this in the video linked above!
BOM
I've put together an interactive BOM that you can reference - simply checkout the repo and open ibom.html in your browser.
Most of the parts can be figured out from the BOM or schematic, or are generic enough to just pick whatever fits (like all the caps and resistors), but some are pretty specific - here's a few purchasing links from the various sellers I used during this build;
- MicroSD card slot - https://www.aliexpress.com/item/32906952129.html
- TFT LCD - https://www.aliexpress.com/item/32837085500.html
- LCD FPC connector - https://www.digikey.com.au/en/products/detail/cvilux-usa/CF4240FH0R0-05-NH/15793119
- Crappy speaker - https://www.digikey.com.au/en/products/detail/cui-devices/CPT-9019S-SMT-TR/6012432
- Power switch - https://www.digikey.com.au/en/products/detail/c-k/JS102011SAQN/1640095
- Tac switches - https://www.digikey.com.au/en/products/detail/c-k/PTS-647-SN70-SMTR2-LFS/9649854
- LiPo battery - https://www.ebay.com.au/itm/143873020947
PCBs
I designed the board to be fabricated specifically at JLCPCB with their SMT assembly service, so it should be pretty straightforward to get those made up.
Follow JLCPCB's guide on generating their bom and pos files from Kicad, and the components that can be placed by their SMT assembly service already have the correct and matching LCSC part number associated. Only the back layer needs assembly.
Programming
The software provided for both the keyboard and MCUME modifications are not what I'd call "production-ready" either, and are really just a hack job. I might clean them up to be merged back one day, but probably not.
The keyboard code is in this repo underneath the keyboard directory, and can be programmed directly onto the ATmega328PB via ICSP headers using the Arduino software.
The RPi Pico code can be found in my fork of the MCUME repo under branch c64pico and you can follow the main instructions for building, installation and use.
Face and back plates
The faceplate is just a plain PCB, and the PCB design files can be provided to your fab like any other. I recommend getting it HASL gold covered for extra shiny.
The backplate was designed to be laser cut from 1.5mm-2mm acrylic. I had mine created by The Laser Cut Shop and the team there were excellent. I used the plotting function in KiCad to export DXF files for them to use.
Instructions
Once it's complete, pop your SD card with .PRG files available into the slot and switch it on.
Pick whatever program you'd like to open and press the FIRE joystick button "pew pew". By default, the built-in joystick is "plugged" into JOY1 port, and you can switch that between JOY1/JOY2 using F1/F3 keys. Most C64 games use JOY2, so you might need to experiment.
At the BASIC prompt, type LOAD and press RETURN. That will load the .PRG file contents into RAM. Once READY, type RUN and press RETURN.
Enjoy! It's a bit slow, and some games are buggy as hell. I love playing Nebulus and Choplifter :)
Development Photos
An early design, showing the overengineered reimplementation of the RP2040 Pico circuit and power management. It worked, but I didn't like it, so threw most of it out. You can also see I added full diodes into the keyboard for the hell of it.

This was when I was writing the Arduino code for the keyboard and I2C protocol, and a test program running on the Pico decoding it and showing the output.

Finally fully working, so I booted up my favourite C64 game - Nebulus! The screen and battery were still held on with washi tape here.

Also Burnin' Rubber because that game is awesome and runs at almost full speed with no bugs that I could find!

And of course, I've gotta run the classic 10print maze

Acknowledgements
-
The base emulator at the guts of this, and was modified for my purposes.
-
Heavy inspiration taken from this project (and I stole the UDLR joystick layout)
License
Parts
97| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | 10k | Resistor_SMD:R_0402_1005Metric | R2, R5, R11, R12 |
| 4 | MountingHole_Pad | MountingHole:MountingHole_2.2mm_M2_Pad | H1, H2, H3, H4 |
| 2 | 1k5 | Resistor_SMD:R_0402_1005Metric | R3, R4 |
| 2 | 1uF | Capacitor_SMD:C_0402_1005Metric | C1, C2 |
| 1 | 0x0 | Silvestron Components:SW_SPST_PTS647 | SW1 |
| 1 | 0x1 | Silvestron Components:SW_SPST_PTS647 | SW9 |
| 1 | 0x2 | Silvestron Components:SW_SPST_PTS647 | SW17 |
| 1 | 0x3 | Silvestron Components:SW_SPST_PTS647 | SW25 |
| 1 | 0x4 | Silvestron Components:SW_SPST_PTS647 | SW33 |
| 1 | 0x5 | Silvestron Components:SW_SPST_PTS647 | SW41 |
| 1 | 0x6 | Silvestron Components:SW_SPST_PTS647 | SW49 |
| 1 | 0x7 | Silvestron Components:SW_SPST_PTS647 | SW57 |
| 1 | 10 | Resistor_SMD:R_0402_1005Metric | R10 |
| 1 | 100n | Capacitor_SMD:C_0402_1005Metric | C3 |
| 1 | 1N5819WS | Diode_SMD:D_SOD-323 | D3 |
| 1 | 1x0 | Silvestron Components:SW_SPST_PTS647 | SW2 |
| 1 | 1x1 | Silvestron Components:SW_SPST_PTS647 | SW10 |
| 1 | 1x2 | Silvestron Components:SW_SPST_PTS647 | SW18 |
| 1 | 1x3 | Silvestron Components:SW_SPST_PTS647 | SW26 |
| 1 | 1x4 | Silvestron Components:SW_SPST_PTS647 | SW34 |
| 1 | 1x5 | Silvestron Components:SW_SPST_PTS647 | SW42 |
| 1 | 1x6 | Silvestron Components:SW_SPST_PTS647 | SW50 |
| 1 | 1x7 | Silvestron Components:SW_SPST_PTS647 | SW58 |
| 1 | 2x0 | Silvestron Components:SW_SPST_PTS647 | SW3 |
| 1 | 2x1 | Silvestron Components:SW_SPST_PTS647 | SW11 |
| 1 | 2x2 | Silvestron Components:SW_SPST_PTS647 | SW19 |
| 1 | 2x3 | Silvestron Components:SW_SPST_PTS647 | SW27 |
| 1 | 2x4 | Silvestron Components:SW_SPST_PTS647 | SW35 |
| 1 | 2x5 | Silvestron Components:SW_SPST_PTS647 | SW43 |
| 1 | 2x6 | Silvestron Components:SW_SPST_PTS647 | SW51 |
| 1 | 2x7 | Silvestron Components:SW_SPST_PTS647 | SW59 |
| 1 | 3k6 | Resistor_SMD:R_0603_1608Metric | R1 |
| 1 | 3x0 | Silvestron Components:SW_SPST_PTS647 | SW4 |
| 1 | 3x1 | Silvestron Components:SW_SPST_PTS647 | SW12 |
| 1 | 3x2 | Silvestron Components:SW_SPST_PTS647 | SW20 |
| 1 | 3x3 | Silvestron Components:SW_SPST_PTS647 | SW28 |
| 1 | 3x4 | Silvestron Components:SW_SPST_PTS647 | SW36 |
| 1 | 3x5 | Silvestron Components:SW_SPST_PTS647 | SW44 |
| 1 | 3x6 | Silvestron Components:SW_SPST_PTS647 | SW52 |
| 1 | 3x7 | Silvestron Components:SW_SPST_PTS647 | SW60 |
| 1 | 4x0 | Silvestron Components:SW_SPST_PTS647 | SW5 |
| 1 | 4x1 | Silvestron Components:SW_SPST_PTS647 | SW13 |
| 1 | 4x2 | Silvestron Components:SW_SPST_PTS647 | SW21 |
| 1 | 4x3 | Silvestron Components:SW_SPST_PTS647 | SW29 |
| 1 | 4x4 | Silvestron Components:SW_SPST_PTS647 | SW37 |
| 1 | 4x5 | Silvestron Components:SW_SPST_PTS647 | SW45 |
| 1 | 4x6 | Silvestron Components:SW_SPST_PTS647 | SW53 |
| 1 | 4x7 | Silvestron Components:SW_SPST_PTS647 | SW61 |
| 1 | 5x0 | Silvestron Components:SW_SPST_PTS647 | SW6 |
| 1 | 5x1 | Silvestron Components:SW_SPST_PTS647 | SW14 |
| 1 | 5x2 | Silvestron Components:SW_SPST_PTS647 | SW22 |
| 1 | 5x3 | Silvestron Components:SW_SPST_PTS647 | SW30 |
| 1 | 5x4 | Silvestron Components:SW_SPST_PTS647 | SW38 |
| 1 | 5x5 | Silvestron Components:SW_SPST_PTS647 | SW46 |
| 1 | 5x6 | Silvestron Components:SW_SPST_PTS647 | SW54 |
| 1 | 5x7 | Silvestron Components:SW_SPST_PTS647 | SW62 |
| 1 | 6x0 | Silvestron Components:SW_SPST_PTS647 | SW7 |
| 1 | 6x1 | Silvestron Components:SW_SPST_PTS647 | SW15 |
| 1 | 6x2 | Silvestron Components:SW_SPST_PTS647 | SW23 |
| 1 | 6x3 | Silvestron Components:SW_SPST_PTS647 | SW31 |
| 1 | 6x4 | Silvestron Components:SW_SPST_PTS647 | SW39 |
| 1 | 6x5 | Silvestron Components:SW_SPST_PTS647 | SW47 |
| 1 | 6x6 | Silvestron Components:SW_SPST_PTS647 | SW55 |
| 1 | 6x7 | Silvestron Components:SW_SPST_PTS647 | SW63 |
| 1 | 7x0 | Silvestron Components:SW_SPST_PTS647 | SW8 |
| 1 | 7x1 | Silvestron Components:SW_SPST_PTS647 | SW16 |
| 1 | 7x2 | Silvestron Components:SW_SPST_PTS647 | SW24 |
| 1 | 7x3 | Silvestron Components:SW_SPST_PTS647 | SW32 |
| 1 | 7x4 | Silvestron Components:SW_SPST_PTS647 | SW40 |
| 1 | 7x5 | Silvestron Components:SW_SPST_PTS647 | SW48 |
| 1 | 7x6 | Silvestron Components:SW_SPST_PTS647 | SW56 |
| 1 | 7x7 | Silvestron Components:SW_SPST_PTS647 | SW64 |
| 1 | ATmega328PB-A | Package_QFP:TQFP-32_7x7mm_P0.8mm | U1 |
| 1 | BQ24230RGTT | Package_DFN_QFN:VQFN-16-1EP_3x3mm_P0.5mm_EP1.68x1.68mm_ThermalVias | U2 |
| 1 | CF4240FH0R0-05-NH | Silvestron Components:ILI9341 | J5 |
| 1 | CPT-9019S-SMT | Buzzer_Beeper:Buzzer_CUI_CPT-9019S-SMT | LS1 |
| 1 | DOWN | Silvestron Components:SW_SPST_PTS647 | SW67 |
| 1 | FIRE | Silvestron Components:SW_SPST_PTS647 | SW70 |
| 1 | GREEN | LED_SMD:LED_0603_1608Metric | D2 |
| 1 | ICSP | Connector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_Vertical | J3 |
The 88 most common of 97 parts.
Questions
How big is the C64pico PCB?
It measures 102 × 81.5 mm and has 2 copper layers, 1.6 mm thick.
What parts does the C64pico use?
97 parts, built around the ATMEGA328PB-AU, BQ24230RGTT, 1N5819WS and 3X6. 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 C64pico KiCad files?
From the silvervest/c64pico repository on GitHub, at the commit this page was made from: the board is c64pico.kicad_pcb and its schematic c64pico.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the C64pico design in my own project?
Its repository states no licence, so its author keeps all rights: ask silvervest before reusing the design.
Similar boards
- 4 layers77.1 × 63.8 mm

- 2 layers48 × 65.5 mm

Open telegraph
animesh-chouhan/open-telegraph
A pocket-size Morse key. One button, one RGB LED, an ESP32-S3, and a battery. Plug it in over USB-C or pair it over Bluetooth and it types Morse into any device as a standard keyboard. Fully open, down to the copper.
52 parts5CERN-OHL-S-2.0 - 4 layers150 × 137.1 mm

Controller
CircuitGuy943/Sabre-Integrated-flight-controller
(🚧) A "Jack of all trades" custom flight controller board. With support for both power and control and the ability for custom firmware
282 parts2GPL-3.0 - 2 layers59.7 × 127.3 mm

Wasserkocher
dmatscheko/water_kettle
ESP32-S3 running ESPHome on a custom KiCad PCB for the base of a SEVERIN WK 3479 water kettle
67 parts - 2 layers69 × 112.2 mm

UltraPCB KiCAD
enliktjioe/three-workshops
HfK Bremen - Three Workshops course from Ralf Baecker
52 partsGPL-3.0 - 4 layers60 × 80 mm

Wisp
huulanka/wisp
Open-source ESP32 room climate monitor — CO2, VOC, humidity, temperature and light sensing with custom PCB, MQTT/HomeKit integration, and OTA firmware updates. Full hardware + software, from schematic to BOM.
91 partsMIT - 4 layers163.1 × 116.8 mm

OpenParol
OpenParol/OpenParol-Board
Open-source project for a 6-DOF robotic arm controller
242 partsGPL-3.0 - 4 layers50 × 88.5 mm
