Skip to the content
PCBKitNew board
2 layers352.5 × 136.4 mmAnson's Keyboard PCB, the printed circuit board in 3D

Anson's Keyboard PCB

YeetTheAnson/AnsonKeyboard4

When in custom color configuration mode, the display shows prompts for entering RGB values.

Size
352.5 × 136.4 mm
Copper layers
2
Thickness
1.6 mm
Parts
373
Nets
220
Pads
1,628
Tracks, vias
2,799, 483
Pours
3
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
6 Oct 2025
Updated
20 Oct 2025

Overview

Anson's Keyboard PCB is an open-source printed circuit board by YeetTheAnson, from the YeetTheAnson/AnsonKeyboard repository on GitHub. It is a 2-layer board of 352.5 × 136.4 mm with 373 parts on 220 nets, routed with 2,799 tracks and 483 vias.

It is built around the ESP32-S3-WROOM-1-N8, AMS1117-3.3 and SK6812MINI-E, with the TS-1187A-B-A-B among its other parts. Its parts include 178 diodes, 95 capacitors, 69 switches, 4 ICs and 2 resistors. It belongs with the keyboards and input boards and the ESP32 boards of this library.

Main components

4

README

README.md

Anson's Keyboard

This is a generic looking 80% TKL keyboard I made over the span of a month. In total, I've spent about 20-25 hours in total for PCB redesigns, writing the keyboard firmware and case redesigns.

Features

  • Individually backlit keys with software addressable RGB
  • 0.91" OLED display
  • USB and Bluetooth connectivity

LED Control

The keyboard has three LED modes:

  1. Off Mode: All LEDs are turned off
  2. RGB Mode: LEDs display a rainbow effect
  3. Custom Color Mode: All LEDs use a user-defined color

LED Mode Controls

  • Toggle LED Mode: Ctrl + Alt + Pause/Break
    • Cycles through Off → RGB → Custom Color
  • Adjust Brightness Up: Ctrl + Alt + Shift + Up Arrow
  • Adjust Brightness Down: Ctrl + Alt + Shift + Down Arrow

Custom Color Configuration

  1. Enter Custom Color Mode: Ctrl + Alt + Page Up
  2. When in custom color mode:
    • The OLED will prompt for R, G, and B values sequentially
    • Use number keys (0-9) to enter a value between 0-255
    • Press Backspace to delete the last digit
    • Press Enter to confirm and move to the next color component
    • After setting all three RGB values, the keyboard returns to normal operation with your custom color

Bluetooth Functionality

The keyboard can operate in either USB or Bluetooth mode:

  • Check Current Mode: The OLED screen displays either "USB Mode" or "BT Mode"
  • Switch to Bluetooth Mode: Hold the Pause/Break key during boot (pin IO36)
    • Note: After setup, the keyboard will remain in Bluetooth mode until changed

OLED Display

The OLED display shows:

  1. "AnsonKeyboard"
  2. Connection mode (USB or Bluetooth)
  3. Current WPM (words per minute) typing speed
  4. Current LED mode

When in custom color configuration mode, the display shows prompts for entering RGB values.

Performance Monitoring

The keyboard automatically calculates your typing speed (WPM) and displays it on the OLED screen. This is calculated based on:

  • Number of keypresses
  • Time elapsed since last keypress
  • Standard conversion (5 characters = 1 word)

Special Key Combinations

FunctionKey Combination
Toggle LED ModeCtrl + Alt + Pause/Break
Enter Custom Color ModeCtrl + Alt + Page Up
Increase LED BrightnessCtrl + Alt + Shift + Up Arrow
Decrease LED BrightnessCtrl + Alt + Shift + Down Arrow
Enter Bluetooth ModeHold Pause/Break during boot

Design Process

I started with a simple idea which was a flat minimalistic TKL keyboard (inspired by the Apple keyboard). The goal was to keep it clean and modern, and remove unnecessary designs. However, as I thought more about ergonomics, I quickly realized that a completely flat keyboard wouldn't be comfortable at all to use during typing.

