You are browsing as a guest. Sign up (or log in) to start making projects!

Six pad

Hardware
  • 3 Devlogs
  • 1 Total hours

I’m building SixPad, a compact custom 6-key mechanical macropad with a Seeeduino XIAO as the microcontroller, six mechanical switches, a rotary encoder, and a 128x32 OLED display. I’m designing the PCB and the screwless, friction-fit case myself, along with the Python-based KMK firmware to control the macropad.

Open comments for this post

36m 22s logged

Project Architecture & Directory Setup

  • Created a clean local workspace by following the required project structure with four main folders: CAD/, PCB/, Firmware/, and production/.
  • Organised all the KiCad project files, including the .kicad_pro, .kicad_sch, and .kicad_pcb files, inside the PCB/ folder.

CAD Modeling & Component Isolation

  • Used Fusion 360 to complete the screwless, friction-fit design of the 6-key macropad with the Seeeduino XIAO, rotary encoder, and 128x32 OLED display.
  • Used the Move tool and body selection options in Fusion 360 to position the components properly and create exploded views showing the internal standoffs and component placement.
  • Exported the complete assembled macropad as a .STEP file and placed it inside the CAD/ folder.
  • Separately isolated the top and bottom case parts using viewport visibility options and exported them as Top.STEP and Bottom.STEP inside the production/ folder.

Firmware & Manufacturing Assets

  • Set up the Python-based KMK firmware and placed the main control script, main.py, inside the Firmware/ folder.
  • Also included the required main.py file in the production/ folder for the final project files.
  • Organised the manufacturing files by adding the PCB Gerber files as gerbers.zip along with the required case parts for fabrication.

Documentation & Release Preparation

  • Created a complete README.md for SixPad with the project description, features, repository structure, Bill of Materials (BOM), and images showing the CAD design, schematic, PCB, and case assembly.
  • Fixed and added the required image paths so that the project images are properly displayed on GitHub.
  • Prepared the final project information and GitHub repository link for the #hackpad-ships Slack channel submission.

Hack Time Tracking

  • I was not able to properly track the hack time spent on the CAD work because I could not find a suitable hack-time tracking plugin for Fusion 360.
  • I also tried using the Keycat plugin, but it was not working properly, so I could not use it reliably for tracking the time.
0
0
9
Open comments for this post

17m 31s logged

Devlog: Laying Out and Routing My Custom 6-Key Macropad

Finally moved from the schematic to the actual PCB layout for my custom 6-key macropad. This part was mainly about getting the component placement right, checking the mechanical clearances, and routing everything properly to the Seeeduino XIAO.

Here’s what I did during the layout and routing.

Setting Up the Mechanical Grid

First, I worked on the switch placement. I set the grid to 19.05 mm, which is the standard 1U spacing used in mechanical keyboards.

I placed all 6 switches in a 2x3 layout and made sure the spacing was proper so the keycaps won’t collide with each other.

After fixing the switches, I changed the grid to a smaller value and placed the 6 through-hole diodes next to their respective switches. This helped me keep the connections shorter and cleaner.

Component Placement and Board Outline

Once the switches and diodes were placed, I started arranging the remaining components around them.

  • The Brains: I placed the Seeeduino XIAO on the left side of the board.
  • OLED + Encoder: The 4-pin OLED header and rotary encoder were placed at the top. This gives enough space for the OLED to sit above the switches using standoffs.
  • Board Outline: I created the Edge.Cuts around all the components.

One important thing I changed was the left side of the board. I moved the edge slightly inward so that it sits properly around the XIAO’s USB-C port. This way, the PCB won’t block the cable when I connect it.

Adding the Underglow

I also added 4 WS2812B LEDs, one near each corner of the board, for the underglow.

Since the LEDs normally shine upwards, I flipped their footprints to the Bottom Copper (B.Cu) layer.

The idea is to make the light shine down towards the desk instead of directly into the keycaps.

Routing Everything

After the placement was done, I started routing the board.

Signal Routing

For the switch matrix, I used 0.25 mm traces.

The switch-to-diode connections and rows were mainly routed on the F.Cu layer. For the columns, I used vias to move the connections to the B.Cu layer where needed.

From there, I routed the rows and columns back to the GPIO pins of the Seeeduino XIAO.

Power Routing

For the power connections, I used 0.5 mm traces.

The switches don’t really consume much current, but the 4 WS2812B LEDs can draw quite a bit of current when running at high brightness. So I wanted to give the power lines some extra width instead of using the same thin traces everywhere.

I used wider traces for the 5V, 3.3V and GND connections.

Ground Pour

Finally, I added GND copper pours on both the top and bottom layers.

This gives the board a proper ground plane and also provides a low-resistance return path for the LEDs.

Current Status

At this point, the PCB is fully routed with 0 unrouted nets.

So the main PCB layout is basically done. Now I just need to do the final checks before sending it for manufacturing.

What’s Left

  • Run the final DRC
  • Check clearances and possible routing issues
  • Generate the 3D view
  • Do a final mechanical check
  • Generate the Gerber files
  • Get the PCB manufactured

Overall, this was a pretty nice step because I could finally see the schematic turning into an actual physical board.

Now I just need to make sure I haven’t done anything stupid before getting the PCB manufactured 😭.

0
0
5
Open comments for this post

15m 55s logged

Devlog 01: Designing the 6-Key Macropad Schematic

Project Goal

The goal of this project is to build a small and compact 2x3 macropad with hardware media controls, an OLED display and RGB lighting.

Hardware & Components

For the main controller, I decided to use the Seeeduino XIAO because it is very small and has enough GPIO pins for this project.

The main components I am using are:

  • Microcontroller: Seeeduino XIAO
  • Switches: 6 mechanical switches in a 2x3 layout
  • Media Control: 1 rotary encoder
  • Display: I2C OLED display
  • Lighting: 4 WS2812B RGB LEDs connected in a chain

KiCad Schematic

For the first stage, I started working on the schematic in KiCad.

The main idea was to first decide how all the components should be connected and which GPIO pins I should use before moving to the PCB design.

Switch Matrix

The 6 switches are arranged in a 2-row and 3-column matrix. This helps reduce the number of GPIO pins required.

Each switch is connected with a diode so that multiple keys can be pressed at the same time without causing key ghosting.

Overall, the switch matrix uses 5 GPIO pins from the XIAO.

OLED Display

The OLED is connected using I2C.

I connected the OLED to the XIAO’s:

  • SDA
  • SCL
  • 3.3V
  • GND

This allows the microcontroller to communicate with the display using the I2C protocol.

Rotary Encoder

For the rotary encoder, I am using two signal pins:

  • ENCA
  • ENCB

These will be used to detect the direction in which the encoder is rotated.

The common pin of the encoder is connected to GND.

RGB LEDs

For the RGB lighting, I am using 4 WS2812B LEDs connected in a daisy chain.

Instead of using separate GPIO pins for every LED, I am using one data line called LED_DATA to control all four LEDs.

The LEDs are powered using the 5V line.

Something I Just Found Out

While working on this project, I just found out that there is a plugin that can connect Hackatime with KiCad.

This is actually pretty useful because I can track the time I spend working on the KiCad part of the project through Hackatime as well.

I am going to try setting this up and see how well it works with the project.

What’s Next?

Now that the basic connections are done in the schematic, the next part is to move towards the actual PCB design.

PCB Layout

I will assign the required footprints to all the components and then start positioning the 2x3 switch layout.

After that, I will route the copper traces and complete the PCB layout.

Enclosure

Once the PCB is ready, I plan to export it as a STEP model and use it in a 3D CAD workspace to design a custom enclosure for the macropad.

Firmware

After the hardware side is ready, I will start working on the firmware using the KMK framework in Python.

The firmware will handle:

  • Switch matrix scanning
  • Rotary encoder input
  • OLED display
  • RGB lighting and animations

This is the first stage of the project. Right now, my main focus is getting the schematic and hardware connections right before moving to the PCB.

2
0
46

Delete project?

Are you sure you want to permanently delete this project? This action cannot be undone.

All devlogs, followers, and associated data will be removed.

Followers

Loading…