Skip to the content
PCBKitNew board
2 layers65 × 60 mmButton matrix, the printed circuit board in 3D

Button matrix

Ethan2502/Amigo

Wakeup buddy

Size
65 × 60 mm
Copper layers
2
Thickness
1.6 mm
Parts
26
Nets
17
Pads
117
Tracks, vias
124, 12
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
5 May 2026
Updated
31 Oct 2026

Overview

Button matrix is an open-source printed circuit board by Ethan2502, from the Ethan2502/Amigo repository on GitHub. It is a 2-layer board of 65 × 60 mm with 26 parts on 17 nets, routed with 124 tracks and 12 vias.

It is built around the 1N4148W. Its parts include 9 diodes, 3 resistors and 1 connector. It belongs with the lEDs and displays boards of this library.

Main components

1

README

README.md

Amigo

A desk companion cube that takes over the things you unlock your phone for, so you have no reason to pick it up.

Amigo assembled

Why I made it

This is my project that I got an idea for when my phone's alarm went off. I always tend to use my phone a little bit in bed when I wake up. I thought I needed my phone to wake me up but then I thought of a product that replaced all the "utility" items your phone could do but without the distractions. I used screentime apps before but they always make it in fingers reach to disable it. Amigo takes the other approach. Instead of locking the phone down, it takes over the jobs you unlock the phone for in the first place, so there is nothing to reach for.

Physically locking the phone away is something I want to add later. The current design does not do it.

What it does

  1. Wakes you up. Alarm clock, so your phone doesn't have to be the thing next to your bed.
  2. Keeps your phone down. The alarm, timer, and display all live on the cube, so there is no reason to unlock your phone for any of them.
  3. Utility stuff. Timers, stopwatch, and the other simple things you'd normally pull your phone out for.
  4. Desk toy. Displays pictures on a slide deck while you work.
  5. Classroom toy. Small kids in elementary school can use it to develop cognitive function with memory games or reaction time tests. It can teach them things through games where they answer questions using the keypad as arrows or other controls to move, fight, and so on. It's a lot cheaper than buying a brand new computer or phone, so it's a budget friendly classroom toy.

How it works

Amigo is two PCBs and a 3D printed case.

The main board carries an ESP32-S3-WROOM-1, a TP4056 LiPo charger, an AP2112K 3.3 V LDO, and headers for the display, the audio amp, the power switch, and the button matrix. It runs off a single-cell LiPo and charges over USB-C.

The 3x3 button matrix board is a separate PCB with nine Kailh Choc hotswap switches and nine 1N4148W diodes in a standard row/column matrix, so nine keys read over six GPIO. It connects to the main board through an 8-pin ribbon header.

Main board PCB render

Button matrix PCB render

Exploded View

Case Internals

Main Schematic

Buttons Schematic

Repo layout

text
hardware/
  main-board/          KiCad project for the ESP32-S3 main board
    production/        gerbers, BOM, pick-and-place files
  button-matrix/       KiCad project for the 3x3 switch board
    libs/              Keebio-Parts footprint library (third party, see credits)
    production/
cad/
  amigo.f3z            Fusion 360 Archive file for multi-component assemblies
  step/                STEP exports
  stl/                 printable parts
docs/                  assembly instructions
firmware/              (in progress)
images/                renders and photos
bom.csv                full bill of materials

Assembly

1. Order the PCBs

Send hardware/main-board/production/gerbers.zip and hardware/button-matrix/production/gerbers.zip to your fab house. Both are 2-layer, 1.6 mm.

You can use PCBA to save time on soldering. If you don't it will be harder and you may or may not have to make a stencil. I ordered PCBA

2. Print the case

PartFileNotes
Casecad/stl/case.stlNeeds supports
Button covercad/stl/button-cover.stl10% Gyroid
Display mountcad/stl/display-mount.stl10% Gyroid
Keycapscad/stl/keycaps.stlx9 10% Gyroid

Settings I used:

  1. Gyroid Infill at 10%
  2. Supports only on the case
  3. The rest I used bambu slicer and their default settings for PLA

3. Solder the main board

If you ordered PCBA then skip.

Use solder paste, wick, and flux to do solder. I believe using a stencil will make applying solder paste easier but I ordered PCBA. Solder all the parts on to it and also don’t forget things like key caps for the buttons. Refer to Ki Cad files as instructions for each cap or resistor and anything else you may need.

Also the ESP board and the TP4056 should probably be soldered first because they are the most finicky. The TP4056 also has a thermal pad underneath. I suggest soldering all the passives like capacitators and resistors last.

4. Solder the button matrix

When you solder the button matrix it is important to make sure your diodes are the right direction. Normally when assmbling things I find it easier to have the file open whether it be a CAD or a PCB design. This way it is concrete in exactly what direction you planned for it earlier. Also don't forget keycaps while soldering.

5. Wire the modules

Again you can pull up the file to see which way the order is for the pin connectors. You can then work through it wire by wire by counting. This is the most concrete way to do it withought messing up. To be extra secure you can use some hot glue and secure the connection.

6. Assemble the Cube

Use M3 screws and nuts to screw everything in. There should be a hole for each screw.

7. Flash the Firmware

Once firmware is written you can flash it. I have not written it yet I will update it later.

Bill of Materials

Prices are per-unit at the quantity needed to build one Amigo. Several LCSC parts have minimum order quantities well above what the board uses (the 0603 passives ship in reels of 50 or 100), so the actual amount you spend at checkout will be higher than the totals below.

The main board was ordered as PCBA, so the surface-mount parts in the first table were supplied to the assembler rather than hand-soldered. The button matrix board was ordered bare and assembled by hand.

Main board

RefPartQtyUnitTotalLink
U3ESP32-S3-WROOM-1-N16R81$5.16$5.16C2913202
U1TP4056-42-ESOP8 LiPo charger (ESOP-8)1$0.19$0.19C16581
U2AP2112K-3.3TRG1 LDO (SOT-23-5)1$0.11$0.11C23380830
J1USB4085-GF-A USB-C receptacle1$1.42$1.42C7095263
J2S2B-PH-K-S-GW JST PH 2-pin, right angle1$0.18$0.18C157932
J3PPTC081LFBN-RC female header 1x08 2.54 mm (display)1$1.54$1.54C3320851
J4PPTC071LFBN-RC female header 1x07 2.54 mm (audio amp)1$0.79$0.79C5342086
J5PRPC002SAAN-RC pin header 1x02 2.54 mm (power switch)1$0.09$0.09C3346540
J6PPTC081LFBN-RC female header 1x08 2.54 mm (button ribbon)1$1.54$1.54C3320851
SW1, SW2TL3342F260QG tactile switch2$1.15$2.29C2886894
D1YLED0805G green LED, 08051$0.01$0.01C25170728
D2YLED0805B blue LED, 08051$0.01$0.01C19273154
D3YLED0805R red LED, 08051$0.01$0.01C19171391
C1, C2, C3, C1110 µF 25 V X5R, 06034$0.48$1.92C344022
C4, C6, C9, C10100 nF 50 V X7R, 06034$0.02$0.08C14663
C5, C7, C81 µF 25 V X7R, 06033$0.02$0.07C29936
R1, R25.1 kΩ 1%, 06032$0.01$0.01C105580
R32 kΩ 5%, 06031$0.01$0.01C105581
R4, R5100 kΩ 1%, 06032$0.01$0.01C14675
R6, R710 kΩ 1%, 06032$0.01$0.01C98220
R10, R11, R121 kΩ 1%, 06033$0.01$0.02C22548
Main board subtotal$15.47

Button matrix board

RefPartQtyUnitTotalLink
CHOC1-CHOC9Kailh Choc low profile hotswap socket9$0.78$7.02Amazon
Kailh Choc low profile keyswitch9$1.92$17.28Amazon
D1-D91N4148W diode, SOD-1239$0.01$0.08C908248
J1Header 1x08 2.54 mm (ribbon to main board)1$1.54$1.54C3320851
R1, R2, R310 kΩ 1%, 06033$0.01$0.02C98220
Button matrix subtotal$25.94

Keycaps are 3D printed from cad/stl/keycaps.stl, so there is nothing to buy for them.

Off-board parts

PartQtyUnitTotalLink
HiLetgo 2.8 in ILI9341 SPI display, 240x3201$16.39$16.39Amazon
MAX98357A I2S audio amp breakout1$6.88$6.88Amazon
CQRobot speaker, JST-PH 2.0 mm interface1$7.99$7.99Amazon
EEMB 1100 mAh single-cell LiPo, JST connector1$6.15$6.15Amazon
Rocker power switch1$1.35$1.35AliExpress
Jumper wires, board-to-board ribbon link1$6.98$6.98Amazon
PLA filament for case, button cover, display mount, keycaps1$20.00$20.00Polymaker
M3 screws and nuts pack of 1001$15.30$15.30McMaster
PCB fabrication: main board PCBA and button matrix bare PCB1$50.65$50.65JLCPCB
$131.69 plus fasteners

The Amazon parts ship in fixed pack sizes rather than the exact count the build uses. The Unit column is the per-item price and the Total is what one Amigo consumes, so your checkout total will be higher.

Total

$173.10 plus fasteners to build one Amigo: $15.47 for the main board, $25.94 for the button matrix, and $116.39 in off-board parts and fabrication. Fabrication is the single largest line at $50.65.

