Skip to content
KiCAD Templates to design a mechanical keyboard with multiple MCU's included.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
atmega328 @ 6feebbd update submodule to latest commit Sep 5, 2019
atmega32a @ 086e649 add atmega32a submodule Sep 18, 2019
atmega32u4 @ c6a5d3b update atmega32u4 submodule reference Sep 5, 2019
resources add useful document on PCB design Sep 5, 2019
stm32f072 @ c61c31e
stm32f303 @ c40a2b5 update reference to submodule Sep 7, 2019
.gitignore initial commit with README and .gitignore file Sep 2, 2019
.gitmodules add atmega32a submodule Sep 18, 2019
README.md add atmega32 reference Sep 18, 2019

README.md

KiCAD Templates

Mechanical Keyboard KiCAD Templates

A collection of KiCAD templates to help the budding designer start designing their own mechanical keyboards.

Github Issues Pending Pull-Requests License

Table of Contents


About The Project

This repository contains a collection of KiCAD mechanical keyboard templates using a variety of MCU's. Within each templates are schematics that lay out the basic connection between essential components as well as sub-sheets where the designer can implement their own key matrix and, in some cases, RGB LED underglow implementations. In most cases the KiCAD libraries in use were provided by ai03


Requirements

Installation

  • git clone https://github.com/CaninoDev/Mechanica_Keyboard_KiCAD_Templates $TEMPLATE_DIRECTORY where $TEMPLATE_DIRECTORY is the path to templates by your version of KiCAD. You can view and set the path by starting up KiCAD and going to Preferences --> Configure Path --> KICAD_USER_TEMPLATE_DIR
  • Once installed, go to File --> Start a New Project From Template and select the desired template from the list.

Notes

Key Terms

MCU / Microcontroller ESD Voltage Regulator Decoupling Capacitors Pull Down Resistors

Design Guidelines

PCB Design

  • Keep traces from the connector to the MCU as short as possible.
  • Generally, avoid the use of sharp bends when laying down track.
  • Power and Ground traces should be wide.
  • Place the crystal as close to the MCU as possible.
  • Isolate the oscillator as much as possible:
    • Separate the ground plane underneath the crystal generally.
  • D+ and D- traces should match up in distance as close as possible (so the signals are in sync). Use differential(90Ω) traces.
  • Fill Zones: It is not necessary to fill the entire PCB with ground/power plane. It is sufficient to encompass the crystal, USB and MCU footprints in a ground fill.

Reference Keyboards

Please note, some of the following keyboards have schematics that may be incomplete. I try to make note of those keyboards but cannot guarantee that I have caught them all.

atmega32

stm32

(NOTE: The stm32 MCU series are, for the most part, interchangeable with minimal changes. Pay particular attention that the F072 series have a built-clock suitable for USB data transmissions.)

Disclaimer

As I am still learning how to design keyboards, there may be some implementations that does not represent best practices or may even be incorrect. In such cases, please make a pull request and I will incorporate the corrections promptly. When creating a new design from template, KiCAD copies over the local libraries but doesn't preserve their respective git. This results in a relatively larger project with the inability to effortlessly update local libraries.


Contributing

As noted above, there may be some mistakes in implementation or improvements could be made. If you note either, please:

Step 1

- 🍴 Fork this repo!

Step 2

- 👯 Make a branch concering the variant that will be modified.

Step 3

- HACK AWAY🔨🔨🔨

Step 4

- 🔃 Create a new pull request using <a href="https://github.com/CaninoDev/Mechanica_Keyboard_KiCAD_Templates/compare/" target="_blank">`https://github.com/CaninoDev/Mechanica_Keyboard_KiCAD_Templates/compare/`</a> detailing in the comments whether it is a correction and reference the reasons either by explanation or datasheet reference. If it is an improvement, explain the improvement. This is so  that not only I can learn from mistakes but so that others can as well. 

Thanks

The following people have been invaluable in my journey in learning how to design keyboards:

  • Worldspawn#9316, Abec13#3342, Comrade. SeungheonOh#4283, and The_Royal • 🍦 GMK Fro.Yo 🍦#3000 at the '40% Keeb' Discord server.
  • ai03#2725, PheonixStarr#0371, Xaetral#3486 at the 'ai03 Design Studio' Discord server

These resources were immensely helpful

These are related resources to mechanical keyboard design

License

License

You can’t perform that action at this time.