PCB layout done

This commit is contained in:
Bán Dénes 2020-07-20 23:17:43 +02:00
parent 852ebbcf95
commit fc0e58aa57
11 changed files with 234 additions and 46 deletions

View file

@ -7,14 +7,14 @@ module.exports = {
${p.at /* parametric position */} ${p.at /* parametric position */}
${''/* corner marks */} ${''/* corner marks */}
(fp_line (start -7 -6) (end -7 -7) (layer F.SilkS) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15))
(fp_line (start -7 7) (end -6 7) (layer F.SilkS) (width 0.15)) (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15))
(fp_line (start -6 -7) (end -7 -7) (layer F.SilkS) (width 0.15)) (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15))
(fp_line (start -7 7) (end -7 6) (layer F.SilkS) (width 0.15)) (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15))
(fp_line (start 7 6) (end 7 7) (layer F.SilkS) (width 0.15)) (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15))
(fp_line (start 7 -7) (end 6 -7) (layer F.SilkS) (width 0.15)) (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15))
(fp_line (start 6 7) (end 7 7) (layer F.SilkS) (width 0.15)) (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15))
(fp_line (start 7 -7) (end 7 -6) (layer F.SilkS) (width 0.15)) (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15))
${''/* pins */} ${''/* pins */}
(pad 1 thru_hole circle (at 2.5 -4.5) (size 2.25 2.25) (drill 1.47) (layers *.Cu *.Mask) ${p.net_from}) (pad 1 thru_hole circle (at 2.5 -4.5) (size 2.25 2.25) (drill 1.47) (layers *.Cu *.Mask) ${p.net_from})

View file

@ -7,14 +7,14 @@ module.exports = {
${p.at /* parametric position */} ${p.at /* parametric position */}
${''/* corner marks */} ${''/* corner marks */}
(fp_line (start -7 -6) (end -7 -7) (layer F.SilkS) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15))
(fp_line (start -7 7) (end -6 7) (layer F.SilkS) (width 0.15)) (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15))
(fp_line (start -6 -7) (end -7 -7) (layer F.SilkS) (width 0.15)) (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15))
(fp_line (start -7 7) (end -7 6) (layer F.SilkS) (width 0.15)) (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15))
(fp_line (start 7 6) (end 7 7) (layer F.SilkS) (width 0.15)) (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15))
(fp_line (start 7 -7) (end 6 -7) (layer F.SilkS) (width 0.15)) (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15))
(fp_line (start 6 7) (end 7 7) (layer F.SilkS) (width 0.15)) (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15))
(fp_line (start 7 -7) (end 7 -6) (layer F.SilkS) (width 0.15)) (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15))
${''/* pins */} ${''/* pins */}
(pad 1 thru_hole circle (at 5 -3.8) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) ${p.net_from}) (pad 1 thru_hole circle (at 5 -3.8) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) ${p.net_from})

View file

@ -4,6 +4,9 @@ module.exports = {
choc: require('./choc'), choc: require('./choc'),
diode: require('./diode'), diode: require('./diode'),
promicro: require('./promicro'), promicro: require('./promicro'),
slider: require('./slider'),
reset: require('./reset'),
rgb: require('./rgb'), rgb: require('./rgb'),
jstph: require('./jstph'),
pad: require('./pad') pad: require('./pad')
} }

33
src/footprints/jstph.js Normal file
View file

@ -0,0 +1,33 @@
module.exports = {
nets: ['pos', 'neg'],
params: {
side: 'F'
},
body: p => `
(module JST_PH_S2B-PH-K_02x2.00mm_Angled (layer F.Cu) (tedit 58D3FE32)
(descr "JST PH series connector, S2B-PH-K, side entry type, through hole, Datasheet: http://www.jst-mfg.com/product/pdf/eng/ePH.pdf")
(tags "connector jst ph")
${p.at /* parametric position */}
(fp_line (start -2.25 0.25) (end -2.25 -1.35) (layer ${p.param_side}.SilkS) (width 0.15))
(fp_line (start -2.25 -1.35) (end -2.95 -1.35) (layer ${p.param_side}.SilkS) (width 0.15))
(fp_line (start -2.95 -1.35) (end -2.95 6.25) (layer ${p.param_side}.SilkS) (width 0.15))
(fp_line (start -2.95 6.25) (end 2.95 6.25) (layer ${p.param_side}.SilkS) (width 0.15))
(fp_line (start 2.95 6.25) (end 2.95 -1.35) (layer ${p.param_side}.SilkS) (width 0.15))
(fp_line (start 2.95 -1.35) (end 2.25 -1.35) (layer ${p.param_side}.SilkS) (width 0.15))
(fp_line (start 2.25 -1.35) (end 2.25 0.25) (layer ${p.param_side}.SilkS) (width 0.15))
(fp_line (start 2.25 0.25) (end -2.25 0.25) (layer ${p.param_side}.SilkS) (width 0.15))
(fp_line (start -1 1.5) (end -1 2.0) (layer ${p.param_side}.SilkS) (width 0.15))
(fp_line (start -1.25 1.75) (end -0.75 1.75) (layer ${p.param_side}.SilkS) (width 0.15))
(pad 1 thru_hole rect (at -1 0 ${p.rot}) (size 1.2 1.7) (drill 0.75) (layers *.Cu *.Mask) ${p.net_pos})
(pad 2 thru_hole oval (at 1 0 ${p.rot}) (size 1.2 1.7) (drill 0.75) (layers *.Cu *.Mask) ${p.net_neg})
)
`
}

View file

@ -7,14 +7,14 @@ module.exports = {
${p.at /* parametric position */} ${p.at /* parametric position */}
${''/* corner marks */} ${''/* corner marks */}
(fp_line (start -7 -6) (end -7 -7) (layer F.SilkS) (width 0.15)) (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15))
(fp_line (start -7 7) (end -6 7) (layer F.SilkS) (width 0.15)) (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15))
(fp_line (start -6 -7) (end -7 -7) (layer F.SilkS) (width 0.15)) (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15))
(fp_line (start -7 7) (end -7 6) (layer F.SilkS) (width 0.15)) (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15))
(fp_line (start 7 6) (end 7 7) (layer F.SilkS) (width 0.15)) (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15))
(fp_line (start 7 -7) (end 6 -7) (layer F.SilkS) (width 0.15)) (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15))
(fp_line (start 6 7) (end 7 7) (layer F.SilkS) (width 0.15)) (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15))
(fp_line (start 7 -7) (end 7 -6) (layer F.SilkS) (width 0.15)) (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15))
${''/* pins */} ${''/* pins */}
(pad 1 thru_hole circle (at 2.54 -5.08) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) ${p.net_from}) (pad 1 thru_hole circle (at 2.54 -5.08) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) ${p.net_from})

View file

@ -4,18 +4,29 @@ module.exports = {
width: 1, width: 1,
height: 1, height: 1,
front: true, front: true,
back: true back: true,
text: '',
align: 'left',
mirrored: '!mirrored'
}, },
body: p => { body: p => {
let front = '' const layout = (toggle, side) => {
if (p.param_front) { if (!toggle) return ''
front = `(pad 1 smd rect (at 0 0 ${p.rot}) (size ${p.param_width} ${p.param_height}) (layers F.Cu F.Paste F.Mask) ${p.net_net})` let x = 0, y = 0
} const mirror = side == 'B' ? '(justify mirror)' : ''
const plus = (p.param_text.length + 1) * 0.5
let back = '' let align = p.param_align
if (p.param_back) { if (p.param_mirrored === true) {
back = `(pad 1 smd rect (at 0 0 ${p.rot}) (size ${p.param_width} ${p.param_height}) (layers B.Cu B.Paste B.Mask) ${p.net_net})` if (align == 'left') align = 'right'
else if (align == 'right') align = 'left'
}
if (align == 'left') x -= p.param_width / 2 + plus
if (align == 'right') x += p.param_width / 2 + plus
if (align == 'up') y += p.param_height / 2 + plus
if (align == 'down') y -= p.param_height / 2 + plus
const text = `(fp_text user ${p.param_text} (at ${x} ${y} ${p.rot}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror}))`
return `(pad 1 smd rect (at 0 0 ${p.rot}) (size ${p.param_width} ${p.param_height}) (layers ${side}.Cu ${side}.Paste ${side}.Mask) ${p.net_net})\n${text}`
} }
return ` return `
@ -25,8 +36,8 @@ module.exports = {
${p.at /* parametric position */} ${p.at /* parametric position */}
${''/* SMD pads */} ${''/* SMD pads */}
${front} ${layout(p.param_front, 'F')}
${back} ${layout(p.param_back, 'B')}
) )

View file

@ -13,21 +13,21 @@ module.exports = {
${p.at /* parametric position */} ${p.at /* parametric position */}
${''/* illustration of the (possible) USB port overhang */} ${''/* illustration of the (possible) USB port overhang */}
(fp_line (start -19.304 -3.556) (end -14.224 -3.556) (layer Dwgs.User) (width 0.25)) (fp_line (start -19.304 -3.556) (end -14.224 -3.556) (layer Dwgs.User) (width 0.15))
(fp_line (start -19.304 3.81) (end -19.304 -3.556) (layer Dwgs.User) (width 0.25)) (fp_line (start -19.304 3.81) (end -19.304 -3.556) (layer Dwgs.User) (width 0.15))
(fp_line (start -14.224 3.81) (end -19.304 3.81) (layer Dwgs.User) (width 0.25)) (fp_line (start -14.224 3.81) (end -19.304 3.81) (layer Dwgs.User) (width 0.15))
(fp_line (start -14.224 -3.556) (end -14.224 3.81) (layer Dwgs.User) (width 0.25)) (fp_line (start -14.224 -3.556) (end -14.224 3.81) (layer Dwgs.User) (width 0.15))
${''/* component outline */} ${''/* component outline */}
(fp_line (start -17.78 8.89) (end 15.24 8.89) (layer F.SilkS) (width 0.25)) (fp_line (start -17.78 8.89) (end 15.24 8.89) (layer F.SilkS) (width 0.15))
(fp_line (start 15.24 8.89) (end 15.24 -8.89) (layer F.SilkS) (width 0.25)) (fp_line (start 15.24 8.89) (end 15.24 -8.89) (layer F.SilkS) (width 0.15))
(fp_line (start 15.24 -8.89) (end -17.78 -8.89) (layer F.SilkS) (width 0.25)) (fp_line (start 15.24 -8.89) (end -17.78 -8.89) (layer F.SilkS) (width 0.15))
(fp_line (start -17.78 -8.89) (end -17.78 8.89) (layer F.SilkS) (width 0.25)) (fp_line (start -17.78 -8.89) (end -17.78 8.89) (layer F.SilkS) (width 0.15))
${''/* extra border around "RAW", in case the rectangular shape is not distinctive enough */} ${''/* extra border around "RAW", in case the rectangular shape is not distinctive enough */}
(fp_line (start -15.24 6.35) (end -12.7 6.35) (layer F.SilkS) (width 0.25)) (fp_line (start -15.24 6.35) (end -12.7 6.35) (layer F.SilkS) (width 0.15))
(fp_line (start -15.24 6.35) (end -15.24 8.89) (layer F.SilkS) (width 0.25)) (fp_line (start -15.24 6.35) (end -15.24 8.89) (layer F.SilkS) (width 0.15))
(fp_line (start -12.7 6.35) (end -12.7 8.89) (layer F.SilkS) (width 0.25)) (fp_line (start -12.7 6.35) (end -12.7 8.89) (layer F.SilkS) (width 0.15))
${''/* pin names */} ${''/* pin names */}
(fp_text user RAW (at -13.97 4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) (fp_text user RAW (at -13.97 4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))

33
src/footprints/reset.js Normal file
View file

@ -0,0 +1,33 @@
module.exports = {
nets: ['from', 'to'],
params: {
side: 'F'
},
body: p => `
(module E73:SW_TACT_ALPS_SKQGABE010 (layer F.Cu) (tstamp 5BF2CC94)
(descr "Low-profile SMD Tactile Switch, https://www.e-switch.com/system/asset/product_line/data_sheet/165/TL3342.pdf")
(tags "SPST Tactile Switch")
${p.at /* parametric position */}
${'' /* outline */}
(fp_line (start 2.75 1.25) (end 1.25 2.75) (layer ${p.param_side}.SilkS) (width 0.15))
(fp_line (start 2.75 -1.25) (end 1.25 -2.75) (layer ${p.param_side}.SilkS) (width 0.15))
(fp_line (start 2.75 -1.25) (end 2.75 1.25) (layer ${p.param_side}.SilkS) (width 0.15))
(fp_line (start -1.25 2.75) (end 1.25 2.75) (layer ${p.param_side}.SilkS) (width 0.15))
(fp_line (start -1.25 -2.75) (end 1.25 -2.75) (layer ${p.param_side}.SilkS) (width 0.15))
(fp_line (start -2.75 1.25) (end -1.25 2.75) (layer ${p.param_side}.SilkS) (width 0.15))
(fp_line (start -2.75 -1.25) (end -1.25 -2.75) (layer ${p.param_side}.SilkS) (width 0.15))
(fp_line (start -2.75 -1.25) (end -2.75 1.25) (layer ${p.param_side}.SilkS) (width 0.15))
${'' /* pins */}
(pad 1 smd rect (at -3.1 -1.85 ${p.rot}) (size 1.8 1.1) (layers ${p.param_side}.Cu ${p.param_side}.Paste ${p.param_side}.Mask) ${p.net_from})
(pad 1 smd rect (at 3.1 -1.85 ${p.rot}) (size 1.8 1.1) (layers ${p.param_side}.Cu ${p.param_side}.Paste ${p.param_side}.Mask) ${p.net_from})
(pad 2 smd rect (at -3.1 1.85 ${p.rot}) (size 1.8 1.1) (layers ${p.param_side}.Cu ${p.param_side}.Paste ${p.param_side}.Mask) ${p.net_to})
(pad 2 smd rect (at 3.1 1.85 ${p.rot}) (size 1.8 1.1) (layers ${p.param_side}.Cu ${p.param_side}.Paste ${p.param_side}.Mask) ${p.net_to})
)
`
}

47
src/footprints/slider.js Normal file
View file

@ -0,0 +1,47 @@
module.exports = {
nets: ['from', 'to'],
params: {
side: 'F'
},
body: p => {
const sign = p.param_side == 'F' ? '-' : ''
return `
(module E73:SPDT_C128955 (layer F.Cu) (tstamp 5BF2CC3C)
${p.at /* parametric position */}
${'' /* outline */}
(fp_line (start 1.95 -1.35) (end -1.95 -1.35) (layer ${p.param_side}.SilkS) (width 0.15))
(fp_line (start 0 -1.35) (end -3.3 -1.35) (layer ${p.param_side}.SilkS) (width 0.15))
(fp_line (start -3.3 -1.35) (end -3.3 1.5) (layer ${p.param_side}.SilkS) (width 0.15))
(fp_line (start -3.3 1.5) (end 3.3 1.5) (layer ${p.param_side}.SilkS) (width 0.15))
(fp_line (start 3.3 1.5) (end 3.3 -1.35) (layer ${p.param_side}.SilkS) (width 0.15))
(fp_line (start 0 -1.35) (end 3.3 -1.35) (layer ${p.param_side}.SilkS) (width 0.15))
${'' /* extra indicator for the slider */}
(fp_line (start -1.95 -3.85) (end 1.95 -3.85) (layer Dwgs.User) (width 0.15))
(fp_line (start 1.95 -3.85) (end 1.95 -1.35) (layer Dwgs.User) (width 0.15))
(fp_line (start -1.95 -1.35) (end -1.95 -3.85) (layer Dwgs.User) (width 0.15))
${'' /* bottom cutouts */}
(pad "" np_thru_hole circle (at 1.5 0) (size 1 1) (drill 0.9) (layers *.Cu *.Mask))
(pad "" np_thru_hole circle (at -1.5 0) (size 1 1) (drill 0.9) (layers *.Cu *.Mask))
${'' /* pins */}
(pad 1 smd rect (at 2.25 2.075 ${p.rot}) (size 0.9 1.25) (layers ${p.param_side}.Cu ${p.param_side}.Paste ${p.param_side}.Mask) ${p.net_from})
(pad 2 smd rect (at ${sign}0.75 2.075 ${p.rot}) (size 0.9 1.25) (layers ${p.param_side}.Cu ${p.param_side}.Paste ${p.param_side}.Mask) ${p.net_to})
(pad 3 smd rect (at -2.25 2.075 ${p.rot}) (size 0.9 1.25) (layers ${p.param_side}.Cu ${p.param_side}.Paste ${p.param_side}.Mask))
${'' /* side mounts */}
(pad "" smd rect (at 3.7 -1.1 ${p.rot}) (size 0.9 0.9) (layers ${p.param_side}.Cu ${p.param_side}.Paste ${p.param_side}.Mask))
(pad "" smd rect (at 3.7 1.1 ${p.rot}) (size 0.9 0.9) (layers ${p.param_side}.Cu ${p.param_side}.Paste ${p.param_side}.Mask))
(pad "" smd rect (at -3.7 1.1 ${p.rot}) (size 0.9 0.9) (layers ${p.param_side}.Cu ${p.param_side}.Paste ${p.param_side}.Mask))
(pad "" smd rect (at -3.7 -1.1 ${p.rot}) (size 0.9 0.9) (layers ${p.param_side}.Cu ${p.param_side}.Paste ${p.param_side}.Mask))
)
`
}
}

View file

@ -214,6 +214,7 @@ exports.parse = (config = {}) => {
const mp = p.clone().mirror(axis) const mp = p.clone().mirror(axis)
mp.meta = a.extend(mp.meta, mp.meta.mirror || {}) mp.meta = a.extend(mp.meta, mp.meta.mirror || {})
mp.meta.mirrored = true mp.meta.mirrored = true
p.meta.mirrored = false
const new_name = `mirror_${name}` const new_name = `mirror_${name}`
mp.meta.name = new_name mp.meta.name = new_name
mirrored_points[new_name] = mp mirrored_points[new_name] = mp

View file

@ -15,6 +15,7 @@ points:
bind: [,15,-1] bind: [,15,-1]
key: key:
column_net: P1 column_net: P1
column_mark: P
ring: ring:
stagger: 12 stagger: 12
rows: rows:
@ -26,6 +27,7 @@ points:
bind: [,10] bind: [,10]
key: key:
column_net: P0 column_net: P0
column_mark: R
middle: middle:
stagger: 5 stagger: 5
rows: rows:
@ -36,6 +38,7 @@ points:
top: top:
key: key:
column_net: P2 column_net: P2
column_mark: M
index: index:
stagger: -6 stagger: -6
rows: rows:
@ -47,6 +50,7 @@ points:
bind: [,,,10] bind: [,,,10]
key: key:
column_net: P3 column_net: P3
column_mark: X
inner: inner:
stagger: -2 stagger: -2
rows: rows:
@ -58,21 +62,28 @@ points:
bind: [,,,10] bind: [,,,10]
key: key:
column_net: P4 column_net: P4
column_mark: I
rows: rows:
bottom: bottom:
bind: [10] bind: [10]
row_net: P16 row_net: P16
row_mark: LB
mirror: mirror:
row_net: P7 row_net: P7
row_mark: RB
home: home:
bind: [10] bind: [10]
row_net: P14 row_net: P14
row_mark: LH
mirror: mirror:
row_net: P6 row_net: P6
row_mark: RH
top: top:
row_net: P15 row_net: P15
row_mark: LT
mirror: mirror:
row_net: P5 row_net: P5
row_mark: RT
s19: s19:
extends: matrix extends: matrix
columns: columns:
@ -103,6 +114,8 @@ points:
width: 2 width: 2
height: 2 height: 2
front: false front: false
text: 'E'
align: right
key: key:
footprints: footprints:
row_ext: row_ext:
@ -115,6 +128,8 @@ points:
width: 2 width: 2
height: 2 height: 2
front: false front: false
text: '!row_mark'
align: right
ring: ring:
rows: rows:
@ -179,6 +194,7 @@ points:
width: 2 width: 2
height: 2 height: 2
front: false front: false
text: '!column_mark'
bottom: bottom:
footprints: footprints:
diode: diode:
@ -194,6 +210,7 @@ points:
width: 2 width: 2
height: 2 height: 2
front: false front: false
text: '!column_mark'
key: key:
tags: tags:
s19: true s19: true
@ -288,6 +305,8 @@ points:
width: 2 width: 2
height: 2 height: 2
front: false front: false
text: '!row_mark'
align: right
home: home:
spread: 21.25 spread: 21.25
@ -318,6 +337,7 @@ points:
rows: rows:
thumb: thumb:
row_net: P10 row_net: P10
row_mark: LF
footprints: footprints:
diode: diode:
anchor: anchor:
@ -325,6 +345,7 @@ points:
rotate: 180 rotate: 180
mirror: mirror:
row_net: P8 row_net: P8
row_mark: RF
footprints: footprints:
diode: diode:
anchor: anchor:
@ -602,6 +623,31 @@ pcbs:
- mirror_s18_inner_top - mirror_s18_inner_top
shift: [0, -23] shift: [0, -23]
rotate: 270 rotate: 270
slider:
type: slider
anchor:
ref:
- s18_inner_top
- mirror_s18_inner_top
shift: [0, -7.5]
nets:
from: RAWER
to: RAW
params:
side: B
reset:
type: reset
anchor:
ref:
- s18_inner_top
- mirror_s18_inner_top
shift: [0, -17]
rotate: 90
nets:
from: RST
to: GND
params:
side: B
extra_row_left: extra_row_left:
type: pad type: pad
anchor: anchor:
@ -615,6 +661,8 @@ pcbs:
width: 3 width: 3
height: 3 height: 3
front: false front: false
text: 'LN'
align: right
extra_row_right: extra_row_right:
type: pad type: pad
anchor: anchor:
@ -628,6 +676,18 @@ pcbs:
width: 3 width: 3
height: 3 height: 3
front: false front: false
text: 'RN'
battery:
type: jstph
anchor:
ref:
- matrix_inner_bottom
- mirror_matrix_inner_bottom
shift: [0, -43]
rotate: 180
nets:
pos: RAWER
neg: GND
led: led:
type: rgb type: rgb
anchor: anchor: