initial commit
Some checks failed
kibot / erc (push) Failing after 2s
kibot / drc (push) Failing after -7s
kibot / generate_outputs (push) Successful in 21s

This commit is contained in:
Brendan Haines 2024-12-05 22:34:11 -07:00
commit 95a61bcfc7
15 changed files with 3328 additions and 0 deletions

45
.github/workflows/kibot.yml vendored Normal file
View File

@ -0,0 +1,45 @@
name: kibot
on: [push]
jobs:
erc:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
ssh-strict: false
fetch-depth: 2
- uses: INTI-CMNB/KiBot@v2_k8
with:
config: config_erc.kibot.yaml
dir: output
drc:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
ssh-strict: false
fetch-depth: 2
- uses: INTI-CMNB/KiBot@v2_k8
with:
config: config_drc.kibot.yaml
dir: output
generate_outputs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
fetch-depth: 2
- uses: INTI-CMNB/KiBot@v2_k8
with:
config: config.kibot.yaml
dir: output
- uses: actions/upload-artifact@v3
with:
name: output
path: output

8
.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
# kicad backup/cache files
*-backups
*.bak
~*.lck
fp-info-cache
# prerelease outputs directory
outputs

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "common_libraries"]
path = common_libraries
url = git@git.brendanhaines.com:brendanhaines/kicad.git

1
common_libraries Submodule

@ -0,0 +1 @@
Subproject commit fbdc8f452a8e5e72cb42ae5f8dd5b018994030ba

450
config.kibot.yaml Normal file
View File

@ -0,0 +1,450 @@
# This is a working example.
# For a more complete reference use `--example`
kibot:
version: 1
global:
filters:
- number: 1007
- number: 1015
- number: 58
import:
- file: Elecrow
definitions:
_KIBOT_MANF_DIR: Manufacturers/Elecrow
- file: FusionPCB
definitions:
_KIBOT_MANF_DIR: Manufacturers/FusionPCB
- file: JLCPCB
definitions:
_KIBOT_MANF_DIR: Manufacturers/JLCPCB
_KIBOT_POS_PRE_TRANSFORM: '[''_kicost_rename'', ''_rot_footprint'']'
_KIBOT_BOM_ENABLED: 'false'
- file: MacroFab_XYRS
- file: PCBWay
definitions:
_KIBOT_MANF_DIR: Manufacturers/PCBWay
preflight:
set_text_variables:
- name: GIT_HASH
command: "git rev-parse --short HEAD"
- name: PCB_REVISION
command: 'if [ $GITHUB_REF_TYPE = tag ]; then echo "$GITHUB_REF_NAME"; else echo "UNRELEASED"; fi'
outputs:
- name: basic_boardview
comment: Board View export
type: boardview
dir: Assembly
- name: generic_bom_csv
comment: Generic Bill of Materials in CSV format
type: bom
dir: BoM/Generic
options:
format: CSV
columns:
- Row
- Description
- Part
- Part Lib
- References
- field: Value
join:
- voltage
- Footprint
- Footprint Lib
- Quantity Per PCB
- Build Quantity
- Status
- Datasheet
- Sheetpath
- Source BoM
- Reference
- Manufacturer
- ManufacturerPartNumber
- Supplier
- SupplierPartNumber
- Populate
- FieldName
- Voltage
- Precision
count_smd_tht: true
- name: positional_bom_html
comment: Positional Bill of Materials in HTML format
type: bom
dir: BoM/Positional
options:
format: HTML
columns: &id001
- Row
- Description
- Part
- Part Lib
- References
- Value
- Footprint
- Footprint Lib
- Quantity Per PCB
- Build Quantity
- Status
- Datasheet
- Sheetpath
- Source BoM
- Footprint X
- Footprint Y
- Footprint Rot
- Footprint Side
- Footprint Type
- Footprint Populate
- Footprint X-Size
- Footprint Y-Size
count_smd_tht: true
html:
style: modern-red
- name: positional_bom_xlsx
comment: Positional Bill of Materials in XLSX format
type: bom
dir: BoM/Positional
options:
format: XLSX
columns: *id001
count_smd_tht: true
xlsx:
style: modern-red
- name: costs_bom_xlsx
comment: Costs Bill of Materials in XLSX format
type: bom
dir: BoM/Costs
options:
format: XLSX
count_smd_tht: true
xlsx:
style: modern-green
kicost: true
specs: true
kicost_api_disable: KitSpace
pre_transform: _kicost_rename
# - name: basic_diff_pcb
# comment: PCB diff between the last two changes
# type: diff
# dir: diff
# layers:
# - layer: F.Cu
# suffix: F_Cu
# description: Front copper
# - layer: F.Paste
# suffix: F_Paste
# description: Front solder paste
# - layer: F.Silkscreen
# suffix: F_Silkscreen
# description: Front silkscreen (artwork)
# - layer: F.Mask
# suffix: F_Mask
# description: Front soldermask (negative)
# - layer: Edge.Cuts
# suffix: Edge_Cuts
# description: Board shape
# - layer: F.Courtyard
# suffix: F_Courtyard
# description: Front courtyard area
# - layer: F.Fab
# suffix: F_Fab
# description: Front documentation
# options:
# old: HEAD~
# old_type: git
# new: HEAD
# new_type: git
# add_link_id: true
# - name: basic_diff_sch
# comment: Schematic diff between the last two changes
# type: diff
# dir: diff
# options:
# old: HEAD~
# old_type: git
# new: HEAD
# new_type: git
# add_link_id: true
# pcb: false
- name: basic_download_datasheets
comment: Download the datasheets
type: download_datasheets
dir: Datasheets
- name: basic_excellon
comment: Drill files in EXCELLON format
type: excellon
dir: Gerbers_and_Drill
options:
map: pdf
- name: basic_gerb_drill
comment: Drill files in GERB_DRILL format
type: gerb_drill
dir: Gerbers_and_Drill
options:
map: gerber
- name: gerber_modern
comment: Gerbers in modern format, recommended by the standard
type: gerber
dir: Gerbers_and_Drill
layers:
- layer: F.Cu
suffix: F_Cu
description: Front copper
- layer: In1.Cu
suffix: In1_Cu
description: Inner layer 1 copper
- layer: In2.Cu
suffix: In2_Cu
description: Inner layer 2 copper
- layer: B.Cu
suffix: B_Cu
description: Back copper
- layer: F.Paste
suffix: F_Paste
description: Front solder paste
- layer: B.Paste
suffix: B_Paste
description: Back solder paste
- layer: F.Silkscreen
suffix: F_Silkscreen
description: Front silkscreen (artwork)
- layer: B.Silkscreen
suffix: B_Silkscreen
description: Back silkscreen (artwork)
- layer: F.Mask
suffix: F_Mask
description: Front soldermask (negative)
- layer: B.Mask
suffix: B_Mask
description: Back soldermask (negative)
- layer: Edge.Cuts
suffix: Edge_Cuts
description: Board shape
- layer: F.Courtyard
suffix: F_Courtyard
description: Front courtyard area
- layer: B.Courtyard
suffix: B_Courtyard
description: Back courtyard area
- layer: F.Fab
suffix: F_Fab
description: Front documentation
- layer: B.Fab
suffix: B_Fab
description: Back documentation
# - name: basic_ibom
# comment: Interactive HTML BoM
# type: ibom
# dir: Assembly
- name: basic_info
comment: Information about the run
type: info
dir: .
- name: basic_kicanvas
comment: Web page to browse the schematic and/or PCB
type: kicanvas
dir: Browse
options:
source:
- schematic
- pcb
- name: renderer_for_present
comment: Renderer for the presentation
type: pcbdraw
dir: Render_for_presentation
run_by_default: false
- name: gerbers_for_present
comment: Gerbers for the presentation
type: gerber
dir: Gerber_for_presentation
layers: copper
run_by_default: false
# - name: basic_kiri
# comment: Interactive diff between commits
# type: kiri
# dir: diff
# layers:
# - layer: F.Cu
# suffix: F_Cu
# description: Front copper
# - layer: F.Paste
# suffix: F_Paste
# description: Front solder paste
# - layer: F.Silkscreen
# suffix: F_Silkscreen
# description: Front silkscreen (artwork)
# - layer: F.Mask
# suffix: F_Mask
# description: Front soldermask (negative)
# - layer: Edge.Cuts
# suffix: Edge_Cuts
# description: Board shape
# - layer: F.Courtyard
# suffix: F_Courtyard
# description: Front courtyard area
# - layer: F.Fab
# suffix: F_Fab
# description: Front documentation
# options:
# max_commits: 4
- name: basic_navigate_results
comment: Web page to browse the results
type: navigate_results
dir: Browse
options:
link_from_root: index.html
skip_not_run: true
- name: ipc_netlist
comment: IPC-D-356 netlist for testing
type: netlist
dir: Export
options:
format: ipc
- name: basic_pcb_print_pdf
comment: PCB
type: pcb_print
dir: PCB/PDF
options:
format: PDF
pages:
- layers:
- layer: F.Cu
- layer: F.Mask
color: '#14332440'
- layer: F.Paste
- layer: F.Silkscreen
- layer: Edge.Cuts
sheet: Front copper
- layers:
- layer: B.Cu
- layer: B.Mask
color: '#14332440'
- layer: B.Paste
- layer: B.Silkscreen
- layer: Edge.Cuts
sheet: Back copper
- layers:
- layer: F.Courtyard
- layer: Edge.Cuts
sheet: Front courtyard area
- layers:
- layer: B.Courtyard
- layer: Edge.Cuts
sheet: Back courtyard area
- layers:
- layer: F.Fab
- layer: Edge.Cuts
sheet: Front documentation
- layers:
- layer: B.Fab
- layer: Edge.Cuts
sheet: Back documentation
keep_temporal_files: true
- name: render_2d_svg_top
type: pcbdraw
dir: PCB/2D_render/jlcpcb_green_enig
options:
style: jlcpcb-green-enig
format: svg
- name: render_2d_svg_bottom
type: pcbdraw
dir: PCB/2D_render/jlcpcb_green_enig
options:
style: jlcpcb-green-enig
format: svg
bottom: true
- name: render_2d_png_top
type: pcbdraw
dir: PCB/2D_render/jlcpcb_green_enig
options:
style: jlcpcb-green-enig
format: png
dpi: 1200
- name: render_2d_png_bottom
type: pcbdraw
dir: PCB/2D_render/jlcpcb_green_enig
options:
style: jlcpcb-green-enig
format: png
dpi: 1200
bottom: true
- name: basic_pdf_sch_print
comment: Schematic in PDF format
type: pdf_sch_print
dir: Schematic
- name: basic_position_ASCII
comment: Components position for Pick & Place
type: position
dir: Position
options:
format: ASCII
only_smd: false
separate_files_for_front_and_back: false
- name: basic_position_CSV
comment: Components position for Pick & Place
type: position
dir: Position
options:
format: CSV
only_smd: false
separate_files_for_front_and_back: false
- name: basic_render_3d_top
comment: 3D view from top
type: render_3d
dir: 3D
options:
ray_tracing: true
orthographic: true
# - name: basic_render_3d_30deg
# comment: 3D view from 30 degrees
# type: render_3d
# dir: 3D
# output_id: 30deg
# options:
# ray_tracing: true
# rotate_x: 3
# rotate_z: -2
- name: report_simple
comment: Simple design report
type: report
output_id: _simple
options:
template: simple_ASCII
do_convert: true
- name: report_full
comment: Full design report
type: report
options:
template: full_SVG
do_convert: true
- name: basic_step
comment: 3D model in STEP format
type: step
dir: 3D
...
definitions:
_KIBOT_MANF_DIR_COMP: Manufacturers
_KIBOT_GERBER_LAYERS: "- copper\n\
\ - F.SilkS\n\
\ - B.SilkS\n\
\ - F.Mask\n\
\ - B.Mask\n\
\ - F.Paste\n\
\ - B.Paste\n\
\ - Edge.Cuts"

5
config_drc.kibot.yaml Normal file
View File

@ -0,0 +1,5 @@
kibot:
version: 1
preflight:
drc: true

5
config_erc.kibot.yaml Normal file
View File

@ -0,0 +1,5 @@
kibot:
version: 1
preflight:
erc: true

7
fp-lib-table Normal file
View File

@ -0,0 +1,7 @@
(fp_lib_table
(version 7)
(lib (name "common")(type "KiCad")(uri "${KIPRJMOD}/../common_libraries/common.pretty")(options "")(descr ""))
(lib (name "jst")(type "KiCad")(uri "${KIPRJMOD}/../common_libraries/jst.pretty")(options "")(descr ""))
(lib (name "molex")(type "KiCad")(uri "${KIPRJMOD}/../common_libraries/molex.pretty")(options "")(descr ""))
(lib (name "samtec")(type "KiCad")(uri "${KIPRJMOD}/../common_libraries/samtec.pretty")(options "")(descr ""))
)

7
pluto_shield.kicad_dru Normal file
View File

@ -0,0 +1,7 @@
(version 1)
(rule IgnoreSilkScreenGraphicOverlap
(condition "A.Type == 'Graphic' && B.Type == 'Graphic'")
(constraint silk_clearance)
(severity ignore)
)

476
pluto_shield.kicad_pcb Normal file
View File

@ -0,0 +1,476 @@
(kicad_pcb (version 20221018) (generator pcbnew)
(general
(thickness 1.6)
)
(paper "A")
(title_block
(title "${PROJECT_NAME}")
(rev "${PCB_REVISION}")
(company "BRENDANHAINES.COM")
)
(layers
(0 "F.Cu" signal)
(1 "In1.Cu" signal)
(2 "In2.Cu" signal)
(31 "B.Cu" signal)
(32 "B.Adhes" user "B.Adhesive")
(33 "F.Adhes" user "F.Adhesive")
(34 "B.Paste" user)
(35 "F.Paste" user)
(36 "B.SilkS" user "B.Silkscreen")
(37 "F.SilkS" user "F.Silkscreen")
(38 "B.Mask" user)
(39 "F.Mask" user)
(40 "Dwgs.User" user "User.Drawings")
(41 "Cmts.User" user "User.Comments")
(42 "Eco1.User" user "User.Eco1")
(43 "Eco2.User" user "User.Eco2")
(44 "Edge.Cuts" user)
(45 "Margin" user)
(46 "B.CrtYd" user "B.Courtyard")
(47 "F.CrtYd" user "F.Courtyard")
(48 "B.Fab" user)
(49 "F.Fab" user)
(50 "User.1" user)
(51 "User.2" user)
(52 "User.3" user)
(53 "User.4" user)
(54 "User.5" user)
(55 "User.6" user)
(56 "User.7" user)
(57 "User.8" user)
(58 "User.9" user)
)
(setup
(stackup
(layer "F.SilkS" (type "Top Silk Screen") (color "White"))
(layer "F.Paste" (type "Top Solder Paste"))
(layer "F.Mask" (type "Top Solder Mask") (color "Green") (thickness 0.01))
(layer "F.Cu" (type "copper") (thickness 0.035))
(layer "dielectric 1" (type "core") (thickness 0.48) (material "FR4") (epsilon_r 4.5) (loss_tangent 0.02))
(layer "In1.Cu" (type "copper") (thickness 0.035))
(layer "dielectric 2" (type "prepreg") (thickness 0.48) (material "FR4") (epsilon_r 4.5) (loss_tangent 0.02))
(layer "In2.Cu" (type "copper") (thickness 0.035))
(layer "dielectric 3" (type "core") (thickness 0.48) (material "FR4") (epsilon_r 4.5) (loss_tangent 0.02))
(layer "B.Cu" (type "copper") (thickness 0.035))
(layer "B.Mask" (type "Bottom Solder Mask") (color "Green") (thickness 0.01))
(layer "B.Paste" (type "Bottom Solder Paste"))
(layer "B.SilkS" (type "Bottom Silk Screen") (color "White"))
(copper_finish "ENIG")
(dielectric_constraints no)
)
(pad_to_mask_clearance 0)
(pcbplotparams
(layerselection 0x00010fc_ffffffff)
(plot_on_all_layers_selection 0x0000000_00000000)
(disableapertmacros false)
(usegerberextensions false)
(usegerberattributes true)
(usegerberadvancedattributes true)
(creategerberjobfile true)
(dashed_line_dash_ratio 12.000000)
(dashed_line_gap_ratio 3.000000)
(svgprecision 4)
(plotframeref false)
(viasonmask false)
(mode 1)
(useauxorigin false)
(hpglpennumber 1)
(hpglpenspeed 20)
(hpglpendiameter 15.000000)
(dxfpolygonmode true)
(dxfimperialunits true)
(dxfusepcbnewfont true)
(psnegative false)
(psa4output false)
(plotreference true)
(plotvalue true)
(plotinvisibletext false)
(sketchpadsonfab false)
(subtractmaskfromsilk false)
(outputformat 1)
(mirror false)
(drillshape 1)
(scaleselection 1)
(outputdirectory "")
)
)
(property "PCB_REVISION" "0.0")
(property "PROJECT_NAME" "PROJECT_NAME")
(net 0 "")
(net 1 "GND")
(footprint "common:MH120X230_#4" (layer "F.Cu")
(tstamp 0ed882a0-e4ce-4f18-bef6-9c3cccbc2678)
(at 123.19 123.19)
(descr "Mounting Hole, #4")
(property "Sheetfile" "jlcpcb_template.kicad_sch")
(property "Sheetname" "")
(property "ki_description" "Hole")
(path "/79801d06-18e7-498c-8d4e-cc6cc5060c9d")
(zone_connect 2)
(attr exclude_from_pos_files)
(fp_text reference "MH3" (at 0 0) (layer "F.SilkS") hide
(effects (font (size 0.762 0.762) (thickness 0.127)))
(tstamp 14ecb36f-08db-4212-9cc8-01cdb58e47f7)
)
(fp_text value "Mounting_Hole" (at 0 0) (layer "F.Fab") hide
(effects (font (size 0.762 0.762) (thickness 0.127)))
(tstamp 27613306-b783-4cb9-acf3-88e3b21dd5a5)
)
(fp_circle (center 0 0) (end 3.175 0)
(stroke (width 0.1778) (type solid)) (fill none) (layer "F.SilkS") (tstamp ae932b76-a5d5-4332-9618-4f8af0eeca49))
(pad "1" thru_hole circle (at 0 0) (size 5.842 5.842) (drill 3.048) (layers "*.Cu" "*.Mask")
(net 1 "GND") (pinfunction "1") (pintype "passive") (zone_connect 2) (tstamp 706a15cb-e926-49ae-94cd-c84e7fda89cd))
)
(footprint "common:LOGO_BH" (layer "F.Cu")
(tstamp 2c2034ad-58b7-4a90-9915-abf69702fa36)
(at 99.06 116.84)
(property "Sheetfile" "jlcpcb_template.kicad_sch")
(property "Sheetname" "")
(property "exclude_from_bom" "")
(path "/34f9aa7c-9331-4a4e-ada5-723181f4dcaa")
(attr smd exclude_from_pos_files exclude_from_bom allow_missing_courtyard)
(fp_text reference "LOGO1" (at 0 -0.3175 unlocked) (layer "F.SilkS") hide
(effects (font (size 0.635 0.635) (thickness 0.127)))
(tstamp a9243f51-eda4-4f1b-a757-cd7225d8ae98)
)
(fp_text value "~" (at 0 0.635 unlocked) (layer "F.Fab") hide
(effects (font (size 0.635 0.635) (thickness 0.127)))
(tstamp 8e493312-c025-4c71-8e0c-010a596ed2b6)
)
(fp_poly
(pts
(xy 0.340334 -4.906285)
(xy 0.426334 -4.89815)
(xy 0.511644 -4.88464)
(xy 0.595939 -4.865795)
(xy 0.678894 -4.8417)
(xy 0.760165 -4.81244)
(xy 0.839439 -4.778135)
(xy 0.916405 -4.73892)
(xy 0.990754 -4.69495)
(xy 1.062204 -4.646395)
(xy 1.130454 -4.59345)
(xy 1.195245 -4.536325)
(xy 1.256325 -4.475245)
(xy 1.313449 -4.410455)
(xy 1.366394 -4.342205)
(xy 1.414949 -4.270755)
(xy 1.45892 -4.196405)
(xy 1.498135 -4.11944)
(xy 1.532439 -4.040165)
(xy 1.561699 -3.958895)
(xy 1.585795 -3.87594)
(xy 1.60464 -3.791645)
(xy 1.61815 -3.706335)
(xy 1.626285 -3.620335)
(xy 1.629 -3.534)
(xy 1.626285 -3.447665)
(xy 1.61815 -3.361665)
(xy 1.60464 -3.276355)
(xy 1.585795 -3.19206)
(xy 1.561699 -3.109105)
(xy 1.532439 -3.027835)
(xy 1.498135 -2.94856)
(xy 1.45892 -2.871594)
(xy 1.414949 -2.797245)
(xy 1.366395 -2.725796)
(xy 1.31345 -2.657543)
(xy 1.256325 -2.592754)
(xy 1.195245 -2.531674)
(xy 1.130455 -2.474552)
(xy 1.062205 -2.421604)
(xy 0.990755 -2.373051)
(xy 0.916405 -2.329083)
(xy 0.83944 -2.289867)
(xy 0.760165 -2.255558)
(xy 0.678895 -2.226299)
(xy 0.59594 -2.202206)
(xy 0.511645 -2.183361)
(xy 0.426335 -2.169849)
(xy 0.340335 -2.161717)
(xy 0.254 -2.159)
(xy 0.254 -0.909001)
(xy -0.246 -0.909001)
(xy -0.246 -2.159)
(xy -0.996 -2.159)
(xy -0.996 -0.909001)
(xy -1.496 -0.909001)
(xy -1.496 -3.909)
(xy -0.996 -3.909)
(xy -0.996 -2.659)
(xy -0.246 -2.659)
(xy -0.246 -3.909)
(xy 0.254 -3.909)
(xy 0.254 -2.659)
(xy 0.30894 -2.660733)
(xy 0.363665 -2.665905)
(xy 0.417955 -2.674503)
(xy 0.4716 -2.686497)
(xy 0.524385 -2.701832)
(xy 0.576105 -2.720448)
(xy 0.62655 -2.742283)
(xy 0.67553 -2.767238)
(xy 0.72284 -2.795215)
(xy 0.768305 -2.826115)
(xy 0.81174 -2.859806)
(xy 0.852975 -2.89616)
(xy 0.89184 -2.935025)
(xy 0.928195 -2.97626)
(xy 0.961885 -3.019695)
(xy 0.992785 -3.06516)
(xy 1.02076 -3.11247)
(xy 1.04572 -3.16145)
(xy 1.067555 -3.211895)
(xy 1.08617 -3.263615)
(xy 1.101505 -3.3164)
(xy 1.113495 -3.370045)
(xy 1.122094 -3.424335)
(xy 1.12727 -3.47906)
(xy 1.129 -3.534)
(xy 1.12727 -3.58894)
(xy 1.122094 -3.643665)
(xy 1.113495 -3.697955)
(xy 1.101505 -3.7516)
(xy 1.08617 -3.804386)
(xy 1.067555 -3.856106)
(xy 1.04572 -3.90655)
(xy 1.02076 -3.95553)
(xy 0.992785 -4.00284)
(xy 0.961885 -4.048305)
(xy 0.928195 -4.09174)
(xy 0.89184 -4.132975)
(xy 0.852975 -4.17184)
(xy 0.81174 -4.208195)
(xy 0.768305 -4.241885)
(xy 0.72284 -4.272785)
(xy 0.67553 -4.30076)
(xy 0.62655 -4.32572)
(xy 0.576105 -4.347555)
(xy 0.524385 -4.36617)
(xy 0.4716 -4.381505)
(xy 0.417955 -4.393495)
(xy 0.363665 -4.402095)
(xy 0.30894 -4.40727)
(xy 0.254 -4.409)
(xy -1.996 -4.409)
(xy -1.996 -0.409001)
(xy 0.254 -0.409001)
(xy 0.30894 -0.410731)
(xy 0.363665 -0.415906)
(xy 0.417955 -0.424506)
(xy 0.4716 -0.436496)
(xy 0.524385 -0.451831)
(xy 0.576105 -0.470446)
(xy 0.62655 -0.492281)
(xy 0.67553 -0.517241)
(xy 0.72284 -0.545216)
(xy 0.768305 -0.576116)
(xy 0.81174 -0.609806)
(xy 0.852975 -0.646161)
(xy 0.89184 -0.685026)
(xy 0.928195 -0.726261)
(xy 0.961885 -0.769696)
(xy 0.992785 -0.815161)
(xy 1.02076 -0.862471)
(xy 1.04572 -0.911451)
(xy 1.067555 -0.961896)
(xy 1.08617 -1.013615)
(xy 1.101505 -1.066401)
(xy 1.113495 -1.120046)
(xy 1.122094 -1.174336)
(xy 1.12727 -1.229061)
(xy 1.129 -1.284001)
(xy 1.12727 -1.338941)
(xy 1.122094 -1.393666)
(xy 1.113495 -1.447956)
(xy 1.101505 -1.501601)
(xy 1.08617 -1.554386)
(xy 1.067555 -1.606106)
(xy 1.04572 -1.65655)
(xy 1.02076 -1.705531)
(xy 0.992785 -1.752841)
(xy 0.961885 -1.798306)
(xy 0.928195 -1.841741)
(xy 0.89184 -1.882976)
(xy 0.87594 -1.898876)
(xy 0.89821 -1.906896)
(xy 0.99911 -1.950558)
(xy 1.097065 -2.00047)
(xy 1.19169 -2.056431)
(xy 1.28262 -2.118222)
(xy 1.32232 -2.149022)
(xy 1.366395 -2.092205)
(xy 1.414949 -2.020756)
(xy 1.45892 -1.946408)
(xy 1.498135 -1.869441)
(xy 1.53244 -1.790166)
(xy 1.5617 -1.708896)
(xy 1.585795 -1.625941)
(xy 1.60464 -1.541646)
(xy 1.61815 -1.456336)
(xy 1.626285 -1.370336)
(xy 1.629 -1.284001)
(xy 1.626285 -1.197666)
(xy 1.61815 -1.111666)
(xy 1.60464 -1.026356)
(xy 1.585795 -0.942061)
(xy 1.5617 -0.859106)
(xy 1.53244 -0.777836)
(xy 1.498135 -0.698561)
(xy 1.45892 -0.621596)
(xy 1.414949 -0.547247)
(xy 1.366395 -0.475796)
(xy 1.31345 -0.407547)
(xy 1.256325 -0.342756)
(xy 1.195245 -0.281676)
(xy 1.130455 -0.224551)
(xy 1.062205 -0.171607)
(xy 0.990755 -0.123051)
(xy 0.916405 -0.079081)
(xy 0.83944 -0.039866)
(xy 0.760165 -0.005561)
(xy 0.678895 0.023699)
(xy 0.59594 0.047794)
(xy 0.511645 0.066639)
(xy 0.426335 0.080149)
(xy 0.340335 0.088284)
(xy 0.254 0.090999)
(xy -2.496 0.090999)
(xy -2.496 -4.909)
(xy 0.254 -4.909)
)
(stroke (width 0) (type solid)) (fill solid) (layer "F.SilkS") (tstamp 8dfe82ec-40a7-47e6-80e6-edff09265729))
(group "" (id 8ecd1901-04fe-4191-860f-7e11c9c603de)
(members
8dfe82ec-40a7-47e6-80e6-edff09265729
)
)
)
(footprint "common:MH120X230_#4" (layer "F.Cu")
(tstamp 9cf13263-b30a-43c4-9c5f-ce1ec46a078d)
(at 123.19 80.01)
(descr "Mounting Hole, #4")
(property "Sheetfile" "jlcpcb_template.kicad_sch")
(property "Sheetname" "")
(property "ki_description" "Hole")
(path "/f50864ff-d371-4215-9314-242c46489f70")
(zone_connect 2)
(attr exclude_from_pos_files)
(fp_text reference "MH2" (at 0 0) (layer "F.SilkS") hide
(effects (font (size 0.762 0.762) (thickness 0.127)))
(tstamp ec12a169-aff4-4e07-b6d0-b514273aa0d3)
)
(fp_text value "Mounting_Hole" (at 0 0) (layer "F.Fab") hide
(effects (font (size 0.762 0.762) (thickness 0.127)))
(tstamp cb9705b6-1b08-460e-9326-9bad2d122079)
)
(fp_circle (center 0 0) (end 3.175 0)
(stroke (width 0.1778) (type solid)) (fill none) (layer "F.SilkS") (tstamp fcdf4db1-d631-4177-b993-aeecad385c6b))
(pad "1" thru_hole circle (at 0 0) (size 5.842 5.842) (drill 3.048) (layers "*.Cu" "*.Mask")
(net 1 "GND") (pinfunction "1") (pintype "passive") (zone_connect 2) (tstamp 960cecf2-1d43-424a-a28c-370176f7ad84))
)
(footprint "common:MH120X230_#4" (layer "F.Cu")
(tstamp c0724124-56f1-4f5b-a04e-718e5095e569)
(at 80.01 123.19)
(descr "Mounting Hole, #4")
(property "Sheetfile" "jlcpcb_template.kicad_sch")
(property "Sheetname" "")
(property "ki_description" "Hole")
(path "/409ab3ca-8890-41e5-8523-0edcaaeb13ca")
(zone_connect 2)
(attr exclude_from_pos_files)
(fp_text reference "MH4" (at 0 0) (layer "F.SilkS") hide
(effects (font (size 0.762 0.762) (thickness 0.127)))
(tstamp f9cf991c-bf67-4f90-a467-e70307be092f)
)
(fp_text value "Mounting_Hole" (at 0 0) (layer "F.Fab") hide
(effects (font (size 0.762 0.762) (thickness 0.127)))
(tstamp 01fd67c4-2ef0-4f98-8948-9808ec8ff273)
)
(fp_circle (center 0 0) (end 3.175 0)
(stroke (width 0.1778) (type solid)) (fill none) (layer "F.SilkS") (tstamp 3778145b-ae9b-4f30-af8c-84bfddd3a262))
(pad "1" thru_hole circle (at 0 0) (size 5.842 5.842) (drill 3.048) (layers "*.Cu" "*.Mask")
(net 1 "GND") (pinfunction "1") (pintype "passive") (zone_connect 2) (tstamp 99e3e858-673d-4f44-ab6d-88b16c373d3f))
)
(footprint "common:MH120X230_#4" (layer "F.Cu")
(tstamp e6a1835e-7425-4888-a7a8-6177237b4709)
(at 80.01 80.01)
(descr "Mounting Hole, #4")
(property "Sheetfile" "jlcpcb_template.kicad_sch")
(property "Sheetname" "")
(property "ki_description" "Hole")
(path "/94346919-81db-46a4-8218-cd482107d9cb")
(zone_connect 2)
(attr exclude_from_pos_files)
(fp_text reference "MH1" (at 0 0) (layer "F.SilkS") hide
(effects (font (size 0.762 0.762) (thickness 0.127)))
(tstamp 881d93b4-0525-4202-85fe-85a4efda2f16)
)
(fp_text value "Mounting_Hole" (at 0 0) (layer "F.Fab") hide
(effects (font (size 0.762 0.762) (thickness 0.127)))
(tstamp 2a7167b7-bcb7-4273-81dc-bac9fafa92e4)
)
(fp_circle (center 0 0) (end 3.175 0)
(stroke (width 0.1778) (type solid)) (fill none) (layer "F.SilkS") (tstamp b2231778-25a1-434a-abce-0f47d646481c))
(pad "1" thru_hole circle (at 0 0) (size 5.842 5.842) (drill 3.048) (layers "*.Cu" "*.Mask")
(net 1 "GND") (pinfunction "1") (pintype "passive") (zone_connect 2) (tstamp 6eda37ca-2ae5-47bd-8781-e110e3eb5ecf))
)
(gr_line (start 76.2 80.01) (end 76.2 123.19)
(stroke (width 0.0254) (type default)) (layer "Edge.Cuts") (tstamp 01eeaaa2-1d96-4fbe-a7c0-eab31686fcf1))
(gr_arc (start 76.2 80.01) (mid 77.315923 77.315923) (end 80.01 76.2)
(stroke (width 0.0254) (type default)) (layer "Edge.Cuts") (tstamp 43123108-00ac-4a91-9a21-505fe9f540b7))
(gr_line (start 80.01 76.2) (end 123.19 76.2)
(stroke (width 0.0254) (type default)) (layer "Edge.Cuts") (tstamp 48120843-2e2a-4d0a-8268-ab901cdcc4b7))
(gr_line (start 123.19 127) (end 80.01 127)
(stroke (width 0.0254) (type default)) (layer "Edge.Cuts") (tstamp 799ba558-8122-48f3-8f20-8a331e6eb16e))
(gr_arc (start 123.19 76.2) (mid 125.884077 77.315923) (end 127 80.01)
(stroke (width 0.0254) (type default)) (layer "Edge.Cuts") (tstamp 7d8e835b-274b-4347-b69b-509aad33d996))
(gr_arc (start 127 123.19) (mid 125.884077 125.884077) (end 123.19 127)
(stroke (width 0.0254) (type default)) (layer "Edge.Cuts") (tstamp 95fe84bb-7111-4bc6-b57d-cd7018d67a30))
(gr_line (start 127 123.19) (end 127 80.01)
(stroke (width 0.0254) (type default)) (layer "Edge.Cuts") (tstamp afaa3464-4511-458b-a9c8-5d3a7d059ede))
(gr_arc (start 80.01 127) (mid 77.315923 125.884077) (end 76.2 123.19)
(stroke (width 0.0254) (type default)) (layer "Edge.Cuts") (tstamp e58e6794-0db3-438b-9daf-38a35d163066))
(gr_text "JLCJLCJLCJLC" (at 96.52 124.46) (layer "F.SilkS") (tstamp 091288de-23c4-4edc-b533-5d552fa8084b)
(effects (font (size 1.016 1.016) (thickness 0.2032) bold) (justify left bottom))
)
(gr_text "BRENDANHAINES.COM\n${PROJECT_NAME}\nPCB REV: ${PCB_REVISION}" (at 101.6 116.84) (layer "F.SilkS") (tstamp 437bdfe8-9461-4ec7-870c-371d6a52dc16)
(effects (font (size 1.016 1.016) (thickness 0.2032) bold) (justify left bottom))
)
(gr_text "SERIAL NUMBER \n " (at 96.52 121.92) (layer "F.SilkS" knockout) (tstamp 6c2be5ce-85b7-4de0-9953-9a61d10d3e1f)
(effects (font (size 1.016 1.016) (thickness 0.2032) bold) (justify left bottom))
)
(dimension (type aligned) (layer "F.Fab") (tstamp 01ee0b31-f02b-4470-b2f7-07b9d1207f38)
(pts (xy 76.2 76.2) (xy 127 76.2))
(height -5.08)
(gr_text "2000.0000 mils" (at 101.6 69.977) (layer "F.Fab") (tstamp 01ee0b31-f02b-4470-b2f7-07b9d1207f38)
(effects (font (size 1.016 1.016) (thickness 0.127)))
)
(format (prefix "") (suffix "") (units 3) (units_format 1) (precision 4))
(style (thickness 0.127) (arrow_length 1.27) (text_position_mode 0) (extension_height 0.58642) (extension_offset 0.5) keep_text_aligned)
)
(dimension (type aligned) (layer "F.Fab") (tstamp 0517aec2-45e6-4cc3-9803-feed6af5a135)
(pts (xy 76.2 76.2) (xy 76.2 127))
(height 5.08)
(gr_text "2000.0000 mils" (at 69.977 101.6 90) (layer "F.Fab") (tstamp 0517aec2-45e6-4cc3-9803-feed6af5a135)
(effects (font (size 1.016 1.016) (thickness 0.127)))
)
(format (prefix "") (suffix "") (units 3) (units_format 1) (precision 4))
(style (thickness 0.127) (arrow_length 1.27) (text_position_mode 0) (extension_height 0.58642) (extension_offset 0.5) keep_text_aligned)
)
)

83
pluto_shield.kicad_prl Normal file
View File

@ -0,0 +1,83 @@
{
"board": {
"active_layer": 37,
"active_layer_preset": "All Layers",
"auto_track_width": true,
"hidden_netclasses": [],
"hidden_nets": [],
"high_contrast_mode": 0,
"net_color_mode": 1,
"opacity": {
"images": 0.6,
"pads": 1.0,
"tracks": 1.0,
"vias": 1.0,
"zones": 0.6
},
"selection_filter": {
"dimensions": true,
"footprints": true,
"graphics": true,
"keepouts": true,
"lockedItems": false,
"otherItems": true,
"pads": true,
"text": true,
"tracks": true,
"vias": true,
"zones": true
},
"visible_items": [
0,
1,
2,
3,
4,
5,
8,
9,
10,
11,
12,
13,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
32,
33,
34,
35,
36,
39,
40
],
"visible_layers": "fffffff_ffffffff",
"zone_display_mode": 0
},
"git": {
"repo_password": "",
"repo_type": "",
"repo_username": "",
"ssh_key": ""
},
"meta": {
"filename": "pluto_shield.kicad_prl",
"version": 3
},
"project": {
"files": []
}
}

578
pluto_shield.kicad_pro Normal file
View File

@ -0,0 +1,578 @@
{
"board": {
"3dviewports": [],
"design_settings": {
"defaults": {
"board_outline_line_width": 0.0254,
"copper_line_width": 0.127,
"copper_text_italic": false,
"copper_text_size_h": 0.635,
"copper_text_size_v": 0.635,
"copper_text_thickness": 0.127,
"copper_text_upright": true,
"courtyard_line_width": 0.0254,
"dimension_precision": 4,
"dimension_units": 3,
"dimensions": {
"arrow_length": 1270000,
"extension_offset": 500000,
"keep_text_aligned": true,
"suppress_zeroes": false,
"text_position": 0,
"units_format": 1
},
"fab_line_width": 0.127,
"fab_text_italic": false,
"fab_text_size_h": 1.016,
"fab_text_size_v": 1.016,
"fab_text_thickness": 0.127,
"fab_text_upright": true,
"other_line_width": 0.127,
"other_text_italic": false,
"other_text_size_h": 0.635,
"other_text_size_v": 0.635,
"other_text_thickness": 0.127,
"other_text_upright": true,
"pads": {
"drill": 0.762,
"height": 1.524,
"width": 1.524
},
"silk_line_width": 0.17779999999999999,
"silk_text_italic": false,
"silk_text_size_h": 0.635,
"silk_text_size_v": 0.635,
"silk_text_thickness": 0.127,
"silk_text_upright": true,
"zones": {
"min_clearance": 0.5
}
},
"diff_pair_dimensions": [
{
"gap": 0.0,
"via_gap": 0.0,
"width": 0.0
}
],
"drc_exclusions": [],
"meta": {
"version": 2
},
"rule_severities": {
"annular_width": "error",
"clearance": "error",
"connection_width": "ignore",
"copper_edge_clearance": "error",
"copper_sliver": "warning",
"courtyards_overlap": "error",
"diff_pair_gap_out_of_range": "error",
"diff_pair_uncoupled_length_too_long": "error",
"drill_out_of_range": "error",
"duplicate_footprints": "warning",
"extra_footprint": "warning",
"footprint": "error",
"footprint_type_mismatch": "warning",
"hole_clearance": "error",
"hole_near_hole": "error",
"invalid_outline": "error",
"isolated_copper": "warning",
"item_on_disabled_layer": "error",
"items_not_allowed": "error",
"length_out_of_range": "error",
"lib_footprint_issues": "warning",
"lib_footprint_mismatch": "warning",
"malformed_courtyard": "error",
"microvia_drill_out_of_range": "error",
"missing_courtyard": "ignore",
"missing_footprint": "warning",
"net_conflict": "warning",
"npth_inside_courtyard": "ignore",
"padstack": "warning",
"pth_inside_courtyard": "ignore",
"shorting_items": "error",
"silk_edge_clearance": "warning",
"silk_over_copper": "warning",
"silk_overlap": "warning",
"skew_out_of_range": "error",
"solder_mask_bridge": "error",
"starved_thermal": "error",
"text_height": "warning",
"text_thickness": "warning",
"through_hole_pad_without_hole": "error",
"too_many_vias": "error",
"track_dangling": "warning",
"track_width": "error",
"tracks_crossing": "error",
"unconnected_items": "error",
"unresolved_variable": "error",
"via_dangling": "warning",
"zones_intersect": "error"
},
"rules": {
"max_error": 0.005,
"min_clearance": 0.08889999999999999,
"min_connection": 0.0,
"min_copper_edge_clearance": 0.19999999999999998,
"min_hole_clearance": 0.0,
"min_hole_to_hole": 0.254,
"min_microvia_diameter": 0.19999999999999998,
"min_microvia_drill": 0.09999999999999999,
"min_resolved_spokes": 2,
"min_silk_clearance": 0.0,
"min_text_height": 0.635,
"min_text_thickness": 0.127,
"min_through_hole_diameter": 0.19999999999999998,
"min_track_width": 0.08889999999999999,
"min_via_annular_width": 0.127,
"min_via_diameter": 0.19999999999999998,
"solder_mask_clearance": 0.0,
"solder_mask_min_width": 0.0,
"solder_mask_to_copper_clearance": 0.0,
"use_height_for_length_calcs": true
},
"teardrop_options": [
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 5,
"td_on_pad_in_zone": false,
"td_onpadsmd": true,
"td_onroundshapesonly": false,
"td_ontrackend": false,
"td_onviapad": true
}
],
"teardrop_parameters": [
{
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_target_name": "td_round_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_target_name": "td_rect_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_target_name": "td_track_end",
"td_width_to_size_filter_ratio": 0.9
}
],
"track_widths": [
0.0,
0.127,
0.254
],
"via_dimensions": [
{
"diameter": 0.0,
"drill": 0.0
},
{
"diameter": 0.4064,
"drill": 0.2032
},
{
"diameter": 0.508,
"drill": 0.254
}
],
"zones_allow_external_fillets": false
},
"ipc2581": {
"dist": "",
"distpn": "",
"internal_id": "",
"mfg": "",
"mpn": ""
},
"layer_presets": [],
"viewports": []
},
"boards": [],
"cvpcb": {
"equivalence_files": []
},
"erc": {
"erc_exclusions": [],
"meta": {
"version": 0
},
"pin_map": [
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
1,
0,
1,
2
],
[
0,
1,
0,
0,
0,
0,
1,
1,
2,
1,
1,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
2
],
[
1,
1,
1,
1,
1,
0,
1,
1,
1,
1,
1,
2
],
[
0,
0,
0,
1,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
1,
2,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
0,
2,
1,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2
]
],
"rule_severities": {
"bus_definition_conflict": "error",
"bus_entry_needed": "error",
"bus_to_bus_conflict": "error",
"bus_to_net_conflict": "error",
"conflicting_netclasses": "error",
"different_unit_footprint": "error",
"different_unit_net": "error",
"duplicate_reference": "error",
"duplicate_sheet_names": "error",
"endpoint_off_grid": "warning",
"extra_units": "error",
"global_label_dangling": "warning",
"hier_label_mismatch": "error",
"label_dangling": "error",
"lib_symbol_issues": "warning",
"missing_bidi_pin": "warning",
"missing_input_pin": "warning",
"missing_power_pin": "error",
"missing_unit": "warning",
"multiple_net_names": "warning",
"net_not_bus_member": "warning",
"no_connect_connected": "warning",
"no_connect_dangling": "warning",
"pin_not_connected": "error",
"pin_not_driven": "error",
"pin_to_pin": "error",
"power_pin_not_driven": "error",
"similar_labels": "warning",
"simulation_model_issue": "error",
"unannotated": "error",
"unit_value_mismatch": "error",
"unresolved_variable": "error",
"wire_dangling": "error"
}
},
"libraries": {
"pinned_footprint_libs": [],
"pinned_symbol_libs": []
},
"meta": {
"filename": "pluto_shield.kicad_pro",
"version": 1
},
"net_settings": {
"classes": [
{
"bus_width": 12,
"clearance": 0.127,
"diff_pair_gap": 0.127,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.127,
"line_style": 0,
"microvia_diameter": 0.508,
"microvia_drill": 0.254,
"name": "Default",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.127,
"via_diameter": 0.508,
"via_drill": 0.254,
"wire_width": 6
}
],
"meta": {
"version": 3
},
"net_colors": null,
"netclass_assignments": null,
"netclass_patterns": []
},
"pcbnew": {
"last_paths": {
"gencad": "",
"idf": "",
"netlist": "",
"plot": "",
"pos_files": "",
"specctra_dsn": "",
"step": "",
"svg": "",
"vrml": ""
},
"page_layout_descr_file": ""
},
"schematic": {
"annotate_start_num": 0,
"bom_export_filename": "",
"bom_fmt_presets": [],
"bom_fmt_settings": {
"field_delimiter": ",",
"keep_line_breaks": false,
"keep_tabs": false,
"name": "CSV",
"ref_delimiter": ",",
"ref_range_delimiter": "",
"string_delimiter": "\""
},
"bom_presets": [],
"bom_settings": {
"exclude_dnp": false,
"fields_ordered": [
{
"group_by": false,
"label": "Reference",
"name": "Reference",
"show": true
},
{
"group_by": true,
"label": "Value",
"name": "Value",
"show": true
},
{
"group_by": false,
"label": "Datasheet",
"name": "Datasheet",
"show": true
},
{
"group_by": false,
"label": "Footprint",
"name": "Footprint",
"show": true
},
{
"group_by": false,
"label": "Qty",
"name": "${QUANTITY}",
"show": true
},
{
"group_by": true,
"label": "DNP",
"name": "${DNP}",
"show": true
}
],
"filter_string": "",
"group_symbols": true,
"name": "Grouped By Value",
"sort_asc": true,
"sort_field": "Reference"
},
"connection_grid_size": 50.0,
"drawing": {
"dashed_lines_dash_length_ratio": 12.0,
"dashed_lines_gap_length_ratio": 3.0,
"default_line_thickness": 6.0,
"default_text_size": 50.0,
"field_names": [],
"intersheets_ref_own_page": false,
"intersheets_ref_prefix": "",
"intersheets_ref_short": false,
"intersheets_ref_show": false,
"intersheets_ref_suffix": "",
"junction_size_choice": 3,
"label_size_ratio": 0.375,
"operating_point_overlay_i_precision": 3,
"operating_point_overlay_i_range": "~A",
"operating_point_overlay_v_precision": 3,
"operating_point_overlay_v_range": "~V",
"overbar_offset_ratio": 1.23,
"pin_symbol_size": 25.0,
"text_offset_ratio": 0.15
},
"legacy_lib_dir": "",
"legacy_lib_list": [],
"meta": {
"version": 1
},
"net_format_name": "",
"page_layout_descr_file": "",
"plot_directory": "",
"spice_current_sheet_as_root": false,
"spice_external_command": "spice \"%I\"",
"spice_model_current_sheet_as_root": true,
"spice_save_all_currents": false,
"spice_save_all_dissipations": false,
"spice_save_all_voltages": false,
"subpart_first_id": 65,
"subpart_id_separator": 0
},
"sheets": [
[
"5c9b5493-28d5-442a-a1c0-43be0cca0b1b",
"Root"
]
],
"text_variables": {
"PCB_REVISION": "0.0",
"PROJECT_NAME": "PROJECT_NAME"
}
}

1470
pluto_shield.kicad_sch Normal file

File diff suppressed because it is too large Load Diff

186
release.py Normal file
View File

@ -0,0 +1,186 @@
# %% Imports
import shutil
import subprocess
import zipfile
from pathlib import Path
# %% Find the relevant files
projects = list(Path(__file__).parent.glob("*.kicad_pro"))
if len(projects) == 1:
root_project = projects[0].resolve()
else:
raise NotImplementedError("Need to determine which project is the root one (when multiple exist for sim)")
project_name = root_project.stem
dir_out = root_project.parent / "outputs"
if dir_out.exists():
shutil.rmtree(str(dir_out))
dir_out.mkdir(parents=True)
print(f"Writing outputs to {dir_out}")
# %% Verify state of repository
# TODO: check if repo is committed and pushed or if we're in CI
# %% Check Kicad version
kicad_version = subprocess.run(["kicad-cli", "version"], capture_output=True, check=True).stdout.decode()
major, minor, patch = kicad_version.split(".")
if int(major) < 7:
raise ValueError(f"Requires minimum Kicad version 7.0.0 buf found {kicad_version}")
# %% General documentation PDFs
subprocess.run(
[
"kicad-cli",
"sch",
"export",
"pdf",
str(root_project.with_suffix(".kicad_sch")),
"-o",
str(dir_out / f"{project_name}_schematic.pdf"),
],
check=True,
)
subprocess.run(
[
"kicad-cli",
"pcb",
"export",
"pdf",
str(root_project.with_suffix(".kicad_pcb")),
"-o",
str(dir_out / f"{project_name}_fabrication_drawing.pdf"),
"--include-border-title",
"--layers",
",".join(["Edge.Cuts", "F.Cu", "F.Mask", "F.Silkscreen", "F.Fab"]),
],
check=True,
)
subprocess.run(
[
"kicad-cli",
"pcb",
"export",
"step",
str(root_project.with_suffix(".kicad_pcb")),
"-o",
str(dir_out / f"{project_name}.step"),
"--subst-models",
"--no-virtual", # TODO: decide if I want virtual models. I might just generate both
],
check=True,
)
# %% Fabrication Files
dir_gerber = dir_out / f"{project_name}_gerbers"
dir_gerber.mkdir(exist_ok=True)
subprocess.run(
[
"kicad-cli",
"pcb",
"export",
"gerbers",
str(root_project.with_suffix(".kicad_pcb")),
"-o",
str(dir_gerber),
],
check=True,
)
subprocess.run(
[
"kicad-cli",
"pcb",
"export",
"drill",
str(root_project.with_suffix(".kicad_pcb")),
"--separate-files",
"--generate-map", # not necessary but kinda nice since I can't nicely make a drill table in the main pdf
# "-o", # -0 flag is not working so I'm just using cwd instead
# str(dir_gerber),
],
cwd=str(dir_gerber.resolve()),
check=True,
)
# TODO: add version strings to every single filename
# %% Zip up the gerbers
with zipfile.ZipFile(dir_gerber.with_suffix(".zip"), "w") as z:
for f in dir_gerber.glob("*"):
z.write(f, f.name)
# %% Assembly files
# Assembly Drawing
subprocess.run(
[
"kicad-cli",
"pcb",
"export",
"pdf",
str(root_project.with_suffix(".kicad_pcb")),
"-o",
str(dir_out / f"{project_name}_assembly_drawing.pdf"),
"--include-border-title",
"--layers",
",".join(["Edge.Cuts", "F.Mask", "F.Silkscreen", "F.Fab"]),
],
check=True,
)
# Position Files
subprocess.run(
[
"kicad-cli",
"pcb",
"export",
"pos",
str(root_project.with_suffix(".kicad_pcb")),
"-o",
str(dir_out / f"{project_name}.pos"),
"--format",
"ascii",
"--side",
"both",
],
check=True,
)
# BOM
subprocess.run(
[
"kicad-cli",
"sch",
"export",
"python-bom",
str(root_project.with_suffix(".kicad_sch")),
"-o",
str(dir_out / f"{project_name}_bom.xml"),
],
check=True,
)
subprocess.run(
[
"python3",
"/home/brendan/Documents/projects/bhht/common_libraries/plugins/bom_csv_grouped_extra.py", # TODO: move this
str(dir_out / f"{project_name}_bom.xml"),
str(dir_out / f"{project_name}_bom.csv"),
],
check=True,
)
# # Interactive BOM
# subprocess.run(
# [
# "python3",
# "path/to/InteractiveHtmlBom/generate_interactive_bom.py", # TODO: locate this somewhere reasonable
# str(root_project.with_suffix(".kicad_pcb")),
# ],
# check=True,
# )

4
sym-lib-table Normal file
View File

@ -0,0 +1,4 @@
(sym_lib_table
(version 7)
(lib (name "bh")(type "KiCad")(uri "${KIPRJMOD}/common_libraries/bh.kicad_sym")(options "")(descr ""))
)