Skip to the content
2 layers65 × 120 mmTop, the printed circuit board in 3D

This repository represents the final version submitted for my Bachelor's Thesis.

Size
65 × 120 mm
Copper layers
2
Thickness
1.6 mm
Parts
33
Nets
27
Pads
165
Tracks, vias
152, 147
Pours
98
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
28 Jul 2025
Updated
4 Jul 2026

Overview

Top is an open-source printed circuit board by not-sample-text, from the not-sample-text/Proiect-Licenta repository on GitHub. It is a 2-layer board of 65 × 120 mm with 33 parts on 27 nets, routed with 152 tracks and 147 vias.

Its parts include 14 switches, 12 diodes and 2 connectors.

README

README.md

Repository Archived

This repository represents the final version submitted for my Bachelor's Thesis.

Active development for this project has moved to ApexPad. Please refer to the new repository for the most recent updates, bug fixes, and feature development.


PROS3 Macropad: A Fully-Programmable Custom Mechanical Macropad

The PROS3 Macropad is a versatile, open-source 12-key macropad built around the powerful ESP32-S3. Designed as a university thesis project, it features a rotary encoder, OLED display, RGB underglow, and a complete software ecosystem for deep customization.


Gallery

A collection of renders showcasing the hardware.

Top PlateTop Plate (Angled)
Top PlateTop Plate (Angled)
Top ViewTop (Angled)
Top RenderTop Render (Angled)!
Bottom RenderBottom (Angled)
Bottom RenderBottom Render (Angled)

About The Project

This repository contains the complete engineering files (hardware, firmware, and software) for a highly programmable macropad designed to streamline digital workflows.

The project is built on three pillars:

  1. Hardware: A custom two-part PCB design with a 3D-printable case. It's designed for assembly by hobbyists with through-hole components and hot-swap sockets.
  2. Firmware: Custom C++ code running on the ESP32-S3. It manages input, the OLED display, lighting, and communication with the host computer.
  3. Software Suite: A powerful combination of a static web-based configurator (for visually creating keymaps) and a headless Python-based background daemon (for executing complex OS-level actions via a system tray UI).

This architecture allows the macropad to go beyond simple keystrokes and act as a powerful automation tool.

For a complete technical deep-dive, please see the Full Technical Documentation. (Pentru documentația în limba română, consultați acest document).


Features

  • 12 Hot-Swappable Mechanical Keys: Customize your macropad with any MX-style switches, no soldering required.
  • Rotary Encoder with Push-Button: Perfect for volume control, scrolling through timelines, or cycling through layers.
  • OLED Display: Get real-time feedback on your current layer, connection status, and more.
  • Powerful Layering System: Switch between 4 distinct layers to multiply your available keys.
  • Dual-Mode Actions:
    • HID Mode: Send standard keystrokes and shortcuts that work on any OS without drivers.
    • Host Control Mode: Trigger complex actions on your computer—like launching native apps or executing shell scripts—using the auto-discovering background daemon.
  • Web-Based Configurator: A zero-dependency, browser-based UI for remapping keys, creating macros, and configuring lighting. Features a guided interactive tour and smart JSON export.
  • RGB Underglow: 10 addressable RGB LEDs for brilliant lighting effects, managed by FastLED.
  • Dual Connectivity: Seamlessly switch between a wired USB-C connection and wireless Bluetooth/BLE HID.

Getting Started

  1. Build the Hardware: Use the KiCad files in the hardware/ directory to fabricate the PCBs and source the components from the Bill of Materials.
  2. Flash the Firmware: Use PlatformIO to compile and upload the firmware from the firmware/ directory to the ESP32-S3.
  3. Configure Your Layout: Access the Web Configurator (locally or via GitHub Pages) to design your custom keymaps and export the config.json file to your Downloads folder.
  4. Run the Host Daemon: Download the standalone executable from the Releases page (or run the Python script). It automatically connects to the hardware, detects your config file, and runs invisibly in your system tray to unlock the command and launcher layers.

