281 lines
6.9 KiB
YAML
281 lines
6.9 KiB
YAML
# 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}}"
|
|
|
|
rotary_encoder:
|
|
what: rotary_modified
|
|
where: is_rotary_encoder
|
|
adjust.rotate: 90
|
|
params:
|
|
from: "{{colrow}}"
|
|
to: "{{row_net}}"
|
|
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:
|
|
what: button_6x6
|
|
where:
|
|
ref: pad_four_five
|
|
shift: [ 0, 15 ]
|
|
params:
|
|
side: B
|
|
from: GND
|
|
to: RST
|
|
|
|
# Mounting holes
|
|
mounting_hole_top_left:
|
|
what: mountinghole_m2
|
|
where:
|
|
ref: pad_one_five
|
|
shift: [ -8, 15 ]
|
|
|
|
mounting_hole_top_right:
|
|
what: mountinghole_m2
|
|
where:
|
|
ref: pad_three_five
|
|
shift: [ 8, 15 ]
|
|
|
|
mounting_hole_bottom_left:
|
|
what: mountinghole_m2
|
|
where:
|
|
ref: pad_one_one
|
|
shift: [ -10.25, 0 ]
|
|
|
|
mounting_hole_bottom_right:
|
|
what: mountinghole_m2
|
|
where:
|
|
ref: pad_five_one
|
|
shift: [ 10, -6 ]
|