96 lines
4.1 KiB
Markdown
96 lines
4.1 KiB
Markdown
# The eepyBoard
|
|
|
|
Custom ergonomic mechanical keyboard with 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/eepyboard.kicad_pcb`.
|
|
Copy the file to `kicad/eepyboard.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. 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.
|
|
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.
|
|
|
|
#### 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 `kicad/gerber/eepyboard_{REVISION}.zip`.
|
|
4. Upload zip file to manufacturer and make sure everything is correct.
|
|
5. Add all generated files to version control.
|
|
|
|
### Compile and flash QMK firmware
|
|
|
|
TODO: Add this when building the firmware ~
|
|
|
|
## Used software
|
|
|
|
- [Keyboard Layout Editor](http://www.keyboard-layout-editor.com)
|
|
- [Ergogen](https://docs.ergogen.xyz/), [unofficial Ergogen web UI](https://ergogen.ceoloide.com/)
|
|
- [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/)
|