My initial PCB design had borders that were too thick, which also made the case borders too thick, it was quite bulky and uglier than what I wanted

I originally planned to use the Orpheus Pico as the microcontroller. However, due to the large footprint (making the case even bulkier) and the lack of wireless connectivity, I scrapped that idea and moved on to a new design. At this point, I also decided to make a triangle wedge to set the keyboard at 6 degrees for a better typing experience.

I wanted an integrated USB C port directly on the PCB, but when I redesigned the case and PCB to fit it, I realized that it would be close to impossible for someone with my skill level to hand solder the USB C port and it would have stuck up at an angle anyway (this stresses the cable)

For the final design, I came up a solution. Instead of mounting the USB C port directly onto the PCB, I would purchase a USB C breakout board instead and connect it via cables to the PCB.

(This is when the routing hell begins as I reroute the entire thing at least 3 times) The first time was my extremely inefficient matrix which was a 8x11 matrix. The traces were extremely messy and I've counted about 1.1k traces and 500 vias in total. (I'm so glad I don't have to see it again). I've then updated it to a 7x14 matrix which made routing much easier. The second time was when I had to move all LEDs down by 2mm since they didn't align with the cutout in the switches. Not even an hour after posting about my rerouting, someone from Slack recommmended that I wire my LEDs from top to bottom instead of side to side as to reduce via usage. This is the current version of the PCB and I'm quite happy with it

Pictures

Schematic

<img src=assets/schematic.png alt="schematic" width="1250"/>

PCB

<img src=assets/pcbpreview.png alt="pcbpreview" width="900"/> <img src=assets/pcb3dtop.png alt="pcb3dtop" width="900"/> <img src=assets/pcb3dbottom.png alt="pcb3dbottom" width="900"/>

Renders

<img src=assets/render1.png alt="render1" width="900"/> <img src=assets/render2.png alt="render2" width="900"/> <img src=assets/render3.png alt="render3" width="900"/> <img src=assets/render4.png alt="render4" width="900"/> <img src=assets/render5.png alt="render5" width="900"/>

Case Stand (CaseStand.step)

<img src=assets/casestand1.png alt="casestand1" width="900"/> <img src=assets/casestand2.png alt="casestand2" width="900"/> <img src=assets/casestand3.png alt="casestand3" width="900"/>

Lower Case (LowerCase.step)

<img src=assets/lowercase1.png alt="lowercase1" width="900"/> <img src=assets/lowercase2.png alt="lowercase2" width="900"/>

Plate (Plate.step)

<img src=assets/plate1.png alt="plate1" width="900"/>

Top Case (TopCase.step)

<img src=assets/topcase1.png alt="topcase1" width="900"/> <img src=assets/topcase2.png alt="topcase2" width="900"/>

Bill Of Material

Electronics (LCSC)

Passive Components

QTYNamePart NumberLCSC Part NumberPrice
100x4.7kΩ Resistor1206W4F4701T5EC17936$0.32
100x5.1kΩ Resistor1206W4F5101T5EC26033$0.32
20xTact SwitchTS-1187A-B-A-BC318884$0.38
5x3.3v RegulatorAMS1117-3.3C6186$0.84
150x100nF CapacitorCC1206KRX7R9BB104C82601$1.61
20x10uF CapacitorCL31B106KAHNNNEC14860$0.54
200xDiode1N4148WLC33962554$1.00

Active Components

QTYNamePart NumberLCSC Part NumberPrice
150xRGB LEDSK6812MINI-EC5149201$8.70
1xESP-32-S3ESP32-S3-WROOM-1-N16R2C2913205$5.04
10xLevel ShifterSN74LV1T34DBVRC100024$0.59

LCSC Shipping: Singapore Post – $5.72

Electronics (Local Vendor. I will be paying for these)

QTYNameLocal PriceConversion UpchargePrice
5xUSB C Breakout BoardRM8.13+$0.15$2.10
1x0.91" OLEDRM10.62+$0.15$2.65
1xSPX Express ShippingRM5.20+$0.15$1.40

