Skip to the content
2 layersArduinoPC, the printed circuit board in 3D

1 Arduino Nano + 1 Logic Chip = Personal Computer with VGA and PS/2

Copper layers
2
Thickness
1.6 mm
Parts
17
Nets
57
Pads
134
Tracks, vias
0, 0
Routed
Not yet
KiCad
KiCad 5 (file 20171130)
Created
22 Sep 2020
Updated
4 Mar 2025

Overview

ArduinoPC is an open-source printed circuit board by slu4coder, from the slu4coder/Arduino-Nano-PC repository on GitHub. It is a 2-layer board with 17 parts on 57 nets.

It is built around the 74HC164, 74HC165D and 74HC86D. Its parts include 5 capacitors, 5 resistors, 4 ICs and 2 connectors. It belongs with the AVR (ATmega, ATtiny) boards of this library.

Main components

3

README

README.md

Arduino Nano Personal Computer - Squeezing Water from a Stone

I am pushing the limits of how much compute you can get out of an Arduino Nano:

text
    o 320x200 pixels of monochrome VGA output (optional: 16 row colors)

    o PS/2 keyboard readout

    o requires only 1(!) logic IC 74HC166

bild

HOW TO USE THE 'NANO HOME COMPUTER'

  1. Set the Nano's fuses for output of the 16MHz system clock on pin D8 (see appendix A below).

  2. Copy the library files 'os.h' and 'os.S' into a folder '../Arduino/libraries/os'.

  3. Start a new sketch with '#include <os.h>'. The following global variables and functions are available:

    text
     int os::frames                                        built-in 16-bit 60Hz frame counter
    
     byte os::vram[25][40]                                 character video RAM array
    
     byte os::cram[25]                                     row color RAM array, available colors are:
    
                                                           WHITE, BLACK, GRAY, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN,
                                                 
                                                           DKGRAY, DKRED, DKGREEN, DKYELLOW, DKBLUE, DKMAGENTA, DKCYAN.
                                                 
     os::text(String s, byte x, byte y, byte col = 0)      prints text at screen position (x, y), col = 0: don't set row color
    
     os::fill(char c = 32)                                 fills the video RAM with character c
    
     os::scroll()                                          scrolls the video RAM one step upwards
    
     os::wait(int n)                                       waits for n frames
    
     byte os::getkey()                                     returns keystroke ASCII code (none: 0)
  4. 26KB FLASH (1KB SRAM) of the Nano's 30KB FLASH (2KB SRAM) are usable, respectively. To save SRAM, define constant variables in FLASH memory by adding PROGMEM to the data type. Constant string arguments can be defined in FLASH by using the F("...") macro.

  5. Have fun!

APPENDIX

A. Setting Arduino Nano's fuse bytes via ISP (in-situ programming) for output of system CLK

o Connect two Arduino Nanos in the following way (programmer -> target): D13 -> D13, D12 -> D12, D11 -> D11, D10 -> RESET, 5V -> 5V, GND -> GND

o Arduino IDE: Upload sketch 'examples/ArduinoISP' into programmer and select 'Tools/Programmer/Arduino as ISP'.

o Open the file 'C:\Program Files (x86)\Arduino\hardware\arduino\avr\boards.txt'.

o In section '## Arduino Nano w/ ATmega328P' (line 141), change line 149 'nano.menu.cpu.atmega328.bootloader.low_fuses=0xFF' (default) to '...=0xBF' (output system CLK on Pin D8 (B0)) and save the file.

o Close and re-open the Arduino IDE for the changes to become active.

o Select target board: 'Arduino Nano', processor: 'AtMega328P' and 'Tools/Burn bootloader'.

B. Hardware

Pin A0 (C0): keyboard input CLK

Pin A1 (C1): keyboard input DAT

Pin A2-5 (C2-5): 4-bit color output to 74HC08 (optional)

Pin D0-7 (D0-7): 8-bit pixel output to 74HC166

Pin D8 (B0): CLKO (16MHz system clock output)

Pin D9 (B1): unused

Pin D10 (B2): /VSYNC VGA (timer1, every 1/60s)

Pin D11 (B3): /PE 74166 pixel shift register synchroneous parallel load on rising edge of CP

