Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 72 additions & 0 deletions docs/resources/hackpad.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
| title | Resources & Tips |
| ----------- | ---------------- |
| description | A collection of resources, libraries, tutorials, and tips for designing your hackpad. |
| priority | 3 |

# Resources & Tips

Here lies a collection of resources & tips I've amassed over the years; use them well.

With that in mind, there are *thousands* of other resources on the internet that I can't cover here. Use youtube, reddit, discord, whatever works for you!

If a guide doesn't seem to work, try it again. If it *really* doesn't work, try another guide! The magic of it is to keep at it, because if so many other teens can do it, you absolutely can too.

## KiCad Libraries

- [Hack Club's KiCAD care package!](https://github.com/hackclub/hackpad/tree/clean/extras/kicad_care_package)
- [More Keyswitch footprints](https://github.com/ai03-2725/MX_V2)
- [XIAO Footprints](https://github.com/Seeed-Studio/OPL_Kicad_Library)
- [Rotary Encoder footprint](https://kicad.github.io/footprints/Rotary_Encoder)
- [0.91" OLED Display](https://github.com/gorbachev/KiCad-SSD1306-0.91-OLED-4pin-128x32.pretty/blob/master/SSD1306-0.91-OLED-4pin-128x32.kicad_mod)
- You can almost always find the footprint/symbol you're looking for if you use [SnapEDA](https://www.snapeda.com/) or similar sites. Google is your best friend.

## Top Tier

- [The Keyboard Atelier Discord](https://kbatelier.org/) <- THE community for keyboard design! PLEASE do not spam the discord though, your best shot is to lurk.
- [The Keyboard Designer Wiki](https://wiki.ai03.com/books) <- this is insanely useful
- [Atelier designer spreadsheet](https://docs.google.com/spreadsheets/d/1K0jNUZzxTTMkgzo043dxc4vBEOrxNa8jVf4VHk-B27U/edit?gid=0#gid=0)
- I made an example macropad in the GitHub repo [here](https://github.com/hackclub/hackpad/tree/clean/extras/orpheuspad). It has an OLED, a rotary encoder, 4 switches in a matrix, 2 addressable LEDs, and QMK firmware. You can reverse engineer it for pretty much everything else

## Tutorials

- [Joe Scotto's how to design a PCB](https://www.youtube.com/watch?v=8WXpGTIbxlQ)
- [Joe Scotto's how to design a keyboard case](https://www.youtube.com/watch?v=7azQkSu0m_U)
- [ai03's PCB Guide](https://wiki.ai03.com/books/pcb-design) (this is what I learned from!)

## General info

- [XIAO RP2040 Docs](https://wiki.seeedstudio.com/XIAO-RP2040/)
- [Anatomy of a keyboard](https://matt3o.com/anatomy-of-a-keyboard/)
- [Keyboard Mounting Styles](https://www.keyboard.university/200-courses/keyboard-mounting-styles-4lpp7)

## Useful measurements & other info

- Making holes for your PCB:
- KiCAD has specific footprints for mounting holes, don't use Edge.Cuts - use the M3 mounting hole footprint!
- Making holes for your case:
- if you're using [heatset inserts](https://www.aliexpress.us/item/2255800046543591.html), make a 4.7mm diameter hole, 4mm deep
- if you're screwing directly into the plastic, use a 2.9mm diameter hole
- if you just want the screw to pass through without threading, use a 3.4mm diameter hole.
- Use a 0.2mm gap between 3D printed parts
- There's 19.05mm gap between the center of each switch


## 3D models

- [Cherry MX Keycaps](https://github.com/hineybush/CherryMX)
- [Keyswitches](https://grabcad.com/library/cherry-mx-switches-mx-1)
- [Stabilizers](https://grabcad.com/library/cherry-mx-stabilizer-mx-1)
- [EC11 Rotary Encoder](https://grabcad.com/library/rotary-encoder-17)
- Generally speaking, go to [grabcad](https://grabcad.com/library) and search for your part + sort by popular, and you should be able to find the model you need

## Generally useful tips

- Most DIY keyboards are at least partially open source. You can go to their git repositories and copy their tolerances/footprints/schematics/whatever
- You can export your KiCad PCB to a PDF and print them to check measurements!
- Most Keyboards are wired in a matrix to save pins, but if you have 6 or less switches just avoid the matrix altogether
- For screens, just use a 4-pin header for footprints
- Adding graphics in KiCad is really annoying. Instead, you can design your entire thing in Figma and import it as an overlay instead
- Google is your best friend. 9 times out of 10 the first result will help you out.
- Try routing everything on one layers first, if you can't without making a big loop, move to the second layer. This keeps your board clean.
- Make multiple revisions! I rerouted my first macropad like 10 times while adding stuff.
- After routing everything, run Tools > Cleanup Tracks & Vias. You gotta press the Build changes button twice for the optimizations to apply.
1 change: 1 addition & 0 deletions docs/resources/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,5 @@ These are general resources provided by the community. PR's open!
<li><a href="/resources/jlc-ordering">How to order from JLCPCB</a></li>
<li><a href="/resources/parts-sourcing">How to cost effectively source parts</a></li>
<li><a href="/resources/bom">How to make a Bill of Materials</a></li>
<li><a href="/resources/hackpad">All resources related to the Hackpad</a></li>
</ul>