Production

QTYNameFile NameProduction MethodPrice
1xTop CaseTopCase.stepFDM 3D Print-
1xPlatePlate.stepFDM 3D Print-
1xLower CaseLowerCase.stepFDM 3D Print-
1xCase StandCaseStand.stepFDM 3D Print-
5xPCBgerbers.zipJLCPCB$22.20
1xPCB Shipping-E-Post$9.76

Fasteners

QTYNameLocal PriceConversion UpchargePrice
27xM2 x 3.5 x 4 Heat Set InsertRM9.45+$0.15$2.39
12xM2 x 3.5 x 2 Heat Set InsertRM4.20+$0.15$1.14
12xM2 x 5mm Hex ScrewRM4.56+$0.15$1.23
12xM2 x 3mm Hex ScrewRM4.08+$0.15$1.12
15xM2 x 12mm Hex ScrewRM6.90+$0.15$1.78
1xSPX Express ShippingRM10.60+$0.15$2.66

Mechanical

QTYNameLocal PriceConversion UpchargePrice
1xXDA Keycap SetRM91.20+$2.50$24.14
1xTX Almost Perfect StabilizersRM74.80+$2.50$20.25
91xGateron Smoothie SwitchesRM136.50+$4.00$35.42
1xSPX Express ShippingRM17.00+$0.40$4.31

Total Costs

  • LCSC Total: $25.06
  • Electronics (Local) Total: $6.15
  • JLCPCB Total: $31.96
  • Fasteners Total: $10.32
  • Mechanical Total: $84.12

Grand Total: $157.61

Note: Conversion upcharge is just a buffer for conversion rate fluctuations. Any unused funds will be returned.

Parts

373
QtyValueFootprintReferences
950.1uFCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC1, C2, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23 +79
91SK6812MINILibrary:SK6812MINI-ELED1, LED2, LED10, LED11, LED12, LED13, LED14, LED15, LED16, LED17, LED18, LED19, LED20, LED21, LED22, LED23 +75
87DDiode_SMD:D_SOD-123FD1, D2, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23 +71
310uFCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderCAP2, CAP4, CAP7
24.7kResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR2, R3
2TS-1187A-B-A-BRPI:SW_TS-1187A-B-A-BTACT1, TACT2
10hotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW25
11hotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW16
12hotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW17
13hotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW18
14hotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW19
15hotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW20
16hotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW21
17hotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW22
18hotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW23
19hotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW24
1AhotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW44
1AMS1117-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U1
1BhotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW62
1BACKSLASHhotSwap:SW_Hotswap_Kailh_MX_Plated_1.50uSW42
1BACKSPACEhotSwap:SW_Hotswap_Kailh_MX_Plated_2.00uSW28
1BREAKhotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW84
1ChotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW60
1CAPShotSwap:SW_Hotswap_Kailh_MX_Plated_1.75uSW43
1COMMAhotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW65
1CUSTOM_OLEDLibrary:CUSTOM_OLEDU5
1CUSTOM_USBCLibrary:CUSTOM_USBCU4
1DhotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW46
1DELETEhotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW56
1DOWNhotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW80
1EhotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW32
1ENDhotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW70
1ENTERhotSwap:SW_Hotswap_Kailh_MX_Plated_2.25uSW55
1EQUALhotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW27
1ESChotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW1
1ESP32-S3-WROOM-1Library:ESP32-S3-WROOM-1U3
1FhotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW47
1F1hotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW2
1F10hotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW11
1F11hotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW12
1F12hotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW13
1F2hotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW3
1F3hotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW4
1F4hotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW5
1F5hotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW6
1F6hotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW7
1F7hotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW8
1F8hotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW9
1F9hotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW10
1GhotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW48
1HhotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW49
1HOMEhotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW86
1HYPHENhotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW26
1IhotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW37
1INSERThotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW85
1JhotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW50
1KhotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW51
1LhotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW52
1LALThotSwap:SW_Hotswap_Kailh_MX_Plated_1.25uSW73
1LCTRLhotSwap:SW_Hotswap_Kailh_MX_Plated_1.25uSW71
1LEFThotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW79
1LEFTBRACKhotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW40
1LOGOLOGOG***
1LSHIFThotSwap:SW_Hotswap_Kailh_MX_Plated_2.25uSW57
1LWINhotSwap:SW_Hotswap_Kailh_MX_Plated_1.25uSW72
1MhotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW64
1MENUhotSwap:SW_Hotswap_Kailh_MX_Plated_1.25uSW77
1NhotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW63
1OhotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW38
1PhotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW39
1PERIODhotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW66
1PGDNhotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW82
1PGUPhotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW87
1PRNThotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW14
1QhotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW30
1QUOTEhotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW54
1RhotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW33
1RALThotSwap:SW_Hotswap_Kailh_MX_Plated_1.25uSW75
1RCTRLhotSwap:SW_Hotswap_Kailh_MX_Plated_1.25uSW78
1RIGHThotSwap:SW_Hotswap_Kailh_MX_Plated_1.00uSW81

