Merge pull request 'Hardware revision 2 (eepyBoard v1.1)' (#1) from layout-rev2 into main

Reviewed-on: #1
This commit is contained in:
Lexi / Zoe 2024-10-10 17:06:28 +02:00
commit 79bd812bd7
49 changed files with 370853 additions and 504 deletions

2
.gitignore vendored
View File

@ -24,7 +24,7 @@ dist
/ergogen/output
# Kicad temporary files
/kicad/*-backups/
/kicad/*/*-backups/
*.bak
*.kicad_pcb-bak
*.kicad_sch-bak

View File

@ -5,10 +5,19 @@ Custom ergonomic mechanical keyboard with low-profile (Choc) switches.
## Versions
- **eepyBoard v1.0: Hardware revision 1**
- Mostly ortholinear layout with 13 columns
- Bottom row: two regular keys + four thumb keys (per side, symmetrical)
- Partial F-key row (Esc, F1-F8) and rotary encoder
- RP2040 controller board in upper right corner
- Mostly ortholinear layout with 13 columns (73 keys + rotary encoder)
- Bottom row: two regular keys + four thumb keys (per side, symmetrical)
- Partial F-key row (Esc, F1-F8) and rotary encoder
- RP2040 controller board in upper right corner
- **eepyBoard v1.1: Hardware revision 2**
- Column staggered split layout (single board) with a total of 15 columns and 6 rows (88 keys + 2 rotary encoders)
- Each side has 7 columns by 5 rows (not counting function keys and arrow keys)
- Bottom row: three regular keys + four thumb keys on each side, and an additional centered thumb key
- Full F-key row (Esc, F1-F12)
- 4 arrow keys in the center
- 2 pressable rotary encoders (one in the center of the keyboard, one in the upper right)
- Compact RP2040 "Pico Mini" controller board in the center
## Repository structure
@ -30,37 +39,41 @@ they can be exported as Gerber files and send to a PCB manufacturer.
To generate the KiCad PCB file with Ergogen, first install Ergogen using npm: `npm install`.
Then, run `npm run ergogen`. You can find the KiCad file in `ergogen/output/pcbs/eepyboard.kicad_pcb`.
Copy the file to `kicad/eepyboard.kicad_pcb`.
Copy the file to `kicad/revN/eepyboard_revN.kicad_pcb` (replace `revN` with the current revision).
#### Routing and finalizing the KiCad files
Open the file in KiCad (create a project if non exists yet). Finalize the PCB in KiCad.
1. Run the Design Rules Checker. Check the errors. Most of them can be ignored/excluded.
1. Round off the bottom corners of the board outline:
- Remove the bottom center line and the two small fillet arcs next to it.
- Select the two remaining bottom lines. Right click them and use "Shape Modification -> Extend Lines to Meet".
- Right click the two angled lines again. Use "Shape Modification -> Fillet Lines..." with a 200mm radius.
2. Run the Design Rules Checker. Check the errors. Most of them can be ignored/excluded.
- All "Footprint not found in libraries" can be ignored completely. This is due to how Ergogen generates the PCB.
2. Add VCC and GND planes.
3. Add VCC and GND planes.
- Menu: `File -> Board Setup`
- On "Physical Stackup", change the copper layer number to 4.
- On "Board Editor Layers", change the type of `In1.Cu` and `In2.Cu` to "power plane".
- NOTE: `In1.Cu` will be the VCC plane, `In2.Cu` will be a GND plane.
3. Add filled zones to the VCC and GND planes.
4. Add filled zones to the VCC and GND planes.
- Select the `In1.Cu` layer.
- Use the "Add a filled zone" tool and draw a rectangle that contains the entire board. Assign the zone to VCC.
- Repeat the same process for the `In2.Cu` layer and assign the zone to GND.
- The zones don't need to be filled just yet.
4. Add another filled zone on the `B.Cu` layer and assign it to GND.
5. Route all signal traces (no VCC or GND yet). Recommended order:
5. Add another filled zone on the `B.Cu` layer and assign it to GND.
6. Route all signal traces (no VCC or GND yet). Recommended order:
- Matrix rows (on `B.Cu`)
- Matrix columns (with vias on `F.Cu`)
- NeoPixel data pins
- Connect everything to the MCU.
6. Route VCC traces.
7. Route VCC traces.
- Connect the VCC traces between the NeoPixel chips and the capacitors with a 0.750 mm track.
- Place free-standing vias (Ctrl+Shift+V) in the middle of the just created VCC traces.
7. Route GND traces.
8. Route GND traces.
- Draw short GND traces with a 0.750 mm track and a via at the end next to the GND pads of the NeoPixel chips.
8. Fill all zones by pressing B. Make sure that all nets are routed.
9. Run the Design Rules Checker and make sure there are no (relevant) violations.
9. Fill all zones by pressing B. Make sure that all nets are routed.
10. Run the Design Rules Checker and make sure there are no (relevant) violations.
#### Export Gerber files
@ -69,7 +82,7 @@ Now you can generate the gerber, drill and map files.
1. Generate Gerber files.
- Menu: `File -> Fabrication Output -> Gerbers`
- Select plot format `Gerber`.
- Set output directory to `gerber/rev1/` (adjust for current revision).
- Set output directory to `gerber/`.
- Set coordinate format to `4.6, unit mm`.
- Click `Plot` to generate files.
2. Generate drill and map files.
@ -78,7 +91,7 @@ Now you can generate the gerber, drill and map files.
- Set drill units to millimeters.
- Set same output directory as above.
- Click `Generate Drill File`, then `Generate Map File`
3. Create zip file with all generated files from `kicad/gerber/{REVISION}`.
3. Create zip file with all generated files from `kicad/gerber/`.
- No subdirectories, only files.
- Ideally name the file `kicad/gerber/eepyboard_{REVISION}.zip`.
4. Upload zip file to manufacturer and make sure everything is correct.

View File

@ -8,7 +8,7 @@ meta:
# Required version of Ergogen
engine: "4.1.0"
# Version of the board
version: "1.0"
version: "1.1"
author: binaryDiv
# Define units and default values used throughout this file
@ -29,268 +29,409 @@ units:
$default_spread: cx
$default_padding: cy
# Vertical offset between function keys and primary keys
function_zone_offset: 3
# Vertical offset between function key row and main zone
function_offset: 3
# Define the points (i.e. keys)
# Horizontal offset/gap between function key groups (Esc, F1-F4, F5-F8, F9-F12)
function_gap: 6
# Distance between left and right half of the main zone
split_gap_width: 2cx + 3
# Radius of rotary encoder knob (just for visualization)
rotary_encoder_radius: 10
# Define the points (primarily the keys, but also some auxiliary points for
# placement of other components, e.g. rotary encoders and the controller board)
points:
key:
# Tag all points as "is_key" unless overwritten
tags: [ is_key ]
# Use 5V as VCC for all RGB LEDs, except for the first one in the chain
led_vcc_net: VCC
zones:
# Primary keyboard zone
primary:
# Main keyboard zone
main:
# Set anchor to fix placement on KiCad sheet
anchor:
shift: [ 100, -150 ]
shift: [ 75, -175 ]
# Key rows (from bottom to top)
rows:
# Modifier row (Ctrl, ..., but excluding the thumb keys)
# Modifier row (Ctrl etc., but excluding the thumb keys)
mods:
row_net: GP17
led_previous_key: "{{zone.name}}_{{neighbor_col_left}}_{{row}}"
tags: [ is_key, flip_led ]
row_net: ROW1
led_next_key: "{{zone.name}}_{{neighbor_col_left}}_{{row}}"
# Bottom letter row (Shift, ZXCV...)
# Bottom letter row
bottom:
row_net: GP16
led_previous_key: "{{zone.name}}_{{neighbor_col_right}}_{{row}}"
row_net: ROW2
led_next_key: "{{zone.name}}_{{neighbor_col_right}}_{{row}}"
tags: [ is_key, flip_led ]
# Middle/home letter row (Caps Lock, ASDFG...)
# Home letter row
home:
row_net: GP15
led_previous_key: "{{zone.name}}_{{neighbor_col_left}}_{{row}}"
tags: [ is_key, flip_led ]
row_net: ROW3
led_next_key: "{{zone.name}}_{{neighbor_col_left}}_{{row}}"
# Top letter row (Tab, QWERT...)
# Top letter row
top:
row_net: GP14
led_previous_key: "{{zone.name}}_{{neighbor_col_right}}_{{row}}"
# Number row (`, 12345...)
numbers:
row_net: GP13
led_previous_key: "{{zone.name}}_{{neighbor_col_left}}_{{row}}"
row_net: ROW4
led_next_key: "{{zone.name}}_{{neighbor_col_right}}_{{row}}"
tags: [ is_key, flip_led ]
# Number row
numbers:
row_net: ROW5
led_next_key: "{{zone.name}}_{{neighbor_col_left}}_{{row}}"
# Key columns (from left to right)
columns:
# Left-most column (`, Tab, Caps Lock, Shift, Ctrl)
# Left-most column (extra keys)
left:
key.column_net: COL1
key.neighbor_col_right: zero
rows.numbers.led_next_key: main_left_top
rows.home.led_next_key: main_left_bottom
# Use placeholder to mark end of the RGB LED chain (unused net name)
rows.mods.led_next_key: END_OF_CHAIN
# Modifier column (`, Tab, Shift, etc.)
zero:
key.column_net: GP8
key.stagger: 1/8cy
key.column_net: COL2
key.neighbor_col_left: left
key.neighbor_col_right: one
rows.numbers.led_previous_key: function_esc_default
rows.home.led_previous_key: primary_zero_top
rows.mods.led_previous_key: primary_zero_bottom
# First letter column (1, Q)
one:
key.column_net: GP7
key.stagger: 1/8cy
key.column_net: COL3
key.neighbor_col_left: zero
key.neighbor_col_right: two
# Second letter column (2, W)
two:
key.column_net: GP6
key.stagger: 1/8cy
key.column_net: COL4
key.neighbor_col_left: one
key.neighbor_col_right: three
rows.mods.skip: true
# Third letter column (3, E)
three:
key.column_net: GP5
key.column_net: COL5
key.neighbor_col_left: two
key.neighbor_col_right: four
rows.mods.skip: true
# Fourth letter column (4, R)
four:
key.column_net: GP4
key.stagger: -(1/4cy)
key.column_net: COL6
key.neighbor_col_left: three
key.neighbor_col_right: five
rows.mods.skip: true
# Fifth letter column (5, T)
five:
key.column_net: GP3
key.stagger: -(1/4cy)
key.column_net: COL7
key.neighbor_col_left: four
key.neighbor_col_right: six
rows.top.led_next_key: arrow_keys_up
rows.bottom.led_next_key: arrow_keys_down
rows.mods.skip: true
# (Gap with arrow keys in the middle: Matrix column 8)
# Sixth letter column (6, Y)
six:
key.column_net: GP2
key.spread: cx + split_gap_width
key.column_net: COL9
key.neighbor_col_left: five
key.neighbor_col_right: seven
rows.home.led_next_key: arrow_keys_right
rows.mods.skip: true
# Seventh letter column (7, U)
seven:
key.column_net: GP1
key.stagger: 1/4cy
key.column_net: COL10
key.neighbor_col_left: six
key.neighbor_col_right: eight
rows.mods.skip: true
# Eighth letter column (8, I)
eight:
key.column_net: GP0
key.stagger: 1/4cy
key.column_net: COL11
key.neighbor_col_left: seven
key.neighbor_col_right: nine
rows.mods.skip: true
# Nineth letter column (9, O)
nine:
key.column_net: GP25
key.column_net: COL12
key.neighbor_col_left: eight
key.neighbor_col_right: ten
rows.mods.skip: true
# Tenth letter column (0, P)
ten:
key.column_net: GP24
key.stagger: -(1/8cy)
key.column_net: COL13
key.neighbor_col_left: nine
key.neighbor_col_right: eleven
rows.mods.skip: true
rows.mods.led_next_key: mirror_thumb_one
# Eleventh letter column (-, [)
eleven:
key.column_net: GP23
key.stagger: -(1/8cy)
key.column_net: COL14
key.neighbor_col_left: ten
key.neighbor_col_right: twelve
rows.mods.led_previous_key: thumb_mirror_one_default
# Twelfth letter column (=, ])
twelve:
key.column_net: GP22
key.stagger: -(1/8cy)
key.column_net: COL15
key.neighbor_col_left: eleven
rows.top.led_previous_key: primary_twelve_numbers
rows.bottom.led_previous_key: primary_twelve_home
rows.top.led_next_key: main_twelve_home
rows.bottom.led_next_key: main_twelve_mods
# Thumb fan
thumb:
# Position thumb keys based on the (non-existant) third key in the modifier row
# Position thumb keys based on the third key in the modifier row
anchor:
ref: primary_two_mods
shift: [ 2, 0 ]
ref: main_one_mods
shift: [ cx + 1, 0 ]
# Rotate the thumb keys around the bottom-left corner of the key
# Zone-wide key settings
key:
row_net: GP17
tags: [ is_key, flip_led ]
row_net: ROW1
# Rotate the thumb keys around the bottom-left corner of the key
origin: [ -0.5cx, -0.5cy ]
splay: -4
splay: -6
# Define thumb keys
columns:
one:
key.column_net: GP6
key.mirror.column_net: GP24
key.led_previous_key: primary_one_mods
key.mirror.led_previous_key: thumb_mirror_two_default
key.column_net: COL4
key.mirror.column_net: COL12
key.led_next_key: main_one_mods
key.mirror.led_next_key: mirror_thumb_two
two:
key.column_net: GP5
key.mirror.column_net: GP25
key.led_previous_key: thumb_one_default
key.mirror.led_previous_key: thumb_mirror_three_default
key.column_net: COL5
key.mirror.column_net: COL11
key.led_next_key: thumb_one
key.mirror.led_next_key: mirror_thumb_three
three:
key.column_net: GP4
key.mirror.column_net: GP0
key.led_previous_key: thumb_two_default
key.mirror.led_previous_key: thumb_mirror_four_default
key.column_net: COL6
key.mirror.column_net: COL10
key.led_next_key: thumb_two
key.mirror.led_next_key: mirror_thumb_four
four:
key.column_net: GP3
key.mirror.column_net: GP1
key.led_previous_key: thumb_three_default
key.mirror.led_previous_key: thumb_four_default
key.column_net: COL7
key.mirror.column_net: COL9
key.led_next_key: thumb_three
key.mirror.led_next_key: thumb_center
# Mirror the thumb fan
mirror:
ref: primary_five_numbers
shift: [ 0.5cx, 0.5cx ]
distance: 1cx
ref: main_five_bottom
shift: [ 0.5cx, 0.5cy ]
distance: split_gap_width
# Function key row above the primary zone (Esc + 8 more keys)
# (Note that the keys are only named "f[1-8]" for convenience and are not a full set of F1-F12 keys. They can be
# used as F-keys when needed, but will more likely be used for macros and other special functions.)
function:
# Position function key row above primary zone with 3mm of vertical offset
# Single key centered between thumb keys
thumb_center:
anchor:
ref: primary_zero_numbers
shift: [ 0, cy + function_zone_offset ]
# Center between the two inner thumb keys
aggregate.parts:
- thumb_four
- mirror_thumb_four
shift: [ 0, -0.25cy ]
# Key settings (instead of rows/columns)
key:
row_net: GP12
width: 1.5kcx
row_net: ROW1
column_net: COL8
led_next_key: thumb_four
tags: [ is_key, 1_5u ]
# Arrow keys in the middle of the keyboard
# In the matrix, these keys act as 4 keys in a single column (column 8, row 2 to 5)
arrow_keys:
anchor:
# Center between the V and B keys, then shift down half a key
aggregate.parts:
- main_five_bottom
- main_six_bottom
shift: [ 0, -cy/2 ]
# Assign all keys to the same column
key:
column_net: COL8
rows:
# Bottom row: Only the down key
bottom:
row_net: ROW2
tags: [ is_key, flip_led ]
# Center row: Left and right keys (shifted to the left to center them)
center:
adjust.shift: [ -cx/2, 0 ]
# Use ROW3 for the left key and ROW5 for the right key (overridden in columns)
row_net: ROW3
# Top row: Only the up key
top:
row_net: ROW4
tags: [ is_key, flip_led ]
columns:
# Left column: Up, left, down keys
left:
rows.top:
name: arrow_keys_up
led_next_key: main_six_top
rows.center:
name: arrow_keys_left
led_next_key: main_five_home
rows.bottom:
name: arrow_keys_down
led_next_key: main_six_bottom
# Right column: Only right key (assigned to matrix row 5)
right:
rows.top.skip: true
rows.center:
name: arrow_keys_right
row_net: ROW5
led_next_key: arrow_keys_left
rows.bottom.skip: true
# Function key row above the main zone (Esc, F1-F12)
function:
# Position function key row above main zone with 3mm of vertical offset
anchor:
# To center the F keys on the top of the keyboard:
# - Get center point between keys 3 and 8 (they have the highest staggering)
# - Shift upwards by one key + an offset to have a small gap
# - Shift to the left by 7 keys (Esc, F1-F6) + the gaps between the F key groups.
aggregate.parts:
- main_three_numbers
- main_eight_numbers
shift: [ -6.5cx - 2 * function_gap, cy + function_offset ]
# Single row zone: Assign row net
key:
row_net: ROW6
tags: [ is_key, flip_led ]
# Define function keys
columns:
# Escape key
esc:
key.column_net: GP8
key.led_previous_key: function_f1_default
key.shift: [ 0, -cy/8 ]
key.column_net: COL1
key.led_next_key: function_f1
# Esc is the first key in the RGB LED chain.
# The first LED needs to run on a lower voltage (see explanation below).
key.led_vcc_net: VCC_first_led
# Block of 4 keys with 6mm offset
# Block of 4 keys with gap
f1:
key.spread: cx + 6
key.column_net: GP7
key.led_previous_key: function_f2_default
key.spread: cx + function_gap
key.column_net: COL2
key.led_next_key: function_f2
f2:
key.column_net: GP6
key.led_previous_key: function_f3_default
key.column_net: COL3
key.led_next_key: function_f3
f3:
key.column_net: GP5
key.led_previous_key: function_f4_default
key.column_net: COL4
key.led_next_key: function_f4
f4:
key.column_net: GP4
key.led_previous_key: function_f5_default
key.column_net: COL5
key.led_next_key: function_f5
# Block of 4 keys with 6mm offset
# Block of 4 keys with gap
f5:
key.spread: cx + 6
key.column_net: GP3
key.led_previous_key: function_f6_default
key.spread: cx + function_gap
key.column_net: COL6
key.led_next_key: function_f6
f6:
key.column_net: GP2
key.led_previous_key: function_f7_default
key.column_net: COL7
key.led_next_key: function_f7
# Skip matrix column 8 (arrow keys)
f7:
key.column_net: GP1
key.led_previous_key: function_f8_default
key.column_net: COL9
key.led_next_key: function_f8
f8:
key.column_net: GP0
key.led_previous_key: status_led
key.column_net: COL10
key.led_next_key: function_f9
# Additional points for special components in the upper right corner: Status LED, reset button, rotary encoder
special:
# Align points with the function key zone
# Block of 4 keys with gap
f9:
key.spread: cx + function_gap
key.column_net: COL11
key.led_next_key: function_f10
f10:
key.column_net: COL12
key.led_next_key: function_f11
f11:
key.column_net: COL13
key.led_next_key: function_f12
f12:
key.column_net: COL14
key.led_next_key: main_twelve_numbers
# RP2040 Pico Mini controller board
controller:
anchor:
ref: primary_ten_numbers
shift: [ 0, cy + function_zone_offset ]
# Place in the center of the keyboard, above the arrow keys
aggregate.parts:
- main_five_numbers
- main_six_numbers
shift: [ 0, 1.5 ]
# These are not actually keys
# This is an auxiliary point to place the controller, not an actual key
key:
tags: [ no_key ]
tags: [ is_controller ]
width: 18
height: 36
# Define points
columns:
# Neopixel status LED (first in the chain, see comment in PCB footprints for details)
status_led:
key:
width: 3.4
height: 3.0
# Rotary encoder in the center of the keyboard (on top of the controller board)
rotary_center:
anchor:
ref: controller
rotate: -90
key:
tags: [ is_rotary_encoder ]
width: 2 * rotary_encoder_radius
height: 2 * rotary_encoder_radius
# Matrix position of the switch: between F7 and F8
row_net: ROW6
column_net: COL8
# Reset button
reset_button:
key:
shift: [ -0.25cx - 1, 0 ]
width: 6.5
height: 6.5
# Rotary encoder in the upper right corner
rotary:
key:
row_net: GP12
column_net: GP22
shift: [ -0.25cx, 0 ]
width: 20.5
height: 20.5
tags: [ is_rotary_encoder ]
# Rotary encoder in the top right corner of the keyboard
rotary_top_right:
anchor:
ref: function_f12
shift: [ cx + 2 + function_gap, -cy/8 ]
key:
tags: [ is_rotary_encoder ]
width: 2 * rotary_encoder_radius
height: 2 * rotary_encoder_radius
# Matrix position of the switch: Function row, right of F12
row_net: ROW6
column_net: COL15
# Generate outlines that can be used in the PCB and for 3D models
outlines:
# Outline of the key caps
keys:
# 1u keys
- what: rectangle
where: is_key
operation: stack
where: [ [ is_key, -1_5u ] ]
size: [ kcx, kcy ]
# 1.5u keys
- what: rectangle
operation: stack
where: [ [ is_key, 1_5u ] ]
size: [ 1.5kcx, kcy ]
# Rotary encoder with knob (2cm)
rotary_encoder:
@ -299,46 +440,77 @@ outlines:
size: [ 14, 14 ]
- what: circle
operation: stack
radius: 10
radius: rotary_encoder_radius
# Outline for the PCB
board:
board_outline:
- what: polygon
points:
- ref: primary_zero_numbers
shift: [ -0.5cx + 1, 1.5cy + function_zone_offset + 2 ]
- ref: primary_twelve_numbers
shift: [ 0.5cx - 1, 1.5cy + function_zone_offset + 2]
- ref: primary_twelve_mods
shift: [ 0.5cx - 1, -0.5cy + 2 ]
- ref: mirror_thumb_four
shift: [ 0.5cx, -0.5cy + 2 ]
- ref: thumb_four
shift: [ 0.5cx, -0.5cy + 2 ]
- ref: primary_zero_mods
shift: [ -0.5cx + 1, -0.5cy + 2 ]
expand: 4
# Top left corner
- ref: &corner_top_left_anchor
- ref: main_left_numbers
affect: x
- ref: function_f1
affect: y
- shift: [ -0.5kcx, 0.5kcy ]
# Extend all corners 4mm to the sides to get a 4mm border
shift: [ -4, 4 ]
# Top right corner
- ref: &corner_top_right_anchor
- ref: main_twelve_numbers
affect: x
- ref: function_f12
affect: y
- shift: [ 0.5kcx, 0.5kcy ]
shift: [ 4, 4 ]
# Bottom right corner
- ref:
- ref: main_twelve_mods
shift: [ 0.5kcx, -0.5kcy ]
shift: [ 4, -4 ]
# Bottom center-right corner (below thumb keys)
- ref:
- ref: mirror_thumb_four
shift: [ 0.5kcx, -0.5kcy ]
# Discard the rotation, so the next shift moves the corner straight down
affect: xy
shift: [ 0, -4 ]
# Bottom center-left corner (below thumb keys)
- ref:
- ref: thumb_four
shift: [ 0.5kcx, -0.5kcy ]
# Discard the rotation, so the next shift moves the corner straight down
affect: xy
shift: [ 0, -4 ]
# Bottom left corner
- ref:
- ref: main_left_mods
shift: [ -0.5kcx, -0.5kcy ]
shift: [ -4, -4 ]
# Round off the corners with an 8mm radius fillet.
# NOTE: To get a smoother arc on the bottom of the board, do some post-processing in KiCad:
# 1. Remove the bottom center line and the two small fillet arcs next to it.
# 2. Select the two remaining bottom lines. Right click them and use "Shape Modification -> Extend Lines to Meet".
# 3. Right click the two angled lines again. Use "Shape Modification -> Fillet Lines..." with a 200mm radius.
fillet: 8
# Preview version of board with key caps and components for visualization
board_preview:
- board
- board_outline
- ^keys
# RP2040 controller board
# RP2040 Pico Mini controller board
- what: rectangle
operation: stack
where: primary_eleven_numbers
size: [ 54, 20 ]
adjust.shift: [ 0, cy + function_zone_offset ]
# Status LED
- what: rectangle
operation: stack
where: special_status_led
size: [ 3.4, 3.0 ]
# Reset button
- what: rectangle
operation: stack
where: special_reset_button
size: [ 6.5, 6.5 ]
where: is_controller
size: [ 18, 36 ]
# Rotary encoder
- what: outline
name: rotary_encoder
@ -348,12 +520,12 @@ outlines:
# Cutouts for the switches
switch_cutouts:
- what: rectangle
where: true
where: is_key
size: 14
# Board outline with switch cutouts
switch_plate:
- board
- board_outline
- -switch_cutouts
# Generate the PCB
@ -362,20 +534,48 @@ pcbs:
# Define outline (edges) of the board based on the outlines defined above
outlines:
main:
outline: board
outline: board_outline
# Define PCB components
footprints:
controller:
what: rp2040_purple
where:
ref: primary_eleven_numbers
shift: [ 0, cy + function_zone_offset ]
rotate: 90
what: rp2040_pico_mini
where: is_controller
params:
# Mount the controller board on the backside of the PCB
orientation: down
# Use VBUS (5V from USB) as VCC net
VBUS: VCC
# Use 5V from USB as VCC net
5V: VCC
# RGB LEDs: The chain starts with the Esc key
GP29: led_din_function_esc
# Matrix columns
GP27: COL1
GP26: COL2
GP25: COL3
GP23: COL4
GP22: COL5
GP21: COL6
GP20: COL7
GP17: COL8 # Center column (arrow keys)
GP12: COL9
GP11: COL10
GP10: COL11
GP9: COL12
GP8: COL13
GP7: COL14
GP6: COL15
# Matrix rows
GP13: ROW1
GP14: ROW2
GP19: ROW3
GP18: ROW4
GP15: ROW5
GP28: ROW6
# Rotary encoders
GP0: rotary_top_right_a
GP1: rotary_top_right_b
GP3: rotary_center_a
GP2: rotary_center_b
choc_hotswap:
what: choc_pretty
@ -385,33 +585,33 @@ pcbs:
params:
keycaps: true
hotswap: true
from: "{{colrow}}"
from: "diode_{{name}}"
to: "{{column_net}}"
diode:
key_diode:
what: diode_smd
where: is_key
adjust:
shift: [ 7, -7.5 ]
shift: [ 7, -7 ]
rotate: 90
resist: true
params:
side: B
from: "{{colrow}}"
from: "diode_{{name}}"
to: "{{row_net}}"
rotary_encoder:
what: rotary_modified
what: rotary_encoder_ec12
where: is_rotary_encoder
params:
from: "{{colrow}}"
from: "diode_{{name}}"
to: "{{column_net}}"
A: GP10
B: GP11
A: "{{name}}_a"
B: "{{name}}_b"
C: GND
diode_rotary_encoder:
$extends: pcbs.eepyboard.footprints.diode
rotary_encoder_diode:
$extends: pcbs.eepyboard.footprints.key_diode
where: is_rotary_encoder
adjust:
shift: [ 0, 0 ]
@ -426,24 +626,25 @@ pcbs:
shift: [ 0, 4.7 ]
params:
side: B
din: "led_dout_{{led_previous_key}}"
dout: "led_dout_{{zone.name}}_{{colrow}}"
din: "led_din_{{name}}"
dout: "led_din_{{led_next_key}}"
VCC: "{{led_vcc_net}}"
led_capacitor:
what: cap_0805
what: capacitor_smd_1206
where: [ [ is_key, -flip_led ] ]
adjust:
shift: [ -6, 4.5 ]
shift: [ -6.5, 4.75 ]
rotate: 90
resist: true
params:
side: B
from: VCC
from: "{{led_vcc_net}}"
to: GND
led_chip_flipped:
$extends: pcbs.eepyboard.footprints.led_chip
# Place flipped (rotated by 180°) LEDs in all rows *with* the flip_led tag
# Place flipped (rotated by 180°) LEDs in all rows with the flip_led tag
where: [ [ is_key, flip_led ] ]
adjust.rotate: 180
@ -451,97 +652,86 @@ pcbs:
$extends: pcbs.eepyboard.footprints.led_capacitor
where: [ [ is_key, flip_led ] ]
adjust:
shift: [ 6, 4.9 ]
shift: [ 6.5, 4.75 ]
rotate: 270
resist: true
# Additional first LED (not bound to a key) that serves as a status LED.
# Additionally, it runs on a reduced voltage to serve as a level converter for the next LED: The RP2040 runs on
# 3.3V, but the SK6812 runs on 5V and requires at least 3.5V (5V * 0.7) for the control signal. By reducing the
# power voltage with a diode, the threshold is reduced as well, so that the signal of the RP2040 is strong enough.
status_led_chip:
what: sk6812_mini_e
where: special_status_led
params:
side: B
VCC: VCC_status_led
din: GP9
dout: led_dout_status_led
status_led_capacitor:
what: cap_0805
where: special_status_led
adjust:
shift: [ -6, -0.2 ]
rotate: 90
params:
side: B
from: VCC_status_led
to: GND
# Diode to reduce the voltage of the first LED chip by ~0.7V
status_led_diode:
# The first SK6812 chip in the chain has to run on a reduced voltage to serve as a makeshift level converter for
# all following RGB LEDs.
# This is needed because the RP2040 runs on 3.3V, but the SK6812 runs on 5V and requires at least 3.5V (5V * 0.7)
# for the control signal. By reducing the power voltage with a diode, the threshold is reduced as well, so that
# the signal of the RP2040 is strong enough.
first_led_voltage_diode:
what: diode_smd
where: special_status_led
where: function_esc
adjust:
shift: [ 0, 3.5 ]
rotate: 0
shift: [ 10, 1.5]
rotate: -90
params:
side: B
from: VCC
to: VCC_status_led
to: VCC_first_led
reset_button:
what: button_6x6
where: special_reset_button
params:
from: GND
to: RUN
# Mounting holes
# Mounting holes: Top left and right corners
mounting_hole_top_left:
what: mountinghole_m2
where:
ref: function_esc
shift: [ -9, 11.5 ]
mounting_hole_top_center:
what: mountinghole_m2
where:
ref: function_f4
shift: [ 12.5, 0 ]
ref: *corner_top_left_anchor
shift: [ 2, -2 ]
mounting_hole_top_right:
what: mountinghole_m2
where:
ref: primary_twelve_numbers
shift: [ 9, cy + function_zone_offset + 11.5 ]
ref: *corner_top_right_anchor
shift: [ -2, -2 ]
# Mounting holes: Top center, left and right of the controller
mounting_hole_controller_left:
what: mountinghole_m2
where:
ref: main_five_numbers
shift: [ 0, 12 ]
mounting_hole_controller_right:
what: mountinghole_m2
where:
ref: main_six_numbers
shift: [ 0, 12 ]
# Mounting holes: Bottom center, under columns five/six (but above the thumb keys)
mounting_hole_bottom_center_left:
what: mountinghole_m2
where:
ref: main_five_bottom
shift: [ 0, -13 ]
mounting_hole_bottom_center_right:
what: mountinghole_m2
where:
ref: main_six_bottom
shift: [ 0, -13 ]
# Mounting holes: Bottom left and right corners, under the second key columns
mounting_hole_bottom_left:
what: mountinghole_m2
where:
ref: primary_one_mods
shift: [ 10.5, -12 ]
mounting_hole_bottom_center:
what: mountinghole_m2
where:
ref: primary_six_bottom
shift: [ 0, -23 ]
ref: main_zero_mods
shift: [ 0, -13.5 ]
mounting_hole_bottom_right:
what: mountinghole_m2
where:
ref: primary_eleven_mods
shift: [ -10.5, -12 ]
ref: main_eleven_mods
shift: [ 0, -13.5 ]
# Render text with project name and copyright onto the PCB
copyright_text:
what: text
where:
ref: primary_six_bottom
shift: [ 0, -15 ]
ref: thumb_one
shift: [ 0, -16.5 ]
rotate: -0.3 # total rotation: -6.3 (including key rotation)
params:
text: |-
eepyBoard v1.0 by binaryDiv
eepyBoard v1.1 by binaryDiv
(c) 2024 (MIT License)

View File

@ -1,48 +0,0 @@
// Tactile button 6x6mm
// Source: https://kicad.github.io/footprints/Button_Switch_SMD
module.exports = {
params: {
designator: 'B',
side: 'F',
from: undefined,
to: undefined
},
body: p => `
(module SW_Push_1P1T_NO_6x6mm_H9.5mm (layer F.Cu) (tedit 5CA1CA7F)
(descr "tactile push button, 6x6mm e.g. PTS645xx series, height=9.5mm")
(tags "tact sw push 6mm smd")
(attr smd)
${p.at /* parametric position */}
${'' /* footprint reference */}
(fp_text reference "${p.ref}" (at 0 -4.05) (layer F.SilkS) ${p.ref_hide} (effects (font (size 1 1) (thickness 0.15))))
(fp_text value "" (at 0 4.15) (layer F.SilkS) hide (effects (font (size 1 1) (thickness 0.15))))
${'' /* outline */}
(fp_line (start -3 -3 ) (end -3 3 ) (layer ${p.side}.Fab) (width 0.1))
(fp_line (start -3 3 ) (end 3 3 ) (layer ${p.side}.Fab) (width 0.1))
(fp_line (start 3 3 ) (end 3 -3 ) (layer ${p.side}.Fab) (width 0.1))
(fp_line (start 3 -3 ) (end -3 -3 ) (layer ${p.side}.Fab) (width 0.1))
(fp_line (start 5 3.25) (end 5 -3.25) (layer ${p.side}.CrtYd) (width 0.05))
(fp_line (start -5 -3.25) (end -5 3.25) (layer ${p.side}.CrtYd) (width 0.05))
(fp_line (start -5 3.25) (end 5 3.25) (layer ${p.side}.CrtYd) (width 0.05))
(fp_line (start -5 -3.25) (end 5 -3.25) (layer ${p.side}.CrtYd) (width 0.05))
(fp_line (start 3.23 -3.23) (end 3.23 -3.2 ) (layer ${p.side}.SilkS) (width 0.12))
(fp_line (start 3.23 3.23) (end 3.23 3.2 ) (layer ${p.side}.SilkS) (width 0.12))
(fp_line (start -3.23 3.23) (end -3.23 3.2 ) (layer ${p.side}.SilkS) (width 0.12))
(fp_line (start -3.23 -3.2 ) (end -3.23 -3.23) (layer ${p.side}.SilkS) (width 0.12))
(fp_line (start 3.23 -1.3 ) (end 3.23 1.3 ) (layer ${p.side}.SilkS) (width 0.12))
(fp_line (start -3.23 -3.23) (end 3.23 -3.23) (layer ${p.side}.SilkS) (width 0.12))
(fp_line (start -3.23 -1.3 ) (end -3.23 1.3 ) (layer ${p.side}.SilkS) (width 0.12))
(fp_line (start -3.23 3.23) (end 3.23 3.23) (layer ${p.side}.SilkS) (width 0.12))
(fp_circle (center 0 0) (end 1.75 -0.05) (layer ${p.side}.Fab) (width 0.1))
${'' /* pins */}
(pad 1 smd rect (at -3.975 -2.25 ${p.r}) (size 1.55 1.3) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.from})
(pad 1 smd rect (at 3.975 -2.25 ${p.r}) (size 1.55 1.3) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.from})
(pad 2 smd rect (at -3.975 2.25 ${p.r}) (size 1.55 1.3) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.to})
(pad 2 smd rect (at 3.975 2.25 ${p.r}) (size 1.55 1.3) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.to})
)
`
}

View File

@ -1,38 +0,0 @@
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 */}
(attr smd)
${'' /* 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}
)
)
`
}

View File

@ -0,0 +1,45 @@
module.exports = {
params: {
designator: 'C',
side: 'F',
value: '100nF',
from: undefined,
to: undefined,
},
body: p => `
(module C_1206_3216Metric_Pad1.33x1.80mm_HandSolder (layer ${p.side}.Cu) (tedit 67059662)
${p.at /* parametric position */}
(attr smd)
${'' /* 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 "${p.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.6 0.8) (end -1.6 -0.8) (layer ${p.side}.Fab) (width 0.1))
(fp_line (start -1.6 -0.8) (end 1.6 -0.8) (layer ${p.side}.Fab) (width 0.1))
(fp_line (start 1.6 -0.8) (end 1.6 0.8) (layer ${p.side}.Fab) (width 0.1))
(fp_line (start 1.6 0.8) (end -1.6 0.8) (layer ${p.side}.Fab) (width 0.1))
(fp_line (start -0.711252 -0.91) (end 0.711252 -0.91) (layer ${p.side}.SilkS) (width 0.12))
(fp_line (start -0.711252 0.91) (end 0.711252 0.91) (layer ${p.side}.SilkS) (width 0.12))
(fp_line (start -2.48 1.15) (end -2.48 -1.15) (layer ${p.side}.CrtYd) (width 0.05))
(fp_line (start -2.48 -1.15) (end 2.48 -1.15) (layer ${p.side}.CrtYd) (width 0.05))
(fp_line (start 2.48 -1.15) (end 2.48 1.15) (layer ${p.side}.CrtYd) (width 0.05))
(fp_line (start 2.48 1.15) (end -2.48 1.15) (layer ${p.side}.CrtYd) (width 0.05))
${''/* SMD pads */}
(pad 1 smd roundrect (at -1.5625 0 ${p.r}) (size 1.325 1.8)
(layers ${p.side}.Cu ${p.side}.Mask ${p.side}.Paste)
(roundrect_rratio 0.188679) ${p.to}
)
(pad 2 smd roundrect (at 1.5625 0 ${p.r}) (size 1.325 1.8)
(layers ${p.side}.Cu ${p.side}.Mask ${p.side}.Paste)
(roundrect_rratio 0.188679) ${p.from}
)
)
`
}

View File

@ -2,17 +2,18 @@ module.exports = {
params: {
designator: 'D',
side: 'F',
value: '1N4148',
from: undefined,
to: undefined
to: undefined,
},
body: p => `
(module SmdDiode (layer ${p.side}.Cu) (tedit 65D012FE)
(module SmdDiode_SOD-123 (layer ${p.side}.Cu) (tedit 6705952B)
${p.at /* parametric position */}
(attr smd)
${'' /* 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))))
(fp_text value "${p.value}" (at 0 0) (layer ${p.side}.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))))
${''/* diode symbols */}
(fp_line (start 0.25 0) (end 0.75 0) (layer ${p.side}.SilkS) (width 0.1))

View File

@ -23,8 +23,7 @@ module.exports = {
radius: 10,
},
body: p => `
(module rotary_encoder (layer F.Cu) (tedit 603326DE)
(module RotaryEncoder_EC12 (layer F.Cu) (tedit 6705957B)
${p.at /* parametric position */}
${'' /* footprint reference */}

View File

@ -0,0 +1,182 @@
// Pin header footprint for a small RP2040-based controller board from AliExpress called "Pico Mini RP2040".
// It has a similar footprint to the Pro Micro (NOT pin-compatible though!), but has an additional row of pins
// on the short edge of the board (basically forming a "U").
// -------------------------------
// Params
// orientation: if up (default), the controller will be on the front side of the PCB, otherwise on the back side
module.exports = {
params: {
designator: 'MCU',
orientation: 'up',
// Left side of pins (with USB port at the top), top to bottom
GP0: {type: 'net', value: 'GP0'},
GP1: {type: 'net', value: 'GP1'},
GP2: {type: 'net', value: 'GP2'},
GP3: {type: 'net', value: 'GP3'},
GP4: {type: 'net', value: 'GP4'},
GP5: {type: 'net', value: 'GP5'},
GP6: {type: 'net', value: 'GP6'},
GP7: {type: 'net', value: 'GP7'},
GP8: {type: 'net', value: 'GP8'},
GP9: {type: 'net', value: 'GP9'},
GP10: {type: 'net', value: 'GP10'},
GP11: {type: 'net', value: 'GP11'},
GP12: {type: 'net', value: 'GP12'},
GP13: {type: 'net', value: 'GP13'},
// Bottom side of pins, left to right (i.e. between GP13 and GP19)
GP14: {type: 'net', value: 'GP14'},
GP15: {type: 'net', value: 'GP15'},
GP16: {type: 'net', value: 'GP16'},
GP17: {type: 'net', value: 'GP17'},
GP18: {type: 'net', value: 'GP18'},
// Right side of pins (with USB port at the top), top to bottom
'5V': {type: 'net', value: '5V'}, // 5V USB voltage
GND: {type: 'net', value: 'GND'},
RST: {type: 'net', value: 'RST'}, // Reset pin: Pull down to reset
'3V3': {type: 'net', value: '3V3'}, // 3.3V voltage used by the MCU
GP29: {type: 'net', value: 'GP29'}, // also: ADC4
GP28: {type: 'net', value: 'GP28'}, // also: ADC2
GP27: {type: 'net', value: 'GP27'}, // also: ADC1
GP26: {type: 'net', value: 'GP26'}, // also: ADC0
GP25: {type: 'net', value: 'GP25'},
GP23: {type: 'net', value: 'GP23'},
GP22: {type: 'net', value: 'GP22'},
GP21: {type: 'net', value: 'GP21'},
GP20: {type: 'net', value: 'GP20'},
GP19: {type: 'net', value: 'GP19'},
},
body: p => {
let sign, side, mirror;
if (p.orientation === 'down') {
sign = -1;
side = 'B';
mirror = 'mirror';
} else {
sign = 1;
side = 'F';
mirror = '';
}
const pins_left = [
'GP0', 'GP1', 'GP2', 'GP3', 'GP4', 'GP5', 'GP6', 'GP7', 'GP8', 'GP9', 'GP10', 'GP11', 'GP12', 'GP13',
];
const pins_bottom = [
'GP14', 'GP15', 'GP16', 'GP17', 'GP18',
];
const pins_right = [
'5V', 'GND', 'RST', '3V3', 'GP29', 'GP28', 'GP27', 'GP26', 'GP25', 'GP23', 'GP22', 'GP21', 'GP20', 'GP19',
];
// Functions to map coordinates from a "pin grid" to actual X/Y coordinates.
// The grid is defined as follows (assuming the board is in "up" orientation with the USB port on top):
// - The X coordinates go from 0 (left) to 6 (right)
// - The Y coordinates go from 0 (top) to 13 (bottom)
// This means the pin rows are on these coordinates:
// - Left side of pins: 0/0 to 0/13
// - Right side of pins: 6/0 to 6/13
// - Additional pins on the bottom (not counting the left and right pins): 1/13 to 5/13
// These grid coordinates have to be mapped to footprint coordinates so that the board is centered, meaning
// the grid position 3/6.5 needs to be mapped to footprint coordinates 0/0. The grid is a standard 2.54mm grid.
function pin_pos_x(pin_number) {
// Use integers to avoid floating point issues
return sign * (254 * (pin_number - 3)) / 100;
}
function pin_pos_y(pin_number) {
// Use integers to avoid floating point issues
return (254 * (pin_number - 7) + 127) / 100;
}
function pin_label(pin_name, pos_x, pos_y, pin_side) {
let offset_x = 0;
let offset_y = 0;
let offset_rotation = 0;
let justify = 'left';
if (pin_side === 'left') {
offset_x = -1.3 * sign;
justify = 'right';
} else if (pin_side === 'right') {
offset_x = 1.3 * sign;
} else if (pin_side === 'bottom') {
offset_y = 1.7;
offset_rotation = -90 * sign;
}
// Shorten the name of the "GPxx" pins to save a bit of space on the PCB
if (pin_name.startsWith('GP')) {
pin_name = pin_name.slice(2);
}
return `
(fp_text user ${pin_name}
(at ${pin_pos_x(pos_x) + offset_x} ${pin_pos_y(pos_y) + offset_y} ${p.r + offset_rotation})
(unlocked yes) (layer ${side}.SilkS)
(effects (font (size 0.8 0.8) (thickness 0.15)) (justify ${justify} ${mirror}))
)`;
}
function pin_pad(pad_number, pos_x, pos_y, pin_name) {
return `
(pad ${pad_number} thru_hole circle
(at ${pin_pos_x(pos_x)} ${pin_pos_y(pos_y)} 0)
(size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.Mask)
${p[pin_name]}
)`;
}
function render_pins() {
let pin_label_body = '';
let pin_pad_body = '';
let pad_number = 1;
for (let i = 0; i < pins_left.length; i++) {
pin_label_body += pin_label(pins_left[i], 0, i, 'left');
pin_pad_body += pin_pad(pad_number++, 0, i, pins_left[i]);
}
for (let i = 0; i < pins_bottom.length; i++) {
pin_label_body += pin_label(pins_bottom[i], 1 + i, 13, 'bottom');
pin_pad_body += pin_pad(pad_number++, 1 + i, 13, pins_bottom[i]);
}
for (let i = 0; i < pins_right.length; i++) {
pin_label_body += pin_label(pins_right[i], 6, i, 'right');
pin_pad_body += pin_pad(pad_number++, 6, i, pins_right[i]);
}
return pin_pad_body + '\n' + pin_label_body;
}
return `
(module RP2040_PICO_MINI (layer F.Cu) (tedit 66FD3C6D)
${p.at /* parametric position */}
${'' /* footprint reference */}
(fp_text reference "${p.ref}" (at 0 0) (layer ${side}.SilkS) ${p.ref_hide}
(effects (font (size 1.27 1.27) (thickness 0.15)))
)
(fp_text value "" (at 0 0) (layer ${side}.SilkS) hide
(effects (font (size 1.27 1.27) (thickness 0.15)))
)
${'' /* component outline */}
(fp_line (start -8.8 -18.0) (end 8.8 -18.0) (layer ${side}.SilkS) (width 0.15))
(fp_line (start 8.8 -18.0) (end 8.8 18.0) (layer ${side}.SilkS) (width 0.15))
(fp_line (start 8.8 18.0) (end -8.8 18.0) (layer ${side}.SilkS) (width 0.15))
(fp_line (start -8.8 18.0) (end -8.8 -18.0) (layer ${side}.SilkS) (width 0.15))
${'' /* illustration of the USB port overhang */}
(fp_line (start -4.3 -18.8) (end 4.3 -18.8) (layer Dwgs.User) (width 0.15))
(fp_line (start 4.3 -18.8) (end 4.3 -11.8) (layer Dwgs.User) (width 0.15))
(fp_line (start 4.3 -11.8) (end -4.3 -11.8) (layer Dwgs.User) (width 0.15))
(fp_line (start -4.3 -11.8) (end -4.3 -18.8) (layer Dwgs.User) (width 0.15))
${'' /* pin labels and pads */}
${render_pins()}
)
`;
}
}

View File

@ -1,140 +0,0 @@
// Pin header footprint for a RP2040-based controller board from AliExpress.
// Doesn't really have a name, it's just "the purple one with USB-C".
// The pinout differs from the Raspberry Pi Pico!
// -------------------------------
// Params
// orientation: if up (default), the controller will be on the front side of the PCB, otherwise on the back side
module.exports = {
params: {
designator: 'MCU',
orientation: 'up',
// Right side of pins (with USB port at the top), top to bottom
VBUS: {type: 'net', value: 'VBUS'},
VIN: {type: 'net', value: 'VIN'},
GND: {type: 'net', value: 'GND'},
'3V3_EN': {type: 'net', value: '3V3_EN'},
'3V3': {type: 'net', value: '3V3'},
// (GND pin)
RUN: {type: 'net', value: 'RUN'}, // Reset pin: Pull down to reset
GP29: {type: 'net', value: 'GP29'}, // also: ADC3
GP28: {type: 'net', value: 'GP28'}, // also: ADC2
GP27: {type: 'net', value: 'GP27'}, // also: ADC1
GP26: {type: 'net', value: 'GP26'}, // also: ADC0
AGND: {type: 'net', value: 'AGND'},
GP25: {type: 'net', value: 'GP25'},
GP24: {type: 'net', value: 'GP24'},
GP23: {type: 'net', value: 'GP23'},
GP22: {type: 'net', value: 'GP22'},
GP21: {type: 'net', value: 'GP21'},
GP20: {type: 'net', value: 'GP20'},
GP19: {type: 'net', value: 'GP19'},
GP18: {type: 'net', value: 'GP18'},
// Left side of pins (with USB port at the top), top to bottom
GP0: {type: 'net', value: 'GP0'},
GP1: {type: 'net', value: 'GP1'},
GP2: {type: 'net', value: 'GP2'},
GP3: {type: 'net', value: 'GP3'},
GP4: {type: 'net', value: 'GP4'},
// (GND pin)
GP5: {type: 'net', value: 'GP5'},
GP6: {type: 'net', value: 'GP6'},
GP7: {type: 'net', value: 'GP7'},
GP8: {type: 'net', value: 'GP8'},
GP9: {type: 'net', value: 'GP9'},
GP10: {type: 'net', value: 'GP10'},
GP11: {type: 'net', value: 'GP11'},
GP12: {type: 'net', value: 'GP12'},
// (GND pin)
GP13: {type: 'net', value: 'GP13'},
GP14: {type: 'net', value: 'GP14'},
GP15: {type: 'net', value: 'GP15'},
GP16: {type: 'net', value: 'GP16'},
GP17: {type: 'net', value: 'GP17'},
},
body: p => {
let def_neg, def_pos, side, mirror;
if (p.orientation === 'down') {
def_neg = '';
def_pos = '-';
side = 'B';
mirror = 'mirror';
} else {
def_neg = '-';
def_pos = '';
side = 'F';
mirror = '';
}
const PINS_PER_SIDE = 20;
const PINS_PER_SIDE_HALF = 10;
const pins_left = [
'GP0', 'GP1', 'GP2', 'GP3', 'GP4', 'GND', 'GP5', 'GP6', 'GP7', 'GP8',
'GP9', 'GP10', 'GP11', 'GP12', 'GND', 'GP13', 'GP14', 'GP15', 'GP16', 'GP17',
];
const pins_right = [
'VBUS', 'VIN', 'GND', '3V3_EN', '3V3', 'GND', 'RUN', 'GP29', 'GP28', 'GP27',
'GP26', 'AGND', 'GP25', 'GP24', 'GP23', 'GP22', 'GP21', 'GP20', 'GP19', 'GP18',
];
function pin_pos_y(pin_number) {
// Fucking floating points...
return (254 * (pin_number - PINS_PER_SIDE_HALF) + 127) / 100;
}
function pin_labels(pin_names, right_side) {
const sign = right_side ? def_pos : def_neg;
const justify = right_side ? 'right' : 'left';
let pin_label_body = '';
for (let i = 0; i < PINS_PER_SIDE; i++) {
pin_label_body += `
(fp_text user ${pin_names[i]} (at ${sign}7.62 ${pin_pos_y(i)} ${p.r}) (unlocked yes) (layer ${side}.SilkS)
(effects (font (size 0.8 0.8) (thickness 0.15)) (justify ${justify} ${mirror}))
)`;
}
return pin_label_body;
}
function pin_pads(pin_names, right_side) {
const sign = right_side ? def_pos : def_neg;
const offset = right_side ? 21 : 1;
let pin_pad_body = '';
for (let i = 0; i < PINS_PER_SIDE; i++) {
pin_pad_body += `
(pad ${i + offset} thru_hole circle (at ${sign}8.89 ${pin_pos_y(i)} 0)
(size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.Mask) ${p[pin_names[i]]}
)`;
}
return pin_pad_body;
}
return `
(module RP2040_USB_C_Purple (layer F.Cu) (tedit 66A6C4CD)
${p.at /* parametric position */}
${'' /* footprint reference */}
(fp_text reference "${p.ref}" (at 0 0) (layer ${side}.SilkS) ${p.ref_hide} (effects (font (size 1.27 1.27) (thickness 0.15))))
(fp_text value "" (at 0 0) (layer ${side}.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))))
${'' /* component outline */}
(fp_line (start -10.16 -28.6) (end 10.16 -28.6) (layer ${side}.SilkS) (width 0.15))
(fp_line (start 10.16 -28.6) (end 10.16 25.4) (layer ${side}.SilkS) (width 0.15))
(fp_line (start 10.16 25.4) (end -10.16 25.4) (layer ${side}.SilkS) (width 0.15))
(fp_line (start -10.16 25.4) (end -10.16 -28.6) (layer ${side}.SilkS) (width 0.15))
${'' /* pin labels */}
${pin_labels(pins_left, false)}
${pin_labels(pins_right, true)}
${'' /* pin pads */}
${pin_pads(pins_left, false)}
${pin_pads(pins_right, true)}
)
`;
}
}

View File

@ -31,19 +31,19 @@ module.exports = {
(fp_line (start -1.7 1.5) (end -1.7 -1.5) (layer Edge.Cuts) (width 0.12))
(fp_line (start -1.7 -1.5) (end 1.7 -1.5) (layer Edge.Cuts) (width 0.12))
(pad "1" smd rect (at -2.6 -0.75 ${p.r}) (size 1.6 0.82)
(pad "1" smd rect (at -2.7 -0.75 ${p.r}) (size 1.8 0.82)
(layers "${p.side}.Cu" "${p.side}.Paste" "${p.side}.Mask")
${p.VCC}
)
(pad "2" smd rect (at -2.6 0.75 ${p.r}) (size 1.6 0.82)
(pad "2" smd rect (at -2.7 0.75 ${p.r}) (size 1.8 0.82)
(layers "${p.side}.Cu" "${p.side}.Paste" "${p.side}.Mask")
${p.dout}
)
(pad "4" smd rect (at 2.6 -0.75 ${p.r}) (size 1.6 0.82)
(pad "4" smd rect (at 2.7 -0.75 ${p.r}) (size 1.8 0.82)
(layers "${p.side}.Cu" "${p.side}.Paste" "${p.side}.Mask")
${p.din}
)
(pad "3" smd roundrect (at 2.6 0.75 ${p.r}) (size 1.6 0.82)
(pad "3" smd roundrect (at 2.7 0.75 ${p.r}) (size 1.8 0.82)
(layers "${p.side}.Cu" "${p.side}.Paste" "${p.side}.Mask")
(roundrect_rratio 0.25)
${p.GND}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,850 @@
%TF.GenerationSoftware,KiCad,Pcbnew,8.0.5*%
%TF.CreationDate,2024-10-10T16:29:35+02:00*%
%TF.ProjectId,eepyboard_rev2,65657079-626f-4617-9264-5f726576322e,1.1*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Profile,NP*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 8.0.5) date 2024-10-10 16:29:35*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%TA.AperFunction,Profile*%
%ADD10C,0.150000*%
%TD*%
%TA.AperFunction,Profile*%
%ADD11C,0.120000*%
%TD*%
G04 APERTURE END LIST*
D10*
X240933189Y-202502884D02*
G75*
G02*
X196962436Y-202502887I-21985389J198788284D01*
G01*
X368577229Y-188385820D02*
X240933189Y-202502884D01*
X62197810Y-71348300D02*
G75*
G02*
X70197816Y-63348310I7999990J0D01*
G01*
X367697815Y-63348302D02*
G75*
G02*
X375697798Y-71348301I-15J-7999998D01*
G01*
X70197816Y-63348302D02*
X367697815Y-63348302D01*
X375697814Y-71348301D02*
X375697809Y-180434298D01*
X69318403Y-188385817D02*
G75*
G02*
X62197802Y-180434302I879397J7951517D01*
G01*
X69318403Y-188385817D02*
X196962436Y-202502889D01*
X375697809Y-180434298D02*
G75*
G02*
X368577230Y-188385825I-8000009J-2D01*
G01*
X62197809Y-180434302D02*
X62197810Y-71348300D01*
D11*
%TO.C,LED3*%
X73247814Y-100148301D02*
X73247815Y-97148302D01*
X73247815Y-97148302D02*
X76647816Y-97148303D01*
X76647815Y-100148302D02*
X73247814Y-100148301D01*
X76647816Y-97148303D02*
X76647815Y-100148302D01*
%TO.C,LED67*%
X304247813Y-111398301D02*
X304247814Y-108398302D01*
X304247814Y-108398302D02*
X307647815Y-108398303D01*
X307647814Y-111398302D02*
X304247813Y-111398301D01*
X307647815Y-108398303D02*
X307647814Y-111398302D01*
%TO.C,LED73*%
X361247813Y-118148303D02*
X361247814Y-115148304D01*
X361247814Y-115148304D02*
X364647815Y-115148305D01*
X364647814Y-118148304D02*
X361247813Y-118148303D01*
X364647815Y-115148305D02*
X364647814Y-118148304D01*
%TO.C,LED21*%
X266247813Y-97898302D02*
X266247814Y-94898303D01*
X266247814Y-94898303D02*
X269647815Y-94898304D01*
X269647814Y-97898303D02*
X266247813Y-97898302D01*
X269647815Y-94898304D02*
X269647814Y-97898303D01*
%TO.C,LED72*%
X361247809Y-154148298D02*
X361247810Y-151148299D01*
X361247810Y-151148299D02*
X364647811Y-151148300D01*
X364647810Y-154148299D02*
X361247809Y-154148298D01*
X364647811Y-151148300D02*
X364647810Y-154148299D01*
%TO.C,LED59*%
X187247813Y-120398298D02*
X187247814Y-117398299D01*
X187247814Y-117398299D02*
X190647815Y-117398300D01*
X190647814Y-120398299D02*
X187247813Y-120398298D01*
X190647815Y-117398300D02*
X190647814Y-120398299D01*
%TO.C,LED84*%
X245747813Y-72398299D02*
X245747814Y-69398300D01*
X245747814Y-69398300D02*
X249147815Y-69398301D01*
X249147814Y-72398300D02*
X245747813Y-72398299D01*
X249147815Y-69398301D02*
X249147814Y-72398300D01*
%TO.C,LED54*%
X149247813Y-147398303D02*
X149247814Y-144398304D01*
X149247814Y-144398304D02*
X152647815Y-144398305D01*
X152647814Y-147398304D02*
X149247813Y-147398303D01*
X152647815Y-144398305D02*
X152647814Y-147398304D01*
%TO.C,LED48*%
X92247810Y-151898300D02*
X92247811Y-148898301D01*
X92247811Y-148898301D02*
X95647812Y-148898302D01*
X95647811Y-151898301D02*
X92247810Y-151898300D01*
X95647812Y-148898302D02*
X95647811Y-151898301D01*
%TO.C,LED76*%
X81747809Y-74648302D02*
X81747810Y-71648303D01*
X81747810Y-71648303D02*
X85147811Y-71648304D01*
X85147810Y-74648303D02*
X81747809Y-74648302D01*
X85147811Y-71648304D02*
X85147810Y-74648303D01*
%TO.C,LED32*%
X361247810Y-172148297D02*
X361247811Y-169148298D01*
X361247811Y-169148298D02*
X364647812Y-169148299D01*
X364647811Y-172148298D02*
X361247810Y-172148297D01*
X364647812Y-169148299D02*
X364647811Y-172148298D01*
%TO.C,LED55*%
X149247812Y-111398299D02*
X149247813Y-108398300D01*
X149247813Y-108398300D02*
X152647814Y-108398301D01*
X152647813Y-111398300D02*
X149247812Y-111398299D01*
X152647814Y-108398301D02*
X152647813Y-111398300D01*
%TO.C,LED14*%
X168247810Y-133898300D02*
X168247811Y-130898301D01*
X168247811Y-130898301D02*
X171647812Y-130898302D01*
X171647811Y-133898301D02*
X168247810Y-133898300D01*
X171647812Y-130898302D02*
X171647811Y-133898301D01*
%TO.C,LED16*%
X187247810Y-138398302D02*
X187247811Y-135398303D01*
X187247811Y-135398303D02*
X190647812Y-135398304D01*
X190647811Y-138398303D02*
X187247810Y-138398302D01*
X190647812Y-135398304D02*
X190647811Y-138398303D01*
%TO.C,LED66*%
X304247808Y-147398299D02*
X304247809Y-144398300D01*
X304247809Y-144398300D02*
X307647810Y-144398301D01*
X307647809Y-147398300D02*
X304247808Y-147398299D01*
X307647810Y-144398301D02*
X307647809Y-147398300D01*
%TO.C,LED56*%
X168247812Y-151898299D02*
X168247813Y-148898300D01*
X168247813Y-148898300D02*
X171647814Y-148898301D01*
X171647813Y-151898300D02*
X168247812Y-151898299D01*
X171647814Y-148898301D02*
X171647813Y-151898300D01*
%TO.C,LED1*%
X73247812Y-172148301D02*
X73247813Y-169148302D01*
X73247813Y-169148302D02*
X76647814Y-169148303D01*
X76647813Y-172148302D02*
X73247812Y-172148301D01*
X76647814Y-169148303D02*
X76647813Y-172148302D01*
%TO.C,LED77*%
X106747809Y-72398302D02*
X106747810Y-69398303D01*
X106747810Y-69398303D02*
X110147811Y-69398304D01*
X110147810Y-72398303D02*
X106747809Y-72398302D01*
X110147811Y-69398304D02*
X110147810Y-72398303D01*
%TO.C,LED17*%
X187247811Y-102398299D02*
X187247812Y-99398300D01*
X187247812Y-99398300D02*
X190647813Y-99398301D01*
X190647812Y-102398300D02*
X187247811Y-102398299D01*
X190647813Y-99398301D02*
X190647812Y-102398300D01*
%TO.C,LED6*%
X92247809Y-97898301D02*
X92247810Y-94898302D01*
X92247810Y-94898302D02*
X95647811Y-94898303D01*
X95647810Y-97898302D02*
X92247809Y-97898301D01*
X95647811Y-94898303D02*
X95647810Y-97898302D01*
%TO.C,LED60*%
X247247807Y-156398301D02*
X247247808Y-153398302D01*
X247247808Y-153398302D02*
X250647809Y-153398303D01*
X250647808Y-156398302D02*
X247247807Y-156398301D01*
X250647809Y-153398303D02*
X250647808Y-156398302D01*
%TO.C,LED18*%
X247247811Y-138398302D02*
X247247812Y-135398303D01*
X247247812Y-135398303D02*
X250647813Y-135398304D01*
X250647812Y-138398303D02*
X247247811Y-138398302D01*
X250647813Y-135398304D02*
X250647812Y-138398303D01*
%TO.C,LED86*%
X289747812Y-72398304D02*
X289747813Y-69398305D01*
X289747813Y-69398305D02*
X293147814Y-69398306D01*
X293147813Y-72398305D02*
X289747812Y-72398304D01*
X293147814Y-69398306D02*
X293147813Y-72398305D01*
%TO.C,LED10*%
X130247808Y-129398302D02*
X130247809Y-126398303D01*
X130247809Y-126398303D02*
X133647810Y-126398304D01*
X133647809Y-129398303D02*
X130247808Y-129398302D01*
X133647810Y-126398304D02*
X133647809Y-129398303D01*
%TO.C,LED26*%
X323247812Y-167648303D02*
X323247813Y-164648304D01*
X323247813Y-164648304D02*
X326647814Y-164648305D01*
X326647813Y-167648304D02*
X323247812Y-167648303D01*
X326647814Y-164648305D02*
X326647813Y-167648304D01*
%TO.C,LED36*%
X152509803Y-171522652D02*
X153133537Y-168588209D01*
X153133537Y-168588209D02*
X156459237Y-169295108D01*
X155835503Y-172229551D02*
X152509803Y-171522652D01*
X156459237Y-169295108D02*
X155835503Y-172229551D01*
%TO.C,LED78*%
X125747811Y-72398303D02*
X125747812Y-69398304D01*
X125747812Y-69398304D02*
X129147813Y-69398305D01*
X129147812Y-72398304D02*
X125747811Y-72398303D01*
X129147813Y-69398305D02*
X129147812Y-72398304D01*
%TO.C,LED64*%
X285247813Y-147398302D02*
X285247814Y-144398303D01*
X285247814Y-144398303D02*
X288647815Y-144398304D01*
X288647814Y-147398303D02*
X285247813Y-147398302D01*
X288647815Y-144398304D02*
X288647814Y-147398303D01*
%TO.C,LED20*%
X266247811Y-133898297D02*
X266247812Y-130898298D01*
X266247812Y-130898298D02*
X269647813Y-130898299D01*
X269647812Y-133898298D02*
X266247811Y-133898297D01*
X269647813Y-130898299D02*
X269647812Y-133898298D01*
%TO.C,LED27*%
X323247814Y-131648299D02*
X323247815Y-128648300D01*
X323247815Y-128648300D02*
X326647816Y-128648301D01*
X326647815Y-131648300D02*
X323247814Y-131648299D01*
X326647816Y-128648301D02*
X326647815Y-131648300D01*
%TO.C,LED31*%
X342247810Y-97898300D02*
X342247811Y-94898301D01*
X342247811Y-94898301D02*
X345647812Y-94898302D01*
X345647811Y-97898301D02*
X342247810Y-97898300D01*
X345647812Y-94898302D02*
X345647811Y-97898301D01*
%TO.C,LED34*%
X361247809Y-100148298D02*
X361247810Y-97148299D01*
X361247810Y-97148299D02*
X364647811Y-97148300D01*
X364647810Y-100148299D02*
X361247809Y-100148298D01*
X364647811Y-97148300D02*
X364647810Y-100148299D01*
%TO.C,LED61*%
X247247812Y-120398301D02*
X247247813Y-117398302D01*
X247247813Y-117398302D02*
X250647814Y-117398303D01*
X250647813Y-120398302D02*
X247247812Y-120398301D01*
X250647814Y-117398303D02*
X250647813Y-120398302D01*
%TO.C,LED83*%
X226747811Y-72398302D02*
X226747812Y-69398303D01*
X226747812Y-69398303D02*
X230147813Y-69398304D01*
X230147812Y-72398303D02*
X226747811Y-72398302D01*
X230147813Y-69398304D02*
X230147812Y-72398303D01*
%TO.C,LED11*%
X130247808Y-93398299D02*
X130247809Y-90398300D01*
X130247809Y-90398300D02*
X133647810Y-90398301D01*
X133647809Y-93398300D02*
X130247808Y-93398299D01*
X133647810Y-90398301D02*
X133647809Y-93398300D01*
%TO.C,LED79*%
X144747808Y-72398300D02*
X144747809Y-69398301D01*
X144747809Y-69398301D02*
X148147810Y-69398302D01*
X148147809Y-72398301D02*
X144747808Y-72398300D01*
X148147810Y-69398302D02*
X148147809Y-72398301D01*
%TO.C,LED75*%
X217247811Y-129398301D02*
X217247812Y-126398302D01*
X217247812Y-126398302D02*
X220647813Y-126398303D01*
X220647812Y-129398302D02*
X217247811Y-129398301D01*
X220647813Y-126398303D02*
X220647812Y-129398302D01*
%TO.C,LED9*%
X111247813Y-95648301D02*
X111247814Y-92648302D01*
X111247814Y-92648302D02*
X114647815Y-92648303D01*
X114647814Y-95648302D02*
X111247813Y-95648301D01*
X114647815Y-92648303D02*
X114647814Y-95648302D01*
%TO.C,LED85*%
X270747812Y-72398302D02*
X270747813Y-69398303D01*
X270747813Y-69398303D02*
X274147814Y-69398304D01*
X274147813Y-72398303D02*
X270747812Y-72398302D01*
X274147814Y-69398304D02*
X274147813Y-72398303D01*
%TO.C,LED35*%
X132480332Y-168530451D02*
X132793918Y-165546887D01*
X132793918Y-165546887D02*
X136175294Y-165902285D01*
X135861708Y-168885849D02*
X132480332Y-168530451D01*
X136175294Y-165902285D02*
X135861708Y-168885849D01*
%TO.C,LED80*%
X163747813Y-72398298D02*
X163747814Y-69398299D01*
X163747814Y-69398299D02*
X167147815Y-69398300D01*
X167147814Y-72398299D02*
X163747813Y-72398298D01*
X167147815Y-69398300D02*
X167147814Y-72398299D01*
%TO.C,LED19*%
X247247811Y-102398301D02*
X247247812Y-99398302D01*
X247247812Y-99398302D02*
X250647813Y-99398303D01*
X250647812Y-102398302D02*
X247247811Y-102398301D01*
X250647813Y-99398303D02*
X250647812Y-102398302D01*
%TO.C,LED63*%
X266247812Y-115898299D02*
X266247813Y-112898300D01*
X266247813Y-112898300D02*
X269647814Y-112898301D01*
X269647813Y-115898300D02*
X266247812Y-115898299D01*
X269647814Y-112898301D02*
X269647813Y-115898300D01*
%TO.C,LED15*%
X168247809Y-97898298D02*
X168247810Y-94898299D01*
X168247810Y-94898299D02*
X171647811Y-94898300D01*
X171647810Y-97898299D02*
X168247809Y-97898298D01*
X171647811Y-94898300D02*
X171647810Y-97898299D01*
%TO.C,LED42*%
X242482912Y-182325547D02*
X245588966Y-180942643D01*
X243703122Y-185066183D02*
X242482912Y-182325547D01*
X245588966Y-180942643D02*
X246809176Y-183683279D01*
X246809176Y-183683279D02*
X243703122Y-185066183D01*
%TO.C,LED33*%
X361247807Y-136148301D02*
X361247808Y-133148302D01*
X361247808Y-133148302D02*
X364647809Y-133148303D01*
X364647808Y-136148302D02*
X361247807Y-136148301D01*
X364647809Y-133148303D02*
X364647808Y-136148302D01*
%TO.C,LED69*%
X323247813Y-113648298D02*
X323247814Y-110648299D01*
X323247814Y-110648299D02*
X326647815Y-110648300D01*
X326647814Y-113648299D02*
X323247813Y-113648298D01*
X326647815Y-110648300D02*
X326647814Y-113648299D01*
%TO.C,LED62*%
X266247811Y-151898298D02*
X266247812Y-148898299D01*
X266247812Y-148898299D02*
X269647813Y-148898300D01*
X269647812Y-151898299D02*
X266247811Y-151898298D01*
X269647813Y-148898300D02*
X269647812Y-151898299D01*
%TO.C,LED51*%
X111247809Y-113648300D02*
X111247810Y-110648301D01*
X111247810Y-110648301D02*
X114647811Y-110648302D01*
X114647810Y-113648301D02*
X111247809Y-113648300D01*
X114647811Y-110648302D02*
X114647810Y-113648301D01*
%TO.C,LED53*%
X130247814Y-111398301D02*
X130247815Y-108398302D01*
X130247815Y-108398302D02*
X133647816Y-108398303D01*
X133647815Y-111398302D02*
X130247814Y-111398301D01*
X133647816Y-108398303D02*
X133647815Y-111398302D01*
%TO.C,LED28*%
X323247813Y-95648299D02*
X323247814Y-92648300D01*
X323247814Y-92648300D02*
X326647815Y-92648301D01*
X326647814Y-95648300D02*
X323247813Y-95648299D01*
X326647815Y-92648301D02*
X326647814Y-95648300D01*
%TO.C,LED4*%
X92247812Y-169898298D02*
X92247813Y-166898299D01*
X92247813Y-166898299D02*
X95647814Y-166898300D01*
X95647813Y-169898299D02*
X92247812Y-169898298D01*
X95647814Y-166898300D02*
X95647813Y-169898299D01*
%TO.C,LED41*%
X261618200Y-174789597D02*
X264851793Y-173738939D01*
X262545251Y-177642767D02*
X261618200Y-174789597D01*
X264851793Y-173738939D02*
X265778844Y-176592109D01*
X265778844Y-176592109D02*
X262545251Y-177642767D01*
%TO.C,LED70*%
X342247814Y-151898298D02*
X342247815Y-148898299D01*
X342247815Y-148898299D02*
X345647816Y-148898300D01*
X345647815Y-151898299D02*
X342247814Y-151898298D01*
X345647816Y-148898300D02*
X345647815Y-151898299D01*
%TO.C,LED24*%
X304247812Y-129398297D02*
X304247813Y-126398298D01*
X304247813Y-126398298D02*
X307647814Y-126398299D01*
X307647813Y-129398298D02*
X304247812Y-129398297D01*
X307647814Y-126398299D02*
X307647813Y-129398298D01*
%TO.C,LED22*%
X285247812Y-129398303D02*
X285247813Y-126398304D01*
X285247813Y-126398304D02*
X288647814Y-126398305D01*
X288647813Y-129398304D02*
X285247812Y-129398303D01*
X288647814Y-126398305D02*
X288647813Y-129398304D01*
%TO.C,LED8*%
X111247811Y-131648303D02*
X111247812Y-128648304D01*
X111247812Y-128648304D02*
X114647813Y-128648305D01*
X114647812Y-131648304D02*
X111247811Y-131648303D01*
X114647813Y-128648305D02*
X114647812Y-131648304D01*
%TO.C,LED40*%
X281436388Y-169295110D02*
X284762088Y-168588211D01*
X282060122Y-172229553D02*
X281436388Y-169295110D01*
X284762088Y-168588211D02*
X285385822Y-171522654D01*
X285385822Y-171522654D02*
X282060122Y-172229553D01*
%TO.C,LED23*%
X285247812Y-93398301D02*
X285247813Y-90398302D01*
X285247813Y-90398302D02*
X288647814Y-90398303D01*
X288647813Y-93398302D02*
X285247812Y-93398301D01*
X288647814Y-90398303D02*
X288647813Y-93398302D01*
%TO.C,LED46*%
X73247809Y-154148300D02*
X73247810Y-151148301D01*
X73247810Y-151148301D02*
X76647811Y-151148302D01*
X76647810Y-154148301D02*
X73247809Y-154148300D01*
X76647811Y-151148302D02*
X76647810Y-154148301D01*
%TO.C,LED71*%
X342247811Y-115898300D02*
X342247812Y-112898301D01*
X342247812Y-112898301D02*
X345647813Y-112898302D01*
X345647812Y-115898301D02*
X342247811Y-115898300D01*
X345647813Y-112898302D02*
X345647812Y-115898301D01*
%TO.C,LED30*%
X342247810Y-133898299D02*
X342247811Y-130898300D01*
X342247811Y-130898300D02*
X345647812Y-130898301D01*
X345647811Y-133898300D02*
X342247810Y-133898299D01*
X345647812Y-130898301D02*
X345647811Y-133898300D01*
%TO.C,LED25*%
X304247807Y-93398302D02*
X304247808Y-90398303D01*
X304247808Y-90398303D02*
X307647809Y-90398304D01*
X307647808Y-93398303D02*
X304247807Y-93398302D01*
X307647809Y-90398304D02*
X307647808Y-93398303D01*
%TO.C,LED57*%
X168247810Y-115898301D02*
X168247811Y-112898302D01*
X168247811Y-112898302D02*
X171647812Y-112898303D01*
X171647811Y-115898302D02*
X168247810Y-115898301D01*
X171647812Y-112898303D02*
X171647811Y-115898302D01*
%TO.C,LED87*%
X308747806Y-72398300D02*
X308747807Y-69398301D01*
X308747807Y-69398301D02*
X312147808Y-69398302D01*
X312147807Y-72398301D02*
X308747806Y-72398300D01*
X312147808Y-69398302D02*
X312147807Y-72398301D01*
%TO.C,LED82*%
X207747812Y-72398302D02*
X207747813Y-69398303D01*
X207747813Y-69398303D02*
X211147814Y-69398304D01*
X211147813Y-72398303D02*
X207747812Y-72398302D01*
X211147814Y-69398304D02*
X211147813Y-72398303D01*
%TO.C,LED38*%
X191086449Y-183683280D02*
X192306659Y-180942644D01*
X192306659Y-180942644D02*
X195412713Y-182325548D01*
X194192503Y-185066184D02*
X191086449Y-183683280D01*
X195412713Y-182325548D02*
X194192503Y-185066184D01*
%TO.C,LED43*%
X217247809Y-188598074D02*
X217247810Y-185598075D01*
X217247810Y-185598075D02*
X220647811Y-185598076D01*
X220647810Y-188598075D02*
X217247809Y-188598074D01*
X220647811Y-185598076D02*
X220647810Y-188598075D01*
%TO.C,LED68*%
X323247810Y-149648298D02*
X323247811Y-146648299D01*
X323247811Y-146648299D02*
X326647812Y-146648300D01*
X326647811Y-149648299D02*
X323247810Y-149648298D01*
X326647812Y-146648300D02*
X326647811Y-149648299D01*
%TO.C,LED13*%
X149247814Y-93398305D02*
X149247815Y-90398306D01*
X149247815Y-90398306D02*
X152647816Y-90398307D01*
X152647815Y-93398306D02*
X149247814Y-93398305D01*
X152647816Y-90398307D02*
X152647815Y-93398306D01*
%TO.C,LED88*%
X327747810Y-72398300D02*
X327747811Y-69398301D01*
X327747811Y-69398301D02*
X331147812Y-69398302D01*
X331147811Y-72398301D02*
X327747810Y-72398300D01*
X331147812Y-69398302D02*
X331147811Y-72398301D01*
%TO.C,LED47*%
X73247812Y-118148300D02*
X73247813Y-115148301D01*
X73247813Y-115148301D02*
X76647814Y-115148302D01*
X76647813Y-118148301D02*
X73247812Y-118148300D01*
X76647814Y-115148302D02*
X76647813Y-118148301D01*
%TO.C,LED44*%
X207747810Y-147398301D02*
X207747811Y-144398302D01*
X207747811Y-144398302D02*
X211147812Y-144398303D01*
X211147811Y-147398302D02*
X207747810Y-147398301D01*
X211147812Y-144398303D02*
X211147811Y-147398302D01*
%TO.C,LED2*%
X73247812Y-136148301D02*
X73247813Y-133148302D01*
X73247813Y-133148302D02*
X76647814Y-133148303D01*
X76647813Y-136148302D02*
X73247812Y-136148301D01*
X76647814Y-133148303D02*
X76647813Y-136148302D01*
%TO.C,LED7*%
X111247813Y-167648301D02*
X111247814Y-164648302D01*
X111247814Y-164648302D02*
X114647815Y-164648303D01*
X114647814Y-167648302D02*
X111247813Y-167648301D01*
X114647815Y-164648303D02*
X114647814Y-167648302D01*
%TO.C,LED45*%
X226747809Y-147398299D02*
X226747810Y-144398300D01*
X226747810Y-144398300D02*
X230147811Y-144398301D01*
X230147810Y-147398300D02*
X226747809Y-147398299D01*
X230147811Y-144398301D02*
X230147810Y-147398300D01*
%TO.C,LED52*%
X130247812Y-147398299D02*
X130247813Y-144398300D01*
X130247813Y-144398300D02*
X133647814Y-144398301D01*
X133647813Y-147398300D02*
X130247812Y-147398299D01*
X133647814Y-144398301D02*
X133647813Y-147398300D01*
%TO.C,LED58*%
X187247813Y-156398300D02*
X187247814Y-153398301D01*
X187247814Y-153398301D02*
X190647815Y-153398302D01*
X190647814Y-156398301D02*
X187247813Y-156398300D01*
X190647815Y-153398302D02*
X190647814Y-156398301D01*
%TO.C,LED37*%
X172116779Y-176592107D02*
X173043830Y-173738937D01*
X173043830Y-173738937D02*
X176277423Y-174789595D01*
X175350372Y-177642765D02*
X172116779Y-176592107D01*
X176277423Y-174789595D02*
X175350372Y-177642765D01*
%TO.C,LED5*%
X92247808Y-133898300D02*
X92247809Y-130898301D01*
X92247809Y-130898301D02*
X95647810Y-130898302D01*
X95647809Y-133898301D02*
X92247808Y-133898300D01*
X95647810Y-130898302D02*
X95647809Y-133898301D01*
%TO.C,LED74*%
X217247813Y-165398301D02*
X217247814Y-162398302D01*
X217247814Y-162398302D02*
X220647815Y-162398303D01*
X220647814Y-165398302D02*
X217247813Y-165398301D01*
X220647815Y-162398303D02*
X220647814Y-165398302D01*
%TO.C,LED65*%
X285247816Y-111398301D02*
X285247817Y-108398302D01*
X285247817Y-108398302D02*
X288647818Y-108398303D01*
X288647817Y-111398302D02*
X285247816Y-111398301D01*
X288647818Y-108398303D02*
X288647817Y-111398302D01*
%TO.C,LED29*%
X342247815Y-169898299D02*
X342247816Y-166898300D01*
X342247816Y-166898300D02*
X345647817Y-166898301D01*
X345647816Y-169898300D02*
X342247815Y-169898299D01*
X345647817Y-166898301D02*
X345647816Y-169898300D01*
%TO.C,LED39*%
X301720332Y-165902287D02*
X305101707Y-165546890D01*
X302033917Y-168885852D02*
X301720332Y-165902287D01*
X305101707Y-165546890D02*
X305415292Y-168530455D01*
X305415292Y-168530455D02*
X302033917Y-168885852D01*
%TO.C,LED50*%
X111247814Y-149648301D02*
X111247815Y-146648302D01*
X111247815Y-146648302D02*
X114647816Y-146648303D01*
X114647815Y-149648302D02*
X111247814Y-149648301D01*
X114647816Y-146648303D02*
X114647815Y-149648302D01*
%TO.C,LED81*%
X188747813Y-72398303D02*
X188747814Y-69398304D01*
X188747814Y-69398304D02*
X192147815Y-69398305D01*
X192147814Y-72398304D02*
X188747813Y-72398303D01*
X192147815Y-69398305D02*
X192147814Y-72398304D01*
%TO.C,LED49*%
X92247813Y-115898300D02*
X92247814Y-112898301D01*
X92247814Y-112898301D02*
X95647815Y-112898302D01*
X95647814Y-115898301D02*
X92247813Y-115898300D01*
X95647815Y-112898302D02*
X95647814Y-115898301D01*
%TO.C,LED12*%
X149247811Y-129398300D02*
X149247812Y-126398301D01*
X149247812Y-126398301D02*
X152647813Y-126398302D01*
X152647812Y-129398301D02*
X149247811Y-129398300D01*
X152647813Y-126398302D02*
X152647812Y-129398301D01*
%TD*%
M02*

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,15 @@
%TF.GenerationSoftware,KiCad,Pcbnew,8.0.5*%
%TF.CreationDate,2024-10-10T16:29:34+02:00*%
%TF.ProjectId,eepyboard_rev2,65657079-626f-4617-9264-5f726576322e,1.1*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Paste,Top*%
%TF.FilePolarity,Positive*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 8.0.5) date 2024-10-10 16:29:34*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 APERTURE END LIST*
M02*

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,472 @@
M48
; DRILL file {KiCad 8.0.5} date 2024-10-10T16:30:10+0200
; FORMAT={-:-/ absolute / metric / decimal}
; #@! TF.CreationDate,2024-10-10T16:30:10+02:00
; #@! TF.GenerationSoftware,Kicad,Pcbnew,8.0.5
; #@! TF.FileFunction,NonPlated,1,4,NPTH
FMAT,2
METRIC
; #@! TA.AperFunction,NonPlated,NPTH,ComponentDrill
T1C1.702
; #@! TA.AperFunction,NonPlated,NPTH,ComponentDrill
T2C2.200
; #@! TA.AperFunction,NonPlated,NPTH,ComponentDrill
T3C3.000
; #@! TA.AperFunction,NonPlated,NPTH,ComponentDrill
T4C3.429
%
G90
G05
T1
X69.448Y-157.348
X69.448Y-139.348
X69.448Y-121.348
X69.448Y-103.348
X69.448Y-175.348
X77.948Y-77.848
X80.448Y-157.348
X80.448Y-139.348
X80.448Y-121.348
X80.448Y-103.348
X80.448Y-175.348
X88.448Y-101.098
X88.448Y-137.098
X88.448Y-155.098
X88.448Y-173.098
X88.448Y-119.098
X88.948Y-77.848
X99.448Y-101.098
X99.448Y-137.098
X99.448Y-155.098
X99.448Y-173.098
X99.448Y-119.098
X102.948Y-75.598
X107.448Y-116.848
X107.448Y-98.848
X107.448Y-134.848
X107.448Y-152.848
X107.448Y-170.848
X113.948Y-75.598
X118.448Y-116.848
X118.448Y-98.848
X118.448Y-134.848
X118.448Y-152.848
X118.448Y-170.848
X121.948Y-75.598
X126.448Y-96.598
X126.448Y-150.598
X126.448Y-132.598
X126.448Y-114.598
X128.367Y-171.316
X132.948Y-75.598
X137.448Y-96.598
X137.448Y-150.598
X137.448Y-132.598
X137.448Y-114.598
X139.306Y-172.466
X140.948Y-75.598
X145.448Y-150.598
X145.448Y-96.598
X145.448Y-114.598
X145.448Y-132.598
X148.128Y-173.863
X151.948Y-75.598
X156.448Y-150.598
X156.448Y-96.598
X156.448Y-114.598
X156.448Y-132.598
X158.887Y-176.15
X159.948Y-75.598
X164.448Y-137.098
X164.448Y-155.098
X164.448Y-101.098
X164.448Y-119.098
X167.514Y-178.461
X170.948Y-75.598
X175.448Y-137.098
X175.448Y-155.098
X175.448Y-101.098
X175.448Y-119.098
X177.976Y-181.86
X183.448Y-105.598
X183.448Y-159.598
X183.448Y-123.598
X183.448Y-141.598
X184.948Y-75.598
X186.313Y-185.061
X194.448Y-105.598
X194.448Y-159.598
X194.448Y-123.598
X194.448Y-141.598
X195.948Y-75.598
X196.362Y-189.535
X203.948Y-75.598
X203.948Y-150.598
X213.448Y-168.598
X213.448Y-132.598
X213.448Y-191.798
X214.948Y-75.598
X214.948Y-150.598
X222.948Y-150.598
X222.948Y-75.598
X224.448Y-168.598
X224.448Y-132.598
X224.448Y-191.798
X233.948Y-150.598
X233.948Y-75.598
X241.533Y-189.535
X241.948Y-75.598
X243.448Y-123.598
X243.448Y-141.598
X243.448Y-159.598
X243.448Y-105.598
X251.582Y-185.061
X252.948Y-75.598
X254.448Y-123.598
X254.448Y-141.598
X254.448Y-159.598
X254.448Y-105.598
X259.92Y-181.86
X262.448Y-119.098
X262.448Y-137.098
X262.448Y-101.098
X262.448Y-155.098
X266.948Y-75.598
X270.382Y-178.461
X273.448Y-119.098
X273.448Y-137.098
X273.448Y-101.098
X273.448Y-155.098
X277.948Y-75.598
X279.008Y-176.15
X281.448Y-96.598
X281.448Y-132.598
X281.448Y-150.598
X281.448Y-114.598
X285.948Y-75.598
X289.768Y-173.863
X292.448Y-96.598
X292.448Y-132.598
X292.448Y-150.598
X292.448Y-114.598
X296.948Y-75.598
X298.589Y-172.466
X300.448Y-96.598
X300.448Y-132.598
X300.448Y-150.598
X300.448Y-114.598
X304.948Y-75.598
X309.529Y-171.316
X311.448Y-96.598
X311.448Y-132.598
X311.448Y-150.598
X311.448Y-114.598
X315.948Y-75.598
X319.448Y-116.848
X319.448Y-170.848
X319.448Y-98.848
X319.448Y-134.848
X319.448Y-152.848
X323.948Y-75.598
X330.448Y-116.848
X330.448Y-170.848
X330.448Y-98.848
X330.448Y-134.848
X330.448Y-152.848
X334.948Y-75.598
X338.448Y-155.098
X338.448Y-101.098
X338.448Y-119.098
X338.448Y-137.098
X338.448Y-173.098
X349.448Y-155.098
X349.448Y-101.098
X349.448Y-119.098
X349.448Y-137.098
X349.448Y-173.098
X357.448Y-103.348
X357.448Y-121.348
X357.448Y-157.348
X357.448Y-175.348
X357.448Y-139.348
X368.448Y-103.348
X368.448Y-121.348
X368.448Y-157.348
X368.448Y-175.348
X368.448Y-139.348
T2
X68.198Y-69.348
X93.948Y-186.598
X188.948Y-93.598
X188.948Y-172.598
X248.948Y-93.598
X248.948Y-172.598
X343.948Y-186.598
X369.698Y-69.348
T3
X69.948Y-161.098
X69.948Y-143.098
X69.948Y-125.098
X69.948Y-107.098
X69.948Y-179.098
X74.948Y-163.298
X74.948Y-145.298
X74.948Y-127.298
X74.948Y-109.298
X74.948Y-181.298
X78.448Y-81.598
X83.448Y-83.798
X88.948Y-104.848
X88.948Y-140.848
X88.948Y-158.848
X88.948Y-176.848
X88.948Y-122.848
X93.948Y-107.048
X93.948Y-143.048
X93.948Y-161.048
X93.948Y-179.048
X93.948Y-125.048
X103.448Y-79.348
X107.948Y-120.598
X107.948Y-102.598
X107.948Y-138.598
X107.948Y-156.598
X107.948Y-174.598
X108.448Y-81.548
X112.948Y-122.798
X112.948Y-104.798
X112.948Y-140.798
X112.948Y-158.798
X112.948Y-176.798
X122.448Y-79.348
X126.948Y-100.348
X126.948Y-154.348
X126.948Y-136.348
X126.948Y-118.348
X127.448Y-81.548
X128.472Y-175.097
X131.948Y-102.548
X131.948Y-156.548
X131.948Y-138.548
X131.948Y-120.548
X133.215Y-177.808
X141.448Y-79.348
X145.948Y-154.348
X145.948Y-100.348
X145.948Y-118.348
X145.948Y-136.348
X146.448Y-81.548
X147.837Y-177.635
X150.948Y-156.548
X150.948Y-102.548
X150.948Y-120.548
X150.948Y-138.548
X152.27Y-180.826
X160.448Y-79.348
X164.948Y-140.848
X164.948Y-158.848
X164.948Y-104.848
X164.948Y-122.848
X165.448Y-81.548
X166.831Y-182.182
X169.948Y-143.048
X169.948Y-161.048
X169.948Y-107.048
X169.948Y-125.048
X170.906Y-185.82
X183.948Y-109.348
X183.948Y-163.348
X183.948Y-127.348
X183.948Y-145.348
X185.245Y-188.69
X185.448Y-79.348
X188.918Y-192.734
X188.948Y-111.548
X188.948Y-165.548
X188.948Y-129.548
X188.948Y-147.548
X190.448Y-81.548
X204.448Y-79.348
X204.448Y-154.348
X209.448Y-81.548
X209.448Y-156.548
X213.948Y-172.348
X213.948Y-136.348
X213.948Y-195.548
X218.948Y-174.548
X218.948Y-138.548
X218.948Y-197.748
X223.448Y-154.348
X223.448Y-79.348
X228.448Y-156.548
X228.448Y-81.548
X242.448Y-79.348
X243.515Y-192.758
X243.948Y-127.348
X243.948Y-145.348
X243.948Y-163.348
X243.948Y-109.348
X247.448Y-81.548
X248.948Y-129.548
X248.948Y-147.548
X248.948Y-165.548
X248.948Y-111.548
X248.978Y-192.734
X261.554Y-185.272
X262.948Y-122.848
X262.948Y-140.848
X262.948Y-104.848
X262.948Y-158.848
X266.99Y-185.82
X267.448Y-79.348
X267.948Y-125.048
X267.948Y-143.048
X267.948Y-107.048
X267.948Y-161.048
X272.448Y-81.548
X280.277Y-179.714
X281.948Y-100.348
X281.948Y-136.348
X281.948Y-154.348
X281.948Y-118.348
X285.625Y-180.826
X286.448Y-79.348
X286.948Y-102.548
X286.948Y-138.548
X286.948Y-156.548
X286.948Y-120.548
X291.448Y-81.548
X299.478Y-176.143
X300.948Y-100.348
X300.948Y-136.348
X300.948Y-154.348
X300.948Y-118.348
X304.681Y-177.808
X305.448Y-79.348
X305.948Y-102.548
X305.948Y-138.548
X305.948Y-156.548
X305.948Y-120.548
X310.448Y-81.548
X319.948Y-120.598
X319.948Y-174.598
X319.948Y-102.598
X319.948Y-138.598
X319.948Y-156.598
X324.448Y-79.348
X324.948Y-122.798
X324.948Y-176.798
X324.948Y-104.798
X324.948Y-140.798
X324.948Y-158.798
X329.448Y-81.548
X338.948Y-158.848
X338.948Y-104.848
X338.948Y-122.848
X338.948Y-140.848
X338.948Y-176.848
X343.948Y-161.048
X343.948Y-107.048
X343.948Y-125.048
X343.948Y-143.048
X343.948Y-179.048
X357.948Y-107.098
X357.948Y-125.098
X357.948Y-161.098
X357.948Y-179.098
X357.948Y-143.098
X362.948Y-109.298
X362.948Y-127.298
X362.948Y-163.298
X362.948Y-181.298
X362.948Y-145.298
T4
X74.948Y-157.348
X74.948Y-139.348
X74.948Y-121.348
X74.948Y-103.348
X74.948Y-175.348
X83.448Y-77.848
X93.948Y-101.098
X93.948Y-137.098
X93.948Y-155.098
X93.948Y-173.098
X93.948Y-119.098
X108.448Y-75.598
X112.948Y-116.848
X112.948Y-98.848
X112.948Y-134.848
X112.948Y-152.848
X112.948Y-170.848
X127.448Y-75.598
X131.948Y-96.598
X131.948Y-150.598
X131.948Y-132.598
X131.948Y-114.598
X133.837Y-171.891
X146.448Y-75.598
X150.948Y-150.598
X150.948Y-96.598
X150.948Y-114.598
X150.948Y-132.598
X153.507Y-175.006
X165.448Y-75.598
X169.948Y-137.098
X169.948Y-155.098
X169.948Y-101.098
X169.948Y-119.098
X172.745Y-180.161
X188.948Y-105.598
X188.948Y-159.598
X188.948Y-123.598
X188.948Y-141.598
X190.448Y-75.598
X191.338Y-187.298
X209.448Y-75.598
X209.448Y-150.598
X218.948Y-168.598
X218.948Y-132.598
X218.948Y-191.798
X228.448Y-150.598
X228.448Y-75.598
X246.558Y-187.298
X247.448Y-75.598
X248.948Y-123.598
X248.948Y-141.598
X248.948Y-159.598
X248.948Y-105.598
X265.151Y-180.161
X267.948Y-119.098
X267.948Y-137.098
X267.948Y-101.098
X267.948Y-155.098
X272.448Y-75.598
X284.388Y-175.006
X286.948Y-96.598
X286.948Y-132.598
X286.948Y-150.598
X286.948Y-114.598
X291.448Y-75.598
X304.059Y-171.891
X305.948Y-96.598
X305.948Y-132.598
X305.948Y-150.598
X305.948Y-114.598
X310.448Y-75.598
X324.948Y-116.848
X324.948Y-170.848
X324.948Y-98.848
X324.948Y-134.848
X324.948Y-152.848
X329.448Y-75.598
X343.948Y-155.098
X343.948Y-101.098
X343.948Y-119.098
X343.948Y-137.098
X343.948Y-173.098
X362.948Y-103.348
X362.948Y-121.348
X362.948Y-157.348
X362.948Y-175.348
X362.948Y-139.348
M30

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,333 @@
M48
; DRILL file {KiCad 8.0.5} date 2024-10-10T16:30:10+0200
; FORMAT={-:-/ absolute / metric / decimal}
; #@! TF.CreationDate,2024-10-10T16:30:10+02:00
; #@! TF.GenerationSoftware,Kicad,Pcbnew,8.0.5
; #@! TF.FileFunction,Plated,1,4,PTH
FMAT,2
METRIC
; #@! TA.AperFunction,Plated,PTH,ViaDrill
T1C0.400
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T2C1.000
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T3C1.092
%
G90
G05
T1
X66.698Y-105.098
X66.698Y-123.098
X66.698Y-141.098
X66.698Y-159.098
X66.698Y-177.098
X70.448Y-97.036
X70.448Y-115.898
X70.448Y-133.036
X70.448Y-151.898
X70.448Y-169.036
X75.198Y-79.598
X78.948Y-72.398
X79.448Y-99.398
X79.448Y-118.161
X79.448Y-135.398
X79.448Y-154.161
X79.448Y-171.398
X85.698Y-102.848
X85.698Y-120.848
X85.698Y-138.848
X85.698Y-156.848
X85.698Y-174.848
X89.448Y-94.786
X89.448Y-113.648
X89.448Y-130.786
X89.448Y-149.648
X89.448Y-166.786
X93.448Y-79.598
X98.448Y-97.148
X98.448Y-115.911
X98.448Y-133.148
X98.448Y-151.911
X98.448Y-169.148
X100.198Y-77.348
X103.948Y-70.148
X104.698Y-100.598
X104.698Y-118.598
X104.698Y-136.598
X104.698Y-154.598
X104.698Y-172.598
X108.448Y-92.536
X108.448Y-111.398
X108.448Y-128.536
X108.448Y-147.398
X108.448Y-164.536
X112.948Y-72.411
X117.448Y-94.898
X117.448Y-113.661
X117.448Y-130.898
X117.448Y-149.661
X117.448Y-166.898
X119.198Y-77.348
X122.948Y-70.148
X123.698Y-134.348
X123.698Y-152.348
X123.698Y-98.348
X123.698Y-116.348
X125.449Y-172.769
X127.448Y-90.286
X127.448Y-109.148
X127.448Y-126.286
X127.448Y-145.148
X130.021Y-165.142
X131.948Y-72.411
X136.448Y-92.648
X136.448Y-111.411
X136.448Y-128.648
X136.448Y-147.411
X138.198Y-77.348
X138.725Y-168.433
X141.948Y-70.148
X142.698Y-152.348
X142.698Y-134.348
X142.698Y-98.348
X142.698Y-116.348
X145.074Y-175.003
X146.448Y-90.286
X146.448Y-109.148
X146.448Y-126.286
X146.448Y-145.148
X150.418Y-167.896
X150.948Y-72.411
X155.448Y-92.648
X155.448Y-111.411
X155.448Y-128.648
X155.448Y-147.411
X157.198Y-77.348
X158.73Y-172.078
X160.948Y-70.148
X161.698Y-156.848
X161.698Y-138.848
X161.698Y-102.848
X161.698Y-120.848
X164.358Y-179.276
X165.448Y-94.786
X165.448Y-113.648
X165.448Y-130.786
X165.448Y-149.648
X169.948Y-72.411
X170.416Y-172.767
X174.448Y-97.148
X174.448Y-115.911
X174.448Y-133.148
X174.448Y-151.911
X178.245Y-177.795
X180.698Y-143.348
X180.698Y-161.348
X180.698Y-107.348
X180.698Y-125.348
X182.198Y-81.348
X183.089Y-185.541
X184.448Y-99.286
X184.448Y-118.148
X184.448Y-135.286
X184.448Y-154.148
X185.948Y-70.148
X189.794Y-179.701
X193.448Y-101.648
X193.448Y-120.411
X193.448Y-137.648
X193.448Y-156.411
X194.948Y-72.411
X197.055Y-185.52
X197.948Y-152.248
X201.198Y-81.348
X201.198Y-152.348
X201.573Y-135.973
X204.948Y-70.148
X204.948Y-144.286
X210.698Y-170.298
X210.698Y-134.348
X210.698Y-193.548
X213.948Y-72.411
X213.948Y-146.648
X214.448Y-185.486
X214.448Y-127.148
X214.448Y-163.148
X220.198Y-81.348
X220.198Y-152.348
X223.448Y-187.848
X223.448Y-129.411
X223.448Y-165.411
X223.948Y-70.148
X223.948Y-144.286
X232.948Y-72.411
X232.948Y-146.648
X233.698Y-200.448
X236.948Y-158.598
X237.573Y-170.723
X239.198Y-81.348
X239.733Y-192.252
X239.879Y-183.362
X240.698Y-143.348
X240.698Y-161.348
X240.698Y-107.348
X240.698Y-125.348
X242.948Y-70.148
X244.448Y-99.286
X244.448Y-118.148
X244.448Y-135.286
X244.448Y-154.148
X249.062Y-181.859
X251.948Y-72.411
X253.448Y-101.648
X253.448Y-120.411
X253.448Y-137.648
X253.448Y-156.411
X257.845Y-184.375
X258.92Y-175.548
X259.698Y-138.848
X259.698Y-156.848
X259.698Y-102.848
X259.698Y-120.848
X263.448Y-94.786
X263.448Y-113.648
X263.448Y-130.786
X263.448Y-149.648
X264.198Y-77.348
X267.948Y-70.148
X268.21Y-175.014
X272.448Y-97.148
X272.448Y-115.911
X272.448Y-133.148
X272.448Y-151.911
X276.682Y-178.433
X276.948Y-72.411
X278.674Y-169.767
X278.698Y-134.348
X278.698Y-152.348
X278.698Y-98.348
X278.698Y-116.348
X282.448Y-90.286
X282.448Y-109.148
X282.448Y-126.286
X282.448Y-145.148
X283.198Y-77.348
X286.948Y-70.148
X287.969Y-170.207
X291.448Y-92.648
X291.448Y-111.411
X291.448Y-128.648
X291.448Y-147.411
X295.948Y-72.411
X296.037Y-174.493
X297.698Y-134.348
X297.698Y-152.348
X297.698Y-98.348
X297.698Y-116.348
X298.924Y-166.083
X301.448Y-90.286
X301.448Y-109.148
X301.448Y-126.286
X301.448Y-145.148
X302.198Y-77.348
X305.948Y-70.148
X308.122Y-167.492
X310.448Y-92.648
X310.448Y-111.411
X310.448Y-128.648
X310.448Y-147.411
X314.948Y-72.411
X316.698Y-136.598
X316.698Y-154.598
X316.698Y-172.598
X316.698Y-100.598
X316.698Y-118.598
X320.448Y-164.536
X320.448Y-92.536
X320.448Y-111.398
X320.448Y-128.536
X320.448Y-147.398
X321.198Y-77.348
X324.948Y-70.148
X329.448Y-166.898
X329.448Y-94.898
X329.448Y-113.661
X329.448Y-130.898
X329.448Y-149.661
X333.948Y-72.411
X335.698Y-102.848
X335.698Y-120.848
X335.698Y-138.848
X335.698Y-156.848
X335.698Y-174.848
X339.448Y-94.786
X339.448Y-113.648
X339.448Y-130.786
X339.448Y-149.648
X339.448Y-166.786
X348.448Y-97.148
X348.448Y-115.911
X348.448Y-133.148
X348.448Y-151.911
X348.448Y-169.148
X354.698Y-105.098
X354.698Y-123.098
X354.698Y-141.098
X354.698Y-159.098
X354.698Y-177.098
X358.448Y-97.036
X358.448Y-115.898
X358.448Y-133.036
X358.448Y-151.898
X358.448Y-169.036
X367.448Y-99.398
X367.448Y-118.161
X367.448Y-135.398
X367.448Y-154.161
X367.448Y-171.398
T2
X216.488Y-96.478
X216.488Y-110.978
X218.988Y-96.478
X221.488Y-110.978
X221.488Y-96.478
X348.828Y-75.308
X348.828Y-77.808
X348.828Y-80.308
X363.328Y-80.308
X363.328Y-75.308
T3
X211.328Y-120.608
X211.328Y-87.588
X211.328Y-90.128
X211.328Y-92.668
X211.328Y-95.208
X211.328Y-97.748
X211.328Y-100.288
X211.328Y-102.828
X211.328Y-105.368
X211.328Y-107.908
X211.328Y-110.448
X211.328Y-112.988
X211.328Y-115.528
X211.328Y-118.068
X213.868Y-120.608
X216.408Y-120.608
X218.948Y-120.608
X221.488Y-120.608
X224.028Y-120.608
X226.568Y-90.128
X226.568Y-92.668
X226.568Y-95.208
X226.568Y-97.748
X226.568Y-100.288
X226.568Y-102.828
X226.568Y-105.368
X226.568Y-107.908
X226.568Y-110.448
X226.568Y-112.988
X226.568Y-115.528
X226.568Y-118.068
X226.568Y-120.608
X226.568Y-87.588
M30

View File

@ -0,0 +1,169 @@
{
"Header": {
"GenerationSoftware": {
"Vendor": "KiCad",
"Application": "Pcbnew",
"Version": "8.0.5"
},
"CreationDate": "2024-10-10T16:29:35+02:00"
},
"GeneralSpecs": {
"ProjectId": {
"Name": "eepyboard_rev2",
"GUID": "65657079-626f-4617-9264-5f726576322e",
"Revision": "1.1"
},
"Size": {
"X": 313.65,
"Y": 140.5166
},
"LayerNumber": 4,
"BoardThickness": 1.6,
"Finish": "None"
},
"DesignRules": [
{
"Layers": "Outer",
"PadToPad": 0.2,
"PadToTrack": 0.2,
"TrackToTrack": 0.2,
"MinLineWidth": 0.25,
"TrackToRegion": 0.508,
"RegionToRegion": 0.508
},
{
"Layers": "Inner",
"PadToPad": 0.2,
"PadToTrack": 0.2,
"TrackToTrack": 0.2,
"TrackToRegion": 0.508,
"RegionToRegion": 0.508
}
],
"FilesAttributes": [
{
"Path": "eepyboard_rev2-F_Cu.gbr",
"FileFunction": "Copper,L1,Top",
"FilePolarity": "Positive"
},
{
"Path": "eepyboard_rev2-In1_Cu.gbr",
"FileFunction": "Copper,L2,Inr",
"FilePolarity": "Positive"
},
{
"Path": "eepyboard_rev2-In2_Cu.gbr",
"FileFunction": "Copper,L3,Inr",
"FilePolarity": "Positive"
},
{
"Path": "eepyboard_rev2-B_Cu.gbr",
"FileFunction": "Copper,L4,Bot",
"FilePolarity": "Positive"
},
{
"Path": "eepyboard_rev2-F_Paste.gbr",
"FileFunction": "SolderPaste,Top",
"FilePolarity": "Positive"
},
{
"Path": "eepyboard_rev2-B_Paste.gbr",
"FileFunction": "SolderPaste,Bot",
"FilePolarity": "Positive"
},
{
"Path": "eepyboard_rev2-F_Silkscreen.gbr",
"FileFunction": "Legend,Top",
"FilePolarity": "Positive"
},
{
"Path": "eepyboard_rev2-B_Silkscreen.gbr",
"FileFunction": "Legend,Bot",
"FilePolarity": "Positive"
},
{
"Path": "eepyboard_rev2-F_Mask.gbr",
"FileFunction": "SolderMask,Top",
"FilePolarity": "Negative"
},
{
"Path": "eepyboard_rev2-B_Mask.gbr",
"FileFunction": "SolderMask,Bot",
"FilePolarity": "Negative"
},
{
"Path": "eepyboard_rev2-Edge_Cuts.gbr",
"FileFunction": "Profile",
"FilePolarity": "Positive"
}
],
"MaterialStackup": [
{
"Type": "Legend",
"Name": "Top Silk Screen"
},
{
"Type": "SolderPaste",
"Name": "Top Solder Paste"
},
{
"Type": "SolderMask",
"Thickness": 0.01,
"Name": "Top Solder Mask"
},
{
"Type": "Copper",
"Thickness": 0.035,
"Name": "F.Cu"
},
{
"Type": "Dielectric",
"Thickness": 0.1,
"Material": "FR4",
"Name": "F.Cu/In1.Cu",
"Notes": "Type: dielectric layer 1 (from F.Cu to In1.Cu)"
},
{
"Type": "Copper",
"Thickness": 0.035,
"Name": "In1.Cu"
},
{
"Type": "Dielectric",
"Thickness": 1.24,
"Material": "FR4",
"Name": "In1.Cu/In2.Cu",
"Notes": "Type: dielectric layer 2 (from In1.Cu to In2.Cu)"
},
{
"Type": "Copper",
"Thickness": 0.035,
"Name": "In2.Cu"
},
{
"Type": "Dielectric",
"Thickness": 0.1,
"Material": "FR4",
"Name": "In2.Cu/B.Cu",
"Notes": "Type: dielectric layer 3 (from In2.Cu to B.Cu)"
},
{
"Type": "Copper",
"Thickness": 0.035,
"Name": "B.Cu"
},
{
"Type": "SolderMask",
"Thickness": 0.01,
"Name": "Bottom Solder Mask"
},
{
"Type": "SolderPaste",
"Name": "Bottom Solder Paste"
},
{
"Type": "Legend",
"Name": "Bottom Silk Screen"
}
]
}

Binary file not shown.