# Ergogen config for the eepyPad # Metadata meta: # Required version of Ergogen engine: "4.0.0" # Version of the board version: "1.0" author: binaryDiv # Define units and default values used throughout this file units: # Redefine choc units (keycap size + 1mm clearance) cx: 18.5 cy: 17.5 # Size of key rectangle in demo view (keycap size) $default_width: cx-1 $default_height: cy-1 # Actual spacing of keys $default_spread: cx $default_padding: cy # Define the points (i.e. keys) points: key: tags: [ is_key ] zones: pad: # Set anchor to fix placement on KiCad sheet anchor: shift: [ 100, -150 ] # Key rows (from bottom to top) rows: one: row_net: P5 two: row_net: P6 tags: [ is_key, flip_led ] three: row_net: P7 four: row_net: P8 tags: [ is_key, flip_led ] five: row_net: P9 # Key columns (from left to right) columns: one: key.column_net: P18 rows.one.led_din_net: led_dout_two_one rows.two.led_din_net: led_dout_one_three rows.three.led_din_net: led_dout_two_three rows.four.led_din_net: led_dout_one_five rows.five.led_din_net: led_dout_two_five two: key.column_net: P15 rows.one.led_din_net: led_dout_three_one rows.two.led_din_net: led_dout_one_two rows.three.led_din_net: led_dout_three_three rows.four.led_din_net: led_dout_one_four rows.five.led_din_net: led_dout_three_five three: key.column_net: P14 rows.one.led_din_net: led_dout_four_one rows.two.led_din_net: led_dout_two_two rows.three.led_din_net: led_dout_four_three rows.four.led_din_net: led_dout_two_four rows.five.led_din_net: led_dout_four_five four: key.column_net: P16 rows.one.led_din_net: led_dout_five_one rows.two.led_din_net: led_dout_three_two rows.three.led_din_net: led_dout_five_three rows.four.led_din_net: led_dout_three_four rows.five.led_din_net: P19 five: key.column_net: P10 rows.one.led_din_net: led_dout_five_two rows.two.led_din_net: led_dout_four_two rows.three.led_din_net: led_dout_five_four rows.four.led_din_net: led_dout_four_four # Upper right corner: Rotary encoder instead of key rows.five: width: 20.5 height: 20.5 shift: [ 1.5, 2 ] tags: [ is_rotary_encoder ] # Generate outlines that can be used in the PCB and for 3D models outlines: # Outline of the key caps keys: - what: rectangle where: is_key size: [ cx-1, cy-1 ] # Rotary encoder with knob (2cm) # TODO: Not sure about the size and position yet rotary_encoder: - what: rectangle operation: stack size: [ 14, 14 ] - what: circle operation: stack radius: 10 # Maximum size of PCB (100x100mm to keep it cheap) for visualization _max_outline: - what: rectangle where: pad_three_one size: [ 100, 100 ] adjust.shift: [ 0, 50 - 0.5cx ] # Outline for the PCB board: - what: rectangle where: pad_three_one size: [ 100, 100 ] adjust.shift: [ 0, 50 - 0.5cx ] fillet: 4 # Preview version of board with key caps and components for visualization board_preview: - board - ^keys - ^_max_outline # Pro Micro board - what: rectangle operation: stack where: pad_five_five size: [ 18, 32 ] adjust.shift: [ 0, 5 ] # Rotary encoder (component) - what: outline name: rotary_encoder operation: stack where: is_rotary_encoder # Cutouts for the switches switch_cutouts: - what: rectangle where: true size: 14 # Board outline with switch cutouts switch_plate: - board - -switch_cutouts # Generate the PCB pcbs: eepypad: outlines: main: outline: board footprints: choc_hotswap: what: choc_pretty where: is_key # Rotate footprint so that the hotswap socket is at the bottom and the LED can be at the top adjust.rotate: 180 params: keycaps: true hotswap: true from: "{{colrow}}" to: "{{row_net}}" # TODO: Check if the position of the rotary encoder fits with the controller board rotary_encoder: what: rotary_modified where: is_rotary_encoder adjust.rotate: 90 params: from: "{{colrow}}" to: "{{row_net}}" # TODO: Check whether these pins are correct (should C really be GND?) A: P3 B: P4 C: GND diode: what: diode_smd where: is_key adjust: shift: [ 5, -2.5 ] rotate: 180 params: side: B from: "{{colrow}}" to: "{{column_net}}" diode_rotary_encoder: $extends: pcbs.eepypad.footprints.diode where: is_rotary_encoder adjust: shift: [ 0, 0 ] rotate: 90 led_pixel: what: sk6812_mini_e # Place unrotated LEDs in all rows without the flip_led tag where: [ [ is_key, -flip_led ] ] # Position LEDs on the LED hole in the Choc switches adjust.shift: [ 0, 4.7 ] params: side: B din: "{{led_din_net}}" dout: "led_dout_{{colrow}}" led_pixel_flipped: $extends: pcbs.eepypad.footprints.led_pixel # Place flipped (rotated by 180°) LEDs in all rows *with* the flip_led tag where: [ [ is_key, flip_led ] ] adjust.rotate: 180 led_capacitor: what: cap_0805 where: [ [ is_key, -flip_led ] ] adjust: shift: [ -6, 4.5 ] rotate: 90 params: side: B from: VCC 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, 3 ] params: orientation: down reset_button: # TODO: Check if the footprint fits to the buttons we ordered what: button_6x6 where: ref: pad_four_five shift: [ 0, 15 ] params: side: B from: GND to: RST # TODO: Mounting holes?