Skip to the content
PCBKitNew board
2 layers62.9 × 50.8 mmArduinoPC, the printed circuit board in 3D

UPDATE 2026: Minimal UART Terminal with 50 x 30 characters VGA output and PS/2 keyboard

Size
62.9 × 50.8 mm
Copper layers
2
Thickness
1.6 mm
Parts
27
Nets
38
Pads
152
Tracks, vias
509, 0
Pours
2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
17 Apr 2021
Updated
19 Jul 2026

Overview

ArduinoPC is an open-source printed circuit board by slu4coder, from the slu4coder/Minimal-Terminal repository on GitHub. It is a 2-layer board of 62.9 × 50.8 mm with 27 parts on 38 nets, routed with 509 tracks and 0 vias.

It is built around the 74HC166D. Its parts include 8 capacitors, 7 resistors, 6 connectors, 3 ICs and 1 switch. It belongs with the interfaces and adapters and keyboards and input boards and the AVR (ATmega, ATtiny) boards of this library.

Main components

1

README

README.md

Minimal Terminal 2026

This is my 'Minimal Serial UART Terminal' with a 50x30 character VGA display, PS2 keyboard readout (US, GER) and UART baudrates from 9600bps up to 500kbps. The design is based upon two ATmega328Ps and is described here: https://www.youtube.com/watch?v=jR-SqXLgBNo

grafik

This is a free and non-commercial project. I am in no way associated with any activies selling the 'Minimal Terminal' as a product. Any such activity represents a license violation. Individual licenses apply for hardware and software parts. Please refer to the applicable documentations for detailed licensing information.

The Minimal Terminal is now ready to be used together with the 'Minimal UART Computer 3': https://github.com/slu4coder/Minimal-UART-Computer-3

Augusto Baffa has added support for US-international keyboard map: https://github.com/abaffa/Minimal-Terminal

I use a 20MHz crystal for a 50 x 30 characters display (default). In this setup, the following baudrates are possible: 500k, 250k, 230.4, 125k, 115.2k, 39: 62.5k, 57.6k, 38.4k, 28.8k, 19.2k, 9.6k

From these, I have imlemented the following four baudrates as "selectable via jumper":

grafik

Please note that per default the "1" and "2" values are pulled up, resulting in mode "3" or 125kbps. A jumper between GND and 5V turns off a value, respectively.

Optional (see source code for necessary modifications and baudrate possibilities):

o 16MHz crystal for a 40 x 30 characters display.

o 24MHz crystal for a 60 x 30 characters display. Some users have reported that while older ICs drive passive crystals at this frequency without problems, newer lots may need an active 24MHz oscillator.

See the Manual 'Minimal UART Computer 3', section 'Native Tool Chain / Terminal' for more information: https://docs.google.com/document/d/1nIM-WRrVe7SzYY-DS1jcVHC4TCuIhlQ6LCHnZnEml7k/edit?usp=sharing

If you like this project and want to give something back, you can do so via PayPal. Thanks!

https://paypal.me/CarstenHerting

Preparing the ATmega328 ICs

On a fresh ATmega328P, we set the low fuse byte from factory setting 0x62 (run on 8MHz internal oscillator) to

ATmega328P ("I/O"): low fuse byte = 0xBF (use external oscillator, provide clock CLK0 on PB0)

ATmega328P ("VGA"): low fuse byte = 0xF0 (use a provided external TTL clock)

  1. Upload the sketch 'examples/ArduinoISP' into a spare Arduino Nano/Uno we’ll be using as a programmer.

  2. Select 'Tools/Programmer/Arduino as ISP' (not ‘ArduinoISP’!).

On Windows: Open (or search for) the file: C:\Program Files (x86)\Arduino\hardware\arduino\avr\boards.txt

On Linux: Open (or search for) the file in a console with: sudo nano /usr/share/arduino/hardware/arduino/avr/boards.txt

  1. We’ll hijack the configuration 'Arduino Nano' for our purpose:

Find the section: '## Arduino Nano w/ ATmega328P'. Change to: 'nano.menu.cpu.atmega328.bootloader.low_fuses=0xFF' and save the file (nano: Ctrl+O, Ctrl+X).

Close & reopen the Arduino IDE for the changes to become active.

Select target board: 'Arduino Nano', processor: 'AtMega328P'.

Connect the target's ISP to the programmer's ISP as shown below.

Select 'Tools/Burn bootloader' (takes ~5 seconds). Ignore errors for now. The fuse bytes are usually written as we’ve specified.

Upload the sketch into the TARGET with "Upload using Programmer", not the usual “Upload” or button.