Tools used

Not part of the build, listed for anyone reproducing it.

ToolLink
Soldering ironAmazon
Desoldering pumpAmazon
MultimeterAmazon

Firmware

Not written yet. The plan is firmware that lets people program the device, download or make games, and customize it for their needs, with over-the-wifi updates so the software keeps getting better.

Credits

The hardware/button-matrix/libs/Keebio-Parts.pretty-master footprint library is Keebio's, used under its own license for the Kailh Choc footprints. Everything else in this repo is my own work.

What I learned

I used a bunch of stuff on this project for the first time, like KiCad to make my PCBs. I realize how hard it is to actually verify if some PCB works before you order it. I guess it is because I didn't have a breadboard kit. Some of the most memorable things I learned about electronic design is things like not forgetting a fuse or remembering to add EN and Boot switches. I also learned to try and plan the actual product out before because I wanted motors to drive it but I didn't account for any sizing constraints and it turned out to be to out of reach for a first project.

I really enjoyed putting everything together at the end in Fusion with the actual CAD of the PCB. My least faveorite part was actually ordering everything because who knew things cost money! I didn't notice but my amazon cart added up quick and I made a switch to ali express and was able to save some money. JLC was also really annoying one day where it kept rejecting my files and it didn't work and I had to restart the entire process from scratch to try and debug it. Another thing I learned while ordering was the company LCSC sells parts but it takes time to quote it. They sent me an email but I didn't check it so I forgot to actually order it! Overall I am excited to assmble this thing I have been working on for a long time.


Parts

26
QtyValueFootprintReferences
91N4148WDiode_SMD:D_SOD-123D1, D2, D3, D4, D5, D6, D7, D8, D9
9Choc_SWKeebio:SW_choc_v1+v2_HS_CPG135001S30_1uChoc1, Choc2, Choc3, Choc4, Choc5, Choc6, Choc7, Choc8, Choc9
310kResistor_SMD:R_0603_1608MetricR1, R2, R3
1ButtonRibbonConnectorConnector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ1

The 22 most common of 26 parts.

Questions

How big is the Button matrix PCB?

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

What parts does the Button matrix use?

26 parts, built around the 1N4148W. 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 Button matrix KiCad files?

From the Ethan2502/Amigo repository on GitHub, at the commit this page was made from: the board is hardware/button-matrix/button-matrix.kicad_pcb and its schematic hardware/button-matrix/button-matrix.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Button matrix design in my own project?

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

More from Ethan2502/Amigo

1
  • 2 layers50 × 50 mmAmigo main, the printed circuit board in 3D

    Amigo main

    Ethan2502/Amigo

    Wakeup buddy

    39 parts

Similar boards

  • 4 layers99 × 53.3 mmPSLab, the printed circuit board in 3D

    PSLab

    fossasia/pslab-hardware

    PSLab Hardware Design and Schematics https://pslab.io

    199 parts1.7kApache-2.0
  • 2 layers208.8 × 396.9 mmFerris, the printed circuit board in 3D

    Ferris

    pierrechevalier83/ferris

    A low profile split keyboard designed to satisfy one single use case elegantly

    145 parts1.3k
  • 2 layers285.5 × 95 mmReviung46 ver1 1, the printed circuit board in 3D

    Reviung46 ver1 1

    gtips/reviung

    The REVIUNG41 is 41-key column staggered keyboard.

    119 parts517MIT
  • 4 layers95.6 × 73.6 mmMathpad, the printed circuit board in 3D

    Mathpad

    Summa-Cogni/Mathpad

    A mathematical keypad for students and professionals

    93 parts243
  • 2 layers141.5 × 83 mmRolio, the printed circuit board in 3D

    Rolio

    MickiusMousius/Rolio46Keyboard

    A split wireless keyboard based on the Corne and Sofle

    110 parts236MIT
  • 6 layers160 × 100 mmAdrmu6layer, the printed circuit board in 3D

    Adrmu6layer

    marcoreps/ADRmu

    ADR1000 10V standard

    240 parts149
  • 2 layers99.1 × 90.7 mmBgkeeb, the printed circuit board in 3D

    Bgkeeb

    sadekbaroudi/bgkeeb

    This is a reversible 100mm x 100mm pcb with support for mx or choc switches (no hotswap), per key led, rotary encoders, and exposes the SDA/SCL/GND/VCC lines in the form of the pimoroni trackball pins (meaning you can…

    108 parts108
  • 2 layers229.8 × 102.6 mmBw2, the printed circuit board in 3D

    Bw2

    hazels-garage/bad-wings

    Bad Wings

    107 parts107CC-BY-SA-4.0