The 354 most common of 373 parts.

Questions

How big is the Anson's Keyboard PCB PCB?

It measures 352.5 × 136.4 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Anson's Keyboard PCB use?

373 parts, built around the ESP32-S3-WROOM-1-N8, AMS1117-3.3, SK6812MINI-E and TS-1187A-B-A-B. 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 Anson's Keyboard PCB KiCad files?

From the YeetTheAnson/AnsonKeyboard repository on GitHub, at the commit this page was made from: the board is PCB/Anson's Keyboard PCB.kicad_pcb and its schematic PCB/Anson's Keyboard PCB.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Anson's Keyboard PCB design in my own project?

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

Similar boards

  • 4 layers58.5 × 85.5 mmSr jv esp32, the printed circuit board in 3D

    Sr jv esp32

    connorzheng97/srjv

    SR-JV80 Programmable Expansion Card with ESP32 Wi-Fi

    84 parts18
  • 2 layers76.9 × 55 mmAurisenseV2, the printed circuit board in 3D

    AurisenseV2

    catrahedron/AurisenseV2

    A simple shift register based headpat haptics driver board for VRChat with 40 motor driver outputs and two SPI/UART extension ports

    211 parts1CERN-OHL-W-2.0
  • 2 layers88 × 130 mmWindowmaster controller v2, the printed circuit board in 3D

    Windowmaster controller v2

    Simplycissmus/windowmaster-s3-controller

    Open hardware and ESP32-S3 firmware for a local 24 V window actuator controller with MQTT and Home Assistant integration.

    68 parts1
  • 2 layers92.4 × 40.6 mmPrintBridge, the printed circuit board in 3D

    PrintBridge

    Kingdragoncat/PrintBridge

    Im so done with needing to unplug all my cords and plug it all in ontip of a file of boxes to print one god damn thing so i made my wired printer wireless

    22 parts
  • 2 layers78 × 58 mmDick mouse, the printed circuit board in 3D

    Dick mouse

    segfau-yama/dxxk_mouse

    ESP32-S3 上で動作する Rust 製 USB 入力デバイスの実験用リポジトリです。

    51 partsMIT
  • 2 layers65 × 55 mmEsp32-s3, the printed circuit board in 3D

    Esp32-s3

    duanestorey/hifi-amp

    A high-fidelity four-channel amplifier with active-crossovers and room correction

    37 parts1
  • 2 layers115.8 × 48.3 mmRV Fan, the printed circuit board in 3D

    RV Fan

    silverchris/opentasticfan

    50 parts
  • 2 layers120 × 102.5 mmDsug cctv BOARD, the printed circuit board in 3D

    Dsug cctv BOARD

    LucasLHenry/spelltwister

    This is the third version of the code for the Spelltwister module with CCTV. This version uses the Arduino platform and the RP2040, a chip developed by Raspberry Pi for their RPi Pico board.

    251 partsMIT