From cceb4689ef0a121ef9ea99bc6bc376130e4a97f7 Mon Sep 17 00:00:00 2001 From: binaryDiv Date: Wed, 28 Feb 2024 22:33:06 +0100 Subject: [PATCH] [WIP 2] --- ergogen/config.yaml | 67 ++++++++++++++++++-------- ergogen/footprints/cap_0805.js | 37 +++++++++++++++ ergogen/footprints/choc_pretty.js | 14 ++---- ergogen/footprints/rotary_modified.js | 68 +++++++++++++++++++++++++++ 4 files changed, 157 insertions(+), 29 deletions(-) create mode 100644 ergogen/footprints/cap_0805.js create mode 100644 ergogen/footprints/rotary_modified.js diff --git a/ergogen/config.yaml b/ergogen/config.yaml index a2205a4..13c52a0 100644 --- a/ergogen/config.yaml +++ b/ergogen/config.yaml @@ -36,17 +36,17 @@ points: # Key rows (from bottom to top) rows: one: - row_net: P9 + row_net: P5 two: - row_net: P8 + row_net: P6 tags: [ is_key, flip_led ] three: row_net: P7 four: - row_net: P6 + row_net: P8 tags: [ is_key, flip_led ] five: - row_net: P5 + row_net: P9 # Key columns (from left to right) columns: @@ -101,6 +101,7 @@ outlines: # Rotary encoder with knob (2cm) # TODO: Not sure about the size and position yet + # TODO remove the holding pad thingies because they're too close to the MCU pins rotary_encoder: - what: rectangle operation: stack @@ -121,6 +122,7 @@ outlines: - what: rectangle where: pad_three_one size: [ 100, 100 ] + # TODO move switches a bit to the top (more margin at the bottom to fit the diodes) adjust.shift: [ 0, 50 - 0.5cx ] fillet: 4 @@ -168,39 +170,44 @@ pcbs: params: keycaps: true hotswap: true - from: "{{column_net}}" - to: "{{colrow}}" + from: "{{colrow}}" + to: "{{row_net}}" # TODO: Check if the position of the rotary encoder fits with the controller board + # -> probably remove the mounting pads at the sides? rotary_encoder: - what: rotary + what: rotary_modified where: is_rotary_encoder adjust.rotate: 90 params: - from: "{{column_net}}" - to: "{{colrow}}" - # TODO: Set these to GPIO pins - A: "rotary_encoder_a" - B: "rotary_encoder_b" - C: "rotary_encoder_c" + from: "{{colrow}}" + to: "{{row_net}}" + # TODO: good GPIO pins? - check whether C or B should be GND + A: P3 + B: P4 + C: GND diode: what: diode_smd where: is_key # TODO: Is this a good position? Might be a bit too close to the hotswap sockets... + # -> rotate and move a bit adjust: - shift: [ -8.28, -8.5 ] - rotate: 90 + shift: [ 5, -2.5 ] + rotate: 180 params: side: B from: "{{colrow}}" - to: "{{row_net}}" + to: "{{column_net}}" diode_rotary_encoder: $extends: pcbs.eepypad.footprints.diode where: is_rotary_encoder - adjust.shift: [ 0, 0 ] + adjust: + shift: [ 0, 0 ] + rotate: 90 + # TODO: the neopixels need 5V, VCC might be only 3.3V - check this led_pixel: what: sk6812_mini_e # Place unrotated LEDs in all rows without the flip_led tag @@ -209,6 +216,7 @@ pcbs: adjust.shift: [ 0, 4.7 ] params: side: B + VCC: 5V din: "{{led_din_net}}" dout: "led_dout_{{colrow}}" @@ -218,16 +226,35 @@ pcbs: where: [ [ is_key, flip_led ] ] adjust.rotate: 180 - # TODO: Decoupling capacitors for the LEDs? + led_capacitor: + what: cap_0805 + where: [ [ is_key, -flip_led ] ] + adjust: + shift: [ -6, 4.5 ] + rotate: 90 + params: + side: B + # TODO: the neopixels need 5V, VCC might be only 3.3V - check this + from: 5V + to: GND + + led_capacitor_flipped: + $extends: pcbs.eepypad.footprints.led_capacitor + where: [ [ is_key, flip_led ] ] + adjust: + shift: [ 6, 4.9 ] + rotate: 270 controller: what: promicro_modified where: ref: pad_five_five rotate: -90 - shift: [ 0, 2 ] + shift: [ 0, 3 ] params: orientation: down + # TODO check if this is correct! + RAW: 5V reset_button: # TODO: Check if the footprint fits to the buttons we ordered @@ -240,4 +267,4 @@ pcbs: from: GND to: RST -# TODO: Mounting holes? +# TODO: Mounting holes! diff --git a/ergogen/footprints/cap_0805.js b/ergogen/footprints/cap_0805.js new file mode 100644 index 0000000..7dc467a --- /dev/null +++ b/ergogen/footprints/cap_0805.js @@ -0,0 +1,37 @@ +module.exports = { + params: { + designator: 'C', + side: 'F', + from: undefined, + to: undefined + }, + body: p => ` + (module C_0805_2012Metric (layer ${p.side}.Cu) (tedit 5F68FEEE) + ${p.at /* parametric position */} + + ${'' /* footprint reference */} + (fp_text reference "${p.ref}" (at 0 0) (layer ${p.side}.SilkS) ${p.ref_hide} (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer ${p.side}.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + + ${''/* capacitor symbols */} + (fp_line (start -1 0.625) (end -1 -0.625) (layer ${p.side}.Fab) (width 0.1)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer ${p.side}.Fab) (width 0.1)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer ${p.side}.Fab) (width 0.1)) + (fp_line (start 1 0.625) (end -1 0.625) (layer ${p.side}.Fab) (width 0.1)) + (fp_line (start -0.261252 -0.735) (end 0.261252 -0.735) (layer ${p.side}.SilkS) (width 0.12)) + (fp_line (start -0.261252 0.735) (end 0.261252 0.735) (layer ${p.side}.SilkS) (width 0.12)) + (fp_line (start -1.7 0.98) (end -1.7 -0.98) (layer ${p.side}.CrtYd) (width 0.05)) + (fp_line (start -1.7 -0.98) (end 1.7 -0.98) (layer ${p.side}.CrtYd) (width 0.05)) + (fp_line (start 1.7 -0.98) (end 1.7 0.98) (layer ${p.side}.CrtYd) (width 0.05)) + (fp_line (start 1.7 0.98) (end -1.7 0.98) (layer ${p.side}.CrtYd) (width 0.05)) + + ${''/* SMD pads */} + (pad 1 smd roundrect (at -0.95 0 ${p.r}) (size 1 1.45) (layers ${p.side}.Cu ${p.side}.Mask ${p.side}.Paste) + (roundrect_rratio 0.25) ${p.to} + ) + (pad 2 smd roundrect (at 0.95 0 ${p.r}) (size 1 1.45) (layers ${p.side}.Cu ${p.side}.Mask ${p.side}.Paste) + (roundrect_rratio 0.25) ${p.from} + ) + ) + ` +} diff --git a/ergogen/footprints/choc_pretty.js b/ergogen/footprints/choc_pretty.js index 0b94ba1..b1e69fa 100644 --- a/ergogen/footprints/choc_pretty.js +++ b/ergogen/footprints/choc_pretty.js @@ -33,15 +33,11 @@ module.exports = { (fp_text reference "${p.ref}" (at 0 0) (layer F.SilkS) ${p.ref_hide} (effects (font (size 1.27 1.27) (thickness 0.15)))) (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - ${'' /* corner marks */} - (fp_line (start -7 -6) (end -7 -7) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer F.SilkS) (width 0.15)) + ${'' /* switch marks */} + (fp_line (start -7 -7) (end 7 -7) (layer F.SilkS) (width 0.15)) + (fp_line (start 7 -7) (end 7 7) (layer F.SilkS) (width 0.15)) + (fp_line (start 7 7) (end -7 7) (layer F.SilkS) (width 0.15)) + (fp_line (start -7 7) (end -7 -7) (layer F.SilkS) (width 0.15)) ${'' /* LED hole marks */} (fp_line (start -2.6 3.1) (end 2.6 3.1) (layer Dwgs.User) (width 0.15)) diff --git a/ergogen/footprints/rotary_modified.js b/ergogen/footprints/rotary_modified.js new file mode 100644 index 0000000..7e16156 --- /dev/null +++ b/ergogen/footprints/rotary_modified.js @@ -0,0 +1,68 @@ +// Modified version of rotary.js, without the mounting legs +// -------------------------------------------------------- +// EC12 rotary encoder +// +// Nets +// from: corresponds to switch pin 1 (for button presses) +// to: corresponds to switch pin 2 (for button presses) +// A: corresponds to pin 1 (for rotary) +// B: corresponds to pin 2 (for rotary, should be GND) -- TODO WAIT why does it say here that B should be GND and not C? +// C: corresponds to pin 3 (for rotary) + +module.exports = { + params: { + designator: 'ROT', + from: undefined, + to: undefined, + A: undefined, + B: undefined, + C: undefined + }, + body: p => ` + (module rotary_encoder (layer F.Cu) (tedit 603326DE) + + ${p.at /* parametric position */} + + ${'' /* footprint reference */} + (fp_text reference "${p.ref}" (at 0 0.5) (layer F.SilkS) + ${p.ref_hide} (effects (font (size 1 1) (thickness 0.15)))) + (fp_text value "" (at 0 8.89) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15)))) + + ${''/* component outline */} + (fp_line (start -0.62 -0.04) (end 0.38 -0.04) (layer F.SilkS) (width 0.12)) + (fp_line (start -0.12 -0.54) (end -0.12 0.46) (layer F.SilkS) (width 0.12)) + (fp_line (start 5.98 3.26) (end 5.98 5.86) (layer F.SilkS) (width 0.12)) + (fp_line (start 5.98 -1.34) (end 5.98 1.26) (layer F.SilkS) (width 0.12)) + (fp_line (start 5.98 -5.94) (end 5.98 -3.34) (layer F.SilkS) (width 0.12)) + (fp_line (start -3.12 -0.04) (end 2.88 -0.04) (layer F.Fab) (width 0.12)) + (fp_line (start -0.12 -3.04) (end -0.12 2.96) (layer F.Fab) (width 0.12)) + (fp_line (start -7.32 -4.14) (end -7.62 -3.84) (layer F.SilkS) (width 0.12)) + (fp_line (start -7.92 -4.14) (end -7.32 -4.14) (layer F.SilkS) (width 0.12)) + (fp_line (start -7.62 -3.84) (end -7.92 -4.14) (layer F.SilkS) (width 0.12)) + (fp_line (start -6.22 -5.84) (end -6.22 5.86) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.12 -5.84) (end -6.22 -5.84) (layer F.SilkS) (width 0.12)) + (fp_line (start -2.12 5.86) (end -6.22 5.86) (layer F.SilkS) (width 0.12)) + (fp_line (start 5.98 5.86) (end 1.88 5.86) (layer F.SilkS) (width 0.12)) + (fp_line (start 1.88 -5.94) (end 5.98 -5.94) (layer F.SilkS) (width 0.12)) + (fp_line (start -6.12 -4.74) (end -5.12 -5.84) (layer F.Fab) (width 0.12)) + (fp_line (start -6.12 5.76) (end -6.12 -4.74) (layer F.Fab) (width 0.12)) + (fp_line (start 5.88 5.76) (end -6.12 5.76) (layer F.Fab) (width 0.12)) + (fp_line (start 5.88 -5.84) (end 5.88 5.76) (layer F.Fab) (width 0.12)) + (fp_line (start -5.12 -5.84) (end 5.88 -5.84) (layer F.Fab) (width 0.12)) + (fp_line (start -8.87 -6.89) (end 7.88 -6.89) (layer F.CrtYd) (width 0.05)) + (fp_line (start -8.87 -6.89) (end -8.87 6.81) (layer F.CrtYd) (width 0.05)) + (fp_line (start 7.88 6.81) (end 7.88 -6.89) (layer F.CrtYd) (width 0.05)) + (fp_line (start 7.88 6.81) (end -8.87 6.81) (layer F.CrtYd) (width 0.05)) + (fp_circle (center -0.12 -0.04) (end 2.88 -0.04) (layer F.SilkS) (width 0.12)) + (fp_circle (center -0.12 -0.04) (end 2.88 -0.04) (layer F.Fab) (width 0.12)) + + ${''/* pin names */} + (pad A thru_hole rect (at -7.62 -2.54 ${p.r}) (size 2 2) (drill 1) (layers *.Cu *.Mask) ${p.A}) + (pad C thru_hole circle (at -7.62 -0.04) (size 2 2) (drill 1) (layers *.Cu *.Mask) ${p.C}) + (pad B thru_hole circle (at -7.62 2.46) (size 2 2) (drill 1) (layers *.Cu *.Mask) ${p.B}) + (pad 1 thru_hole circle (at 6.88 -2.54) (size 1.5 1.5) (drill 1) (layers *.Cu *.Mask) ${p.from}) + (pad 2 thru_hole circle (at 6.88 2.46) (size 1.5 1.5) (drill 1) (layers *.Cu *.Mask) ${p.to}) + ) + ` +}