Compare commits

...
Sign in to create a new pull request.

21 commits

Author SHA1 Message Date
Stefan Schwarz
c05de81d00 add 3d case 2023-02-01 18:28:05 +01:00
Stefan Schwarz
5fab876351 add 3d print plate 2023-02-01 18:08:48 +01:00
2d62d2b827 add choc version 2023-02-01 08:51:37 +01:00
3447a56e03 version 003 2022-03-25 15:33:34 +01:00
3211074017 fix matrix :< 2022-03-25 12:41:22 +01:00
75c2ff47d9 allow keeping of gerber files 2022-03-25 11:26:15 +01:00
9fd7c7d603 add v002 2022-03-25 11:26:10 +01:00
8b8b63d270 add v2 with support for powerswitch and reset 2022-03-25 02:14:25 +01:00
930052bd6d rename board 2022-03-25 01:35:34 +01:00
Stefan Schwarz
b38acb52b0 add groundplane 2022-03-23 16:49:50 +01:00
Stefan Schwarz
33eb2691c0 add a switchplate 2022-03-23 15:03:35 +01:00
Stefan Schwarz
c2f4712091 cleanup 2022-03-23 15:03:27 +01:00
Stefan Schwarz
29c41c8c97 rearrange via and connect grounds 2022-03-23 13:46:44 +01:00
Stefan Schwarz
124078b66c remove bak files from github 2022-03-23 13:46:23 +01:00
Stefan Schwarz
917e18d8db add first routed version 2022-03-23 13:42:08 +01:00
f73fc90b1e rotate the diode for cleaner wireing 2022-03-23 12:57:19 +01:00
c64b4e88a0 remove reverse option 2022-03-23 12:57:07 +01:00
a04150c874 fix pin assignments 2022-03-23 12:56:58 +01:00
854071f9a7 add makefile and kicad project 2022-03-23 10:19:39 +01:00
f30a13036b fix case 2022-03-23 10:19:18 +01:00
Stefan Schwarz
3a66245670 wip 2022-03-22 20:10:26 +01:00
17 changed files with 21250 additions and 120 deletions

1
.envrc Normal file
View file

@ -0,0 +1 @@
eval "$(lorri direnv)"

246
.gitignore vendored
View file

@ -1,120 +1,126 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# Snowpack dependency directory (https://snowpack.dev/)
web_modules/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.test
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# Next.js build output
.next
out
# Nuxt.js build / generate output
.nuxt
dist
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
# Project specific
output
temp*
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# Snowpack dependency directory (https://snowpack.dev/)
web_modules/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.test
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# Next.js build output
.next
out
# Nuxt.js build / generate output
.nuxt
dist
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
# Project specific
output
temp*
kicad/45treus/main.pro
kicad/45treus/main.kicad_pcb
*.kicad_pcb-bak
kicad/45treus/gerber_v*/*.gbr
kicad/45treus/gerber_v*/*.gbrjob
kicad/45treus/gerber_v*/*.drl

270
23creus.yaml Normal file
View file

@ -0,0 +1,270 @@
units:
kx: cx
ky: cy
px: 2
py: 2
step: .5
points:
key:
footprints:
mx_hotswap:
type: choc
params:
hotswap: true
reverse: false
keycaps: true
nets:
from: =colrow
to: =column_net
diode:
type: diode
nets:
from: =colrow
to: =row_net
anchor:
shift: [0, -5]
rotate: 180
zones:
matrix:
columns:
pinky:
key:
column_net: P21
mirror: { column_net: P2 }
ring:
spread: kx + step
stagger: 4
key:
column_net: P20
mirror: { column_net: P3 }
middle:
spread: kx + step
stagger: 5
key:
column_net: P19
mirror: { column_net: P4 }
index:
spread: kx + step
stagger: -5
key:
column_net: P18
mirror: { column_net: P5 }
inner:
spread: kx + step
stagger: -6
key:
column_net: P15
mirror: { column_net: P6 }
thumb:
spread: kx + step
stagger: 10
row_overrides:
bottom:
key:
column_net: P14
mirror: { column_net: P7}
rows:
bottom:
row_net: P16
home:
spread: ky + step
row_net: P10
top:
spread: ky + step
row_net: P9
num:
spread: ky + step
row_net: P8
rotate: -23
mirror:
ref: matrix_thumb_bottom
distance: 42
outlines:
exports:
# outer border
outer:
- type: polygon
points:
- ref: matrix_inner_num
shift: [10, 10]
- ref: matrix_middle_num
shift: [10, 10]
- ref: matrix_middle_num
shift: [-10, 10]
- ref: matrix_pinky_num
shift: [-10, 10]
- ref: matrix_pinky_bottom
shift: [-10, -10]
- ref: matrix_pinky_bottom
shift: [10, -10]
- ref: matrix_inner_bottom
shift: [-10, -10]
- ref: matrix_inner_bottom
shift: [10, -10]
- ref: mirror_matrix_inner_bottom
shift: [10, -10]
- ref: mirror_matrix_inner_bottom
shift: [-10, -10]
- ref: mirror_matrix_pinky_bottom
shift: [10, -10]
- ref: mirror_matrix_pinky_bottom
shift: [-10, -10]
- ref: mirror_matrix_pinky_num
shift: [-10, 10]
- ref: mirror_matrix_middle_num
shift: [-10, 10]
- ref: mirror_matrix_middle_num
shift: [10, 10]
- ref: mirror_matrix_inner_num
shift: [10, 10]
farinner:
- type: polygon
points:
- ref: matrix_inner_num
shift: [10, 10.3]
- ref: matrix_middle_num
shift: [10.3, 10.3]
- ref: matrix_middle_num
shift: [-10.3, 10.3]
- ref: matrix_pinky_num
shift: [-10.3, 10.3]
- ref: matrix_pinky_bottom
shift: [-10.3, -10.3]
- ref: matrix_pinky_bottom
shift: [10.3, -10.3]
- ref: matrix_inner_bottom
shift: [-10.3, -10.3]
- ref: matrix_inner_bottom
shift: [10.3, -10.3]
- ref: mirror_matrix_inner_bottom
shift: [10.3, -10.3]
- ref: mirror_matrix_inner_bottom
shift: [-10.3, -10.3]
- ref: mirror_matrix_pinky_bottom
shift: [10.3, -10.3]
- ref: mirror_matrix_pinky_bottom
shift: [-10.3, -10.3]
- ref: mirror_matrix_pinky_num
shift: [-10.3, 10.3]
- ref: mirror_matrix_middle_num
shift: [-10.3, 10.3]
- ref: mirror_matrix_middle_num
shift: [10.3, 10.3]
- ref: mirror_matrix_inner_num
shift: [10, 10.3]
farouter:
- type: polygon
points:
- ref: matrix_inner_num
shift: [10, 12]
- ref: matrix_middle_num
shift: [12, 12]
- ref: matrix_middle_num
shift: [-12, 12]
- ref: matrix_pinky_num
shift: [-12, 12]
- ref: matrix_pinky_bottom
shift: [-12, -12]
- ref: matrix_pinky_bottom
shift: [12, -12]
- ref: matrix_inner_bottom
shift: [-12, -12]
- ref: matrix_inner_bottom
shift: [12, -12]
- ref: mirror_matrix_inner_bottom
shift: [12, -12]
- ref: mirror_matrix_inner_bottom
shift: [-12, -12]
- ref: mirror_matrix_pinky_bottom
shift: [12, -12]
- ref: mirror_matrix_pinky_bottom
shift: [-12, -12]
- ref: mirror_matrix_pinky_num
shift: [-12, 12]
- ref: mirror_matrix_middle_num
shift: [-12, 12]
- ref: mirror_matrix_middle_num
shift: [12, 12]
- ref: mirror_matrix_inner_num
shift: [10, 12]
#- type: keys
# side: both
# size: 20
# corner: 1
#- type: polygon
# points:
# - ref: matrix_inner_num
# shift: [0, -5]
# - ref: matrix_thumb_bottom
# shift: [-10, -10]
# - ref: mirror_matrix_thumb_bottom
# shift: [-10, -10]
# - ref: mirror_matrix_inner_num
# shift: [0, -5]
chip:
# cutout for the chip itself
- type: rectangle
size: [18, 50]
anchor:
ref: [matrix_inner_top, mirror_matrix_inner_top]
shift: [-9, -24.5]
# 14mm holes for cherry switches
keyholes:
- type: keys
side: both
size: 13.5
bound: false
# switchplate
switchplate:
- outer
- -keyholes
- -chip
cases:
switchp:
- type: outline
name: switchplate
extrude: 1.3
outercase:
- type: outline
name: farouter
extrude: 6.3
- type: outline
name: farinner
extrude: 5
shift: [0, 0, 1.3]
operation: subtract
- type: outline
name: keyholes
extrude: 1.3
operation: subtract
- type: outline
name: chip
extrude: 6.3
operation: subtract
pcbs:
main:
outlines:
outer:
outline: outer
footprints:
reset:
type: button
nets:
from: RST
to: GND
anchor:
ref: [matrix_inner_bottom, mirror_matrix_inner_bottom]
rotate: 90
mcu:
type: promicro
anchor:
rotate: 270
ref: [matrix_inner_top, mirror_matrix_inner_top]
shift: [0, -4]

167
23treus.yaml Normal file
View file

@ -0,0 +1,167 @@
points:
key:
footprints:
mx_hotswap:
type: mx
params:
hotswap: true
reverse: false
keycaps: true
nets:
from: =colrow
to: =column_net
diode:
type: diode
nets:
from: =colrow
to: =row_net
anchor:
shift: [0, -5]
rotate: 180
zones:
matrix:
columns:
pinky:
key:
column_net: P21
mirror: { column_net: P2 }
ring:
stagger: 4
key:
column_net: P20
mirror: { column_net: P3 }
middle:
stagger: 5
key:
column_net: P19
mirror: { column_net: P4 }
index:
stagger: -5
key:
column_net: P18
mirror: { column_net: P5 }
inner:
stagger: -6
key:
column_net: P15
mirror: { column_net: P6 }
thumb:
stagger: 10
row_overrides:
bottom:
key:
column_net: P14
mirror: { column_net: P7}
rows:
bottom:
row_net: P16
home:
row_net: P10
top:
row_net: P9
num:
row_net: P8
rotate: -23
mirror:
ref: matrix_thumb_bottom
distance: 42
outlines:
exports:
# outer border
outer:
- type: polygon
points:
- ref: matrix_inner_num
shift: [10, 10]
- ref: matrix_middle_num
shift: [10, 10]
- ref: matrix_middle_num
shift: [-10, 10]
- ref: matrix_pinky_num
shift: [-10, 10]
- ref: matrix_pinky_bottom
shift: [-10, -10]
- ref: matrix_pinky_bottom
shift: [10, -10]
- ref: matrix_inner_bottom
shift: [-10, -10]
- ref: matrix_inner_bottom
shift: [10, -10]
- ref: mirror_matrix_inner_bottom
shift: [10, -10]
- ref: mirror_matrix_inner_bottom
shift: [-10, -10]
- ref: mirror_matrix_pinky_bottom
shift: [10, -10]
- ref: mirror_matrix_pinky_bottom
shift: [-10, -10]
- ref: mirror_matrix_pinky_num
shift: [-10, 10]
- ref: mirror_matrix_middle_num
shift: [-10, 10]
- ref: mirror_matrix_middle_num
shift: [10, 10]
- ref: mirror_matrix_inner_num
shift: [10, 10]
#- type: keys
# side: both
# size: 20
# corner: 1
#- type: polygon
# points:
# - ref: matrix_inner_num
# shift: [0, -5]
# - ref: matrix_thumb_bottom
# shift: [-10, -10]
# - ref: mirror_matrix_thumb_bottom
# shift: [-10, -10]
# - ref: mirror_matrix_inner_num
# shift: [0, -5]
chip:
# cutout for the chip itself
- type: rectangle
size: [18, 33]
anchor:
ref: [matrix_inner_top, mirror_matrix_inner_top]
shift: [-9, -24.5]
# cutout for the cable (looks)
- type: rectangle
size: [8, 50]
anchor:
ref: [matrix_inner_top, mirror_matrix_inner_top]
shift: [-4, -24.5]
# 14mm holes for cherry switches
keyholes:
- type: keys
side: both
size: 14
bound: false
# switchplate
switchplate:
- outer
- -keyholes
- -chip
pcbs:
main:
outlines:
outer:
outline: outer
footprints:
reset:
type: button
nets:
from: RST
to: GND
anchor:
ref: [matrix_inner_bottom, mirror_matrix_inner_bottom]
rotate: 90
mcu:
type: promicro
anchor:
rotate: 270
ref: [matrix_inner_top, mirror_matrix_inner_top]
shift: [0, -4]

6
Makefile Normal file
View file

@ -0,0 +1,6 @@
all: node_modules
node src/cli.js 23creus.yaml -o output
cp output/pcbs/main.kicad_pcb kicad/45treus/
node_modules:
npm ci

View file

@ -0,0 +1 @@
(kicad_pcb (version 4) (host kicad "dummy file") )

33
kicad/45treus/45treus.pro Normal file
View file

@ -0,0 +1,33 @@
update=22/05/2015 07:44:53
version=1
last_client=kicad
[general]
version=1
RootSch=
BoardNm=
[pcbnew]
version=1
LastNetListRead=
UseCmpFile=1
PadDrill=0.600000000000
PadDrillOvalY=0.600000000000
PadSizeH=1.500000000000
PadSizeV=1.500000000000
PcbTextSizeV=1.500000000000
PcbTextSizeH=1.500000000000
PcbTextThickness=0.300000000000
ModuleTextSizeV=1.000000000000
ModuleTextSizeH=1.000000000000
ModuleTextSizeThickness=0.150000000000
SolderMaskClearance=0.000000000000
SolderMaskMinWidth=0.000000000000
DrawSegmentWidth=0.200000000000
BoardOutlineThickness=0.100000000000
ModuleOutlineThickness=0.150000000000
[cvpcb]
version=1
NetIExt=net
[eeschema]
version=1
LibDir=
[eeschema/libraries]

View file

@ -0,0 +1,4 @@
EESchema Schematic File Version 2
EELAYER 25 0
EELAYER END
$EndSCHEMATC

View file

@ -0,0 +1 @@
0

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,33 @@
update=22/05/2015 07:44:53
version=1
last_client=kicad
[general]
version=1
RootSch=
BoardNm=
[pcbnew]
version=1
LastNetListRead=
UseCmpFile=1
PadDrill=0.600000000000
PadDrillOvalY=0.600000000000
PadSizeH=1.500000000000
PadSizeV=1.500000000000
PcbTextSizeV=1.500000000000
PcbTextSizeH=1.500000000000
PcbTextThickness=0.300000000000
ModuleTextSizeV=1.000000000000
ModuleTextSizeH=1.000000000000
ModuleTextSizeThickness=0.150000000000
SolderMaskClearance=0.000000000000
SolderMaskMinWidth=0.000000000000
DrawSegmentWidth=0.200000000000
BoardOutlineThickness=0.100000000000
ModuleOutlineThickness=0.150000000000
[cvpcb]
version=1
NetIExt=net
[eeschema]
version=1
LibDir=
[eeschema/libraries]

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,33 @@
update=22/05/2015 07:44:53
version=1
last_client=kicad
[general]
version=1
RootSch=
BoardNm=
[pcbnew]
version=1
LastNetListRead=
UseCmpFile=1
PadDrill=0.600000000000
PadDrillOvalY=0.600000000000
PadSizeH=1.500000000000
PadSizeV=1.500000000000
PcbTextSizeV=1.500000000000
PcbTextSizeH=1.500000000000
PcbTextThickness=0.300000000000
ModuleTextSizeV=1.000000000000
ModuleTextSizeH=1.000000000000
ModuleTextSizeThickness=0.150000000000
SolderMaskClearance=0.000000000000
SolderMaskMinWidth=0.000000000000
DrawSegmentWidth=0.200000000000
BoardOutlineThickness=0.100000000000
ModuleOutlineThickness=0.150000000000
[cvpcb]
version=1
NetIExt=net
[eeschema]
version=1
LibDir=
[eeschema/libraries]

File diff suppressed because it is too large Load diff

8
shell.nix Normal file
View file

@ -0,0 +1,8 @@
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
buildInputs = with pkgs; [
bashInteractive
nodejs-16_x
];
}