eepyPad/ergogen/config.yaml

282 lines
7.0 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}}"
# 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:
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 ]