You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
1. Prototype a keyboard layout using [Keyboard Layout Editor](http://www.keyboard-layout-editor.com/)
56
-
1. Convert the prototype to a production-ready design using [Ergogen](https://github.com/ergogen/ergogen)
64
+
1. Export the layout configuration to [`keyboard-layout-editor/keyboard-layout-editor.json`](./v3/keyboard-layout-editor/keyboard-layout-editor.json), so that you can import it and iterate on it in the future
65
+
1. Use the prototype as inspiration for creating a production-ready design using Ergogen
*[Online version of Ergogen that includes ceoloide's footprints](https://ergogen.ceoloide.com/)
70
+
71
+

72
+
73
+
1. Convert the prototype to a production-ready design using [Ergogen](https://github.com/ergogen/ergogen), and then save it to [`ergogen/config.yaml`](./v3/ergogen/config.yaml)
74
+
* If prototyping using this [online Ergogen editor](https://ergogen.ceoloide.com/), then click the gear icon, then add the [sod-123w footprint](./ergogen/footprints/sod-123w.js)
75
+
1. Run `npm run build` to generate and save outlines and pcbs to `../dist/v3/ergogen/` then `npm run copy-pcbs-to-kicad`
76
+
* Alternatively, run `npm run watch` or `npm run watch-and-copy-pcbs-to-kicad`
77
+
78
+
### Steps 4. [KiCad](https://www.kicad.org/)
79
+
80
+

81
+
57
82
1. Design the PCBs using [KiCad](https://www.kicad.org/)
58
-
* Print the PCBs using [JLCPCB](https://jlcpcb.com/), [OSH Park](https://oshpark.com/), or [PCBWay](https://www.pcbway.com/)
59
-
1. Model a case using [OnShape](https://cad.onshape.com)
60
-
1. Print the case using [OrcaSlicer](https://github.com/SoftFever/OrcaSlicer)
61
-
1. Install the [custom QMK firmware](https://github.com/andornaut/qmk_firmware/tree/splinter/keyboards/splinter)
83
+
1. Run `npm run copy-pcbs-to-kicad` to copy the `../dist/v3/ergogen/pcbs/*.kicad_pcb` files generated by Ergogen to [`kicad/`](./v3/kicad/)
84
+
1. Run `xdg-open ./v3/kicad/left.kicad_pcb`
85
+
1. Route the PCBs in [`kicad/`](./v3/kicad/), and then save them to [`kicad/routed/`](./v3/kicad/routed/)
86
+
* Once you're happy with the routing, run `npm run copy-pcbs-to-routed` to copy the PCBs to [`kicad/routed/`](./v3/kicad/routed/)
87
+
* If you've generated new PCB files using Ergogen, then you can run `npm run copy-traces-from-routed` to copy traces from the PCBs in [`kicad/routed/`](./v3/kicad/routed/) back to those of the same name in [`kicad/`](./v3/kicad/). Select File > Revert > Yes to refresh the PCB in Kicad.
88
+
1. Run `npm run copy-pcbs-to-routed && npm run fab-jlcpcb` to generate and save gerber and drill files to `../dist/v3/kicad/jlcpcb/*.zip`
89
+
1. Print the PCBs using [JLCPCB](https://jlcpcb.com/) (or [OSH Park](https://oshpark.com/) or [PCBWay](https://www.pcbway.com/))
90
+
* Submit the `../dist/v3/kicad/jlcpcb/*.zip` files to [JLCPCB](https://jlcpcb.com/)
62
91
63
-
###Fix error when running `npm run build`
92
+
#### Customize net classes
64
93
65
-
The `pcbnew` Python library, which is packaged with Kicad, may fail if it cannot find libTKBO, eg.:
94
+
1. Navigate to File > Board Setup... > Design Rules > Net Classes
95
+
1. Update the "Default" netclass
96
+
1. Click the "+" button to add a "VCC" net class
97
+
1. Configure a pattern to match nets with the text "VCC" to the VCC net class
98
+
99
+
Configuration | Description
100
+
--- | ---
101
+
Default | Clearance: 0.20mm, Track width: 0.20mm
102
+
VCC | Clearance: 0.25mm, Track width: 0.25mm
103
+
104
+
#### Fix error when running `npm run build`
105
+
106
+
The `pcbnew` Python library, which is packaged with Kicad,
107
+
may fail if it cannot find libTKBO, eg.:
66
108
67
109
```bash
68
110
$ python3
@@ -81,3 +123,25 @@ Workaround this issue by installing the missing library:
Copy file name to clipboardExpand all lines: package.json
+8-8Lines changed: 8 additions & 8 deletions
Original file line number
Diff line number
Diff line change
@@ -7,14 +7,14 @@
7
7
"nodemon": "^3.1.10"
8
8
},
9
9
"scripts": {
10
-
"build": "dotenv -- sh -c 'npx ergogen ./${VERSION}/ergogen/ --output dist/${VERSION}/ergogen/ && npm run update-pcbs'",
10
+
"build": "dotenv -- sh -c 'set -vxe;npx ergogen ./${VERSION}/ergogen/ --output dist/${VERSION}/ergogen/ && npm run update-pcbs'",
11
11
"clean": "rm -rf dist",
12
-
"copy-pcbs-to-kicad": "dotenv -- sh -c 'cp dist/${VERSION}/ergogen/pcbs/[!_]*.kicad_pcb ./${VERSION}/kicad/'",
13
-
"copy-to-routed": "dotenv -- sh -c 'set -vxe;cp ./${VERSION}/kicad/[!_]*.kicad_pcb ./${VERSION}/kicad/routed/'",
14
-
"copy-traces": "dotenv -- sh -c 'set -vxe;for f in ./${VERSION}/kicad/routed/[!_]*.kicad_pcb; do echo \"${f}\" && python3 ./${VERSION}/ergogen/kb_ergogen_helper/ergogen_helper.py --no-backup copy-traces \"${f}\" ./${VERSION}/kicad/$(basename \"${f}\"); done'",
15
-
"fab-jlcpcb": "dotenv -- sh -c 'for f in ./${VERSION}/kicad/routed/[!_]*.kicad_pcb; do echo \"${f}\" && kikit fab jlcpcb --nametemplate 'splinter_{boardTitle}_{date}' \"${f}\" dist/${VERSION}/kicad/jlcpcb/; done'",
16
-
"update-pcbs": "dotenv -- sh -c 'for f in dist/${VERSION}/ergogen/pcbs/[!_]*.kicad_pcb; do echo ${f} && python3 ./${VERSION}/ergogen/kb_ergogen_helper/ergogen_helper.py --no-backup update-pcb ${f}; done'",
"watch-and-copy-pcbs-to-kicad": "dotenv -- nodemon --ext .js,.yaml --watch ./${VERSION}/ergogen/config.yaml --exec 'npm run build && npm run copy-pcbs-to-kicad'"
12
+
"copy-pcbs-to-kicad": "dotenv -- sh -c 'set -vxe;cp dist/${VERSION}/ergogen/pcbs/[!_]*.kicad_pcb ./${VERSION}/kicad/'",
13
+
"copy-pcbs-to-routed": "dotenv -- sh -c 'set -vxe;cp ./${VERSION}/kicad/[!_]*.kicad_pcb ./${VERSION}/kicad/routed/'",
14
+
"copy-traces-from-routed": "dotenv -- sh -c 'set -vxe;for f in ./${VERSION}/kicad/routed/[!_]*.kicad_pcb; do echo \"${f}\" && python3 ./${VERSION}/ergogen/kb_ergogen_helper/ergogen_helper.py --no-backup copy-traces \"${f}\" ./${VERSION}/kicad/$(basename \"${f}\"); done'",
15
+
"fab-jlcpcb": "dotenv -- sh -c 'set -vxe;for f in ./${VERSION}/kicad/routed/[!_]*.kicad_pcb; do echo \"${f}\" && kikit fab jlcpcb --nametemplate 'splinter_{boardTitle}_{date}' \"${f}\" dist/${VERSION}/kicad/jlcpcb/; done'",
16
+
"update-pcbs": "dotenv -- sh -c 'set -vxe;for f in dist/${VERSION}/ergogen/pcbs/[!_]*.kicad_pcb; do echo ${f} && python3 ./${VERSION}/ergogen/kb_ergogen_helper/ergogen_helper.py --no-backup update-pcb ${f}; done'",
17
+
"watch": "dotenv -- sh -c 'set -vxe;nodemon --ext .js,.yaml --watch ./${VERSION}/ergogen/config.yaml --exec \"npm run build\"'",
18
+
"watch-and-copy-pcbs-to-kicad": "dotenv -- sh -c 'set -vxe;nodemon --ext .js,.yaml --watch ./${VERSION}/ergogen/config.yaml --exec \"npm run build && npm run copy-pcbs-to-kicad\"'"
Reset buttons | 2 | [E-Switch TL3342F450QG](https://www.lcsc.com/product-detail/Tactile-Switches_E-Switch-TL3342F450QG_C2886897.html) (Not needed if using the SparkFun microcontroller)
1. Prototype a keyboard layout using [Keyboard Layout Editor](http://www.keyboard-layout-editor.com/)
80
-
1. Export the layout configuration to [`./keyboard-layout-editor/keyboard-layout.json`](./keyboard-layout-editor/keyboard-layout.json), so that you can import it and iterate on it in the future
81
-
1. Use the prototype as inspiration for creating a production-ready design using Ergogen
82
-
83
-
### [Ergogen](https://github.com/ergogen/ergogen)
84
-
85
-
*[Project folder](./ergogen)
86
-
*[Configuration file](./ergogen/config.yaml)
87
-
88
-

89
-
90
-
1. Convert the prototype to Ergogen's DSL, and then save it to [`./ergogen/config.yaml`](./ergogen/config.yaml)
91
-
* If prototyping using this [online version of Ergogen](https://ergogen.cache.works/), then download the "raw.txt" file
92
-
1. Run `npm run build` to generate and save outlines and pcbs to `../dist/v1/ergogen/`
93
-
* Alternatively, run `npm run watch` or `npm run watch-and-copy-pcbs-to-kicad`
94
-
95
-
### [KiCad](https://www.kicad.org/)
96
-
97
-
*[Project folder](./kicad)
98
-
99
-

100
-
101
-
1. Run `npm run copy-pcbs-to-kicad` to copy the `../dist/v1/ergogen/pcbs/*.kicad_pcb` files generated by Ergogen to [`./kicad/`](./kicad/)
102
-
1. Run `xdg-open ./v2/kicad/left.kicad_pcb`
103
-
1. Route the PCBs in [`./kicad/`](./kicad/), and then save them to [`./kicad/routed/`](./kicad/routed/)
104
-
* If you've generated new PCB files using Ergogen, then you can run `npm run copy-traces` to copy traces from the PCBs in [`./kicad/routed/`](./kicad/routed/) back to those of the same name in [`./kicad/`](./kicad/)
105
-
1. Run `npm run fab-jlcpcb` to generate and save gerber and drill files to `../dist/v1/kicad/jlcpcb/*.zip`
106
-
1. Submit the `../dist/v1/kicad/jlcpcb/*.zip` files to [JLCPCB](https://jlcpcb.com/)
107
-
108
59
#### PCB dimensions
109
60
110
-
Position each PCB at (105,105). The left half starts at this position, but the right half must be moved before running `npm run copy-traces`. 100mm to provide a buffer around the edges of the document, and 5 mm to account for the case walls.
0 commit comments