eepyPad/README.md

114 lines
5.5 KiB
Markdown

# The eepyPad
Custom macro key pad with mechanical low-profile (Choc) switches.
## Repository structure
- `/layouts`: Keyboard layouts created with the [Keyboard Layout Editor](http://www.keyboard-layout-editor.com)
- `/ergogen`: [Ergogen](https://docs.ergogen.xyz/) files to generate outlines, cases and PCBs
- `/kicad`: KiCad PCBs and generated files
- `/3d_prints`: 3D models for the enclosure
- `/qmk_keyboards`: [QMK](https://qmk.fm/) keyboard files to compile and flash the QMK firmware
## How-to
### Generating the PCB
The KiCad PCB files are generated using Ergogen. Then they need to be manually routed and finalized in KiCad before
they can be exported as Gerber files and send to a PCB manufacturer.
#### Generating KiCad files with Ergogen
To generate the KiCad PCB file with Ergogen, first install Ergogen using npm: `npm install`.
Then, run `npm run ergogen`. You can find the KiCad file in `ergogen/output/pcbs/eepypad.kicad_pcb`.
Copy the file to `kicad/eepypad.kicad_pcb`.
#### Routing and finalizing the KiCad files
Open the file in KiCad (create a project if non exists yet). Finalize the PCB in KiCad.
1. (Optional) Run the Design Rules Checker. Check the errors. Most of them can be ignored/excluded.
- All "Footprint not found in libraries" can be ignored completely. This is due to how Ergogen generates the PCB.
- The "Board edge clearance" violations are mostly about the cutout for the LED chips.
2. Add VCC and GND planes.
- Menu: `File -> Board Setup`
- On "Physical Stackup", change the copper layer number to 4.
- On "Board Editor Layers", change the type of `In1.Cu` and `In2.Cu` to "power plane".
- NOTE: `In1.Cu` will be the VCC plane, `In2.Cu` will be a GND plane.
3. Add filled zones to the VCC and GND planes.
- Select the `In1.Cu` layer.
- Use the "Add a filled zone" tool and draw a rectangle that contains the entire board. Assign the zone to VCC.
- Repeat the same process for the `In2.Cu` layer and assign the zone to GND.
- The zones don't need to be filled just yet.
4. Add another filled zone on the `B.Cu` layer and assign it to GND.
5. Route all signal traces (no VCC or GND yet). Recommended order:
- Matrix rows (on `B.Cu`)
- Matrix columns (with vias on `F.Cu`)
- NeoPixel data pins
- Connect everything to the MCU.
6. Route VCC traces.
- Connect the VCC traces between the NeoPixel chips and the capacitors with a 0.750 mm track.
- Place free-standing vias (Ctrl+Shift+V) in the middle of the just created VCC traces.
7. Route GND traces.
- Draw short GND traces with a 0.750 mm track and a via at the end next to the GND pads of the NeoPixel chips.
8. Fill all zones by pressing B. Make sure that all nets are routed.
9. Run the Design Rules Checker and make sure there are no (relevant) violations.
10. Add some fancy text on the `F.Silkscreen` layer.
#### Export Gerber files
Now you can generate the gerber, drill and map files.
1. Generate Gerber files.
- Menu: `File -> Fabrication Output -> Gerbers`
- Select plot format `Gerber`.
- Set output directory to `gerber/rev1/` (adjust for current revision).
- Set coordinate format to `4.6, unit mm`.
- Click `Plot` to generate files.
2. Generate drill and map files.
- In the previous dialog, click `Generate Drill Files...`.
- Set drill file format to `Excellon`.
- Set drill units to millimeters.
- Set same output directory as above.
- Click `Generate Drill File`, then `Generate Map File`
3. Create zip file with all generated files from `kicad/gerber/{REVISION}`.
- No subdirectories, only files.
- Ideally name the file `eepypad_{REVISION}.zip`.
4. Upload zip file to manufacturer and make sure everything is correct.
5. Add all generated files to version control (the zip should be on gitignore).
### Compile and flash QMK firmware
To compile the QMK firmware, you first need the `qmk` CLI and a local copy of the QMK firmware.
1. [Install](https://docs.qmk.fm/#/cli) the `qmk` CLI using your favorite package manager.
2. Run `qmk setup` to clone a local copy of the QMK firmware. (By default in `~/qmk_firmware`, feel free to adjust.)
The firmware for this keyboard is compiled using the local copy of QMK and the keyboard definitions in `qmk_keyboards`
which are automatically symlinked to your installed QMK firmware directory (defaults to `~/qmk_firmware`, can be
overridden by setting `QMK_HOME` in your environment). A Makefile is provided to simplify compiling and flashing.
To compile and flash the firmware, run `make qmk-flash`.
After compiling the firmware, you will be asked to put your keyboard into bootloader mode. This can be done either by
pressing the reset button on the backside of the keyboard, or by using the `QK_BOOTLOADER` keycode which is mapped to
the key combination `0,4 (hold) + 0,0` (these are the matrix coordinates).
You can also run `make qmk-activate` which will run `qmk config` to set `user.keyboard` and `user.keymap` to this
keyboard. This allows you to use the `qmk` CLI directly without specifying the keyboard and keymap everytime.
## Used software
- [Keyboard Layout Editor](http://www.keyboard-layout-editor.com)
- [Ergogen](https://docs.ergogen.xyz/), [unofficial Ergogen web UI](https://ergogen.cache.works/)
- [KiCad](https://www.kicad.org/)
- [Onshape](https://www.onshape.com/)
- [UltiMaker Cura](https://ultimaker.com/software/ultimaker-cura/)
- [QMK](https://qmk.fm/)
## Resources
- [FlatFootFox's Ergogen tutorial](https://flatfootfox.com/ergogen-introduction/)
- [QMK documentation](https://docs.qmk.fm/)