Or use the serial upload connectors on the PCB with a breakout board if you've written a bootloader. Use a 16MHz crystal for programming.

PROGRAMMER (UNO/NANO) TARGET (ATmega328P)

D13 (SCK) <-------------> Pin 19

D12 (MISO) <------------> Pin 18

D11 (MOSI) <------------> Pin 17

D10 (/RESET) <----------> Pin 1 <----- 10k ----> 5V

5V <--------------------> Pin 7

GND <-------------------> Pin 8

text
					  Pin 9 <----- 22p ----> GND

					  Pin 10 <---- 22p ----> GND

Pin 9/10: 16MHz crystal required for programming

o In case you write 0xF0 for external clock, the upload of the boot loader will not work, until you provide an external clock to IC pin 9.

o In case you write 0x62 the chip is running in factory setting (using its internal 8MHz oscillator at CPU clock 1MHz).

o In case you write 0xBF for CLK output on D8 (PB0, IC pin 14) verify with an LED and resistor.

o You can also upload a sketch into the ATmega328P with 'Sketch/Upload Using Programmer'.

Parts

27
QtyValueFootprintReferences
5.1µCapacitor_THT:C_Disc_D3.8mm_W2.6mm_P2.50mmC1, C2, C4, C9, C10
210kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR3, R4
21kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1, R2
222pCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mmC5, C7
275Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR6, R7
1150Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR5
120MHzCrystal:Crystal_HC18-U_VerticalY1
147µCapacitor_THT:CP_Radial_D6.3mm_P2.50mmC3
15VConnector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_VerticalJ4
174HC166Package_DIP:DIP-16_W7.62mmU1
1ATmega328P (UART & PS/2)Package_DIP:DIP-28_W7.62mm_SocketU3
1ATmega328P (VGA)Package_DIP:DIP-28_W7.62mm_SocketU2
1LOGOArduinoPC:logoG***
1PS/2 KeyboardArduinoPC:FP_MINI_DIN_6_PS2J2
1SPEEDArduinoPC:PinHeader_2x02_P2.54mm_Vertical_JumperJ6
1SW_PushButton_Switch_THT:SW_PUSH_6mmSW1
1UARTConnector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_VerticalJ1
1VGAConnector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_VerticalJ5
1VGA DB15 HD Connector (Female)ArduinoPC:VGA DSUB15HD_femaleJ3

Questions

How big is the ArduinoPC PCB?

It measures 62.9 × 50.8 mm and has 2 copper layers, 1.6 mm thick.

What parts does the ArduinoPC use?

27 parts, built around the 74HC166D. 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 ArduinoPC KiCad files?

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

Can I use the ArduinoPC design in my own project?

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

Similar boards

  • 2 layers245.1 × 160 mm8-Bit CPU 32k, the printed circuit board in 3D

    8-Bit CPU 32k

    slu4coder/Minimal-64x4-Home-Computer

    My DIY TTL home computer with VGA and PS/2 and 4x the processing power of a Commodore C64 or Apple II.

    139 parts326
  • 2 layers229.9 × 111.8 mmAvr colorvideo, the printed circuit board in 3D

    Avr colorvideo

    74hc595/Amethyst

    8-bit ATmega1284 retro computer

    148 parts306BSD-3-Clause
  • 2 layers306.1 × 130.2 mm8-Bit CPU 32k, the printed circuit board in 3D

    8-Bit CPU 32k

    slu4coder/Minimal-64-Home-Computer

    Legacy: Full TTL-only home computer with VGA and PS/2 and twice the processing power of a Commodore 64

    132 parts94
  • 2 layers167 × 115 mmAquarius plus, the printed circuit board in 3D

    Aquarius plus

    fvdhoef/aquarius-plus

    Official Aquarius+ repository

    217 parts62MIT
  • 2 layers188.3 × 114.3 mm6502 Computer, the printed circuit board in 3D

    6502 Computer

    The-Invent0r/6502-Computer-PCB

    These are the PCB files for the modified BE6502 computer I put together.

    34 parts31
  • 2 layers177.8 × 130.8 mmDurango, the printed circuit board in 3D

    Durango

    zuiko21/minimOS

    Scalable OS for 6502/65816

    159 parts23MIT
  • 2 layers170.2 × 78.7 mmROsiM, the printed circuit board in 3D

    ROsiM

    hkzlab/ROsiM

    ROsiM is a ROM simulator/emulator, supporting up to 512k/16bit ROMs

    93 parts11GPL-3.0
  • 2 layers284.9 × 96.5 mmFella, the printed circuit board in 3D

    Fella

    agkaminski/FellaPC

    DIY 6502 all-in-keyboard personal computer

    115 parts2CC0-1.0