Pin D12 (B4): /HSYNC VGA (inside ISR, every 32µs)

Pin D13 (B5): LED

Parts

17
QtyValueFootprintReferences
4100nCapacitor_THT:C_Disc_D3.8mm_W2.6mm_P2.50mmC1, C2, C3, C4
3220Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR3, R4, R5
268Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1, R2
274HC164Package_DIP:DIP-14_W7.62mmU2, U4
147µCapacitor_THT:CP_Radial_D6.3mm_P2.50mmC5
174HC165Package_DIP:DIP-16_W7.62mmU3
174HC86Package_DIP:DIP-14_W7.62mmU1
1Arduino_Nano_v3.xModule:Arduino_NanoA1
1PS/2 KeyboardArduinoPC:FP_MINI_DIN_6_PS2J1
1VGA DB15 HD Connector (Female)Connector_Dsub:DSUB-15-HD_Female_Horizontal_P2.29x1.98mm_EdgePinOffset3.03mm_Housed_MountingHolesOffset4.94mmJ2

More from slu4coder/Arduino-Nano-PC

3
  • 2 layersArduinoPC, the printed circuit board in 3D

    ArduinoPC

    slu4coder/Arduino-Nano-PC

    1 Arduino Nano + 1 Logic Chip = Personal Computer with VGA and PS/2

    17 parts49
  • 2 layers43.2 × 36.1 mmArduinoPC, the printed circuit board in 3D

    ArduinoPC

    slu4coder/Arduino-Nano-PC

    1 Arduino Nano + 1 Logic Chip = Personal Computer with VGA and PS/2

    14 parts49
  • 2 layers43.2 × 36.1 mmArduinoPC, the printed circuit board in 3D

    ArduinoPC

    slu4coder/Arduino-Nano-PC

    1 Arduino Nano + 1 Logic Chip = Personal Computer with VGA and PS/2

    8 parts49

Similar boards

  • 2 layers191.8 × 121.3 mm8-Bit CPU 32k, the printed circuit board in 3D

    8-Bit CPU 32k

    slu4coder/Minimal-UART-Computer-1-2

    Legacy: Version 1 and 2 of my TTL-only CPU featuring UART I/O, an expansion port, 512KB SSD at up to 10MHz clock speed

    109 parts184
  • 2 layers180.3 × 112.4 mm8-Bit CPU 32k, the printed circuit board in 3D

    8-Bit CPU 32k

    slowcorners/Minimal-UART-CPU-Dev

    89 parts
  • 4 layers100 × 100 mmEth, the printed circuit board in 3D

    Eth

    imihajlow/ccpu

    A 8-bit computer made of 74xx series logic gates and memory ICs.

    101 parts145
  • 2 layers208 × 110 mm8 16 computer 2, the printed circuit board in 3D

    8 16 computer 2

    halfburnttoast/TCPU816-v1

    Version 1.1 of my 8-bit, TTL computer.

    120 parts21
  • 4 layers306 × 244 mmPg09-system, the printed circuit board in 3D

    Pg09-system

    thorpej/pg09-system

    6809 Playground - main system

    167 parts13BSD-2-Clause
  • 2 layers85.7 × 54 mmSimplest cpu, the printed circuit board in 3D

    Simplest cpu

    bweston6/pcbs

    A collection of PCBs that I've made for various projects.

    100 parts
  • 2 layers93.8 × 187.8 mmProjetKicad, the printed circuit board in 3D

    ProjetKicad

    TBMGIT-HUB/CircuitsCourses

    Ce projet consiste à réaliser un jeu électronique de Shifumi (Pierre–Feuille–Ciseaux) sur un PCB conçu avec KiCad.

    22 parts
  • 4 layers177 × 152.1 mmAvboard tht2, the printed circuit board in 3D

    Avboard tht2

    clydeshaffer/gametank

    design files for the gametank hardware implementation

    139 parts150

Questions

What parts does the ArduinoPC use?

17 parts, built around the 74HC164, 74HC165D and 74HC86D. 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/Arduino-Nano-PC repository on GitHub, at the commit this page was made from: the board is Rev1/Color/KiCAD/ArduinoPC.kicad_pcb and its schematic Rev2/KiCAD (color)/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.