diff --git a/.gitignore b/.gitignore index d16c312..1003117 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,9 @@ firmware/.pio/ # OS .DS_Store Thumbs.db + +# Build artifacts +*.dsn +*.ses +*.mgc +DRC.rpt diff --git a/hardware/kicad/SN-L00-gerbers.zip b/hardware/kicad/SN-L00-gerbers.zip index ff82526..db5f888 100644 Binary files a/hardware/kicad/SN-L00-gerbers.zip and b/hardware/kicad/SN-L00-gerbers.zip differ diff --git a/hardware/kicad/SN-L00.kicad_pcb b/hardware/kicad/SN-L00.kicad_pcb index fa70e48..8554870 100644 --- a/hardware/kicad/SN-L00.kicad_pcb +++ b/hardware/kicad/SN-L00.kicad_pcb @@ -6447,6 +6447,39 @@ ) ) ) + (gr_circle + (center 35 5) + (end 36.6 5) + (stroke + (width 0.15) + (type default) + ) + (fill no) + (layer "Edge.Cuts") + (uuid "2034131c-3b39-4c79-bc68-6a9d17ea2f44") + ) + (gr_circle + (center 5 75) + (end 6.6 75) + (stroke + (width 0.15) + (type default) + ) + (fill no) + (layer "Edge.Cuts") + (uuid "40411225-c33e-415c-9c61-59b6f31f4607") + ) + (gr_circle + (center 35 75) + (end 36.6 75) + (stroke + (width 0.15) + (type default) + ) + (fill no) + (layer "Edge.Cuts") + (uuid "561a78cd-1d63-4c3d-af72-d958e1a02d03") + ) (gr_rect (start 0 0) (end 40 100) @@ -6458,6 +6491,17 @@ (layer "Edge.Cuts") (uuid "a1b2c3d4-e5f6-7890-abcd-ef1234567890") ) + (gr_circle + (center 5 5) + (end 6.6 5) + (stroke + (width 0.15) + (type default) + ) + (fill no) + (layer "Edge.Cuts") + (uuid "d8fbc827-56b6-43e5-9f17-8b2454811e88") + ) (gr_text "SN-L00 v0.1" (at 14.075 98.075 0) (layer "F.SilkS") @@ -6508,7 +6552,7 @@ (width 0.2) (layer "F.Cu") (net 1) - (uuid "19bb80c1-a10d-4593-aa02-d50182de5f6d") + (uuid "24390f90-2e90-473b-a17d-fad8800c6296") ) (segment (start 26 95.9624) @@ -6516,7 +6560,7 @@ (width 0.2) (layer "F.Cu") (net 1) - (uuid "3c7e8a5e-e958-4581-8ec6-2adf852045f9") + (uuid "26526db0-2e90-4f2a-a8c9-ac045b3a2a7c") ) (segment (start 6 92) @@ -6524,7 +6568,7 @@ (width 0.2) (layer "F.Cu") (net 1) - (uuid "8863b0ca-2b23-46b0-a339-94a3f23950a2") + (uuid "8663f88a-aa96-430f-baa9-37f596389e98") ) (segment (start 35.15 91.7) @@ -6532,15 +6576,7 @@ (width 0.2) (layer "F.Cu") (net 1) - (uuid "b765e2cd-2899-4fbd-aa78-fec76b86e8cd") - ) - (via - (at 7.5258 94.2317) - (size 0.6) - (drill 0.3) - (layers "F.Cu" "B.Cu") - (net 1) - (uuid "8fdcb52c-d83a-4b40-ace6-b70c8d835937") + (uuid "f76aa72d-3a14-43c1-868e-5823f668ae0c") ) (via (at 35.15 90.4362) @@ -6548,7 +6584,15 @@ (drill 0.3) (layers "F.Cu" "B.Cu") (net 1) - (uuid "a7b24b71-11dc-4206-acc9-123807814918") + (uuid "2e7ad4e2-95fb-43c8-a9a6-36ae999bcf0e") + ) + (via + (at 7.5258 94.2317) + (size 0.6) + (drill 0.3) + (layers "F.Cu" "B.Cu") + (net 1) + (uuid "60a0d2b0-7075-4059-9cfa-89ec788c59df") ) (via (at 26 95.9624) @@ -6556,31 +6600,7 @@ (drill 0.3) (layers "F.Cu" "B.Cu") (net 1) - (uuid "d4c2b999-03e1-4495-8cae-2310841150ad") - ) - (segment - (start 31.3545 94.2317) - (end 35.15 90.4362) - (width 0.2) - (layer "B.Cu") - (net 1) - (uuid "8dd0cd79-cbaa-46e2-800b-4a811a1c1600") - ) - (segment - (start 26 94.2317) - (end 31.3545 94.2317) - (width 0.2) - (layer "B.Cu") - (net 1) - (uuid "adbfd673-e963-4b46-bad5-a63b296b89c4") - ) - (segment - (start 26 95.9624) - (end 26 94.2317) - (width 0.2) - (layer "B.Cu") - (net 1) - (uuid "b631f7c4-1430-4b77-833d-05fb29ce88ff") + (uuid "d01fbd32-393c-40eb-ac30-58049b1f2eaf") ) (segment (start 7.5258 94.2317) @@ -6588,127 +6608,55 @@ (width 0.2) (layer "B.Cu") (net 1) - (uuid "b889f335-c1fe-43dd-81aa-b569de54c579") + (uuid "10898230-7f13-4527-9bf3-97dfe06ef047") ) (segment - (start 30 83.225) - (end 30 85.175) + (start 26 94.2317) + (end 31.3545 94.2317) + (width 0.2) + (layer "B.Cu") + (net 1) + (uuid "21ae4386-d7f4-4a61-88a2-dd195889ac12") + ) + (segment + (start 31.3545 94.2317) + (end 35.15 90.4362) + (width 0.2) + (layer "B.Cu") + (net 1) + (uuid "96b13834-db0a-467a-834d-3eaf0c0d0dcc") + ) + (segment + (start 26 95.9624) + (end 26 94.2317) + (width 0.2) + (layer "B.Cu") + (net 1) + (uuid "cd623290-7ca8-49cf-8412-5175349d244d") + ) + (segment + (start 28 81.225) + (end 28.9519 82.1768) (width 0.2) (layer "F.Cu") (net 2) - (uuid "052a691a-b265-4a83-9bd5-ba6aa1a81917") + (uuid "020c4253-6d42-493a-bf4e-72dca24da5a9") ) (segment - (start 34.95 50.1625) - (end 34.95 77.0397) + (start 8.5262 91.7512) + (end 8.5262 80.6137) (width 0.2) (layer "F.Cu") (net 2) - (uuid "071568ac-4346-465a-a1be-7166b46644f0") + (uuid "02a2ed39-0951-4b85-a6af-d01e00eac942") ) (segment - (start 20 95.62) - (end 20 93.08) + (start 28.7761 89.3665) + (end 28.7761 86.3989) (width 0.2) (layer "F.Cu") (net 2) - (uuid "0afca2a8-31d6-40e2-84ce-1fd7262e0308") - ) - (segment - (start 30.076 36.2167) - (end 32.7875 38.9282) - (width 0.2) - (layer "F.Cu") - (net 2) - (uuid "0e8c645c-58aa-4b67-b0bc-0b88014cd555") - ) - (segment - (start 7.8782 78.3377) - (end 7.8782 76.995) - (width 0.2) - (layer "F.Cu") - (net 2) - (uuid "378cad8f-c976-4f23-898d-02fd23d795ff") - ) - (segment - (start 29.051 89.0916) - (end 29.051 86.124) - (width 0.2) - (layer "F.Cu") - (net 2) - (uuid "3e5f326c-608b-47f0-be71-a61e933bbc07") - ) - (segment - (start 10 93.225) - (end 10 92.3575) - (width 0.2) - (layer "F.Cu") - (net 2) - (uuid "40cecb70-8bed-47af-8bc1-5e1b7b09d9dd") - ) - (segment - (start 30 35) - (end 30 36.2167) - (width 0.2) - (layer "F.Cu") - (net 2) - (uuid "4143dc03-121a-4624-9848-067a6fee5508") - ) - (segment - (start 38.0547 93.3953) - (end 38.0547 89.6787) - (width 0.2) - (layer "F.Cu") - (net 2) - (uuid "4a3eaacc-5daf-4b02-9e47-7149feef4ccf") - ) - (segment - (start 29.051 86.124) - (end 30 85.175) - (width 0.2) - (layer "F.Cu") - (net 2) - (uuid "55ac1b50-c983-4698-af81-baf4d1b7c9e9") - ) - (segment - (start 20 93.08) - (end 20 90.54) - (width 0.2) - (layer "F.Cu") - (net 2) - (uuid "5cce58d3-092f-407c-aba7-3901c5cc14f6") - ) - (segment - (start 10 92.3575) - (end 10.6569 92.3575) - (width 0.2) - (layer "F.Cu") - (net 2) - (uuid "6b9dc8df-12e8-465f-94a2-ba4aa0005f06") - ) - (segment - (start 6.8625 88.0375) - (end 6.8625 78.95) - (width 0.2) - (layer "F.Cu") - (net 2) - (uuid "7628ebb3-9380-4a12-854e-1545d37403e4") - ) - (segment - (start 10 92.3575) - (end 10 91.175) - (width 0.2) - (layer "F.Cu") - (net 2) - (uuid "79c9825c-7d4d-4b76-9efe-e6c7ef2fd356") - ) - (segment - (start 13.3972 76.4472) - (end 14 77.05) - (width 0.2) - (layer "F.Cu") - (net 2) - (uuid "7ee24e1a-1050-4a0f-8873-f060764414d8") + (uuid "0a5161f9-9c64-43db-abf0-381a4f342119") ) (segment (start 25.97 93.08) @@ -6716,119 +6664,55 @@ (width 0.2) (layer "F.Cu") (net 2) - (uuid "83959b1f-199d-4aff-8b5d-69da0f0d538d") + (uuid "1c1461c7-a3ab-42fe-89bb-6fbdb02f0353") ) (segment - (start 32.7875 48) - (end 34.95 50.1625) + (start 10 93.225) + (end 8.5262 91.7512) (width 0.2) (layer "F.Cu") (net 2) - (uuid "8897b30c-31f9-47e3-94aa-6272a2142f15") + (uuid "1cee40b9-482e-4d80-8c54-b356f8d4b7c2") ) (segment - (start 10 91.175) - (end 6.8625 88.0375) + (start 20 93.08) + (end 20 90.54) (width 0.2) (layer "F.Cu") (net 2) - (uuid "8c26bb4a-482a-4326-8546-4e8e2586a7c5") + (uuid "3a53a29a-bbc3-42e7-b778-5dbb8c59b3cd") ) (segment - (start 38.0547 89.6787) - (end 38.0547 77.51) + (start 20 95.62) + (end 20 93.08) (width 0.2) (layer "F.Cu") (net 2) - (uuid "a472cdc5-ebe4-4c64-873d-c7d06e1b4421") + (uuid "460996ff-8fad-4f72-ae15-d2a030e1c9b6") ) (segment - (start 7.2659 78.95) - (end 7.8782 78.3377) + (start 30.076 36.2167) + (end 32.7875 38.9282) (width 0.2) (layer "F.Cu") (net 2) - (uuid "a5926a4d-ccba-41b5-a1ac-ca56900bf3ff") + (uuid "4be0cabe-07fc-4627-b055-ed77d4066368") ) (segment - (start 7.8782 76.995) - (end 8.426 76.4472) + (start 32.0364 79.0923) + (end 32.0364 77.272) (width 0.2) (layer "F.Cu") (net 2) - (uuid "a61e0b10-143a-4937-9c09-8e01653a9481") + (uuid "4c591ad5-08e5-460c-902e-4e0e12b0cae0") ) (segment - (start 38.0547 77.51) - (end 37.5844 77.0397) + (start 18.8473 81.8973) + (end 18.8473 89.3873) (width 0.2) (layer "F.Cu") (net 2) - (uuid "a805a02e-902f-40cb-921b-973aa635d4ae") - ) - (segment - (start 35.15 96.3) - (end 38.0547 93.3953) - (width 0.2) - (layer "F.Cu") - (net 2) - (uuid "b1eaa792-829c-4d8b-b2c8-c69378bcf67e") - ) - (segment - (start 22.54 93.08) - (end 25.97 93.08) - (width 0.2) - (layer "F.Cu") - (net 2) - (uuid "c6363ab2-77e5-4405-ad1e-ba533893c550") - ) - (segment - (start 37.5844 77.0397) - (end 34.95 77.0397) - (width 0.2) - (layer "F.Cu") - (net 2) - (uuid "c6a2d386-e8f2-410b-92f5-fb2d86618072") - ) - (segment - (start 34.95 77.0397) - (end 34.95 78) - (width 0.2) - (layer "F.Cu") - (net 2) - (uuid "c70dc5cb-42b6-4e8a-ab25-c935404b604d") - ) - (segment - (start 30 36.2167) - (end 30.076 36.2167) - (width 0.2) - (layer "F.Cu") - (net 2) - (uuid "c9ba4127-8e33-45eb-b6fd-69dedbc72f2f") - ) - (segment - (start 22.54 98.16) - (end 22.54 95.62) - (width 0.2) - (layer "F.Cu") - (net 2) - (uuid "d3464df3-197b-4d1d-a43e-8423da4439fd") - ) - (segment - (start 28 81.225) - (end 30 83.225) - (width 0.2) - (layer "F.Cu") - (net 2) - (uuid "db0681ac-42be-4864-9ee1-49082387c8e7") - ) - (segment - (start 6.8625 78.95) - (end 7.2659 78.95) - (width 0.2) - (layer "F.Cu") - (net 2) - (uuid "e2097a83-7a57-4544-a0d5-494f9ded1854") + (uuid "5bc9fed3-17ed-48dd-94c3-cf754dcab3e5") ) (segment (start 20 98.16) @@ -6836,23 +6720,15 @@ (width 0.2) (layer "F.Cu") (net 2) - (uuid "e554b743-f65f-43fe-b71e-8933ef263ed0") + (uuid "60fa89ea-7118-4166-be29-33ec88f717df") ) (segment - (start 32.7875 38.9282) - (end 32.7875 48) + (start 22.54 93.08) + (end 25.97 93.08) (width 0.2) (layer "F.Cu") (net 2) - (uuid "e6b92c46-4976-4855-a4a8-5e3841b9ee97") - ) - (segment - (start 8.426 76.4472) - (end 13.3972 76.4472) - (width 0.2) - (layer "F.Cu") - (net 2) - (uuid "f43be537-2a7a-467c-a565-36d03e0296bc") + (uuid "61f245e1-ee44-46fe-b131-f4acd27e322e") ) (segment (start 22.54 95.62) @@ -6860,47 +6736,215 @@ (width 0.2) (layer "F.Cu") (net 2) - (uuid "f4e38b98-bbdf-487e-b9af-e201872e386d") - ) - (via - (at 29.051 89.0916) - (size 0.6) - (drill 0.3) - (layers "F.Cu" "B.Cu") - (net 2) - (uuid "636fb108-3490-44b9-8066-9b6935c5b189") - ) - (via - (at 38.0547 89.6787) - (size 0.6) - (drill 0.3) - (layers "F.Cu" "B.Cu") - (net 2) - (uuid "aac087f9-7f12-4136-990e-b28fe629bc80") - ) - (via - (at 10.6569 92.3575) - (size 0.6) - (drill 0.3) - (layers "F.Cu" "B.Cu") - (net 2) - (uuid "f2d63803-c0bf-497e-b727-53fdc96a85c4") + (uuid "6fa92ba7-ae4b-48b7-a627-7f0cf93b8060") ) (segment - (start 37.4676 89.0916) - (end 38.0547 89.6787) + (start 32.7644 78) + (end 34.95 78) (width 0.2) - (layer "B.Cu") + (layer "F.Cu") (net 2) - (uuid "4dccac4f-6ae8-418b-8966-cb8335e94d69") + (uuid "72e1343a-7406-42ef-ab3c-c1bea8362f74") ) (segment - (start 20 93.08) - (end 19.2775 92.3575) + (start 32.0364 54.6276) + (end 32.0364 77.272) (width 0.2) - (layer "B.Cu") + (layer "F.Cu") (net 2) - (uuid "9d5ac7bf-0a74-4ae3-83e1-be45a2394170") + (uuid "81a0896a-e83c-472b-9f1d-3b1bc8646b52") + ) + (segment + (start 32.0364 77.272) + (end 32.7644 78) + (width 0.2) + (layer "F.Cu") + (net 2) + (uuid "83c05dbb-d85c-4ec3-b15c-401d656d76f3") + ) + (segment + (start 30 35.6083) + (end 30 36.2167) + (width 0.2) + (layer "F.Cu") + (net 2) + (uuid "849abfca-e73d-4d5c-8c62-47e0d4246d5d") + ) + (segment + (start 30 35.6083) + (end 28.1882 37.4201) + (width 0.2) + (layer "F.Cu") + (net 2) + (uuid "8dea0c93-8f20-4c40-a227-4eaee5d1e0b6") + ) + (segment + (start 35.15 96.3) + (end 33.6283 97.8217) + (width 0.2) + (layer "F.Cu") + (net 2) + (uuid "8e46b0ab-442c-4bd5-9bab-f21e077fa13e") + ) + (segment + (start 30 36.2167) + (end 30.076 36.2167) + (width 0.2) + (layer "F.Cu") + (net 2) + (uuid "98378e76-d066-4ad2-9102-ce87288271e3") + ) + (segment + (start 28.7761 86.3989) + (end 30 85.175) + (width 0.2) + (layer "F.Cu") + (net 2) + (uuid "9f25f8ee-2367-4918-a7e6-fb260ed2f781") + ) + (segment + (start 30 35) + (end 30 35.6083) + (width 0.2) + (layer "F.Cu") + (net 2) + (uuid "a27e7d7e-5b7d-49c8-ab14-5beb76528690") + ) + (segment + (start 32.7875 38.9282) + (end 32.7875 48) + (width 0.2) + (layer "F.Cu") + (net 2) + (uuid "a629ffd6-53a3-427c-84d4-ddb8435d8273") + ) + (segment + (start 30 83.7427) + (end 30 85.175) + (width 0.2) + (layer "F.Cu") + (net 2) + (uuid "b10e87f1-0f86-4c8f-b566-0eae27e2ef0c") + ) + (segment + (start 29.211 82.9537) + (end 30 83.7427) + (width 0.2) + (layer "F.Cu") + (net 2) + (uuid "b2a9cfb4-b89d-454f-9bab-e84ac2638de9") + ) + (segment + (start 33.6283 97.8217) + (end 33.6283 98.16) + (width 0.2) + (layer "F.Cu") + (net 2) + (uuid "bb307058-8ede-4a33-91b2-fb6caad0019b") + ) + (segment + (start 28.9519 82.1768) + (end 29.211 82.436) + (width 0.2) + (layer "F.Cu") + (net 2) + (uuid "c4d43ef7-23bb-4293-8bdf-ca2ccd568971") + ) + (segment + (start 10 93.225) + (end 10 90.54) + (width 0.2) + (layer "F.Cu") + (net 2) + (uuid "c683b638-ed29-4ffa-a8d3-121918df22ba") + ) + (segment + (start 8.5262 80.6137) + (end 6.8625 78.95) + (width 0.2) + (layer "F.Cu") + (net 2) + (uuid "c743063a-3033-4d51-870d-e3c534a9be42") + ) + (segment + (start 28.1882 37.4201) + (end 28.1882 50.7794) + (width 0.2) + (layer "F.Cu") + (net 2) + (uuid "c8e48230-7988-4ac7-9b04-62b70ece4766") + ) + (segment + (start 18.8473 89.3873) + (end 20 90.54) + (width 0.2) + (layer "F.Cu") + (net 2) + (uuid "db96996f-babe-4722-9bb3-d468fdd1e1b7") + ) + (segment + (start 22.54 98.16) + (end 22.54 95.62) + (width 0.2) + (layer "F.Cu") + (net 2) + (uuid "dec6aa9c-0dc6-4adc-8a15-9d8437bb1d47") + ) + (segment + (start 29.211 82.436) + (end 29.211 82.9537) + (width 0.2) + (layer "F.Cu") + (net 2) + (uuid "e44ed929-277a-4b05-92fa-0303955fb908") + ) + (segment + (start 28.1882 50.7794) + (end 32.0364 54.6276) + (width 0.2) + (layer "F.Cu") + (net 2) + (uuid "f4fb98f8-44b6-4ce4-96ba-5313035bce25") + ) + (segment + (start 14 77.05) + (end 18.8473 81.8973) + (width 0.2) + (layer "F.Cu") + (net 2) + (uuid "f5f6467b-f7bc-4627-bb33-3b595667fbc6") + ) + (segment + (start 28.9519 82.1768) + (end 32.0364 79.0923) + (width 0.2) + (layer "F.Cu") + (net 2) + (uuid "f638745e-4059-4f5c-a793-df6236fb0786") + ) + (via + (at 33.6283 98.16) + (size 0.6) + (drill 0.3) + (layers "F.Cu" "B.Cu") + (net 2) + (uuid "2117ed12-4ac2-4ab5-a9d1-575209f4009f") + ) + (via + (at 28.7761 89.3665) + (size 0.6) + (drill 0.3) + (layers "F.Cu" "B.Cu") + (net 2) + (uuid "8bf05ace-b0f3-432b-8e7f-a2fdef56507b") + ) + (via + (at 10 90.54) + (size 0.6) + (drill 0.3) + (layers "F.Cu" "B.Cu") + (net 2) + (uuid "ddee7a53-35f0-4ee5-a50d-10b9ad01d5bb") ) (segment (start 20 95.62) @@ -6908,199 +6952,55 @@ (width 0.2) (layer "B.Cu") (net 2) - (uuid "cf219c58-28ec-4e97-bd08-67ceb99fb66f") - ) - (segment - (start 26.5284 89.0916) - (end 29.051 89.0916) - (width 0.2) - (layer "B.Cu") - (net 2) - (uuid "eada6a92-6a62-4028-836a-268e0a00caff") - ) - (segment - (start 29.051 89.0916) - (end 37.4676 89.0916) - (width 0.2) - (layer "B.Cu") - (net 2) - (uuid "f2b31cef-5e3a-4681-b66e-fbc864d392a6") - ) - (segment - (start 19.2775 92.3575) - (end 10.6569 92.3575) - (width 0.2) - (layer "B.Cu") - (net 2) - (uuid "f5c5272d-9ae1-463a-8a6d-5d67e353e66b") + (uuid "6f3d3b06-6d40-41c7-bcff-cee2ef248c15") ) (segment (start 22.54 93.08) - (end 26.5284 89.0916) + (end 26.2535 89.3665) (width 0.2) (layer "B.Cu") (net 2) - (uuid "fc9f0ce6-4b88-4756-8ceb-54bf9427cf29") + (uuid "9b7b3683-c3c0-49eb-8aaf-a593bc46c5d1") ) (segment - (start 36.4767 92.6733) - (end 35.15 94) + (start 26.2535 89.3665) + (end 28.7761 89.3665) + (width 0.2) + (layer "B.Cu") + (net 2) + (uuid "a8a86e5f-d05e-42b0-9128-ae4c7f7013c9") + ) + (segment + (start 20 90.54) + (end 10 90.54) + (width 0.2) + (layer "B.Cu") + (net 2) + (uuid "d68cffd1-3ce9-4d26-ad31-27f80b6c7004") + ) + (segment + (start 22.54 98.16) + (end 33.6283 98.16) + (width 0.2) + (layer "B.Cu") + (net 2) + (uuid "db01a3ef-e49f-46fd-9b9c-30a2c8767c55") + ) + (segment + (start 10.8206 82.3335) + (end 10.8206 86.838) (width 0.2) (layer "F.Cu") (net 3) - (uuid "060c079e-04d7-4aa1-a9a0-1eba32ec947d") + (uuid "04f1708a-8811-4abe-96d8-8fdb84dff8e5") ) (segment - (start 8.126 92.901) - (end 10 94.775) + (start 10.8206 86.838) + (end 10.8206 93.9544) (width 0.2) (layer "F.Cu") (net 3) - (uuid "172c8479-b955-4c59-94fc-cd7269a5a40c") - ) - (segment - (start 17.2323 82.1823) - (end 17.2323 86.825) - (width 0.2) - (layer "F.Cu") - (net 3) - (uuid "2fb4c715-8ac0-4447-8f08-19407bb893dc") - ) - (segment - (start 17.2323 87.5427) - (end 10 94.775) - (width 0.2) - (layer "F.Cu") - (net 3) - (uuid "31ab7757-1144-40cf-a2c5-705ad8d3b8db") - ) - (segment - (start 17.2323 86.825) - (end 17.2323 87.5427) - (width 0.2) - (layer "F.Cu") - (net 3) - (uuid "387bd48b-f04b-430e-aac8-c85bbb6064df") - ) - (segment - (start 28 82.8) - (end 28 93.15) - (width 0.2) - (layer "F.Cu") - (net 3) - (uuid "3a60412c-9c63-4265-9861-292d36eabeee") - ) - (segment - (start 5.05 82) - (end 5.05 86.825) - (width 0.2) - (layer "F.Cu") - (net 3) - (uuid "3cad39e8-efd0-408d-96b1-d48fe8f22457") - ) - (segment - (start 28 93.15) - (end 28.85 94) - (width 0.2) - (layer "F.Cu") - (net 3) - (uuid "67df6ea1-efaa-45b5-b93d-3cfc05a2f35e") - ) - (segment - (start 14 78.95) - (end 11.0375 78.95) - (width 0.2) - (layer "F.Cu") - (net 3) - (uuid "68217817-3efa-4d40-b810-cb173eedb54e") - ) - (segment - (start 28 82.8) - (end 28 82.775) - (width 0.2) - (layer "F.Cu") - (net 3) - (uuid "69f7265c-8d49-4e68-b941-a56f34d94795") - ) - (segment - (start 14 78.95) - (end 17.2323 82.1823) - (width 0.2) - (layer "F.Cu") - (net 3) - (uuid "6ea49e1a-7839-447f-b707-a7d131699324") - ) - (segment - (start 24 86.825) - (end 17.2323 86.825) - (width 0.2) - (layer "F.Cu") - (net 3) - (uuid "7b762ebb-e6d2-4e40-97ec-c07d694eaa9e") - ) - (segment - (start 5.05 86.825) - (end 8.126 89.901) - (width 0.2) - (layer "F.Cu") - (net 3) - (uuid "820908fb-4cb0-4aff-9996-5af090158ef9") - ) - (segment - (start 36.4767 87.3017) - (end 36.4767 92.6733) - (width 0.2) - (layer "F.Cu") - (net 3) - (uuid "82e8df19-392c-4db8-8f42-571d0caed1e4") - ) - (segment - (start 5.05 86.825) - (end 4 86.825) - (width 0.2) - (layer "F.Cu") - (net 3) - (uuid "8537b379-c77f-43ae-b97e-ebbe1a0e56f8") - ) - (segment - (start 24 86.825) - (end 28 82.825) - (width 0.2) - (layer "F.Cu") - (net 3) - (uuid "8912c1c9-5e47-4455-9fec-d240f02f40ad") - ) - (segment - (start 8.126 89.901) - (end 8.126 92.901) - (width 0.2) - (layer "F.Cu") - (net 3) - (uuid "bd53a2a7-0c7e-483a-a403-0cab001c3624") - ) - (segment - (start 28 82.825) - (end 28 82.8) - (width 0.2) - (layer "F.Cu") - (net 3) - (uuid "c4f5855c-0078-4b66-b4e4-889559d3a6c2") - ) - (segment - (start 36 86.825) - (end 36.4767 87.3017) - (width 0.2) - (layer "F.Cu") - (net 3) - (uuid "cd673913-80d2-483a-8348-ce9542111001") - ) - (segment - (start 11.0375 78.95) - (end 9.1375 77.05) - (width 0.2) - (layer "F.Cu") - (net 3) - (uuid "d6066af6-bb0f-498f-9772-bdea6a662019") + (uuid "2b7a4359-8eb7-496c-b84c-bc570e24a3d3") ) (segment (start 35.15 94) @@ -7108,7 +7008,223 @@ (width 0.2) (layer "F.Cu") (net 3) - (uuid "fec113f7-c821-4f58-8fd0-678b5ff0a027") + (uuid "3185a161-9f06-4629-86f4-fda366820ec9") + ) + (segment + (start 5.05 82) + (end 5.05 86.825) + (width 0.2) + (layer "F.Cu") + (net 3) + (uuid "34e94e85-d9ed-4776-927d-64ccf4c6cf42") + ) + (segment + (start 5.05 86.825) + (end 4 86.825) + (width 0.2) + (layer "F.Cu") + (net 3) + (uuid "3a8c769f-46e0-48c8-8141-7e88dbe50c07") + ) + (segment + (start 28 82.8) + (end 28 93.15) + (width 0.2) + (layer "F.Cu") + (net 3) + (uuid "437c7846-b065-4def-b2ef-194100c7bcdc") + ) + (segment + (start 35.15 94) + (end 36.4767 92.6733) + (width 0.2) + (layer "F.Cu") + (net 3) + (uuid "4b26fe20-d774-4a87-b634-f7c5463fe4fc") + ) + (segment + (start 8.1671 79.68) + (end 10.8206 82.3335) + (width 0.2) + (layer "F.Cu") + (net 3) + (uuid "4b4de27f-3a97-4834-8b69-2e6c33eaef40") + ) + (segment + (start 28 93.15) + (end 28.85 94) + (width 0.2) + (layer "F.Cu") + (net 3) + (uuid "5af1eb47-b659-42da-b94b-3045464be535") + ) + (segment + (start 9.1986 77.1111) + (end 9.1375 77.05) + (width 0.2) + (layer "F.Cu") + (net 3) + (uuid "633b4ddf-e4e9-40f3-b093-a9a3e0ed5112") + ) + (segment + (start 10.6236 78.95) + (end 9.1986 77.525) + (width 0.2) + (layer "F.Cu") + (net 3) + (uuid "6de03059-d1c1-44a1-8255-a889105b7d7d") + ) + (segment + (start 8.1245 89.8995) + (end 8.1245 92.8995) + (width 0.2) + (layer "F.Cu") + (net 3) + (uuid "6e2351fd-6ae9-458a-b291-617ff41056a9") + ) + (segment + (start 9.1986 77.525) + (end 9.1986 77.1111) + (width 0.2) + (layer "F.Cu") + (net 3) + (uuid "78873dae-9b74-4de2-b3ba-833295cd9b3d") + ) + (segment + (start 24 86.825) + (end 28 82.825) + (width 0.2) + (layer "F.Cu") + (net 3) + (uuid "85548fb7-28b5-4346-827e-25ba22aad841") + ) + (segment + (start 24 86.825) + (end 24 87.7351) + (width 0.2) + (layer "F.Cu") + (net 3) + (uuid "862772dc-28b9-4cfb-b95d-5a89881f7510") + ) + (segment + (start 10.8206 86.838) + (end 11.0082 86.838) + (width 0.2) + (layer "F.Cu") + (net 3) + (uuid "87c76ec6-352d-4e00-971f-5131002526e0") + ) + (segment + (start 10.8206 93.9544) + (end 10 94.775) + (width 0.2) + (layer "F.Cu") + (net 3) + (uuid "9d2c67e1-a88e-44d1-848e-3781ea418212") + ) + (segment + (start 8.1245 92.8995) + (end 10 94.775) + (width 0.2) + (layer "F.Cu") + (net 3) + (uuid "b9cfd178-2a38-4e5e-a16f-6515b333aeff") + ) + (segment + (start 14 78.95) + (end 10.6236 78.95) + (width 0.2) + (layer "F.Cu") + (net 3) + (uuid "bf724392-ffb6-4670-a416-4256526b6f26") + ) + (segment + (start 36.4767 92.6733) + (end 36.4767 87.3017) + (width 0.2) + (layer "F.Cu") + (net 3) + (uuid "bff7b230-475a-45ab-be32-ffd71944bafe") + ) + (segment + (start 28 82.825) + (end 28 82.8) + (width 0.2) + (layer "F.Cu") + (net 3) + (uuid "c7cd8d76-5369-40cf-9a30-a10721f80c34") + ) + (segment + (start 28 82.8) + (end 28 82.775) + (width 0.2) + (layer "F.Cu") + (net 3) + (uuid "d50ccb67-35b5-4264-8e25-0c93e011b0cb") + ) + (segment + (start 9.1986 77.525) + (end 8.1671 78.5565) + (width 0.2) + (layer "F.Cu") + (net 3) + (uuid "d9f7b454-642e-49be-9b53-37d3ddfc7f5b") + ) + (segment + (start 5.05 86.825) + (end 8.1245 89.8995) + (width 0.2) + (layer "F.Cu") + (net 3) + (uuid "e0fbbe8a-bdf2-4e80-b8c2-f72b31d8a34f") + ) + (segment + (start 36.4767 87.3017) + (end 36 86.825) + (width 0.2) + (layer "F.Cu") + (net 3) + (uuid "f60a3e61-d618-4121-af37-f0556ec2cd76") + ) + (segment + (start 8.1671 78.5565) + (end 8.1671 79.68) + (width 0.2) + (layer "F.Cu") + (net 3) + (uuid "f7270fa5-9b41-48e9-ac13-8d94cb337d5b") + ) + (via + (at 11.0082 86.838) + (size 0.6) + (drill 0.3) + (layers "F.Cu" "B.Cu") + (net 3) + (uuid "2463e142-3b07-4e91-8f36-b7a7dfac3968") + ) + (via + (at 24 87.7351) + (size 0.6) + (drill 0.3) + (layers "F.Cu" "B.Cu") + (net 3) + (uuid "2733a988-f24d-4a61-b608-e41e32734bc2") + ) + (segment + (start 24 87.7351) + (end 23.1029 86.838) + (width 0.2) + (layer "B.Cu") + (net 3) + (uuid "4384d180-648c-4ad4-b55d-6faeb8279dd8") + ) + (segment + (start 23.1029 86.838) + (end 11.0082 86.838) + (width 0.2) + (layer "B.Cu") + (net 3) + (uuid "d2fcfa2e-257e-43d3-a5e8-fe61e488adf2") ) (segment (start 2 90.5779) @@ -7116,7 +7232,7 @@ (width 0.2) (layer "F.Cu") (net 6) - (uuid "4dec7264-b16b-45a2-b4c6-5dd837e7aae3") + (uuid "95186ddd-9792-467f-b2fe-bee627bd8292") ) (via (at 2 90.5779) @@ -7124,7 +7240,7 @@ (drill 0.3) (layers "F.Cu" "B.Cu") (net 6) - (uuid "92bb0797-48e7-4038-beab-5745a8aa22cc") + (uuid "410a98b4-4fd3-4863-a9a5-ceca91077168") ) (segment (start 21.3494 91.7306) @@ -7132,15 +7248,7 @@ (width 0.2) (layer "B.Cu") (net 6) - (uuid "342fa68d-5882-4505-85e4-5e386edbd220") - ) - (segment - (start 22.54 90.54) - (end 21.3494 91.7306) - (width 0.2) - (layer "B.Cu") - (net 6) - (uuid "70f0bcd0-d8a4-4d62-a028-6259904c1482") + (uuid "70b28c49-fa5f-45ab-9e99-86261b03f6d1") ) (segment (start 3.1527 91.7306) @@ -7148,223 +7256,191 @@ (width 0.2) (layer "B.Cu") (net 6) - (uuid "fed0f8ed-61be-4c49-89fc-03f319979939") + (uuid "7541f414-fcbc-4613-8c84-8195f281796f") ) (segment - (start 2.95 82) - (end 2.95 83.5559) + (start 22.54 90.54) + (end 21.3494 91.7306) (width 0.2) - (layer "F.Cu") - (net 7) - (uuid "0dd6d8dc-9f06-4336-979d-caebe57b92b6") + (layer "B.Cu") + (net 6) + (uuid "bc5abde0-c5c0-4fe3-9ef0-2d5b54f74c26") ) (segment - (start 36.1 78.95) - (end 37.05 78) - (width 0.2) - (layer "F.Cu") - (net 7) - (uuid "2ddc9cf2-8d72-41a0-925a-9778832134f2") - ) - (segment - (start 32.1433 79.9442) + (start 33.1375 83.6875) (end 33.1375 78.95) (width 0.2) (layer "F.Cu") (net 7) - (uuid "400dfc57-3723-474a-9773-64d82f8061a5") + (uuid "0d50fb85-c6c9-401d-b69d-982cdb54797b") ) (segment - (start 31.8567 79.9442) - (end 30.8625 78.95) + (start 36.1 78.95) + (end 33.1375 78.95) (width 0.2) (layer "F.Cu") (net 7) - (uuid "73240b5c-2f31-4447-a1de-79f04e0ff7f6") - ) - (segment - (start 24 83.9981) - (end 29.0481 78.95) - (width 0.2) - (layer "F.Cu") - (net 7) - (uuid "8751f5e9-f19e-48d8-8885-d4415e8a7819") - ) - (segment - (start 10 85.175) - (end 10 83.5559) - (width 0.2) - (layer "F.Cu") - (net 7) - (uuid "9e19d887-0132-4ac5-ac4c-a97d2fad1a91") - ) - (segment - (start 29.0481 78.95) - (end 30.8625 78.95) - (width 0.2) - (layer "F.Cu") - (net 7) - (uuid "ad2f7e8d-5aba-41d4-bd03-77056b01dba5") + (uuid "13e2e1d4-dcf7-437f-9eac-02fefa3f5b0e") ) (segment (start 24 85.175) - (end 24 83.9981) + (end 24 83.9036) (width 0.2) (layer "F.Cu") (net 7) - (uuid "b81561e6-9b59-4192-bc6d-2c363a2b2db6") + (uuid "1ec9024f-0bc7-4ed5-9f2f-47a14bb423f1") ) (segment - (start 33.1375 78.95) + (start 37.05 78) (end 36.1 78.95) (width 0.2) (layer "F.Cu") (net 7) - (uuid "c9738c6c-5599-4bf2-9c61-28cca01bda14") + (uuid "379a76be-ff2c-4353-accc-9ca408ed7670") + ) + (segment + (start 10 85.175) + (end 10 83.5958) + (width 0.2) + (layer "F.Cu") + (net 7) + (uuid "5a675a31-3d66-4046-80d7-b4310b8f6c0f") + ) + (segment + (start 24.3078 83.5958) + (end 28.9536 78.95) + (width 0.2) + (layer "F.Cu") + (net 7) + (uuid "aa3c759e-3242-4aad-a276-ecc2517b21e3") + ) + (segment + (start 24 83.9036) + (end 24.3078 83.5958) + (width 0.2) + (layer "F.Cu") + (net 7) + (uuid "afb2ed87-78a2-456e-8168-51eabb4a74b3") + ) + (segment + (start 2.95 82) + (end 2.95 83.5958) + (width 0.2) + (layer "F.Cu") + (net 7) + (uuid "b6b84416-332d-4fc1-9db6-4fdcb97b6d53") ) (segment (start 30 86.825) - (end 31.8567 84.9683) + (end 32.083 84.742) (width 0.2) (layer "F.Cu") (net 7) - (uuid "dc5bab26-48db-4053-a2b8-1ac29daed0b9") + (uuid "eba56329-f946-47e4-9fba-4f32317c4bf7") ) (segment - (start 31.8567 79.9442) - (end 32.1433 79.9442) + (start 32.083 84.742) + (end 33.1375 83.6875) (width 0.2) (layer "F.Cu") (net 7) - (uuid "e434640d-1d8c-4539-ab67-63cfd65976e8") + (uuid "f37dd2a9-9576-486e-b9fb-ef9ee193833e") ) (segment - (start 31.8567 84.9683) - (end 31.8567 79.9442) + (start 28.9536 78.95) + (end 30.8625 78.95) (width 0.2) (layer "F.Cu") (net 7) - (uuid "f938bfea-7195-449a-a5ac-b0dae4be5679") + (uuid "f821098e-2e32-492f-a7c5-1650cbd235cc") ) (via - (at 24 83.9981) + (at 32.083 84.742) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 7) - (uuid "883c579a-3f65-4173-b3a9-6f190cecb6b6") + (uuid "16ba1b62-71a8-42cb-abda-bce9159da6f5") ) (via - (at 10 83.5559) + (at 24.3078 83.5958) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 7) - (uuid "ef4d5bc8-cc11-40d9-bb21-6121c93cf4af") + (uuid "1c56ee14-a292-41d0-b980-cedc425a8262") ) (via - (at 2.95 83.5559) + (at 10 83.5958) (size 0.6) (drill 0.3) (layers "F.Cu" "B.Cu") (net 7) - (uuid "fc7e9c7d-9983-4c0b-98b3-090595bfea37") + (uuid "84e763ec-16d2-478b-b703-97ce819a97eb") + ) + (via + (at 2.95 83.5958) + (size 0.6) + (drill 0.3) + (layers "F.Cu" "B.Cu") + (net 7) + (uuid "904ca2ad-fd28-43e4-ad82-e6b70bd7efdd") ) (segment - (start 10 83.5559) - (end 23.5578 83.5559) + (start 24.3078 83.5958) + (end 10 83.5958) (width 0.2) (layer "B.Cu") (net 7) - (uuid "4aaa64d4-2dcd-41e8-bcef-6f6f7428753e") + (uuid "3ee93d9c-307d-4fcc-a4f3-15ff1025538e") ) (segment - (start 10 83.5559) - (end 2.95 83.5559) + (start 24.3078 83.5958) + (end 30.9368 83.5958) (width 0.2) (layer "B.Cu") (net 7) - (uuid "b3a9797b-be7c-45ba-a332-27eee54ec89e") + (uuid "7a25eb03-89b4-4975-8111-1b4ff0378dbd") ) (segment - (start 23.5578 83.5559) - (end 24 83.9981) + (start 30.9368 83.5958) + (end 32.083 84.742) (width 0.2) (layer "B.Cu") (net 7) - (uuid "ebd36b53-4b24-4036-acfc-63709c71b50e") + (uuid "923abf92-c220-4b07-8d7f-0297c38a423d") + ) + (segment + (start 10 83.5958) + (end 2.95 83.5958) + (width 0.2) + (layer "B.Cu") + (net 7) + (uuid "c341b0df-d413-4e7e-9b27-8bc9712f36f3") ) (segment (start 31.2125 48) - (end 34.241 51.0285) + (end 37.6919 54.4794) (width 0.2) (layer "F.Cu") (net 8) - (uuid "0e7b4c82-d135-4d93-83e8-a1d0959e92d2") + (uuid "018f5948-0fd5-4115-989b-70f34a234218") ) (segment - (start 37.4181 77.4414) - (end 37.653 77.6763) - (width 0.2) - (layer "F.Cu") - (net 8) - (uuid "16fd3e4f-9481-41b8-8d3a-e7894e3e623a") - ) - (segment - (start 34.241 78.249) - (end 34.5191 78.5271) - (width 0.2) - (layer "F.Cu") - (net 8) - (uuid "48106692-6097-49dc-ada7-4ab60cd979da") - ) - (segment - (start 36.4345 77.4414) - (end 37.4181 77.4414) - (width 0.2) - (layer "F.Cu") - (net 8) - (uuid "7361f689-e1c1-4630-bc3a-4428d68ea7a9") - ) - (segment - (start 37.653 77.6763) - (end 37.653 83.522) - (width 0.2) - (layer "F.Cu") - (net 8) - (uuid "983c9c56-6829-40ac-989a-47341ea9e8f1") - ) - (segment - (start 35.3488 78.5271) - (end 36.4345 77.4414) - (width 0.2) - (layer "F.Cu") - (net 8) - (uuid "9c393b49-3ede-4165-a967-81cc851d90b6") - ) - (segment - (start 34.5191 78.5271) - (end 35.3488 78.5271) - (width 0.2) - (layer "F.Cu") - (net 8) - (uuid "b853baf5-86f7-448e-b61a-dbea3297ef47") - ) - (segment - (start 37.653 83.522) + (start 37.6919 83.4831) (end 36 85.175) (width 0.2) (layer "F.Cu") (net 8) - (uuid "d34261de-1aec-48d3-bdda-10e6d5b7abf2") + (uuid "84711289-141e-44f6-9d51-c619902d5ec9") ) (segment - (start 34.241 51.0285) - (end 34.241 78.249) + (start 37.6919 54.4794) + (end 37.6919 83.4831) (width 0.2) (layer "F.Cu") (net 8) - (uuid "f6936bc5-fc24-4c2a-9d21-98a971618b58") + (uuid "9e05e7b2-7014-48bc-be66-d33e3aa4e2c0") ) (segment (start 18.73 32) @@ -7372,7 +7448,7 @@ (width 0.2) (layer "F.Cu") (net 17) - (uuid "1279d7e2-3c3f-44b7-8b3c-106c73579324") + (uuid "456c2a2f-940c-4382-9af9-e2effad77116") ) (segment (start 18.73 48.03) @@ -7380,15 +7456,7 @@ (width 0.2) (layer "F.Cu") (net 17) - (uuid "c882f2fd-9b34-40a8-afdb-7b8a0ed2f1a8") - ) - (segment - (start 27.62 64.54) - (end 30.8625 67.7825) - (width 0.2) - (layer "F.Cu") - (net 20) - (uuid "0974a60d-d842-4411-b9fb-eb4e05c15b53") + (uuid "83d49645-fa94-4a84-996e-2d0e1ade38f6") ) (segment (start 30.8625 67.7825) @@ -7396,7 +7464,15 @@ (width 0.2) (layer "F.Cu") (net 20) - (uuid "41a004ae-c9e5-4d08-8243-4dcc2a70182c") + (uuid "86188837-3731-4779-9a12-d60bd05e3ecd") + ) + (segment + (start 27.62 64.54) + (end 30.8625 67.7825) + (width 0.2) + (layer "F.Cu") + (net 20) + (uuid "8e52fc89-4af2-4c40-88d4-fcd651d84ec0") ) (segment (start 4 81.8241) @@ -7404,7 +7480,7 @@ (width 0.2) (layer "F.Cu") (net 21) - (uuid "68832f9e-7de5-4816-85ae-7cdbaa2a28d8") + (uuid "66d4962d-ae61-40a7-bb28-f20ca8d2ab96") ) (via (at 4 81.8241) @@ -7412,7 +7488,7 @@ (drill 0.3) (layers "F.Cu" "B.Cu") (net 21) - (uuid "e4d187cd-7599-4abf-b965-a4876327fcdf") + (uuid "19018fc7-b065-4232-8629-a4ad5a5f13ce") ) (segment (start 12.8759 81.8241) @@ -7420,7 +7496,7 @@ (width 0.2) (layer "B.Cu") (net 21) - (uuid "2cef4206-b262-4493-bf50-584002b4fc9d") + (uuid "19ee01a3-f619-49da-a032-c9d06da1541a") ) (segment (start 27.62 67.08) @@ -7428,7 +7504,7 @@ (width 0.2) (layer "B.Cu") (net 21) - (uuid "8e1990b7-1a0e-4b4d-9a19-435b1e4b540d") + (uuid "b7cec840-a46e-4ced-8de7-f740290355aa") ) (segment (start 16.19 48.03) @@ -7436,7 +7512,7 @@ (width 0.2) (layer "F.Cu") (net 28) - (uuid "10a13f77-92c8-482c-b264-a7a5ddf36a24") + (uuid "c42e4625-bc7d-44d4-9b06-963df61377c5") ) (segment (start 16.19 32) @@ -7444,7 +7520,7 @@ (width 0.2) (layer "F.Cu") (net 28) - (uuid "7c8b9742-4935-4410-ab81-d74d9da525cd") + (uuid "cab4388b-84a5-47b6-9e90-44fb844a33ee") ) (segment (start 9.1375 79.9625) @@ -7452,7 +7528,7 @@ (width 0.2) (layer "F.Cu") (net 35) - (uuid "178bf5b5-839e-4c89-9977-d48976c6aebb") + (uuid "104007bb-edda-4e09-9d7c-a7d90bb2de14") ) (segment (start 16 86.825) @@ -7460,7 +7536,7 @@ (width 0.2) (layer "F.Cu") (net 35) - (uuid "f7f0b6e0-f82c-496c-a299-d64676cccb28") + (uuid "91e21be1-18dd-402f-ba7e-5487a3f9ec79") ) (embedded_fonts no) ) diff --git a/hardware/kicad/gerbers/SN-L00-B_Cu.gbl b/hardware/kicad/gerbers/SN-L00-B_Cu.gbl index 58af238..3be60f6 100644 --- a/hardware/kicad/gerbers/SN-L00-B_Cu.gbl +++ b/hardware/kicad/gerbers/SN-L00-B_Cu.gbl @@ -1,12 +1,12 @@ %TF.GenerationSoftware,KiCad,Pcbnew,9.0.2+dfsg-1*% -%TF.CreationDate,2026-01-23T08:01:42+01:00*% +%TF.CreationDate,2026-01-23T08:14:38+01:00*% %TF.ProjectId,SN-L00,534e2d4c-3030-42e6-9b69-6361645f7063,0.1*% %TF.SameCoordinates,Original*% %TF.FileFunction,Copper,L2,Bot*% %TF.FilePolarity,Positive*% %FSLAX46Y46*% G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* -G04 Created by KiCad (PCBNEW 9.0.2+dfsg-1) date 2026-01-23 08:01:42* +G04 Created by KiCad (PCBNEW 9.0.2+dfsg-1) date 2026-01-23 08:14:38* %MOMM*% %LPD*% G01* @@ -177,61 +177,68 @@ X22540000Y-98160000D03* %TD*% D15* %TO.N,Net-(D2-A)*% -X7525800Y-94231700D03* X35150000Y-90436200D03* +X7525800Y-94231700D03* X26000000Y-95962400D03* %TO.N,+12V*% -X29051000Y-89091600D03* -X38054700Y-89678700D03* -X10656900Y-92357500D03* +X33628300Y-98160000D03* +X28776100Y-89366500D03* +X10000000Y-90540000D03* +%TO.N,+3.3V*% +X11008200Y-86838000D03* +X24000000Y-87735100D03* %TO.N,Net-(D2-K)*% X2000000Y-90577900D03* %TO.N,Net-(D3-K)*% -X24000000Y-83998100D03* -X10000000Y-83555900D03* -X2950000Y-83555900D03* +X32083000Y-84742000D03* +X24307800Y-83595800D03* +X10000000Y-83595800D03* +X2950000Y-83595800D03* %TO.N,/BTN*% X4000000Y-81824100D03* %TD*% D16* %TO.N,Net-(D2-A)*% -X31354500Y-94231700D02* -X35150000Y-90436200D01* -X26000000Y-94231700D02* -X31354500Y-94231700D01* -X26000000Y-95962400D02* -X26000000Y-94231700D01* X7525800Y-94231700D02* X26000000Y-94231700D01* +X26000000Y-94231700D02* +X31354500Y-94231700D01* +X31354500Y-94231700D02* +X35150000Y-90436200D01* +X26000000Y-95962400D02* +X26000000Y-94231700D01* %TO.N,+12V*% -X37467600Y-89091600D02* -X38054700Y-89678700D01* -X20000000Y-93080000D02* -X19277500Y-92357500D01* X20000000Y-95620000D02* X22540000Y-95620000D01* -X26528400Y-89091600D02* -X29051000Y-89091600D01* -X29051000Y-89091600D02* -X37467600Y-89091600D01* -X19277500Y-92357500D02* -X10656900Y-92357500D01* X22540000Y-93080000D02* -X26528400Y-89091600D01* +X26253500Y-89366500D01* +X26253500Y-89366500D02* +X28776100Y-89366500D01* +X20000000Y-90540000D02* +X10000000Y-90540000D01* +X22540000Y-98160000D02* +X33628300Y-98160000D01* +%TO.N,+3.3V*% +X24000000Y-87735100D02* +X23102900Y-86838000D01* +X23102900Y-86838000D02* +X11008200Y-86838000D01* %TO.N,Net-(D2-K)*% X21349400Y-91730600D02* X3152700Y-91730600D01* -X22540000Y-90540000D02* -X21349400Y-91730600D01* X3152700Y-91730600D02* X2000000Y-90577900D01* +X22540000Y-90540000D02* +X21349400Y-91730600D01* %TO.N,Net-(D3-K)*% -X10000000Y-83555900D02* -X23557800Y-83555900D01* -X10000000Y-83555900D02* -X2950000Y-83555900D01* -X23557800Y-83555900D02* -X24000000Y-83998100D01* +X24307800Y-83595800D02* +X10000000Y-83595800D01* +X24307800Y-83595800D02* +X30936800Y-83595800D01* +X30936800Y-83595800D02* +X32083000Y-84742000D01* +X10000000Y-83595800D02* +X2950000Y-83595800D01* %TO.N,/BTN*% X12875900Y-81824100D02* X4000000Y-81824100D01* diff --git a/hardware/kicad/gerbers/SN-L00-B_Mask.gbs b/hardware/kicad/gerbers/SN-L00-B_Mask.gbs index d56aa5e..2159acd 100644 --- a/hardware/kicad/gerbers/SN-L00-B_Mask.gbs +++ b/hardware/kicad/gerbers/SN-L00-B_Mask.gbs @@ -1,12 +1,12 @@ %TF.GenerationSoftware,KiCad,Pcbnew,9.0.2+dfsg-1*% -%TF.CreationDate,2026-01-23T08:01:42+01:00*% +%TF.CreationDate,2026-01-23T08:14:38+01:00*% %TF.ProjectId,SN-L00,534e2d4c-3030-42e6-9b69-6361645f7063,0.1*% %TF.SameCoordinates,Original*% %TF.FileFunction,Soldermask,Bot*% %TF.FilePolarity,Negative*% %FSLAX46Y46*% G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* -G04 Created by KiCad (PCBNEW 9.0.2+dfsg-1) date 2026-01-23 08:01:42* +G04 Created by KiCad (PCBNEW 9.0.2+dfsg-1) date 2026-01-23 08:14:38* %MOMM*% %LPD*% G01* diff --git a/hardware/kicad/gerbers/SN-L00-B_Paste.gbp b/hardware/kicad/gerbers/SN-L00-B_Paste.gbp index e60176f..ed6c511 100644 --- a/hardware/kicad/gerbers/SN-L00-B_Paste.gbp +++ b/hardware/kicad/gerbers/SN-L00-B_Paste.gbp @@ -1,12 +1,12 @@ %TF.GenerationSoftware,KiCad,Pcbnew,9.0.2+dfsg-1*% -%TF.CreationDate,2026-01-23T08:01:42+01:00*% +%TF.CreationDate,2026-01-23T08:14:38+01:00*% %TF.ProjectId,SN-L00,534e2d4c-3030-42e6-9b69-6361645f7063,0.1*% %TF.SameCoordinates,Original*% %TF.FileFunction,Paste,Bot*% %TF.FilePolarity,Positive*% %FSLAX46Y46*% G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* -G04 Created by KiCad (PCBNEW 9.0.2+dfsg-1) date 2026-01-23 08:01:42* +G04 Created by KiCad (PCBNEW 9.0.2+dfsg-1) date 2026-01-23 08:14:38* %MOMM*% %LPD*% G01* diff --git a/hardware/kicad/gerbers/SN-L00-B_Silkscreen.gbo b/hardware/kicad/gerbers/SN-L00-B_Silkscreen.gbo index b5b039f..203dcb3 100644 --- a/hardware/kicad/gerbers/SN-L00-B_Silkscreen.gbo +++ b/hardware/kicad/gerbers/SN-L00-B_Silkscreen.gbo @@ -1,12 +1,12 @@ %TF.GenerationSoftware,KiCad,Pcbnew,9.0.2+dfsg-1*% -%TF.CreationDate,2026-01-23T08:01:42+01:00*% +%TF.CreationDate,2026-01-23T08:14:38+01:00*% %TF.ProjectId,SN-L00,534e2d4c-3030-42e6-9b69-6361645f7063,0.1*% %TF.SameCoordinates,Original*% %TF.FileFunction,Legend,Bot*% %TF.FilePolarity,Positive*% %FSLAX46Y46*% G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* -G04 Created by KiCad (PCBNEW 9.0.2+dfsg-1) date 2026-01-23 08:01:42* +G04 Created by KiCad (PCBNEW 9.0.2+dfsg-1) date 2026-01-23 08:14:38* %MOMM*% %LPD*% G01* diff --git a/hardware/kicad/gerbers/SN-L00-Edge_Cuts.gm1 b/hardware/kicad/gerbers/SN-L00-Edge_Cuts.gm1 index 2d998c3..e67297b 100644 --- a/hardware/kicad/gerbers/SN-L00-Edge_Cuts.gm1 +++ b/hardware/kicad/gerbers/SN-L00-Edge_Cuts.gm1 @@ -1,11 +1,11 @@ %TF.GenerationSoftware,KiCad,Pcbnew,9.0.2+dfsg-1*% -%TF.CreationDate,2026-01-23T08:01:42+01:00*% +%TF.CreationDate,2026-01-23T08:14:38+01:00*% %TF.ProjectId,SN-L00,534e2d4c-3030-42e6-9b69-6361645f7063,0.1*% %TF.SameCoordinates,Original*% %TF.FileFunction,Profile,NP*% %FSLAX46Y46*% G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* -G04 Created by KiCad (PCBNEW 9.0.2+dfsg-1) date 2026-01-23 08:01:42* +G04 Created by KiCad (PCBNEW 9.0.2+dfsg-1) date 2026-01-23 08:14:38* %MOMM*% %LPD*% G01* @@ -15,9 +15,49 @@ G04 APERTURE LIST* %TD*% G04 APERTURE END LIST* D10* +X36600000Y-5000000D02* +G75* +G02* +X33400000Y-5000000I-1600000J0D01* +G01* +X33400000Y-5000000D02* +G75* +G02* +X36600000Y-5000000I1600000J0D01* +G01* +X6600000Y-75000000D02* +G75* +G02* +X3400000Y-75000000I-1600000J0D01* +G01* +X3400000Y-75000000D02* +G75* +G02* +X6600000Y-75000000I1600000J0D01* +G01* +X36600000Y-75000000D02* +G75* +G02* +X33400000Y-75000000I-1600000J0D01* +G01* +X33400000Y-75000000D02* +G75* +G02* +X36600000Y-75000000I1600000J0D01* +G01* X0Y0D02* X40000000Y0D01* X40000000Y-100000000D01* X0Y-100000000D01* X0Y0D01* +X6600000Y-5000000D02* +G75* +G02* +X3400000Y-5000000I-1600000J0D01* +G01* +X3400000Y-5000000D02* +G75* +G02* +X6600000Y-5000000I1600000J0D01* +G01* M02* diff --git a/hardware/kicad/gerbers/SN-L00-F_Cu.gtl b/hardware/kicad/gerbers/SN-L00-F_Cu.gtl index 68b9eb1..c45b3b3 100644 --- a/hardware/kicad/gerbers/SN-L00-F_Cu.gtl +++ b/hardware/kicad/gerbers/SN-L00-F_Cu.gtl @@ -1,12 +1,12 @@ %TF.GenerationSoftware,KiCad,Pcbnew,9.0.2+dfsg-1*% -%TF.CreationDate,2026-01-23T08:01:42+01:00*% +%TF.CreationDate,2026-01-23T08:14:38+01:00*% %TF.ProjectId,SN-L00,534e2d4c-3030-42e6-9b69-6361645f7063,0.1*% %TF.SameCoordinates,Original*% %TF.FileFunction,Copper,L1,Top*% %TF.FilePolarity,Positive*% %FSLAX46Y46*% G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* -G04 Created by KiCad (PCBNEW 9.0.2+dfsg-1) date 2026-01-23 08:01:42* +G04 Created by KiCad (PCBNEW 9.0.2+dfsg-1) date 2026-01-23 08:14:38* %MOMM*% %LPD*% G01* @@ -371,19 +371,23 @@ X22540000Y-98160000D03* %TD*% D24* %TO.N,Net-(D2-A)*% -X7525800Y-94231700D03* X35150000Y-90436200D03* +X7525800Y-94231700D03* X26000000Y-95962400D03* %TO.N,+12V*% -X29051000Y-89091600D03* -X38054700Y-89678700D03* -X10656900Y-92357500D03* +X33628300Y-98160000D03* +X28776100Y-89366500D03* +X10000000Y-90540000D03* +%TO.N,+3.3V*% +X11008200Y-86838000D03* +X24000000Y-87735100D03* %TO.N,Net-(D2-K)*% X2000000Y-90577900D03* %TO.N,Net-(D3-K)*% -X24000000Y-83998100D03* -X10000000Y-83555900D03* -X2950000Y-83555900D03* +X32083000Y-84742000D03* +X24307800Y-83595800D03* +X10000000Y-83595800D03* +X2950000Y-83595800D03* %TO.N,/BTN*% X4000000Y-81824100D03* %TD*% @@ -398,174 +402,174 @@ X7525800Y-93525800D01* X35150000Y-91700000D02* X35150000Y-90436200D01* %TO.N,+12V*% -X30000000Y-83225000D02* -X30000000Y-85175000D01* -X34950000Y-50162500D02* -X34950000Y-77039700D01* +X28000000Y-81225000D02* +X28951900Y-82176800D01* +X8526200Y-91751200D02* +X8526200Y-80613700D01* +X28776100Y-89366500D02* +X28776100Y-86398900D01* +X25970000Y-93080000D02* +X26000000Y-93050000D01* +X10000000Y-93225000D02* +X8526200Y-91751200D01* +X20000000Y-93080000D02* +X20000000Y-90540000D01* X20000000Y-95620000D02* X20000000Y-93080000D01* X30076000Y-36216700D02* X32787500Y-38928200D01* -X7878200Y-78337700D02* -X7878200Y-76995000D01* -X29051000Y-89091600D02* -X29051000Y-86124000D01* -X10000000Y-93225000D02* -X10000000Y-92357500D01* -X30000000Y-35000000D02* -X30000000Y-36216700D01* -X38054700Y-93395300D02* -X38054700Y-89678700D01* -X29051000Y-86124000D02* -X30000000Y-85175000D01* -X20000000Y-93080000D02* -X20000000Y-90540000D01* -X10000000Y-92357500D02* -X10656900Y-92357500D01* -X6862500Y-88037500D02* -X6862500Y-78950000D01* -X10000000Y-92357500D02* -X10000000Y-91175000D01* -X13397200Y-76447200D02* -X14000000Y-77050000D01* -X25970000Y-93080000D02* -X26000000Y-93050000D01* -X32787500Y-48000000D02* -X34950000Y-50162500D01* -X10000000Y-91175000D02* -X6862500Y-88037500D01* -X38054700Y-89678700D02* -X38054700Y-77510000D01* -X7265900Y-78950000D02* -X7878200Y-78337700D01* -X7878200Y-76995000D02* -X8426000Y-76447200D01* -X38054700Y-77510000D02* -X37584400Y-77039700D01* -X35150000Y-96300000D02* -X38054700Y-93395300D01* -X22540000Y-93080000D02* -X25970000Y-93080000D01* -X37584400Y-77039700D02* -X34950000Y-77039700D01* -X34950000Y-77039700D02* -X34950000Y-78000000D01* -X30000000Y-36216700D02* -X30076000Y-36216700D01* -X22540000Y-98160000D02* -X22540000Y-95620000D01* -X28000000Y-81225000D02* -X30000000Y-83225000D01* -X6862500Y-78950000D02* -X7265900Y-78950000D01* +X32036400Y-79092300D02* +X32036400Y-77272000D01* +X18847300Y-81897300D02* +X18847300Y-89387300D01* X20000000Y-98160000D02* X20000000Y-95620000D01* -X32787500Y-38928200D02* -X32787500Y-48000000D01* -X8426000Y-76447200D02* -X13397200Y-76447200D01* +X22540000Y-93080000D02* +X25970000Y-93080000D01* X22540000Y-95620000D02* X22540000Y-93080000D01* +X32764400Y-78000000D02* +X34950000Y-78000000D01* +X32036400Y-54627600D02* +X32036400Y-77272000D01* +X32036400Y-77272000D02* +X32764400Y-78000000D01* +X30000000Y-35608300D02* +X30000000Y-36216700D01* +X30000000Y-35608300D02* +X28188200Y-37420100D01* +X35150000Y-96300000D02* +X33628300Y-97821700D01* +X30000000Y-36216700D02* +X30076000Y-36216700D01* +X28776100Y-86398900D02* +X30000000Y-85175000D01* +X30000000Y-35000000D02* +X30000000Y-35608300D01* +X32787500Y-38928200D02* +X32787500Y-48000000D01* +X30000000Y-83742700D02* +X30000000Y-85175000D01* +X29211000Y-82953700D02* +X30000000Y-83742700D01* +X33628300Y-97821700D02* +X33628300Y-98160000D01* +X28951900Y-82176800D02* +X29211000Y-82436000D01* +X10000000Y-93225000D02* +X10000000Y-90540000D01* +X8526200Y-80613700D02* +X6862500Y-78950000D01* +X28188200Y-37420100D02* +X28188200Y-50779400D01* +X18847300Y-89387300D02* +X20000000Y-90540000D01* +X22540000Y-98160000D02* +X22540000Y-95620000D01* +X29211000Y-82436000D02* +X29211000Y-82953700D01* +X28188200Y-50779400D02* +X32036400Y-54627600D01* +X14000000Y-77050000D02* +X18847300Y-81897300D01* +X28951900Y-82176800D02* +X32036400Y-79092300D01* %TO.N,+3.3V*% -X36476700Y-92673300D02* -X35150000Y-94000000D01* -X8126000Y-92901000D02* -X10000000Y-94775000D01* -X17232300Y-82182300D02* -X17232300Y-86825000D01* -X17232300Y-87542700D02* -X10000000Y-94775000D01* -X17232300Y-86825000D02* -X17232300Y-87542700D01* -X28000000Y-82800000D02* -X28000000Y-93150000D01* -X5050000Y-82000000D02* -X5050000Y-86825000D01* -X28000000Y-93150000D02* -X28850000Y-94000000D01* -X14000000Y-78950000D02* -X11037500Y-78950000D01* -X28000000Y-82800000D02* -X28000000Y-82775000D01* -X14000000Y-78950000D02* -X17232300Y-82182300D01* -X24000000Y-86825000D02* -X17232300Y-86825000D01* -X5050000Y-86825000D02* -X8126000Y-89901000D01* -X36476700Y-87301700D02* -X36476700Y-92673300D01* -X5050000Y-86825000D02* -X4000000Y-86825000D01* -X24000000Y-86825000D02* -X28000000Y-82825000D01* -X8126000Y-89901000D02* -X8126000Y-92901000D01* -X28000000Y-82825000D02* -X28000000Y-82800000D01* -X36000000Y-86825000D02* -X36476700Y-87301700D01* -X11037500Y-78950000D02* -X9137500Y-77050000D01* +X10820600Y-82333500D02* +X10820600Y-86838000D01* +X10820600Y-86838000D02* +X10820600Y-93954400D01* X35150000Y-94000000D02* X28850000Y-94000000D01* +X5050000Y-82000000D02* +X5050000Y-86825000D01* +X5050000Y-86825000D02* +X4000000Y-86825000D01* +X28000000Y-82800000D02* +X28000000Y-93150000D01* +X35150000Y-94000000D02* +X36476700Y-92673300D01* +X8167100Y-79680000D02* +X10820600Y-82333500D01* +X28000000Y-93150000D02* +X28850000Y-94000000D01* +X9198600Y-77111100D02* +X9137500Y-77050000D01* +X10623600Y-78950000D02* +X9198600Y-77525000D01* +X8124500Y-89899500D02* +X8124500Y-92899500D01* +X9198600Y-77525000D02* +X9198600Y-77111100D01* +X24000000Y-86825000D02* +X28000000Y-82825000D01* +X24000000Y-86825000D02* +X24000000Y-87735100D01* +X10820600Y-86838000D02* +X11008200Y-86838000D01* +X10820600Y-93954400D02* +X10000000Y-94775000D01* +X8124500Y-92899500D02* +X10000000Y-94775000D01* +X14000000Y-78950000D02* +X10623600Y-78950000D01* +X36476700Y-92673300D02* +X36476700Y-87301700D01* +X28000000Y-82825000D02* +X28000000Y-82800000D01* +X28000000Y-82800000D02* +X28000000Y-82775000D01* +X9198600Y-77525000D02* +X8167100Y-78556500D01* +X5050000Y-86825000D02* +X8124500Y-89899500D01* +X36476700Y-87301700D02* +X36000000Y-86825000D01* +X8167100Y-78556500D02* +X8167100Y-79680000D01* %TO.N,Net-(D2-K)*% X2000000Y-90577900D02* X2000000Y-92000000D01* %TO.N,Net-(D3-K)*% -X2950000Y-82000000D02* -X2950000Y-83555900D01* -X36100000Y-78950000D02* -X37050000Y-78000000D01* -X32143300Y-79944200D02* +X33137500Y-83687500D02* +X33137500Y-78950000D01* +X36100000Y-78950000D02* X33137500Y-78950000D01* -X31856700Y-79944200D02* -X30862500Y-78950000D01* -X24000000Y-83998100D02* -X29048100Y-78950000D01* -X10000000Y-85175000D02* -X10000000Y-83555900D01* -X29048100Y-78950000D02* -X30862500Y-78950000D01* X24000000Y-85175000D02* -X24000000Y-83998100D01* -X33137500Y-78950000D02* +X24000000Y-83903600D01* +X37050000Y-78000000D02* X36100000Y-78950000D01* +X10000000Y-85175000D02* +X10000000Y-83595800D01* +X24307800Y-83595800D02* +X28953600Y-78950000D01* +X24000000Y-83903600D02* +X24307800Y-83595800D01* +X2950000Y-82000000D02* +X2950000Y-83595800D01* X30000000Y-86825000D02* -X31856700Y-84968300D01* -X31856700Y-79944200D02* -X32143300Y-79944200D01* -X31856700Y-84968300D02* -X31856700Y-79944200D01* +X32083000Y-84742000D01* +X32083000Y-84742000D02* +X33137500Y-83687500D01* +X28953600Y-78950000D02* +X30862500Y-78950000D01* %TO.N,Net-(D5-K)*% X31212500Y-48000000D02* -X34241000Y-51028500D01* -X37418100Y-77441400D02* -X37653000Y-77676300D01* -X34241000Y-78249000D02* -X34519100Y-78527100D01* -X36434500Y-77441400D02* -X37418100Y-77441400D01* -X37653000Y-77676300D02* -X37653000Y-83522000D01* -X35348800Y-78527100D02* -X36434500Y-77441400D01* -X34519100Y-78527100D02* -X35348800Y-78527100D01* -X37653000Y-83522000D02* +X37691900Y-54479400D01* +X37691900Y-83483100D02* X36000000Y-85175000D01* -X34241000Y-51028500D02* -X34241000Y-78249000D01* +X37691900Y-54479400D02* +X37691900Y-83483100D01* %TO.N,/SDA*% X18730000Y-32000000D02* X18730000Y-48030000D01* X18730000Y-48030000D02* X27620000Y-56920000D01* %TO.N,/RETURN_IN*% -X27620000Y-64540000D02* -X30862500Y-67782500D01* X30862500Y-67782500D02* X30862500Y-77050000D01* +X27620000Y-64540000D02* +X30862500Y-67782500D01* %TO.N,/BTN*% X4000000Y-81824100D02* X4000000Y-85175000D01* diff --git a/hardware/kicad/gerbers/SN-L00-F_Mask.gts b/hardware/kicad/gerbers/SN-L00-F_Mask.gts index 98fb96b..f5cb826 100644 --- a/hardware/kicad/gerbers/SN-L00-F_Mask.gts +++ b/hardware/kicad/gerbers/SN-L00-F_Mask.gts @@ -1,12 +1,12 @@ %TF.GenerationSoftware,KiCad,Pcbnew,9.0.2+dfsg-1*% -%TF.CreationDate,2026-01-23T08:01:42+01:00*% +%TF.CreationDate,2026-01-23T08:14:38+01:00*% %TF.ProjectId,SN-L00,534e2d4c-3030-42e6-9b69-6361645f7063,0.1*% %TF.SameCoordinates,Original*% %TF.FileFunction,Soldermask,Top*% %TF.FilePolarity,Negative*% %FSLAX46Y46*% G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* -G04 Created by KiCad (PCBNEW 9.0.2+dfsg-1) date 2026-01-23 08:01:42* +G04 Created by KiCad (PCBNEW 9.0.2+dfsg-1) date 2026-01-23 08:14:38* %MOMM*% %LPD*% G01* diff --git a/hardware/kicad/gerbers/SN-L00-F_Paste.gtp b/hardware/kicad/gerbers/SN-L00-F_Paste.gtp index 7ce7b38..cf41163 100644 --- a/hardware/kicad/gerbers/SN-L00-F_Paste.gtp +++ b/hardware/kicad/gerbers/SN-L00-F_Paste.gtp @@ -1,12 +1,12 @@ %TF.GenerationSoftware,KiCad,Pcbnew,9.0.2+dfsg-1*% -%TF.CreationDate,2026-01-23T08:01:42+01:00*% +%TF.CreationDate,2026-01-23T08:14:38+01:00*% %TF.ProjectId,SN-L00,534e2d4c-3030-42e6-9b69-6361645f7063,0.1*% %TF.SameCoordinates,Original*% %TF.FileFunction,Paste,Top*% %TF.FilePolarity,Positive*% %FSLAX46Y46*% G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* -G04 Created by KiCad (PCBNEW 9.0.2+dfsg-1) date 2026-01-23 08:01:42* +G04 Created by KiCad (PCBNEW 9.0.2+dfsg-1) date 2026-01-23 08:14:38* %MOMM*% %LPD*% G01* diff --git a/hardware/kicad/gerbers/SN-L00-F_Silkscreen.gto b/hardware/kicad/gerbers/SN-L00-F_Silkscreen.gto index 9a1cc2f..e6adb40 100644 --- a/hardware/kicad/gerbers/SN-L00-F_Silkscreen.gto +++ b/hardware/kicad/gerbers/SN-L00-F_Silkscreen.gto @@ -1,12 +1,12 @@ %TF.GenerationSoftware,KiCad,Pcbnew,9.0.2+dfsg-1*% -%TF.CreationDate,2026-01-23T08:01:42+01:00*% +%TF.CreationDate,2026-01-23T08:14:38+01:00*% %TF.ProjectId,SN-L00,534e2d4c-3030-42e6-9b69-6361645f7063,0.1*% %TF.SameCoordinates,Original*% %TF.FileFunction,Legend,Top*% %TF.FilePolarity,Positive*% %FSLAX46Y46*% G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)* -G04 Created by KiCad (PCBNEW 9.0.2+dfsg-1) date 2026-01-23 08:01:42* +G04 Created by KiCad (PCBNEW 9.0.2+dfsg-1) date 2026-01-23 08:14:38* %MOMM*% %LPD*% G01* diff --git a/hardware/kicad/gerbers/SN-L00-drl_map.gbr b/hardware/kicad/gerbers/SN-L00-drl_map.gbr index 32ffb6a..1b7f708 100644 --- a/hardware/kicad/gerbers/SN-L00-drl_map.gbr +++ b/hardware/kicad/gerbers/SN-L00-drl_map.gbr @@ -1,12 +1,12 @@ %TF.GenerationSoftware,KiCad,Pcbnew,9.0.2+dfsg-1*% -%TF.CreationDate,2026-01-23T08:01:45+01:00*% +%TF.CreationDate,2026-01-23T08:14:39+01:00*% %TF.ProjectId,SN-L00,534e2d4c-3030-42e6-9b69-6361645f7063,0.1*% %TF.SameCoordinates,Original*% %TF.FileFunction,Drillmap*% %TF.FilePolarity,Positive*% %FSLAX45Y45*% G04 Gerber Fmt 4.5, Leading zero omitted, Abs format (unit mm)* -G04 Created by KiCad (PCBNEW 9.0.2+dfsg-1) date 2026-01-23 08:01:45* +G04 Created by KiCad (PCBNEW 9.0.2+dfsg-1) date 2026-01-23 08:14:39* %MOMM*% %LPD*% G01* @@ -19,21 +19,61 @@ G04 APERTURE LIST* %ADD15C,0.143000*% G04 APERTURE END LIST* D10* +X3660000Y-500000D02* +G75* +G02* +X3340000Y-500000I-160000J0D01* +G01* +X3340000Y-500000D02* +G75* +G02* +X3660000Y-500000I160000J0D01* +G01* +X660000Y-7500000D02* +G75* +G02* +X340000Y-7500000I-160000J0D01* +G01* +X340000Y-7500000D02* +G75* +G02* +X660000Y-7500000I160000J0D01* +G01* +X3660000Y-7500000D02* +G75* +G02* +X3340000Y-7500000I-160000J0D01* +G01* +X3340000Y-7500000D02* +G75* +G02* +X3660000Y-7500000I160000J0D01* +G01* X0Y0D02* X4000000Y0D01* X4000000Y-10000000D01* X0Y-10000000D01* X0Y0D01* +X660000Y-500000D02* +G75* +G02* +X340000Y-500000I-160000J0D01* +G01* +X340000Y-500000D02* +G75* +G02* +X660000Y-500000I160000J0D01* +G01* D11* D12* X185000Y-9042790D02* X215000Y-9072790D01* X215000Y-9042790D02* X185000Y-9072790D01* -X280000Y-8340590D02* -X310000Y-8370590D01* -X310000Y-8340590D02* -X280000Y-8370590D01* +X280000Y-8344580D02* +X310000Y-8374580D01* +X310000Y-8344580D02* +X280000Y-8374580D01* X385000Y-8167410D02* X415000Y-8197410D01* X415000Y-8167410D02* @@ -42,34 +82,46 @@ X737580Y-9408170D02* X767580Y-9438170D01* X767580Y-9408170D02* X737580Y-9438170D01* -X985000Y-8340590D02* -X1015000Y-8370590D01* -X1015000Y-8340590D02* -X985000Y-8370590D01* -X1050690Y-9220750D02* -X1080690Y-9250750D01* -X1080690Y-9220750D02* -X1050690Y-9250750D01* -X2385000Y-8384810D02* -X2415000Y-8414810D01* -X2415000Y-8384810D02* -X2385000Y-8414810D01* +X985000Y-8344580D02* +X1015000Y-8374580D01* +X1015000Y-8344580D02* +X985000Y-8374580D01* +X985000Y-9039000D02* +X1015000Y-9069000D01* +X1015000Y-9039000D02* +X985000Y-9069000D01* +X1085820Y-8668800D02* +X1115820Y-8698800D01* +X1115820Y-8668800D02* +X1085820Y-8698800D01* +X2385000Y-8758510D02* +X2415000Y-8788510D01* +X2415000Y-8758510D02* +X2385000Y-8788510D01* +X2415780Y-8344580D02* +X2445780Y-8374580D01* +X2445780Y-8344580D02* +X2415780Y-8374580D01* X2585000Y-9581240D02* X2615000Y-9611240D01* X2615000Y-9581240D02* X2585000Y-9611240D01* -X2890100Y-8894160D02* -X2920100Y-8924160D01* -X2920100Y-8894160D02* -X2890100Y-8924160D01* +X2862610Y-8921650D02* +X2892610Y-8951650D01* +X2892610Y-8921650D02* +X2862610Y-8951650D01* +X3193300Y-8459200D02* +X3223300Y-8489200D01* +X3223300Y-8459200D02* +X3193300Y-8489200D01* +X3347830Y-9801000D02* +X3377830Y-9831000D01* +X3377830Y-9801000D02* +X3347830Y-9831000D01* X3500000Y-9028620D02* X3530000Y-9058620D01* X3530000Y-9028620D02* X3500000Y-9058620D01* -X3790470Y-8952870D02* -X3820470Y-8982870D01* -X3820470Y-8952870D02* -X3790470Y-8982870D01* X1288000Y-5184000D02* G75* G02* @@ -984,16 +1036,12 @@ X3672325Y-10567555D02* X3653277Y-10586603D01* X3653277Y-10586603D02* X3634229Y-10596127D01* -X3938991Y-10738984D02* -X3824706Y-10738984D01* -X3881848Y-10738984D02* -X3881848Y-10538984D01* -X3881848Y-10538984D02* -X3862801Y-10567555D01* -X3862801Y-10567555D02* -X3843753Y-10586603D01* -X3843753Y-10586603D02* -X3824706Y-10596127D01* +X3919944Y-10605650D02* +X3919944Y-10738984D01* +X3872325Y-10529460D02* +X3824706Y-10672317D01* +X3824706Y-10672317D02* +X3948515Y-10672317D01* X4177087Y-10738984D02* X4177087Y-10538984D01* X4262801Y-10738984D02* diff --git a/hardware/kicad/gerbers/SN-L00-job.gbrjob b/hardware/kicad/gerbers/SN-L00-job.gbrjob index 19c7c97..861bb54 100644 --- a/hardware/kicad/gerbers/SN-L00-job.gbrjob +++ b/hardware/kicad/gerbers/SN-L00-job.gbrjob @@ -5,7 +5,7 @@ "Application": "Pcbnew", "Version": "9.0.2+dfsg-1" }, - "CreationDate": "2026-01-23T08:01:42+01:00" + "CreationDate": "2026-01-23T08:14:38+01:00" }, "GeneralSpecs": { "ProjectId": { diff --git a/hardware/kicad/gerbers/SN-L00.drl b/hardware/kicad/gerbers/SN-L00.drl index 4166ef2..02f34b8 100644 --- a/hardware/kicad/gerbers/SN-L00.drl +++ b/hardware/kicad/gerbers/SN-L00.drl @@ -1,7 +1,7 @@ M48 -; DRILL file {KiCad 9.0.2+dfsg-1} date 2026-01-23T08:01:45+0100 +; DRILL file {KiCad 9.0.2+dfsg-1} date 2026-01-23T08:14:39+0100 ; FORMAT={-:-/ absolute / metric / decimal} -; #@! TF.CreationDate,2026-01-23T08:01:45+01:00 +; #@! TF.CreationDate,2026-01-23T08:14:39+01:00 ; #@! TF.GenerationSoftware,Kicad,Pcbnew,9.0.2+dfsg-1 ; #@! TF.FileFunction,MixedPlating,1,2 FMAT,2 @@ -21,16 +21,19 @@ G90 G05 T1 X2.0Y-90.578 -X2.95Y-83.556 +X2.95Y-83.596 X4.0Y-81.824 X7.526Y-94.232 -X10.0Y-83.556 -X10.657Y-92.358 -X24.0Y-83.998 +X10.0Y-83.596 +X10.0Y-90.54 +X11.008Y-86.838 +X24.0Y-87.735 +X24.308Y-83.596 X26.0Y-95.962 -X29.051Y-89.092 +X28.776Y-89.367 +X32.083Y-84.742 +X33.628Y-98.16 X35.15Y-90.436 -X38.055Y-89.679 T2 X12.38Y-51.84 X12.38Y-54.38 diff --git a/hardware/kicad/scripts/autoroute.py b/hardware/kicad/scripts/autoroute.py index 6e50539..463d46c 100755 --- a/hardware/kicad/scripts/autoroute.py +++ b/hardware/kicad/scripts/autoroute.py @@ -33,6 +33,15 @@ DRC_FILE = "DRC.rpt" FREEROUTING_JAR = "/tmp/freerouting.jar" FREEROUTING_URL = "https://github.com/freerouting/freerouting/releases/download/v2.0.1/freerouting-2.0.1.jar" +# Mounting hole positions (M3, 3.2mm diameter) +# Bottom holes moved up to avoid power section +MOUNTING_HOLES = [ + (5, 5), # Top left + (35, 5), # Top right + (5, 75), # Bottom left (above power section) + (35, 75), # Bottom right (above power section) +] + # Component positions for 8HP (40mm x 100mm) layout v2 PLACEMENTS = { # Top - OLED display @@ -124,6 +133,29 @@ def main(): placed += 1 print(f" Placed {placed} components") + # Step 4b: Add mounting holes + print("\n[4b/9] Adding mounting holes...") + # Remove existing mounting holes first + for drawing in list(board.GetDrawings()): + if drawing.GetClass() == "PCB_SHAPE": + if drawing.GetShape() == pcbnew.SHAPE_T_CIRCLE: + # Check if it's a mounting hole (on Edge.Cuts, 3.2mm diameter) + if drawing.GetLayer() == pcbnew.Edge_Cuts: + radius = pcbnew.ToMM(drawing.GetRadius()) + if 1.5 < radius < 1.7: # ~3.2mm diameter + board.Delete(drawing) + + # Add new mounting holes + for x, y in MOUNTING_HOLES: + hole = pcbnew.PCB_SHAPE(board) + hole.SetShape(pcbnew.SHAPE_T_CIRCLE) + hole.SetCenter(place(x, y)) + hole.SetEnd(place(x + 1.6, y)) # Radius = 1.6mm (3.2mm diameter) + hole.SetLayer(pcbnew.Edge_Cuts) + hole.SetWidth(mm(0.15)) + board.Add(hole) + print(f" Added {len(MOUNTING_HOLES)} mounting holes (M3, 3.2mm)") + # Step 5: Export DSN print("\n[5/9] Exporting Specctra DSN...") board.Save(PCB_FILE) # Save first diff --git a/hardware/kicad/scripts/autoroute_cli.py b/hardware/kicad/scripts/autoroute_cli.py new file mode 100644 index 0000000..f95ca93 --- /dev/null +++ b/hardware/kicad/scripts/autoroute_cli.py @@ -0,0 +1,116 @@ +#!/usr/bin/env python3 +""" +SN-L00 Command-Line Autoroute Pipeline +Run from terminal: python3 scripts/autoroute_cli.py + +Requires: kicad-cli or pcbnew Python module available +""" + +import subprocess +import os +import sys + +SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) +KICAD_DIR = os.path.dirname(SCRIPT_DIR) +PCB_FILE = os.path.join(KICAD_DIR, "SN-L00.kicad_pcb") +DSN_FILE = os.path.join(KICAD_DIR, "SN-L00.dsn") +SES_FILE = os.path.join(KICAD_DIR, "SN-L00.ses") +FREEROUTING_JAR = "/tmp/freerouting.jar" +FREEROUTING_URL = "https://github.com/freerouting/freerouting/releases/download/v2.0.1/freerouting-2.0.1.jar" + +def run(cmd, desc, cwd=None): + """Run command with description""" + print(f" {desc}...") + result = subprocess.run(cmd, capture_output=True, text=True, cwd=cwd) + if result.returncode != 0: + print(f" ERROR: {result.stderr}") + return False + return True + +def main(): + print("=" * 50) + print("SN-L00 Command-Line Autoroute Pipeline") + print("=" * 50) + + # Check for kicad-cli + kicad_cli = None + for path in ["/usr/bin/kicad-cli", "/usr/local/bin/kicad-cli", + "/Applications/KiCad/KiCad.app/Contents/MacOS/kicad-cli"]: + if os.path.exists(path): + kicad_cli = path + break + + if not kicad_cli: + # Try to find in PATH + result = subprocess.run(["which", "kicad-cli"], capture_output=True, text=True) + if result.returncode == 0: + kicad_cli = result.stdout.strip() + + if not kicad_cli: + print("ERROR: kicad-cli not found. Please run in KiCad scripting console instead:") + print(" exec(open('scripts/autoroute_full.py').read())") + sys.exit(1) + + print(f"Using: {kicad_cli}") + + # Step 1: Run placement script in KiCad + print("\n[1/4] Placing components...") + # kicad-cli pcb export dsn also runs any embedded scripts, but we need + # to place first. For now, assume placement was done or use Python API + print(" (Run place_8hp.py in KiCad first, or components should already be placed)") + + # Step 2: Export DSN + print("\n[2/4] Exporting DSN...") + if not run([kicad_cli, "pcb", "export", "dsn", "-o", DSN_FILE, PCB_FILE], + "Exporting Specctra DSN"): + sys.exit(1) + print(f" Created: {DSN_FILE}") + + # Step 3: Download Freerouting if needed + print("\n[3/4] Running Freerouting...") + if not os.path.exists(FREEROUTING_JAR): + print(" Downloading Freerouting...") + if not run(["curl", "-L", "-o", FREEROUTING_JAR, FREEROUTING_URL], + "Downloading"): + sys.exit(1) + + # Run Freerouting + result = subprocess.run( + ["java", "-jar", FREEROUTING_JAR, + "-de", DSN_FILE, + "-do", SES_FILE, + "-mp", "200", + "-mt", "1", + "-oit"], + capture_output=True, + text=True, + cwd=KICAD_DIR + ) + + if result.returncode != 0: + print(f" Freerouting error: {result.stderr}") + sys.exit(1) + + # Parse output for timing + for line in result.stdout.split('\n') + result.stderr.split('\n'): + if 'completed' in line.lower(): + print(f" {line.split(']')[-1].strip()}") + + print(f" Created: {SES_FILE}") + + # Step 4: Import SES + print("\n[4/4] Importing routed session...") + if not run([kicad_cli, "pcb", "import", "ses", "-i", SES_FILE, PCB_FILE], + "Importing Specctra session"): + # kicad-cli might not support import, manual step needed + print(" NOTE: Import via kicad-cli may not be supported.") + print(" In KiCad: File → Import → Specctra Session") + else: + print(f" Imported routes into: {PCB_FILE}") + + print("\n" + "=" * 50) + print("DONE! Open PCB in KiCad and run DRC to verify.") + print("=" * 50) + +if __name__ == "__main__": + main() diff --git a/hardware/kicad/scripts/autoroute_headless.py b/hardware/kicad/scripts/autoroute_headless.py new file mode 100755 index 0000000..769a426 --- /dev/null +++ b/hardware/kicad/scripts/autoroute_headless.py @@ -0,0 +1,293 @@ +#!/usr/bin/env python3 +""" +SN-L00 Headless Autoroute Pipeline +Fully automated: place → export DSN → freeroute → import SES → DRC + +Usage: + # Install dependencies first: + sudo apt install xvfb + pip install kigadgets + + # Run: + python3 scripts/autoroute_headless.py + +Based on: https://github.com/atait/kicad-python +""" + +import os +import sys +import subprocess +import tempfile + +SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) +KICAD_DIR = os.path.dirname(SCRIPT_DIR) +PCB_FILE = os.path.join(KICAD_DIR, "SN-L00.kicad_pcb") +DSN_FILE = os.path.join(KICAD_DIR, "SN-L00.dsn") +SES_FILE = os.path.join(KICAD_DIR, "SN-L00.ses") +DRC_FILE = os.path.join(KICAD_DIR, "DRC.rpt") +FREEROUTING_JAR = "/tmp/freerouting.jar" + +# Component positions for 8HP (40mm x 100mm) layout v2 +PLACEMENTS = { + "MOD3": (20, 15, 90), + "J3": (10, 35, 0), + "J4": (30, 35, 0), + "SW1": (20, 48, 0), + "D5": (32, 48, 0), + "MOD2": (20, 62, 0), + "U2": (8, 78, 0), + "U4": (32, 78, 0), + "C4": (4, 78, 90), + "C5": (14, 78, 90), + "C6": (28, 82, 90), + "D3": (4, 82, 0), + "D4": (36, 78, 0), + "R2": (4, 86, 90), + "R3": (10, 86, 90), + "R4": (16, 86, 90), + "R5": (24, 86, 90), + "R6": (30, 86, 90), + "R7": (36, 86, 90), + "J2": (20, 88, 0), + "D2": (4, 92, 0), + "U3": (32, 94, 180), + "C2": (10, 94, 90), + "C3": (26, 94, 90), +} + + +def check_dependencies(): + """Check if required tools are available.""" + missing = [] + + # Check xvfb + if subprocess.run(["which", "xvfb-run"], capture_output=True).returncode != 0: + missing.append("xvfb (sudo apt install xvfb)") + + # Check java + if subprocess.run(["which", "java"], capture_output=True).returncode != 0: + missing.append("java (sudo apt install default-jre)") + + # Check kicad-cli + if subprocess.run(["which", "kicad-cli"], capture_output=True).returncode != 0: + missing.append("kicad-cli (install KiCad)") + + if missing: + print("Missing dependencies:") + for dep in missing: + print(f" - {dep}") + sys.exit(1) + + +def download_freerouting(): + """Download Freerouting if not present.""" + if not os.path.exists(FREEROUTING_JAR): + print("Downloading Freerouting...") + url = "https://github.com/freerouting/freerouting/releases/download/v2.0.1/freerouting-2.0.1.jar" + subprocess.run(["curl", "-L", "-o", FREEROUTING_JAR, url], check=True) + + +def run_pcbnew_script(script_content): + """Run a Python script inside pcbnew using xvfb.""" + with tempfile.NamedTemporaryFile(mode='w', suffix='.py', delete=False) as f: + f.write(script_content) + script_path = f.name + + try: + # Run pcbnew with xvfb, execute script, then exit + # This is a workaround since pcbnew doesn't have a direct script execution mode + result = subprocess.run( + ["xvfb-run", "-a", "python3", "-c", f""" +import sys +sys.path.insert(0, '/usr/lib/python3/dist-packages') +try: + import pcbnew + exec(open('{script_path}').read()) +except Exception as e: + print(f"Error: {{e}}") + sys.exit(1) +"""], + capture_output=True, + text=True, + timeout=120 + ) + print(result.stdout) + if result.stderr: + print(result.stderr) + return result.returncode == 0 + finally: + os.unlink(script_path) + + +def place_and_export(): + """Place components and export DSN using pcbnew API.""" + script = f''' +import pcbnew + +board = pcbnew.LoadBoard("{PCB_FILE}") + +def mm(val): + return pcbnew.FromMM(val) + +def place(x, y): + return pcbnew.VECTOR2I(mm(x), mm(y)) + +# Update board outline +for drawing in board.GetDrawings(): + if drawing.GetClass() == "PCB_SHAPE": + if drawing.GetShape() == pcbnew.SHAPE_T_RECT: + drawing.SetStart(pcbnew.VECTOR2I(mm(0), mm(0))) + drawing.SetEnd(pcbnew.VECTOR2I(mm(40), mm(100))) + print("Updated board outline") + break + +# Delete tracks +tracks = list(board.GetTracks()) +for track in tracks: + board.Delete(track) +print(f"Deleted {{len(tracks)}} tracks") + +# Place components +placements = {repr(PLACEMENTS)} + +placed = 0 +for ref, (x, y, rot) in placements.items(): + fp = board.FindFootprintByReference(ref) + if fp: + fp.SetPosition(place(x, y)) + fp.SetOrientationDegrees(rot) + placed += 1 + +print(f"Placed {{placed}} components") + +# Save board +board.Save("{PCB_FILE}") +print("Saved board") + +# Export DSN +try: + result = pcbnew.ExportSpecctraDSN("{DSN_FILE}") + if result: + print("Exported DSN") + else: + print("DSN export returned False - trying alternate method") + # Try with board parameter + result = pcbnew.ExportSpecctraDSN(board, "{DSN_FILE}") + print(f"Alternate export result: {{result}}") +except Exception as e: + print(f"DSN export error: {{e}}") +''' + return run_pcbnew_script(script) + + +def run_freerouting(): + """Run Freerouting autorouter.""" + print("Running Freerouting...") + result = subprocess.run( + ["java", "-jar", FREEROUTING_JAR, + "-de", DSN_FILE, + "-do", SES_FILE, + "-mp", "200", + "-mt", "1", + "-oit"], + capture_output=True, + text=True, + cwd=KICAD_DIR + ) + + for line in (result.stdout + result.stderr).split('\n'): + if 'completed' in line.lower() or 'error' in line.lower(): + print(f" {line.split(']')[-1].strip()}") + + return os.path.exists(SES_FILE) + + +def import_ses(): + """Import SES file using pcbnew API.""" + script = f''' +import pcbnew + +board = pcbnew.LoadBoard("{PCB_FILE}") + +try: + result = pcbnew.ImportSpecctraSES("{SES_FILE}") + if result: + print("Imported SES") + board.Save("{PCB_FILE}") + print("Saved board") + else: + print("SES import returned False - trying alternate method") + result = pcbnew.ImportSpecctraSES(board, "{SES_FILE}") + if result: + board.Save("{PCB_FILE}") + print("Saved board") +except Exception as e: + print(f"SES import error: {{e}}") +''' + return run_pcbnew_script(script) + + +def run_drc(): + """Run DRC using kicad-cli.""" + print("Running DRC...") + result = subprocess.run( + ["kicad-cli", "pcb", "drc", + "--severity-all", + "--units", "mm", + "-o", DRC_FILE, + PCB_FILE], + capture_output=True, + text=True + ) + print(result.stdout) + + # Count errors + if os.path.exists(DRC_FILE): + with open(DRC_FILE) as f: + content = f.read() + errors = content.count('; error') + warnings = content.count('; warning') + print(f"DRC: {errors} errors, {warnings} warnings") + return errors == 0 + return False + + +def main(): + print("=" * 50) + print("SN-L00 Headless Autoroute Pipeline") + print("=" * 50) + + check_dependencies() + download_freerouting() + + print("\n[1/4] Placing components and exporting DSN...") + if not place_and_export(): + print("Failed to place/export") + # Fall back to manual DSN check + if not os.path.exists(DSN_FILE): + print(f"ERROR: {DSN_FILE} not found") + print("Export manually: File → Export → Specctra DSN") + sys.exit(1) + + print("\n[2/4] Running Freerouting...") + if not run_freerouting(): + print("Freerouting failed") + sys.exit(1) + + print("\n[3/4] Importing routed session...") + if not import_ses(): + print("SES import failed - import manually in KiCad") + + print("\n[4/4] Running DRC...") + success = run_drc() + + print("\n" + "=" * 50) + if success: + print("SUCCESS! Board routed with no DRC errors.") + else: + print("Done. Check DRC.rpt for remaining issues.") + print("=" * 50) + + +if __name__ == "__main__": + main() diff --git a/hardware/kicad/scripts/place_6hp.py b/hardware/kicad/scripts/place_6hp.py new file mode 100644 index 0000000..14d7f31 --- /dev/null +++ b/hardware/kicad/scripts/place_6hp.py @@ -0,0 +1,86 @@ +#!/usr/bin/env python3 +""" +SN-L00 Component Placement Script for 6HP Eurorack +Board at origin (0,0) to (28,100) +Run in KiCad PCB Editor: Tools → Scripting Console +Then: exec(open('scripts/place_6hp.py').read()) +""" + +import pcbnew + +board = pcbnew.GetBoard() + +def mm(val): + return pcbnew.FromMM(val) + +def place(x, y): + return pcbnew.VECTOR2I(mm(x), mm(y)) + +# Component positions for 6HP (28mm x 100mm) layout +# Board origin at (0,0), components placed relative to that +placements = { + # Top - OLED display (rotated 90°, 13mm wide when rotated) + "MOD3": (14, 18, 90), + + # Audio jacks + "J3": (7, 40, 0), # RETURN_IN + "J4": (21, 40, 0), # TRIG_OUT + + # Button + "SW1": (14, 54, 0), + + # RP2040-Zero module + "MOD2": (14, 70, 0), + + # Signal conditioning ICs + "U2": (6, 85, 0), # 74LVC1G17 + "U4": (22, 85, 0), # MCP6001 + + # Resistors + "R2": (3, 90, 0), + "R3": (7, 90, 0), + "R4": (11, 90, 0), + "R5": (15, 90, 0), + "R6": (19, 90, 0), + "R7": (23, 90, 0), + + # Decoupling caps + "C4": (3, 85, 90), + "C5": (11, 85, 90), + "C6": (25, 85, 90), + + # LED + "D5": (25, 90, 0), + + # Protection diodes + "D3": (6, 94, 0), + "D4": (22, 94, 0), + + # Power section + "J2": (14, 94, 0), # Eurorack power header + "D2": (3, 94, 90), # Protection diode + "U3": (25, 94, 180), # LDO - moved right + "C2": (3, 90, 90), # Input cap + "C3": (25, 90, 90), # Output cap - moved right +} + +print("Placing components for 6HP Eurorack layout...") +placed = 0 +not_found = [] + +for ref, (x, y, rot) in placements.items(): + fp = board.FindFootprintByReference(ref) + if fp: + fp.SetPosition(place(x, y)) + fp.SetOrientationDegrees(rot) + placed += 1 + print(f" {ref} -> ({x}, {y}) rot={rot}°") + else: + not_found.append(ref) + +print(f"\nPlaced {placed} components") +if not_found: + print(f"Not found: {', '.join(not_found)}") + +pcbnew.Refresh() +print("\nDone! Save (Ctrl+S), then export DSN for routing.") diff --git a/hardware/panel/PANEL_SPEC.md b/hardware/panel/PANEL_SPEC.md index eb61a32..62e0e09 100644 --- a/hardware/panel/PANEL_SPEC.md +++ b/hardware/panel/PANEL_SPEC.md @@ -9,9 +9,7 @@ | Thickness | 1.5-2.0mm | Aluminum or PCB | | Corner radius | 0mm | Square corners | -## Mounting Holes - -Eurorack standard mounting rail positions: +## Mounting Holes (Eurorack Rails) | Hole | X | Y | Diameter | Notes | |------|---|---|----------|-------| @@ -22,51 +20,78 @@ Eurorack standard mounting rail positions: **Note**: Slots (elongated holes) of 3.2mm × 4mm allow for rail tolerance. +## PCB Mounting + +The PCB (40×100mm) mounts horizontally behind the panel. + +| Parameter | Value | Notes | +|-----------|-------|-------| +| PCB offset from panel top | 10mm | PCB top edge at panel Y=10mm | +| PCB offset from panel bottom | 18.5mm | Clearance for power header | +| Standoff length | 10mm | M3 hex standoffs | +| Standoff holes | 3.2mm | M3 clearance | + +### Standoff Mounting Holes + +| Hole | Panel X | Panel Y | PCB X | PCB Y | +|------|---------|---------|-------|-------| +| Top Left | 5mm | 15mm | 5mm | 5mm | +| Top Right | 35mm | 15mm | 35mm | 5mm | +| Bottom Left | 5mm | 85mm | 5mm | 75mm | +| Bottom Right | 35mm | 85mm | 35mm | 75mm | + +Note: Bottom holes positioned above power section for routing clearance. + ## Component Holes -| Component | X | Y | Diameter | Notes | -|-----------|---|---|----------|-------| -| OLED cutout | 20.15mm | 25.0mm | 28×12mm rect | Rectangular window | -| Button | 20.15mm | 50.0mm | 7.0mm | For 6mm tactile + cap | -| LED (status) | 32.0mm | 50.0mm | 3.0mm | For 3mm LED or light pipe | -| Jack RETURN | 10.0mm | 95.0mm | 6.0mm | Thonkiconn PJ398SM | -| Jack TRIG | 30.0mm | 95.0mm | 6.0mm | Thonkiconn PJ398SM | +All positions aligned with PCB layout (PCB offset = 10mm). + +| Component | Panel X | Panel Y | Diameter | Notes | +|-----------|---------|---------|----------|-------| +| OLED cutout | 20mm | 25mm | 28×12mm rect | Rectangular window | +| Jack RETURN | 10mm | 45mm | 6.0mm | Thonkiconn PJ398SM | +| Jack TRIG | 30mm | 45mm | 6.0mm | Thonkiconn PJ398SM | +| Button | 20mm | 58mm | 7.0mm | For 6mm tactile + cap | +| LED (status) | 32mm | 58mm | 3.0mm | For 3mm LED or light pipe | ## Panel Layout Drawing ``` ←─────── 40.30mm ───────→ - ┌───────────────────────────┐ ─┬─ 0.00mm - │ ○ ○ │ │ 3.00mm (mounting holes) - │ │ │ - │ SubModular │ │ 12.00mm + ┌───────────────────────────┐ ─┬─ 0mm + │ ○ ○ │ │ 3mm (rail mounting holes) │ │ │ + │ SubModular │ │ 12mm + │ · · │ │ 15mm (standoff holes) │ ┌─────────────────┐ │ │ │ │ │ │ │ - │ │ OLED │ │ │ 19-31mm (display window) + │ │ OLED │ │ │ 19-31mm (display window @ 25mm) │ │ DISPLAY │ │ │ │ │ │ │ │ │ └─────────────────┘ │ │ │ │ │ - │ SN-L00 │ │ 42.00mm - │ │ │ - │ ◯ • │ │ 50.00mm (button + LED) - │ BTN PWR │ │ - │ │ │ - │ │ │ - │ │ │ │ ┌───┐ ┌───┐ │ │ │ │ │ │ │ │ │ - │ │ ○ │ │ ○ │ │ │ 95.00mm (jacks) + │ │ ○ │ │ ○ │ │ │ 45mm (jacks) │ │ │ │ │ │ │ │ └───┘ └───┘ │ │ - │ RETURN TRIG │ │ 105.00mm (labels) + │ RETURN TRIG │ │ 52mm (labels) │ │ │ - │ LATENCY TESTER │ │ 115.00mm + │ ◯ • │ │ 58mm (button + LED) + │ BTN PWR │ │ │ │ │ - │ ○ ○ │ │ 125.50mm (mounting holes) - └───────────────────────────┘ ─┴─ 128.50mm + │ SN-L00 │ │ 72mm + │ │ │ + │ │ │ + │ │ │ + │ LATENCY TESTER │ │ 95mm + │ │ │ + │ · · │ │ 85mm (standoff holes) + │ │ │ + │ │ │ + │ ○ ○ │ │ 125.5mm (rail mounting holes) + └───────────────────────────┘ ─┴─ 128.5mm ``` ## OLED Display Window @@ -79,9 +104,7 @@ The 0.91" 128×32 OLED module dimensions: | Active area | ~22 × 6mm | | Mounting | Pin header on edge | -**Panel cutout**: 28mm × 10mm rectangle, centered at (20.15, 25.0) - -Alternatively, a slightly larger window (30 × 12mm) gives tolerance for module alignment. +**Panel cutout**: 28mm × 12mm rectangle, centered at (20mm, 25mm) ## Material Options @@ -106,47 +129,20 @@ Alternatively, a slightly larger window (30 × 12mm) gives tolerance for module - Printing: Engraved or adhesive labels - Cost: ~€3-5/panel -## PCB Panel Design +## Hardware Required -If using a PCB as the panel: - -``` -Front copper: None (for clean look) or decorative pattern -Back copper: Optional ground plane -Silkscreen: All text and graphics -Soldermask: Black (or custom color) -``` - -## Graphics & Text - -### Suggested Layout - -| Element | Position | Size | Font | -|---------|----------|------|------| -| "SubModular" | Top center, Y=12mm | 2.5mm | Bold sans-serif | -| "SN-L00" | Above button, Y=42mm | 3.0mm | Bold | -| "RETURN" | Below left jack, Y=105mm | 2.0mm | Regular | -| "TRIG" | Below right jack, Y=105mm | 2.0mm | Regular | -| "LATENCY TESTER" | Bottom, Y=115mm | 1.5mm | Light | - -## Hole Tolerances - -| Hole Type | Nominal | Tolerance | -|-----------|---------|-----------| -| Mounting | 3.2mm | +0.1/-0.0 | -| Jack | 6.0mm | +0.1/-0.0 | -| Button | 7.0mm | +0.2/-0.0 | -| LED | 3.0mm | +0.1/-0.0 | - -## Files - -- **PANEL_SPEC.md** - This file -- **SN-L00_panel.svg** - Vector graphic for manufacturing -- **SN-L00_panel.kicad_pcb** - PCB panel (if using FR4) +| Item | Qty | Notes | +|------|-----|-------| +| M3×10mm standoff | 4 | Hex, male-female | +| M3×6mm screw | 4 | Pan head, for PCB side | +| M3 nut | 4 | Or use female-female standoffs | +| Thonkiconn nut | 2 | Included with jacks | ## Assembly -1. Mount OLED module with M2 standoffs or double-sided tape -2. Jacks mount through panel, secured with nut -3. Button may need extension shaft or cap -4. LED can use light pipe for front visibility +1. Insert standoffs through panel holes, secure with nuts on front +2. Mount jacks through panel, finger-tighten nuts +3. Align PCB with standoffs and jack pins +4. Secure PCB to standoffs with M3 screws +5. Fully tighten jack nuts +6. Attach OLED module to PCB header diff --git a/hardware/panel/SN-L00_panel.svg b/hardware/panel/SN-L00_panel.svg index c5dbfd5..5cfbe7a 100644 --- a/hardware/panel/SN-L00_panel.svg +++ b/hardware/panel/SN-L00_panel.svg @@ -4,13 +4,14 @@ viewBox="0 0 40.30 128.5">