Skip to the content
PCBKitNew board
2 layers66 × 44.5 mmVGA adapter, the printed circuit board in 3D

Repository for VGA Render. Will use PIC24 MCU for generating a composite video signal

Size
66 × 44.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
5
Nets
9
Pads
79
Tracks, vias
44, 4
Pours
2
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
19 Jan 2020
Updated
23 Oct 2026

Overview

VGA adapter is an open-source printed circuit board by dinamicoplus, from the dinamicoplus/VGARender repository on GitHub. It is a 2-layer board of 66 × 44.5 mm with 5 parts on 9 nets, routed with 44 tracks and 4 vias.

Its parts include 3 resistors and 2 connectors. It belongs with the interfaces and adapters boards and the PIC boards of this library.

README

README.md

VGA signal generation with PIC24FJ256GA705

This project is dedicated to use the PIC24FJ256GA705 microcontroller for the generation of a VGA video signal.

Structure

The repository is structured as follows:

  • src: Contains all the source code for the microcontroller.
  • nbproject: Contains all the MPLABX project. That includes all the Makefiles and IDE configuration as well as all the environmental variables definition.
  • PCB_Design/VGA_adapter: Contains the schematics and PCB design for the VGA Adaptor to be plug in the PIC24F Curiosity Board.
  • dithering: Contains the python scripts that have been used for this project to generate and adapt images to be used in the microcontroller.

Releases

VGA Render Project v0.2

Installing and compilation

This project has been created using MPLABX X IDE from Microchip. To compile the project and flash it into the PIC24F Curiosity Board, download nbproject and src into the same folder. Then MPLAB X IDE will detect this as a MPLAB project and set it as an active project. From there, there is two configurations available:

  • PIC24FJ256GA705_SIM: This is the configuration for the simulation of the project. It has the same setting as the configuration for the target. Use this to simulate the project in your computer without the actual hardware.
  • PIC24FJ256GA705_TARGET: This is the configuration for the target. It has been set to work with the PIC24F Curiosity Board, that is, for the use of PKOB Starter Kit Debugger. You can use another flasher or debugger to work with. This is the one that I have used.

Specifications

The system aims to generate a VGA video signal but the microcontroller used can only be set to run at 16 MIPS (32 MHz). With that limitation on mind, the system has the following specifications:

  • 150 x 96 pixel resolution
  • 3-bit RGB palette
  • Only ~8% of CPU time available, as the rest of the time is used to generate the signal.
  • Certain level of asynchronism, as the lowest frequency VGA signal is spected to have 25.175 MHz as pixel frecuency. However, this can be compensated if the TV Monitor used is modern.

In spite all these limitations, an implementation of Conway's Game of Life has been achieved. The project has the user.c and user.h files to be used by the user to define the function that he wants. Currently it implements the game Conway's Game of Life as a demonstration. However this can be changed at discretion.

Auxiliary tools

The project includes a python script with functions that can be used to generate a header file for the definition pixel C array. In order to use them the following dependencies needs to be installed:

  • Python3
  • PIL

Help can be found invoking the following command:

bash
> python3 img_dith.py -h
usage: img_dith.py [-h] [-o O] [-width WIDTH] [-height HEIGHT] [-bits BITS]
                   [-header HEADER]
                   input

Process dithering to picture

positional arguments:
  input           input picture

optional arguments:
  -h, --help      show this help message and exit
  -o O            output picture
  -width WIDTH    width of the pic
  -height HEIGHT  heigth of the pic
  -bits BITS      bit depth of the pic
  -header HEADER  output header

Take into account that the script as is will process the image using the Flos-Steinberg dithering algorithm. In order to disable the dithering, modify the following line in img_dith.py:

python
# Process the image. Resize, Floyd–Steinberg dithering or Posterize

img = Image.open(in_img)
img = resize_wo_deform(img,(w,h))
#img = posterize(img, bit_depth) <-- Uncomment this line

img = fs_dithering(img,bit_depth) #<-- Comment this line

PCB VGA Adaptor

The project requires to manufacture an VGA adaptor for the PIC24F Curiosity Board. The signals are mapped as following:

uC PinVGA SignalDB15 Pin
RA0RED1
RA1GREEN2
RA2BLUE3
RB7H_SYNC13
RB9V_SYNC14

For the proposed design go to the PCG_Design folder. This PCB can be plug into the PIC24F Curiosity board.

Parts

5
QtyValueFootprintReferences
3470Resistor_SMD:R_0805_2012MetricR1, R2, R3
1PIC24 Curiosity Board Adaptercustom:2xPinHeader_2x14_P2.54mm_VerticalJ2
1VGA OutputConnector_Dsub:DSUB-15-HD_Female_Horizontal_P2.29x1.98mm_EdgePinOffset3.03mm_Housed_MountingHolesOffset4.94mmJ1

Questions

How big is the VGA adapter PCB?

It measures 66 × 44.5 mm and has 2 copper layers, 1.6 mm thick.

What parts does the VGA adapter use?

5 parts. 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 VGA adapter KiCad files?

From the dinamicoplus/VGARender repository on GitHub, at the commit this page was made from: the board is PCB_Design/VGA_adapter/VGA_adapter.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the VGA adapter design in my own project?

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

Similar boards

  • 2 layers98 × 27 mmXy limit, the printed circuit board in 3D

    Xy limit

    opulo-inc/lumenpnp

    The LumenPnP is an open source pick and place machine.

    5 parts3.7k
  • 2 layers21 × 33 mm24g2usb pico2w, the printed circuit board in 3D

    24g2usb pico2w

    joypad-ai/joypad-os

    Universal controller firmware for building adapters, dongles, and custom controllers.

    5 parts1.7kApache-2.0
  • 2 layers53.2 × 59.6 mmA10 OLinuXino Lime Rev B SHIELD TEMPLATE, the printed circuit board in 3D

    A10 OLinuXino Lime Rev B SHIELD TEMPLATE

    OLIMEX/OLINUXINO

    OLINUXINO is Open Source / Open Hardware, low cost from EUR 24 Linux Industrial grade Single Board Computer capable to operate -25+85C

    5 parts1.5k
  • 2 layers30 × 11 mmMain control board servo tester, the printed circuit board in 3D

    Main control board servo tester

    jamro/tiny-engineer

    A small desktop robot that brings an AI coding assistant to life, physically acting out when it reads files, thinks, writes code, and finishes work.

    5 parts1.1k
  • 2 layers78.8 × 35.3 mmKiCadTest, the printed circuit board in 3D

    KiCadTest

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    5 parts915
  • 2 layers50 × 23 mmMiniCircuits LTCC, the printed circuit board in 3D

    MiniCircuits LTCC

    VanceVagell/kv4p-ht

    Open source handheld ham radio project KV4P-HT

    5 parts828GPL-3.0
  • 2 layers20.3 × 15.2 mmL0 light sensor, the printed circuit board in 3D

    L0 light sensor

    Luos-io/luos_engine

    Open-source and real-time orchestrator for cyber-physical-systems, to easily design, test and deploy embedded applications and digital twins.

    5 parts546MIT