For a detailed, step-by-step guide, please refer to the Complete User Workflow section in the documentation.


Acknowledgements

This project was made possible by the following open-source projects and communities:

  • ScottoKeebs: For the KiCad libraries and footprints for mechanical keyboards.
  • The Mechanical Keyboard Community: For providing a constant source of inspiration and knowledge.

License

The hardware and software are provided as-is under a permissive license. This project includes components from third-party libraries which are subject to their own licenses. Please see the individual source files for more details.

Parts

33
QtyValueFootprintReferences
121N4148Top-Footprints:D_DO-35_SOD27_P7.62mm_HorizontalD1, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11, D12
12KeyswitchTop-Footprints:MX_Hotswap_1.00uS1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12
4MountingHole_PadMountingHole:MountingHole_2.2mm_M2_DIN965_PadH1, H2, H3, H4
1Conn_01x15Top-Footprints:PinHeader_1x15_P2.54mm_VerticalJ2
1OLED_128x32Top-Footprints:OLED_128x32J1
1RotaryEncoder_SwitchTop-Footprints:Encoder_EC11_MXSW2
1SLW-864574-5A-RA-N-DTop-Footprints:SLW8645745ARANDSW1

The 32 most common of 33 parts.

More from not-sample-text/Proiect-Licenta

2
  • 2 layers65 × 120 mmBottom, the printed circuit board in 3D

    Bottom

    not-sample-text/Proiect-Licenta

    This repository represents the final version submitted for my Bachelor's Thesis.

    52 parts1
  • 2 layers65 × 120 mmTop plate, the printed circuit board in 3D

    Top plate

    not-sample-text/Proiect-Licenta

    This repository represents the final version submitted for my Bachelor's Thesis.

    4 parts1

Similar boards

  • 2 layers65 × 30 mmRgb to hdmi, the printed circuit board in 3D

    Rgb to hdmi

    hoglet67/RGBtoHDMI

    Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI

    33 parts1kGPL-3.0
  • 2 layers127 × 96 mmAmiga gfxcard, the printed circuit board in 3D

    Amiga gfxcard

    mntmn/amiga2000-gfxcard

    MNT VA2000, an Open Source Amiga 2/3/4000 Graphics Card (Zorro II/III), written in Verilog

    33 parts1k
  • 2 layers92.7 × 58.4 mmHacky holidays, the printed circuit board in 3D

    Hacky holidays

    hackclub/OnBoard

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

    33 parts915
  • 2 layers240 × 120 mmQuiver PDB 01, the printed circuit board in 3D

    Quiver PDB 01

    Arrow-air/project-quiver

    Project Quiver documentation, designs, and project artifacts.

    33 parts617CERN-OHL-S-2.0
  • 2 layers75 × 26 mmDIY detector, the printed circuit board in 3D

    DIY detector

    ozel/DIY_particle_detector

    A mobile low-cost spectrometer for measuring radioactivity and the energy of ionising radiation like alpha particles and electrons

    33 parts558BSD-2-Clause
  • 2 layers100 × 50 mmPixelix, the printed circuit board in 3D

    Pixelix

    BlueAndi/Pixelix

    Full RGB LED matrix, based on an ESP32 and WS2812B LEDs or emulated LEDs on TFT.

    33 parts447MIT
  • 2 layers65 × 30 mmCanHat, the printed circuit board in 3D

    CanHat

    bondus/KlipperToolboard

    A 3D printer tool head controller board

    33 parts373GPL-3.0

Questions

How big is the Top PCB?

It measures 65 × 120 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Top use?

33 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 Top KiCad files?

From the not-sample-text/Proiect-Licenta repository on GitHub, at the commit this page was made from: the board is hardware/pcb/top/top.kicad_pcb and its schematic hardware/pcb/bottom/bottom.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Top design in my own project?

Its repository states no licence, so its author keeps all rights: ask not-sample-text before reusing the design.