From ff19e4390cf864981064ed705d1e34e7246c5a8a Mon Sep 17 00:00:00 2001 From: Brendan Haines Date: Sun, 20 Oct 2024 15:22:39 -0600 Subject: [PATCH] create kicad project --- .gitignore | 6 + .gitmodules | 3 + common_libraries | 1 + fp-lib-table | 7 + photodetector.kicad_dru | 7 + photodetector.kicad_pcb | 476 ++++++++++++++++++++++++++++++++ photodetector.kicad_prl | 83 ++++++ photodetector.kicad_pro | 513 ++++++++++++++++++++++++++++++++++ photodetector.kicad_sch | 595 ++++++++++++++++++++++++++++++++++++++++ release.py | 186 +++++++++++++ sym-lib-table | 4 + 11 files changed, 1881 insertions(+) create mode 100644 .gitignore create mode 100644 .gitmodules create mode 160000 common_libraries create mode 100644 fp-lib-table create mode 100644 photodetector.kicad_dru create mode 100644 photodetector.kicad_pcb create mode 100644 photodetector.kicad_prl create mode 100644 photodetector.kicad_pro create mode 100644 photodetector.kicad_sch create mode 100644 release.py create mode 100644 sym-lib-table diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4b274c9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +# kicad backup/cache files +*-backups +*.bak + +# 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..dba8da4 --- /dev/null +++ b/common_libraries @@ -0,0 +1 @@ +Subproject commit dba8da46d4b91865847d9deb0a21eec2d90646ff diff --git a/fp-lib-table b/fp-lib-table new file mode 100644 index 0000000..a2f0d89 --- /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/photodetector.kicad_dru b/photodetector.kicad_dru new file mode 100644 index 0000000..275ecf3 --- /dev/null +++ b/photodetector.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/photodetector.kicad_pcb b/photodetector.kicad_pcb new file mode 100644 index 0000000..392e229 --- /dev/null +++ b/photodetector.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/photodetector.kicad_prl b/photodetector.kicad_prl new file mode 100644 index 0000000..1eba9c6 --- /dev/null +++ b/photodetector.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": "photodetector.kicad_prl", + "version": 3 + }, + "project": { + "files": [] + } +} diff --git a/photodetector.kicad_pro b/photodetector.kicad_pro new file mode 100644 index 0000000..8734105 --- /dev/null +++ b/photodetector.kicad_pro @@ -0,0 +1,513 @@ +{ + "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": "photodetector.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, + "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, + "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_voltages": false, + "subpart_first_id": 65, + "subpart_id_separator": 0 + }, + "sheets": [ + [ + "5c9b5493-28d5-442a-a1c0-43be0cca0b1b", + "" + ] + ], + "text_variables": { + "PCB_REVISION": "0.0", + "PROJECT_NAME": "PROJECT_NAME" + } +} diff --git a/photodetector.kicad_sch b/photodetector.kicad_sch new file mode 100644 index 0000000..b631c90 --- /dev/null +++ b/photodetector.kicad_sch @@ -0,0 +1,595 @@ +(kicad_sch (version 20230121) (generator eeschema) + + (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)) (in_bom yes) (on_board yes) + (property "Reference" "#PWR" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (at 0 -4.064 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Footprint" "" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Power Symbol" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (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" (in_bom no) (on_board yes) + (property "Reference" "LOGO" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (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) + ) + (property "Datasheet" "" (at 0.635 0.635 0) + (effects (font (size 1.27 1.27)) hide) + ) + (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) (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) + ) + (property "Footprint" "" (at 5.08 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (at 5.08 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Hole" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "Pin* Test*" (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (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) + (in_bom no) (on_board yes) (dnp no) (fields_autoplaced) + (uuid 34f9aa7c-9331-4a4e-ada5-723181f4dcaa) + (property "Reference" "LOGO1" (at 146.05 190.5 0) + (effects (font (size 1.27 1.27)) hide) + ) + (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) + ) + (property "Datasheet" "" (at 146.685 189.865 0) + (effects (font (size 1.27 1.27)) hide) + ) + (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) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (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) + ) + (property "Footprint" "common:MH120X230_#4" (at 68.58 190.5 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (at 68.58 190.5 0) + (effects (font (size 1.27 1.27)) hide) + ) + (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) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (uuid 502eb072-ba38-4b4c-a84e-3eecb76ad8ae) + (property "Reference" "#PWR02" (at 38.1 190.5 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (at 38.1 194.564 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Footprint" "" (at 38.1 190.5 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (at 38.1 190.5 0) + (effects (font (size 1.27 1.27)) hide) + ) + (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) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (uuid 789ca065-c39a-46bf-983b-0fdbd76a385f) + (property "Reference" "#PWR01" (at 25.4 190.5 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (at 25.4 194.564 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Footprint" "" (at 25.4 190.5 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (at 25.4 190.5 0) + (effects (font (size 1.27 1.27)) hide) + ) + (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) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (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) + ) + (property "Footprint" "common:MH120X230_#4" (at 55.88 190.5 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (at 55.88 190.5 0) + (effects (font (size 1.27 1.27)) hide) + ) + (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) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (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) + ) + (property "Footprint" "common:MH120X230_#4" (at 30.48 190.5 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (at 30.48 190.5 0) + (effects (font (size 1.27 1.27)) hide) + ) + (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) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (uuid d5be52a2-518e-4e89-827b-31eeb48d5b08) + (property "Reference" "#PWR04" (at 63.5 190.5 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (at 63.5 194.564 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Footprint" "" (at 63.5 190.5 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (at 63.5 190.5 0) + (effects (font (size 1.27 1.27)) hide) + ) + (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) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (uuid f3f370c0-1e6d-4161-848c-0c4f6ab8559f) + (property "Reference" "#PWR03" (at 50.8 190.5 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "GND" (at 50.8 194.564 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Footprint" "" (at 50.8 190.5 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (at 50.8 190.5 0) + (effects (font (size 1.27 1.27)) hide) + ) + (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) + (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) + (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) + ) + (property "Footprint" "common:MH120X230_#4" (at 43.18 190.5 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (at 43.18 190.5 0) + (effects (font (size 1.27 1.27)) hide) + ) + (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 "")) +)