From 95a61bcfc70cb0cdedbad65553ee557482a2b30a Mon Sep 17 00:00:00 2001 From: Brendan Haines Date: Thu, 5 Dec 2024 22:34:11 -0700 Subject: [PATCH] initial commit --- .github/workflows/kibot.yml | 45 ++ .gitignore | 8 + .gitmodules | 3 + common_libraries | 1 + config.kibot.yaml | 450 +++++++++++ config_drc.kibot.yaml | 5 + config_erc.kibot.yaml | 5 + fp-lib-table | 7 + pluto_shield.kicad_dru | 7 + pluto_shield.kicad_pcb | 476 ++++++++++++ pluto_shield.kicad_prl | 83 ++ pluto_shield.kicad_pro | 578 ++++++++++++++ pluto_shield.kicad_sch | 1470 +++++++++++++++++++++++++++++++++++ release.py | 186 +++++ sym-lib-table | 4 + 15 files changed, 3328 insertions(+) create mode 100644 .github/workflows/kibot.yml create mode 100644 .gitignore create mode 100644 .gitmodules create mode 160000 common_libraries create mode 100644 config.kibot.yaml create mode 100644 config_drc.kibot.yaml create mode 100644 config_erc.kibot.yaml create mode 100644 fp-lib-table create mode 100644 pluto_shield.kicad_dru create mode 100644 pluto_shield.kicad_pcb create mode 100644 pluto_shield.kicad_prl create mode 100644 pluto_shield.kicad_pro create mode 100644 pluto_shield.kicad_sch create mode 100644 release.py create mode 100644 sym-lib-table diff --git a/.github/workflows/kibot.yml b/.github/workflows/kibot.yml new file mode 100644 index 0000000..c597280 --- /dev/null +++ b/.github/workflows/kibot.yml @@ -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 \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d964339 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +# kicad backup/cache files +*-backups +*.bak +~*.lck +fp-info-cache + +# prerelease outputs directory +outputs \ No newline at end of file diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..a93b876 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "common_libraries"] + path = common_libraries + url = git@git.brendanhaines.com:brendanhaines/kicad.git diff --git a/common_libraries b/common_libraries new file mode 160000 index 0000000..fbdc8f4 --- /dev/null +++ b/common_libraries @@ -0,0 +1 @@ +Subproject commit fbdc8f452a8e5e72cb42ae5f8dd5b018994030ba diff --git a/config.kibot.yaml b/config.kibot.yaml new file mode 100644 index 0000000..b6bb49e --- /dev/null +++ b/config.kibot.yaml @@ -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" diff --git a/config_drc.kibot.yaml b/config_drc.kibot.yaml new file mode 100644 index 0000000..c833b1d --- /dev/null +++ b/config_drc.kibot.yaml @@ -0,0 +1,5 @@ +kibot: + version: 1 + +preflight: + drc: true diff --git a/config_erc.kibot.yaml b/config_erc.kibot.yaml new file mode 100644 index 0000000..d90aefb --- /dev/null +++ b/config_erc.kibot.yaml @@ -0,0 +1,5 @@ +kibot: + version: 1 + +preflight: + erc: true diff --git a/fp-lib-table b/fp-lib-table new file mode 100644 index 0000000..a4ca199 --- /dev/null +++ b/fp-lib-table @@ -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 "")) +) diff --git a/pluto_shield.kicad_dru b/pluto_shield.kicad_dru new file mode 100644 index 0000000..275ecf3 --- /dev/null +++ b/pluto_shield.kicad_dru @@ -0,0 +1,7 @@ +(version 1) + +(rule IgnoreSilkScreenGraphicOverlap + (condition "A.Type == 'Graphic' && B.Type == 'Graphic'") + (constraint silk_clearance) + (severity ignore) +) diff --git a/pluto_shield.kicad_pcb b/pluto_shield.kicad_pcb new file mode 100644 index 0000000..392e229 --- /dev/null +++ b/pluto_shield.kicad_pcb @@ -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) + ) + +) diff --git a/pluto_shield.kicad_prl b/pluto_shield.kicad_prl new file mode 100644 index 0000000..1887ce6 --- /dev/null +++ b/pluto_shield.kicad_prl @@ -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": [] + } +} diff --git a/pluto_shield.kicad_pro b/pluto_shield.kicad_pro new file mode 100644 index 0000000..851aa2b --- /dev/null +++ b/pluto_shield.kicad_pro @@ -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" + } +} diff --git a/pluto_shield.kicad_sch b/pluto_shield.kicad_sch new file mode 100644 index 0000000..ce7d989 --- /dev/null +++ b/pluto_shield.kicad_sch @@ -0,0 +1,1470 @@ +(kicad_sch + (version 20231120) + (generator "eeschema") + (generator_version "8.0") + (uuid "5c9b5493-28d5-442a-a1c0-43be0cca0b1b") + (paper "A") + (title_block + (title "${PROJECT_NAME}") + (rev "${PCB_REVISION}") + (company "BRENDANHAINES.COM") + ) + (lib_symbols + (symbol "bh:GND" + (power) + (pin_names + (offset 0) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (property "Reference" "#PWR" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "GND" + (at 0 -4.064 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Power Symbol" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (symbol "GND_0_1" + (polyline + (pts + (xy -0.635 -1.905) (xy 0.635 -1.905) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy -0.127 -2.54) (xy 0.127 -2.54) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 -1.27) (xy 0 0) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 1.27 -1.27) (xy -1.27 -1.27) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "GND_1_1" + (pin power_in line + (at 0 0 90) + (length 0) hide + (name "GND" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + ) + (symbol "bh:LOGO_BH" + (exclude_from_sim no) + (in_bom no) + (on_board yes) + (property "Reference" "LOGO" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "" + (at 0.635 0.635 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "common:LOGO_BH" + (at 0.635 0.635 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 0.635 0.635 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (symbol "LOGO_BH_0_1" + (rectangle + (start -5.08 -4.445) + (end 1.905 -5.715) + (stroke + (width 0) + (type default) + ) + (fill + (type outline) + ) + ) + (rectangle + (start -5.08 4.445) + (end -3.81 -4.445) + (stroke + (width 0) + (type default) + ) + (fill + (type outline) + ) + ) + (rectangle + (start -5.08 5.715) + (end 1.905 4.445) + (stroke + (width 0) + (type default) + ) + (fill + (type outline) + ) + ) + (rectangle + (start -2.54 3.175) + (end -1.27 -3.175) + (stroke + (width 0) + (type default) + ) + (fill + (type outline) + ) + ) + (rectangle + (start -1.27 0.635) + (end 0.635 -0.635) + (stroke + (width 0) + (type default) + ) + (fill + (type outline) + ) + ) + (polyline + (pts + (xy 1.905 0.635) (xy 1.905 -0.635) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 3.7084 -1.8542) (xy 3.7084 -1.6002) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 4.6482 -0.9906) (xy 4.572 -1.1684) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 4.7244 -1.1176) (xy 4.4704 -1.1684) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 4.8006 -1.2446) (xy 4.2418 -1.2954) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 4.8514 -1.3716) (xy 4.064 -1.4224) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 4.953 -2.54) (xy 4.9022 -1.778) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 3.81 -2.54) (xy 3.81 -2.3622) (xy 3.7846 -2.2098) (xy 3.7338 -2.032) (xy 3.683 -1.8796) (xy 3.6322 -1.7272) + (xy 3.5814 -1.6002) (xy 3.7338 -1.524) (xy 3.8862 -1.4478) (xy 4.1148 -1.3208) (xy 4.2926 -1.2192) + (xy 4.4704 -1.0922) (xy 4.6482 -0.9652) (xy 4.7498 -1.143) (xy 4.8514 -1.3462) (xy 4.9276 -1.5748) + (xy 4.9784 -1.778) (xy 5.0292 -1.9812) (xy 5.0546 -2.1844) (xy 5.08 -2.54) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start 0.635 3.175) + (end 1.905 -3.175) + (stroke + (width 0) + (type default) + ) + (fill + (type outline) + ) + ) + (arc + (start 1.905 -5.715) + (mid 4.1501 -4.7851) + (end 5.08 -2.54) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 1.905 -5.588) + (mid 4.0603 -4.6953) + (end 4.953 -2.54) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 1.905 -5.461) + (mid 3.9705 -4.6055) + (end 4.826 -2.54) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 1.905 -5.334) + (mid 3.8807 -4.5157) + (end 4.699 -2.54) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 1.905 -5.207) + (mid 3.7909 -4.4259) + (end 4.572 -2.54) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 1.905 -5.08) + (mid 3.7011 -4.3361) + (end 4.445 -2.54) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 1.905 -4.953) + (mid 3.6112 -4.2462) + (end 4.318 -2.54) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 1.905 -4.826) + (mid 3.5214 -4.1564) + (end 4.191 -2.54) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 1.905 -4.699) + (mid 3.4316 -4.0666) + (end 4.064 -2.54) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 1.905 -4.572) + (mid 3.3418 -3.9768) + (end 3.937 -2.54) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 1.905 -4.445) + (mid 3.252 -3.887) + (end 3.81 -2.54) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 1.905 -0.635) + (mid 4.1501 0.2949) + (end 5.08 2.54) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 1.905 -0.508) + (mid 4.0603 0.3847) + (end 4.953 2.54) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 1.905 -0.381) + (mid 3.9705 0.4745) + (end 4.826 2.54) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 1.905 -0.254) + (mid 3.8807 0.5643) + (end 4.699 2.54) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 1.905 -0.127) + (mid 3.7909 0.6541) + (end 4.572 2.54) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 1.905 0) + (mid 3.7011 0.7439) + (end 4.445 2.54) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 1.905 0.127) + (mid 3.6112 0.8338) + (end 4.318 2.54) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 1.905 0.254) + (mid 3.5214 0.9236) + (end 4.191 2.54) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 1.905 0.381) + (mid 3.4316 1.0134) + (end 4.064 2.54) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 1.905 0.508) + (mid 3.3418 1.1032) + (end 3.937 2.54) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 1.905 0.635) + (mid 3.252 1.193) + (end 3.81 2.54) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start 3.81 -1.524) + (end 4.826 -2.54) + (stroke + (width 0) + (type default) + ) + (fill + (type outline) + ) + ) + (arc + (start 3.81 2.54) + (mid 3.252 3.887) + (end 1.905 4.445) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 3.937 2.54) + (mid 3.3418 3.9768) + (end 1.905 4.572) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 4.064 2.54) + (mid 3.4316 4.0666) + (end 1.905 4.699) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 4.191 2.54) + (mid 3.5214 4.1564) + (end 1.905 4.826) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 4.318 2.54) + (mid 3.6112 4.2462) + (end 1.905 4.953) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 4.445 2.54) + (mid 3.7011 4.3361) + (end 1.905 5.08) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 4.572 2.54) + (mid 3.7909 4.4259) + (end 1.905 5.207) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 4.699 2.54) + (mid 3.8807 4.5157) + (end 1.905 5.334) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 4.826 2.54) + (mid 3.9705 4.6055) + (end 1.905 5.461) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 4.953 2.54) + (mid 4.0603 4.6953) + (end 1.905 5.588) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 5.08 2.54) + (mid 4.1501 4.7851) + (end 1.905 5.715) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + ) + (symbol "bh:Mounting_Hole" + (pin_numbers hide) + (pin_names + (offset 0.762) hide) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (property "Reference" "MH" + (at 0 7.62 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "Mounting_Hole" + (at 0 7.62 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Footprint" "" + (at 5.08 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 5.08 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Hole" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_fp_filters" "Pin* Test*" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (symbol "Mounting_Hole_0_1" + (circle + (center 0 4.572) + (radius 0.762) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (circle + (center 0 4.572) + (radius 2.032) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "Mounting_Hole_1_1" + (pin passive line + (at 0 0 90) + (length 2.54) + (name "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + ) + ) + (symbol + (lib_id "bh:LOGO_BH") + (at 146.05 190.5 0) + (unit 1) + (exclude_from_sim no) + (in_bom no) + (on_board yes) + (dnp no) + (fields_autoplaced yes) + (uuid "34f9aa7c-9331-4a4e-ada5-723181f4dcaa") + (property "Reference" "LOGO1" + (at 146.05 190.5 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "~" + (at 146.685 189.865 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "common:LOGO_BH" + (at 146.685 189.865 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 146.685 189.865 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "" + (at 146.05 190.5 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (instances + (project "jlcpcb_template" + (path "/5c9b5493-28d5-442a-a1c0-43be0cca0b1b" + (reference "LOGO1") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "bh:Mounting_Hole") + (at 63.5 190.5 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (fields_autoplaced yes) + (uuid "409ab3ca-8890-41e5-8523-0edcaaeb13ca") + (property "Reference" "MH4" + (at 67.31 186.563 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "Mounting_Hole" + (at 63.5 182.88 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Footprint" "common:MH120X230_#4" + (at 68.58 190.5 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 68.58 190.5 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "" + (at 63.5 190.5 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "e9fe4d85-5c86-4f7a-82e6-f2fd7d225d6e") + ) + (instances + (project "jlcpcb_template" + (path "/5c9b5493-28d5-442a-a1c0-43be0cca0b1b" + (reference "MH4") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "bh:GND") + (at 38.1 190.5 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (fields_autoplaced yes) + (uuid "502eb072-ba38-4b4c-a84e-3eecb76ad8ae") + (property "Reference" "#PWR02" + (at 38.1 190.5 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "GND" + (at 38.1 194.564 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Footprint" "" + (at 38.1 190.5 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 38.1 190.5 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "" + (at 38.1 190.5 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "7132b3cd-5db9-4381-a698-ffffd0acedbb") + ) + (instances + (project "jlcpcb_template" + (path "/5c9b5493-28d5-442a-a1c0-43be0cca0b1b" + (reference "#PWR02") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "bh:GND") + (at 25.4 190.5 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (fields_autoplaced yes) + (uuid "789ca065-c39a-46bf-983b-0fdbd76a385f") + (property "Reference" "#PWR01" + (at 25.4 190.5 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "GND" + (at 25.4 194.564 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Footprint" "" + (at 25.4 190.5 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 25.4 190.5 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "" + (at 25.4 190.5 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "1f2ca150-5a64-49a1-bbd4-dcb61762f9d2") + ) + (instances + (project "jlcpcb_template" + (path "/5c9b5493-28d5-442a-a1c0-43be0cca0b1b" + (reference "#PWR01") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "bh:Mounting_Hole") + (at 50.8 190.5 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (fields_autoplaced yes) + (uuid "79801d06-18e7-498c-8d4e-cc6cc5060c9d") + (property "Reference" "MH3" + (at 54.61 186.563 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "Mounting_Hole" + (at 50.8 182.88 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Footprint" "common:MH120X230_#4" + (at 55.88 190.5 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 55.88 190.5 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "" + (at 50.8 190.5 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "3f50ef8e-cdc4-4af3-a657-0f48355bb37d") + ) + (instances + (project "jlcpcb_template" + (path "/5c9b5493-28d5-442a-a1c0-43be0cca0b1b" + (reference "MH3") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "bh:Mounting_Hole") + (at 25.4 190.5 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (fields_autoplaced yes) + (uuid "94346919-81db-46a4-8218-cd482107d9cb") + (property "Reference" "MH1" + (at 29.21 186.563 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "Mounting_Hole" + (at 25.4 182.88 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Footprint" "common:MH120X230_#4" + (at 30.48 190.5 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 30.48 190.5 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "" + (at 25.4 190.5 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "974c2f03-6a35-4c79-90cb-e1ae51185391") + ) + (instances + (project "jlcpcb_template" + (path "/5c9b5493-28d5-442a-a1c0-43be0cca0b1b" + (reference "MH1") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "bh:GND") + (at 63.5 190.5 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (fields_autoplaced yes) + (uuid "d5be52a2-518e-4e89-827b-31eeb48d5b08") + (property "Reference" "#PWR04" + (at 63.5 190.5 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "GND" + (at 63.5 194.564 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Footprint" "" + (at 63.5 190.5 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 63.5 190.5 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "" + (at 63.5 190.5 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "4044e045-29bd-4607-807f-67125a854a21") + ) + (instances + (project "jlcpcb_template" + (path "/5c9b5493-28d5-442a-a1c0-43be0cca0b1b" + (reference "#PWR04") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "bh:GND") + (at 50.8 190.5 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (fields_autoplaced yes) + (uuid "f3f370c0-1e6d-4161-848c-0c4f6ab8559f") + (property "Reference" "#PWR03" + (at 50.8 190.5 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "GND" + (at 50.8 194.564 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Footprint" "" + (at 50.8 190.5 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 50.8 190.5 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "" + (at 50.8 190.5 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "1e10cdd5-879d-436b-a2a5-38904066b64c") + ) + (instances + (project "jlcpcb_template" + (path "/5c9b5493-28d5-442a-a1c0-43be0cca0b1b" + (reference "#PWR03") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "bh:Mounting_Hole") + (at 38.1 190.5 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (fields_autoplaced yes) + (uuid "f50864ff-d371-4215-9314-242c46489f70") + (property "Reference" "MH2" + (at 41.91 186.563 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "Mounting_Hole" + (at 38.1 182.88 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Footprint" "common:MH120X230_#4" + (at 43.18 190.5 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 43.18 190.5 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "" + (at 38.1 190.5 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "9dd8d1f8-25ce-4da4-aed2-54d45a5a6ed9") + ) + (instances + (project "jlcpcb_template" + (path "/5c9b5493-28d5-442a-a1c0-43be0cca0b1b" + (reference "MH2") + (unit 1) + ) + ) + ) + ) + (sheet_instances + (path "/" + (page "1") + ) + ) +) diff --git a/release.py b/release.py new file mode 100644 index 0000000..23f82d3 --- /dev/null +++ b/release.py @@ -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, +# ) diff --git a/sym-lib-table b/sym-lib-table new file mode 100644 index 0000000..3adad5e --- /dev/null +++ b/sym-lib-table @@ -0,0 +1,4 @@ +(sym_lib_table + (version 7) + (lib (name "bh")(type "KiCad")(uri "${KIPRJMOD}/common_libraries/bh.kicad_sym")(options "")(descr "")) +)