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

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
5

Comments 0

No comments yet. Be the first!