Skip to content

Forking and Modifying

mmccoyd edited this page May 10, 2022 · 2 revisions

You do not have to worry about anything here to build the board as it is. But if you want to fork it to make various modifications, these are some notes on if Hillside is an easy design to do that with.

The short answer is it is not the absolute easiest because it has some optional features and more than a minimal number of keys. But modest changes would not be difficult given some work at learning KiCad.

The long answer breaks down into KiCad, the design and you.

KiCad

KiCad does not support selecting several elements, moving them a bit, and having all their connections stretched to fit the new location. Mostly you need to move the switch or component and then move the traces to the new location or delete the near-by old trace segments and recreate new ones. So it may be best to think of "modify part of the board" as "move the switch where you want, delete the orphaned bits of traces, and recreate them to the new spot".

I would read the docs so you know what options you have for moving things around. Particularly drag vs grab for traces. There is good support for editing, but knowing what KiCad supports your doing will be less frustrating than just trying to blindly click on and move things.

KiCad version 6 is nicer by dragging the closest trace with you but it is not trivial.

This design

The simplest design to modify is one with no diodes, with their row and column traces, and instead just a single trace from each switch to a pin on the MCU. But those designs are limited to around 17 keys per side.

A row column matrix is the base design of any keyboard with more keys. For a few design reasons, Hillside has more complexity than that base design.

Hillside complexities that would be easy to remove, with matching changes to the PCB and schematic.

  • The LEDs (the dog-bone shaped cutouts with four pads around each) are there to allow notification of mode or layer changes such as num or cap lock modes. LEDs are more visible in the periphery of vision than an OLED icon. To reduce complexity, you could just delete all those traces. That accounts for most of the clutter along the thumb arc.
  • Nice!nano wireless support: These are the battery contact and diode pads above the MCU, the power switch below the MCU, and the VCC cutoff jumper to the right of the MCU. If you wanted to simplify things, you could remove the pads and the switch. Removing the jumper and simplifying the VCC traces is also possible, but a bit more work. The cutoff is there as LEDs draw power whether on on not, which is a problem when running on battery. The cutoff provides one way to stop that power drain if you installed LEDs but now want to use a Nice!nano off of battery.
  • Encoder: The extra ring finger key can be an encoder, which some like for scrolling or volume control. The two traces for that run halfway up and across the board to reach the MCU.
  • Haptic header: Allowing for a haptic feedback board adds the row of header pins below the MCU, a mount point for it to the right of the MCU, and more generally the two I2C resistors and traces to the right of the MCU. And the routing challenges that header adds to traces in that area. You could nix them as desired.
  • Trackball mounts: The two mount points below the MCU provide the physical option of mounting a trackball board, though it would need to be hand wired into the above haptic header pins. Remove them as desired.
  • Stitching vias: There are a few vias that connect the top copper layer to the bottom copper layer to ensure a ground path for the LEDs. They could moved around as needed.

Complexities that would be hard to undo:

  • Common cathode diodes: Hillside uses diode packages that have two inputs and a shared output. This simplifies the soldering work but complicates the traces a little. No longer is each row one trace that touches the output of a diode at each column. Instead the trace to the MCU is connected to only half as many diode package outputs. Inputs from two switches/columns go into that diode package, so there are are a few instances of go left before you later go right. Finding spots to put the diodes for the thumb arc was complicated by the clutter of the LEDs. That is why there are two thumb row diodes up in the alpha area, with associated traces to reach them. Undoing this would be involve rewiring most of board.
  • Saving two columns and pins in the scan map. To save some pins, the thumb and extra keys are connected to the columns two over to the outside from where they most easily and naturally connect. For example, the key with the encoder support is electrically in the same column as the outer pinky keys, the next thumb key in the inner pinky column. This connection was usually made by going vertically up to the horizontal trace for that column, as the thumb row is crowded enough already. Not doing this shift would be simpler, but at the cost of the last two unused pins and possibly a slower scan. Undoing it would involve understanding and editing the map in hillside/0_1/0_1.h

You

For the parts above where you looked at things and thought "Yeah, that makes sense or is clear", modifying should be fairly straight forward. For the parts where your eyes rolled back in your head trying to grasp sixteen new things, playing around with those bits might be a bigger undertaking.

Your best friends in making changes are small incremental changes that go from one design that passes the design rules checks to a new one that also passes them. When the little bit of new thing passes, check that change in locally before making more changes.