Skip to content

YeetTheAnson/AnsonKeyboard

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

Function Key Combination
Toggle LED Mode Ctrl + Alt + Pause/Break
Enter Custom Color Mode Ctrl + Alt + Page Up
Increase LED Brightness Ctrl + Alt + Shift + Up Arrow
Decrease LED Brightness Ctrl + Alt + Shift + Down Arrow
Enter Bluetooth Mode Hold 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

schematic

PCB

pcbpreview

pcb3dtop

pcb3dbottom

Renders

render1

render2

render3

render4

render5

Case Stand (CaseStand.step)

casestand1

casestand2

casestand3

Lower Case (LowerCase.step)

lowercase1

lowercase2

Plate (Plate.step)

plate1

Top Case (TopCase.step)

topcase1

topcase2

Bill Of Material

Electronics (LCSC)

Passive Components

QTY Name Part Number LCSC Part Number Price
100x 4.7kΩ Resistor 1206W4F4701T5E C17936 $0.32
100x 5.1kΩ Resistor 1206W4F5101T5E C26033 $0.32
20x Tact Switch TS-1187A-B-A-B C318884 $0.38
5x 3.3v Regulator AMS1117-3.3 C6186 $0.84
150x 100nF Capacitor CC1206KRX7R9BB104 C82601 $1.61
20x 10uF Capacitor CL31B106KAHNNNE C14860 $0.54
200x Diode 1N4148WL C33962554 $1.00

Active Components

QTY Name Part Number LCSC Part Number Price
150x RGB LED SK6812MINI-E C5149201 $8.70
1x ESP-32-S3 ESP32-S3-WROOM-1-N16R2 C2913205 $5.04
10x Level Shifter SN74LV1T34DBVR C100024 $0.59

LCSC Shipping: Singapore Post – $5.72

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

QTY Name Local Price Conversion Upcharge Price
5x USB C Breakout Board RM8.13 +$0.15 $2.10
1x 0.91" OLED RM10.62 +$0.15 $2.65
1x SPX Express Shipping RM5.20 +$0.15 $1.40

Production

QTY Name File Name Production Method Price
1x Top Case TopCase.step FDM 3D Print -
1x Plate Plate.step FDM 3D Print -
1x Lower Case LowerCase.step FDM 3D Print -
1x Case Stand CaseStand.step FDM 3D Print -
5x PCB gerbers.zip JLCPCB $22.20
1x PCB Shipping - E-Post $9.76

Fasteners

QTY Name Local Price Conversion Upcharge Price
27x M2 x 3.5 x 4 Heat Set Insert RM9.45 +$0.15 $2.39
12x M2 x 3.5 x 2 Heat Set Insert RM4.20 +$0.15 $1.14
12x M2 x 5mm Hex Screw RM4.56 +$0.15 $1.23
12x M2 x 3mm Hex Screw RM4.08 +$0.15 $1.12
15x M2 x 12mm Hex Screw RM6.90 +$0.15 $1.78
1x SPX Express Shipping RM10.60 +$0.15 $2.66

Mechanical

QTY Name Local Price Conversion Upcharge Price
1x XDA Keycap Set RM91.20 +$2.50 $24.14
1x TX Almost Perfect Stabilizers RM74.80 +$2.50 $20.25
91x Gateron Smoothie Switches RM136.50 +$4.00 $35.42
1x SPX Express Shipping RM17.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.

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages