silkscreen, rotate panels, fpc connector, breakout nets

This commit is contained in:
zyphlar
2026-07-04 03:28:12 -07:00
parent f770479fc4
commit 55f1d612c1
4 changed files with 828 additions and 718 deletions
+416 -340
View File
@@ -1,445 +1,521 @@
(kicad_pcb (version 20221018) (generator "panel_gen_v3") (kicad_pcb (version 20221018) (generator "panel_v4")
(general (thickness 1.6)) (general (thickness 1.6))
(paper "A4") (paper "A4")
(title_block (title_block
(title "Baby Mobile Combined Panel") (title "Baby Mobile Combined Panel v4")
(date "2026-03-11") (date "2026-03-11")
(rev "3.0") (rev "4.0")
(comment 1 "Carrier: XIAO nRF52840 + IS25LP128F + TPS61220") (comment 1 "Carrier: XIAO nRF52840 + IS25LP128F + TPS61220 + FPC-20")
(comment 2 "Breakaway: SOP-8, SOP-16N, SOP-16W castellated adapters") (comment 2 "Adapters: SOP-8, SOP-16N, SOP-16W castellated, FPC connected")
(comment 3 "Order as one panel from JLCPCB with castellated holes + v-score") (comment 3 "Order: JLCPCB, 2-layer, castellated holes=yes, v-score=yes")
) )
(layers (layers
(0 "F.Cu" signal) (31 "B.Cu" signal) (0 "F.Cu" signal) (31 "B.Cu" signal)
(34 "B.Paste" user) (35 "F.Paste" user) (34 "B.Paste" user) (35 "F.Paste" user)
(36 "B.SilkS" user "B.Silkscreen") (37 "F.SilkS" user "F.Silkscreen") (36 "B.SilkS" user "B.Silkscreen") (37 "F.SilkS" user "F.Silkscreen")
(38 "B.Mask" user "B.Mask") (39 "F.Mask" user "F.Mask") (38 "B.Mask" user "B.Mask") (39 "F.Mask" user "F.Mask")
(44 "Edge.Cuts" user) (49 "F.Fab" user "F.Fab") (48 "B.Fab" user "B.Fab") (44 "Edge.Cuts" user)
(48 "B.Fab" user "B.Fab") (49 "F.Fab" user "F.Fab")
) )
(setup (pad_to_mask_clearance 0.05)) (setup
(pad_to_mask_clearance 0.05)
(pcbplotparams (layerselection 0x00010fc_ffffffff) (outputdirectory "gerbers/"))
)
(net 0 "") (net 0 "")
(net 1 "GND") (net 2 "VBAT") (net 3 "3V3") (net 1 "GND") (net 2 "VBAT") (net 3 "3V3")
(net 4 "SPI_MOSI") (net 5 "SPI_MISO") (net 6 "SPI_SCK") (net 7 "FLASH_CS") (net 4 "SPI_MOSI") (net 5 "SPI_MISO") (net 6 "SPI_SCK") (net 7 "FLASH_CS")
(net 8 "BOOST_SW") (net 8 "BOOST_SW") (net 9 "AUDIO_FILT")
(net 9 "SIG_1") (net 10 "SIG_2") (net 11 "SIG_3") (net 12 "SIG_4")
(net 13 "SIG_5") (net 14 "SIG_6") (net 15 "SIG_7") (net 16 "SIG_8")
(gr_line (start 100 100) (end 148.0 100) (layer "Edge.Cuts") (width 0.1) (uuid "7b1700cb-2e02-4e2e-9378-f797465d2604")) (net 10 "S1")
(gr_line (start 148.0 100) (end 148.0 136.0) (layer "Edge.Cuts") (width 0.1) (uuid "74de5cee-1470-42ab-ae12-5d13adf0da95")) (net 11 "S2")
(gr_line (start 148.0 136.0) (end 100 136.0) (layer "Edge.Cuts") (width 0.1) (uuid "7673667b-18a1-446c-aa5c-fe52e4354265")) (net 12 "S3")
(gr_line (start 100 136.0) (end 100 100) (layer "Edge.Cuts") (width 0.1) (uuid "918f360a-2692-439d-a5c9-ac14740cb644")) (net 13 "S4")
(gr_line (start 100 125.0) (end 148.0 125.0) (layer "Edge.Cuts") (width 0.1) (uuid "783f22f9-02f5-42c4-a763-c768f7fc670f")) (net 14 "S5")
(gr_text "— SNAP HERE —" (at 124.0 125.0) (layer "F.SilkS") (uuid "b18cbfec-4605-45b0-b128-89ced7badd2b") (effects (font (size 0.6 0.6) (thickness 0.09)))) (net 15 "S6")
(gr_line (start 111.5 126.0) (end 111.5 136.0) (layer "Edge.Cuts") (width 0.1) (uuid "a783dca9-0c36-4d1f-8397-d0c443740d11")) (net 16 "S7")
(gr_line (start 126.5 126.0) (end 126.5 136.0) (layer "Edge.Cuts") (width 0.1) (uuid "ebef14ed-7814-4b0b-a462-71d18131efff")) (net 17 "S8")
(gr_rect (start 105.5 104.25) (end 126.5 121.75) (layer "F.SilkS") (width 0.15) (uuid "df1a4a4b-4fe2-47f9-8823-a6a873b671d3")) (net 18 "S9")
(gr_rect (start 104.5 111.25) (end 105.5 114.75) (layer "F.SilkS") (width 0.15) (uuid "751bafa2-2bb5-45ab-a9d5-a4633e786a63")) (net 19 "S10")
(gr_text "USB-C" (at 102.5 113.0) (layer "F.SilkS") (uuid "4da04b1c-4fcd-42b3-b4d6-46a9c04dfe43") (effects (font (size 0.5 0.5) (thickness 0.075)))) (net 20 "S11")
(gr_text "XIAO nRF52840" (at 116 113.0) (layer "F.SilkS") (uuid "c5647cc5-4310-45d9-9aee-757ce667d5f0") (effects (font (size 0.7 0.7) (thickness 0.105) bold))) (net 21 "S12")
(net 22 "S13")
(net 23 "S14")
(net 24 "S15")
(net 25 "S16")
(gr_line (start 100.000 100.000) (end 148.000 100.000) (layer "Edge.Cuts") (width 0.1) (uuid "104212ff-f746-4f58-943d-69bf8fceaca8"))
(gr_line (start 148.000 100.000) (end 148.000 141.000) (layer "Edge.Cuts") (width 0.1) (uuid "3582d3c9-13f0-45b2-adcc-377473ebe9d0"))
(gr_line (start 148.000 141.000) (end 100.000 141.000) (layer "Edge.Cuts") (width 0.1) (uuid "6f73522e-31e6-40f3-bcc3-1fc0e689e4ea"))
(gr_line (start 100.000 141.000) (end 100.000 100.000) (layer "Edge.Cuts") (width 0.1) (uuid "32abf0f8-c4bc-4bb1-b0ff-b04110a51d70"))
(gr_line (start 100.000 126.500) (end 148.000 126.500) (layer "Edge.Cuts") (width 0.1) (uuid "abacf90f-5f8e-4ef2-a121-e18193bb9676"))
(gr_text "▼ SNAP ▼" (at 124.000 126.200) (layer "F.SilkS") (uuid "08a10b1f-8577-4491-91b9-4716c74212a0") (effects (font (size 0.5 0.5) (thickness 0.080))))
(gr_line (start 113.000 127.000) (end 113.000 141.000) (layer "Edge.Cuts") (width 0.1) (uuid "d345fc06-cad9-479e-93ef-620198f44922"))
(gr_line (start 129.000 127.000) (end 129.000 141.000) (layer "Edge.Cuts") (width 0.1) (uuid "dbae9c2c-4bd9-4726-8c84-b1c184d8c290"))
(gr_rect (start 103.000 104.250) (end 124.000 121.750) (layer "F.SilkS") (width 0.2) (uuid "92f1750d-b8eb-47ce-a180-938d8eda924b"))
(gr_rect (start 101.500 108.550) (end 103.000 117.450) (layer "F.SilkS") (width 0.2) (uuid "fa01c07d-7e52-4025-af49-3981a6177d03"))
(gr_rect (start 101.800 108.850) (end 102.900 117.150) (layer "F.SilkS") (width 0.15) (uuid "439700fa-f28d-4385-98da-44b6cda43749"))
(gr_text "USB-C" (at 103.500 113.000) (layer "F.SilkS") (uuid "60eea485-b0b6-45aa-bbf0-1643b0cbc37f") (effects (font (size 0.5 0.5) (thickness 0.080))))
(gr_text "XIAO nRF52840" (at 114.500 113.000) (layer "F.SilkS") (uuid "3adb0e5f-2bbe-4501-87b2-19458737e92a") (effects (font (size 0.8 0.8) (thickness 0.104))))
(gr_text "RST" (at 105.000 105.750) (layer "F.SilkS") (uuid "9b669ce2-3e3d-4a36-b6de-afcd6552af5e") (effects (font (size 0.4 0.4) (thickness 0.080))))
(gr_circle (center 104.000 105.750) (end 104.500 105.750) (layer "F.SilkS") (width 0.1) (fill none) (uuid "419559c3-f3cb-4448-801f-1bc1dc635a8f"))
(footprint "panel:XIAO_L" (layer "F.Cu") (footprint "panel:J2_XIAO_L" (layer "F.Cu")
(at 107.11 113.0) (at 104.610 113.000)
(uuid "424b9417-5f41-43c3-8293-a8e6cb933576") (uuid "1880d745-c8b8-49c4-801a-b7dded7fa4d4")
(fp_text reference "XIAO_L" (at 0 0) (layer "F.Fab") (uuid "1a192681-0423-4f3e-891c-0eab3ca39c22") (fp_text reference "J2_XIAO_L" (at 0 0) (layer "F.Fab") (uuid "e72c399e-a106-4b11-9587-416d6d129d19")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "720cd57c-edcc-4b50-ad35-7338533983cd") (fp_text value "" (at 0 0) (layer "F.Fab") (uuid "8ecd4411-88bc-41b3-85aa-c4c431acdc2d")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(pad "D0" thru_hole circle (at 0.000 -7.620) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 9 "SIG_1") (uuid "13d7148a-50c1-4a94-8c11-e9dcb6a754c6")) (pad "D0" thru_hole circle (at 0.000 -7.620) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 10 "S1") (uuid "5f654290-e6f5-4cd1-b3e0-1e01b5e10eee"))
(pad "D1" thru_hole circle (at 0.000 -5.080) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 10 "SIG_2") (uuid "7ca7a9e0-026d-402d-ab32-548113b484a6")) (pad "D1" thru_hole circle (at 0.000 -5.080) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 11 "S2") (uuid "c221edd1-da4f-427b-834a-117c9d1e8d1b"))
(pad "D2" thru_hole circle (at 0.000 -2.540) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 11 "SIG_3") (uuid "2d34971b-f0cc-450a-b01f-c96eef28ae65")) (pad "D2" thru_hole circle (at 0.000 -2.540) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 12 "S3") (uuid "08153f73-e1a6-455d-8b7a-a176f096ce82"))
(pad "D3" thru_hole circle (at 0.000 0.000) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 12 "SIG_4") (uuid "fbb508a4-080e-4393-b007-24b8441ed40c")) (pad "D3" thru_hole circle (at 0.000 0.000) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 13 "S4") (uuid "5cc418f2-0d3d-46d8-ab1e-da6298ae825b"))
(pad "D4" thru_hole circle (at 0.000 2.540) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 13 "SIG_5") (uuid "057c4634-92da-473b-bd74-636c3b5da05a")) (pad "D4" thru_hole circle (at 0.000 2.540) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 14 "S5") (uuid "63e8f300-12fc-4b25-864b-a3ce15756f84"))
(pad "D5" thru_hole circle (at 0.000 5.080) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 14 "SIG_6") (uuid "e996f8e8-cba1-4124-adea-6e6a55822cf2")) (pad "D5" thru_hole circle (at 0.000 5.080) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 15 "S6") (uuid "e116be82-17b5-489e-b602-501c0cb2c5e8"))
(pad "D6" thru_hole circle (at 0.000 7.620) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 15 "SIG_7") (uuid "c1ecb403-d181-4f94-8a3f-f0d904a321af")) (pad "D6" thru_hole circle (at 0.000 7.620) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 16 "S7") (uuid "12b9d945-953b-4147-abb0-b33958ede447"))
) )
(gr_text "D0" (at 104.11 105.38) (layer "F.SilkS") (uuid "8ccee08b-7714-4ea7-a015-9ac7c7007746") (effects (font (size 0.5 0.5) (thickness 0.075)))) (gr_text "D0" (at 102.110 105.380) (layer "F.SilkS") (uuid "062baf94-9f37-4f1b-a75a-447e7bbf4e87") (effects (font (size 0.45 0.45) (thickness 0.080))))
(gr_text "D1" (at 104.11 107.92) (layer "F.SilkS") (uuid "b369c277-cc9e-477d-aa9c-3cbfea32fea2") (effects (font (size 0.5 0.5) (thickness 0.075)))) (gr_text "D1" (at 102.110 107.920) (layer "F.SilkS") (uuid "7e51d748-6cf6-4fbe-83a2-e22517497b30") (effects (font (size 0.45 0.45) (thickness 0.080))))
(gr_text "D2" (at 104.11 110.46) (layer "F.SilkS") (uuid "aeb4b4c5-29de-460e-820d-bc8d6b3af6d1") (effects (font (size 0.5 0.5) (thickness 0.075)))) (gr_text "D2" (at 102.110 110.460) (layer "F.SilkS") (uuid "c536f2ba-04dd-469b-86bf-b64989766eaa") (effects (font (size 0.45 0.45) (thickness 0.080))))
(gr_text "D3" (at 104.11 113.0) (layer "F.SilkS") (uuid "8548eb5a-87f5-4282-9d87-f43ad4cc7c3e") (effects (font (size 0.5 0.5) (thickness 0.075)))) (gr_text "D3" (at 102.110 113.000) (layer "F.SilkS") (uuid "fb1f005c-01fe-40b4-9f5e-19520b5e40e6") (effects (font (size 0.45 0.45) (thickness 0.080))))
(gr_text "D4" (at 104.11 115.53999999999999) (layer "F.SilkS") (uuid "fecb2fc5-5665-4cb4-a0f0-96b5f4e7b60b") (effects (font (size 0.5 0.5) (thickness 0.075)))) (gr_text "D4" (at 102.110 115.540) (layer "F.SilkS") (uuid "87c7cbff-7db0-4c52-8c48-617a5fe31e7f") (effects (font (size 0.45 0.45) (thickness 0.080))))
(gr_text "D5" (at 104.11 118.08) (layer "F.SilkS") (uuid "fd67dc0f-1c74-4a8f-8058-5237b0164175") (effects (font (size 0.5 0.5) (thickness 0.075)))) (gr_text "D5" (at 102.110 118.080) (layer "F.SilkS") (uuid "9a253003-4842-4a93-99cf-fb57fcc7cf41") (effects (font (size 0.45 0.45) (thickness 0.080))))
(gr_text "D6" (at 104.11 120.61999999999999) (layer "F.SilkS") (uuid "ada138f6-8731-4fc5-ae8d-e392f03f1f5e") (effects (font (size 0.5 0.5) (thickness 0.075)))) (gr_text "D6" (at 102.110 120.620) (layer "F.SilkS") (uuid "b5b93455-6fbe-4017-ab71-710bfc3c2f9c") (effects (font (size 0.45 0.45) (thickness 0.080))))
(footprint "panel:XIAO_R" (layer "F.Cu") (footprint "panel:J3_XIAO_R" (layer "F.Cu")
(at 124.89 113.0) (at 122.390 113.000)
(uuid "3cd83d54-c4bd-49db-8108-1fea4f7216d3") (uuid "478daaf8-7483-4c18-8d16-3af8d13f1e5a")
(fp_text reference "XIAO_R" (at 0 0) (layer "F.Fab") (uuid "757c0392-628e-4915-bd7c-e069da6da9e3") (fp_text reference "J3_XIAO_R" (at 0 0) (layer "F.Fab") (uuid "bbc610eb-4935-4d5b-998f-73da0871fd8a")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "4c8ac95c-7732-46f0-bf26-80e8ae16043a") (fp_text value "" (at 0 0) (layer "F.Fab") (uuid "78b14adf-d763-48b5-830a-4f4a7961ee99")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(pad "D10" thru_hole circle (at 0.000 -7.620) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 16 "SIG_8") (uuid "f264cff2-da9c-43e9-963b-b94769bdfcb1")) (pad "D10" thru_hole circle (at 0.000 -7.620) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 17 "S8") (uuid "59eb4432-199b-4695-a612-a5507fa984d7"))
(pad "D9" thru_hole circle (at 0.000 -5.080) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 6 "SPI_SCK") (uuid "308ce269-69a0-432d-905a-673545bacbe6")) (pad "D9" thru_hole circle (at 0.000 -5.080) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 6 "SPI_SCK") (uuid "a57f5812-d1e7-46cd-89f7-6c8d3477a874"))
(pad "D8" thru_hole circle (at 0.000 -2.540) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 4 "SPI_MOSI") (uuid "ad23c509-4739-4079-a75c-e5e315d806b5")) (pad "D8" thru_hole circle (at 0.000 -2.540) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 4 "SPI_MOSI") (uuid "0b2075c5-c1ed-4d53-873d-f83ba55d10e9"))
(pad "D7" thru_hole circle (at 0.000 0.000) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 5 "SPI_MISO") (uuid "da735dbd-fa9b-43d3-b598-21925b5096d2")) (pad "D7" thru_hole circle (at 0.000 0.000) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 5 "SPI_MISO") (uuid "5cbd35af-04be-4259-a124-3627c72fea10"))
(pad "3V3" thru_hole circle (at 0.000 2.540) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 3 "3V3") (uuid "b903209b-71fb-41d3-a113-1733752b5319")) (pad "3V3" thru_hole circle (at 0.000 2.540) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 3 "3V3") (uuid "670919f1-8cc6-40c5-98fc-401b537c26c1"))
(pad "GND" thru_hole circle (at 0.000 5.080) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 1 "GND") (uuid "2960e5f3-39de-410d-8c2e-1efa6f5d6d41")) (pad "GND" thru_hole circle (at 0.000 5.080) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 1 "GND") (uuid "bd89036b-ac87-476a-89fc-3ea51828db98"))
(pad "5V" thru_hole circle (at 0 7.62) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (uuid "ebbd6673-2b72-4e71-bdb3-9884752f82ec")) (pad "5V" thru_hole circle (at 0 7.62) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (uuid "f3f13533-e920-4db6-80a9-3517b7a64c80"))
) )
(gr_text "D10" (at 127.89 105.38) (layer "F.SilkS") (uuid "5203eb0b-f267-4c9a-8362-5d4ad5b4b82e") (effects (font (size 0.5 0.5) (thickness 0.075)))) (gr_text "D10" (at 125.190 105.380) (layer "F.SilkS") (uuid "4275c31d-9b16-4856-8700-6c07cc109456") (effects (font (size 0.45 0.45) (thickness 0.080))))
(gr_text "D9" (at 127.89 107.92) (layer "F.SilkS") (uuid "c6ce93ba-42a5-4a0e-97c8-5c5cbb22a23f") (effects (font (size 0.5 0.5) (thickness 0.075)))) (gr_text "D9" (at 125.190 107.920) (layer "F.SilkS") (uuid "69073532-7c55-47b6-a165-1f93082b8c35") (effects (font (size 0.45 0.45) (thickness 0.080))))
(gr_text "D8" (at 127.89 110.46) (layer "F.SilkS") (uuid "3847168c-3ec1-4ab3-8c8c-1a387e691cd9") (effects (font (size 0.5 0.5) (thickness 0.075)))) (gr_text "D8" (at 125.190 110.460) (layer "F.SilkS") (uuid "b5cae429-dc50-4fe2-9378-264ff635ac1a") (effects (font (size 0.45 0.45) (thickness 0.080))))
(gr_text "D7" (at 127.89 113.0) (layer "F.SilkS") (uuid "d5d839c4-a0fb-4936-9647-afd65ec22baf") (effects (font (size 0.5 0.5) (thickness 0.075)))) (gr_text "D7" (at 125.190 113.000) (layer "F.SilkS") (uuid "71f6b3e5-56d1-4f91-9b80-34363d2cc403") (effects (font (size 0.45 0.45) (thickness 0.080))))
(gr_text "3V3" (at 127.89 115.53999999999999) (layer "F.SilkS") (uuid "7f208461-157c-4f2e-9ba8-9ff7a92e2592") (effects (font (size 0.5 0.5) (thickness 0.075)))) (gr_text "3V3" (at 125.190 115.540) (layer "F.SilkS") (uuid "df934edf-0319-4bd5-ab19-f93733b9b9a4") (effects (font (size 0.45 0.45) (thickness 0.080))))
(gr_text "GND" (at 127.89 118.08) (layer "F.SilkS") (uuid "0d7bb0f3-d447-40c0-8c0d-852c0888bd95") (effects (font (size 0.5 0.5) (thickness 0.075)))) (gr_text "GND" (at 125.190 118.080) (layer "F.SilkS") (uuid "49eef609-08c6-4002-a11d-552004ad1233") (effects (font (size 0.45 0.45) (thickness 0.080))))
(gr_text "5V" (at 127.89 120.61999999999999) (layer "F.SilkS") (uuid "41673efe-250c-4f9d-b726-a4a3323f0a55") (effects (font (size 0.5 0.5) (thickness 0.075)))) (gr_text "5V" (at 125.190 120.620) (layer "F.SilkS") (uuid "29c03aea-4a86-4e11-a534-6e8a142e738f") (effects (font (size 0.45 0.45) (thickness 0.080))))
(gr_circle (center 131.5 110.0) (end 131.8 110.0) (layer "F.SilkS") (width 0.15) (fill solid) (uuid "13a16cf6-f659-4a1b-a214-eaa0051e312f")) (gr_rect (start 129.500 102.300) (end 134.500 108.700) (layer "F.SilkS") (width 0.15) (uuid "ece65163-9657-4253-9e7c-cf0e2df69d41"))
(gr_rect (start 131.5 104.5) (end 136.5 108.5) (layer "F.SilkS") (width 0.15) (uuid "e3237dd4-989a-4291-8a2d-4dc17b1b3a49")) (gr_circle (center 130.500 107.700) (end 130.750 107.700) (layer "F.SilkS") (width 0.1) (fill solid) (uuid "ffc30771-b96d-4890-92ef-8a49a59bf10d"))
(gr_text "U2 IS25LP128F" (at 134 103.0) (layer "F.SilkS") (uuid "0f957ce0-a31e-4bdc-ab4e-cfa38072838b") (effects (font (size 0.5 0.5) (thickness 0.075)))) (gr_circle (center 132.000 108.700) (end 132.400 108.700) (layer "F.SilkS") (width 0.1) (fill none) (uuid "2cf964ff-8310-4b73-ac5b-8c0325559520"))
(gr_text "●1" (at 131.5 110.7) (layer "F.SilkS") (uuid "d38fce73-c8ac-41f6-a19f-8c9bf104fcb0") (effects (font (size 0.4 0.4) (thickness 0.06)))) (gr_text "U2" (at 132.000 101.300) (layer "F.SilkS") (uuid "4b61fa0a-ae7c-463f-85a2-f1b1079f263a") (effects (font (size 0.5 0.5) (thickness 0.080))))
(gr_text "IS25LP128F" (at 132.000 110.200) (layer "F.SilkS") (uuid "91213253-1da6-483e-9a33-132cc1cfeec0") (effects (font (size 0.4 0.4) (thickness 0.080))))
(gr_text "1" (at 130.095 109.400) (layer "F.SilkS") (uuid "c389beaf-bb8a-42b8-ada0-cead80b18723") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "2" (at 131.365 109.400) (layer "F.SilkS") (uuid "9a047c7e-335c-40b2-9d91-a0164c53e686") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "3" (at 132.635 109.400) (layer "F.SilkS") (uuid "acce117a-e72e-48b0-8bbc-7291cc3faed1") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "4" (at 133.905 109.400) (layer "F.SilkS") (uuid "5d0bfd10-bc74-416b-a1e2-b3ea899497d9") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "8" (at 130.095 101.600) (layer "F.SilkS") (uuid "eecce093-ba35-41a5-866a-ebf3b5f6bf7e") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "7" (at 131.365 101.600) (layer "F.SilkS") (uuid "572fb423-e189-4760-be9c-6aa1fe68470e") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "6" (at 132.635 101.600) (layer "F.SilkS") (uuid "076ee973-262b-4d67-b110-8d39e6bf5aec") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "5" (at 133.905 101.600) (layer "F.SilkS") (uuid "53062d13-f3c8-4ffc-a340-7303f1916a86") (effects (font (size 0.3 0.3) (thickness 0.080))))
(footprint "panel:IS25LP128F" (layer "F.Cu") (footprint "panel:U2_Flash" (layer "F.Cu")
(at 134 106.5) (at 132.000 105.500)
(uuid "035c717e-5224-4dae-b80e-c5ad937661b4") (uuid "33f564be-74cb-4b07-9514-48c38bcf8b14")
(fp_text reference "IS25LP128F" (at 0 0) (layer "F.Fab") (uuid "a831eb77-f12b-4f9c-a65a-1ea2a8eecb84") (fp_text reference "U2_Flash" (at 0 0) (layer "F.Fab") (uuid "2891d898-66a3-4f26-86ab-d7c3390f90b8")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "80984351-2ea3-4c2d-8c81-2146ab830536") (fp_text value "" (at 0 0) (layer "F.Fab") (uuid "7c379697-fc67-4742-9331-165515e56009")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(pad "1" smd rect (at -1.905 2.700) (size 0.6 1.5) (layers "F.Cu" "F.Paste" "F.Mask") (net 7 "FLASH_CS") (uuid "a9a47098-819e-4532-ac33-07c50281d653")) (pad "1" smd rect (at -1.905 2.700) (size 0.600 1.500) (layers "F.Cu" "F.Paste" "F.Mask") (net 7 "FLASH_CS") (uuid "0f15bea3-f2c1-49e6-97b1-573cd5a98bcd"))
(pad "2" smd rect (at -0.635 2.700) (size 0.6 1.5) (layers "F.Cu" "F.Paste" "F.Mask") (net 5 "SPI_MISO") (uuid "2351be0b-b569-4b8c-8140-aaac92581886")) (pad "2" smd rect (at -0.635 2.700) (size 0.600 1.500) (layers "F.Cu" "F.Paste" "F.Mask") (net 5 "SPI_MISO") (uuid "d5cca333-1aa2-4ac6-b73b-2efb9e83ca32"))
(pad "3" smd rect (at 0.635 2.700) (size 0.6 1.5) (layers "F.Cu" "F.Paste" "F.Mask") (net 3 "3V3") (uuid "bac05db0-0409-4c26-a620-50caf6c4cca8")) (pad "3" smd rect (at 0.635 2.700) (size 0.600 1.500) (layers "F.Cu" "F.Paste" "F.Mask") (net 3 "3V3") (uuid "9af46e90-187d-4c3f-a493-83d009f15909"))
(pad "4" smd rect (at 1.905 2.700) (size 0.6 1.5) (layers "F.Cu" "F.Paste" "F.Mask") (net 1 "GND") (uuid "edcc2bd9-c8ae-403f-bbf2-f4626fdcdb9e")) (pad "4" smd rect (at 1.905 2.700) (size 0.600 1.500) (layers "F.Cu" "F.Paste" "F.Mask") (net 1 "GND") (uuid "9a67a279-fb78-4946-be3e-06ab38e9cf5c"))
(pad "5" smd rect (at 1.905 -2.700) (size 0.6 1.5) (layers "F.Cu" "F.Paste" "F.Mask") (net 4 "SPI_MOSI") (uuid "219218ea-ebfb-487d-a51e-c42592053dbe")) (pad "5" smd rect (at 1.905 -2.700) (size 0.600 1.500) (layers "F.Cu" "F.Paste" "F.Mask") (net 4 "SPI_MOSI") (uuid "1aa3f49b-ee12-4257-bd98-b46343cb6ec3"))
(pad "6" smd rect (at 0.635 -2.700) (size 0.6 1.5) (layers "F.Cu" "F.Paste" "F.Mask") (net 6 "SPI_SCK") (uuid "c81ade0d-58ae-4354-95f3-c81c0bdef5e8")) (pad "6" smd rect (at 0.635 -2.700) (size 0.600 1.500) (layers "F.Cu" "F.Paste" "F.Mask") (net 6 "SPI_SCK") (uuid "e3656871-82ec-4a1f-a339-a99e38566725"))
(pad "7" smd rect (at -0.635 -2.700) (size 0.6 1.5) (layers "F.Cu" "F.Paste" "F.Mask") (net 3 "3V3") (uuid "4c34d938-b3ee-470b-8f42-ccb75644e447")) (pad "7" smd rect (at -0.635 -2.700) (size 0.600 1.500) (layers "F.Cu" "F.Paste" "F.Mask") (net 3 "3V3") (uuid "c01e362b-fa39-45fd-9d08-20192e13cc0e"))
(pad "8" smd rect (at -1.905 -2.700) (size 0.6 1.5) (layers "F.Cu" "F.Paste" "F.Mask") (net 3 "3V3") (uuid "8b9ebe9d-3c52-4bda-9d1f-7dcc2a6431e5")) (pad "8" smd rect (at -1.905 -2.700) (size 0.600 1.500) (layers "F.Cu" "F.Paste" "F.Mask") (net 3 "3V3") (uuid "bf52d31d-3fa3-44c6-b949-39bb7be69947"))
) )
(footprint "panel:C3" (layer "F.Cu") (footprint "panel:C3" (layer "F.Cu")
(at 139 106.5) (at 137.500 104.500)
(uuid "6c849ca5-09fb-49a3-9c51-234d3277ff4c") (uuid "efd45baf-76b1-41b8-9a69-d16c4aff9996")
(fp_text reference "C3" (at 0 0) (layer "F.Fab") (uuid "64dfb9e1-c603-44f5-9695-85e9febe5068") (fp_text reference "C3" (at 0 0) (layer "F.Fab") (uuid "a96b08f3-828d-4372-a868-703ccc8aa653")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "d71421ef-b387-4165-9478-3494261bb3eb") (fp_text value "" (at 0 0) (layer "F.Fab") (uuid "b58de4ee-0bc1-4028-90e3-53d63e842878")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(pad "1" smd rect (at -1.000 0.000) (size 1.0 1.2) (layers "F.Cu" "F.Paste" "F.Mask") (net 3 "3V3") (uuid "75dbbfeb-def5-4b8b-9cb1-935bbd23f5ac")) (pad "1" smd rect (at -1.000 0.000) (size 1.000 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 3 "3V3") (uuid "f3c64e10-394d-4f53-8c70-3ebc293cde64"))
(pad "2" smd rect (at 1.000 0.000) (size 1.0 1.2) (layers "F.Cu" "F.Paste" "F.Mask") (net 1 "GND") (uuid "754aa1fe-fa86-4f71-ae83-8a549899f4ca")) (pad "2" smd rect (at 1.000 0.000) (size 1.000 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 1 "GND") (uuid "fbdd13da-6c60-4ea6-911e-fe65eede2847"))
) )
(gr_text "C3 100n" (at 139 105.3) (layer "F.SilkS") (uuid "63cd6760-d68d-4280-b7ab-b1bec1a5435b") (effects (font (size 0.4 0.4) (thickness 0.06)))) (gr_text "C3" (at 137.500 103.200) (layer "F.SilkS") (uuid "808da9f5-dde2-4311-8f1f-0a875d9add55") (effects (font (size 0.4 0.4) (thickness 0.080))))
(gr_text "+" (at 137.8 106.5) (layer "F.SilkS") (uuid "5df09abb-4d82-48fa-b277-3d8e5c8c9ff0") (effects (font (size 0.4 0.4) (thickness 0.06)))) (gr_text "100n" (at 137.500 105.800) (layer "F.SilkS") (uuid "a3914fa0-a733-4591-911f-a6d26678ce2b") (effects (font (size 0.35 0.35) (thickness 0.080))))
(footprint "panel:R2" (layer "F.Cu") (footprint "panel:R2" (layer "F.Cu")
(at 139 109.5) (at 137.500 107.500)
(uuid "f285b94d-6fb7-4652-94cc-c59818678108") (uuid "4828ff79-0549-47d3-8288-89dd7fd1ffc0")
(fp_text reference "R2" (at 0 0) (layer "F.Fab") (uuid "7eff1e64-ff06-429f-8417-782c8082dd8c") (fp_text reference "R2" (at 0 0) (layer "F.Fab") (uuid "7807c9fe-f96b-4071-82d0-21ac015980fd")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "edbb8ed0-6a3c-4b9a-af54-f1496efc2bff") (fp_text value "" (at 0 0) (layer "F.Fab") (uuid "f3fb6f6e-1ef7-42eb-a348-8b6d7aab4538")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(pad "1" smd rect (at -1.000 0.000) (size 1.0 1.2) (layers "F.Cu" "F.Paste" "F.Mask") (net 7 "FLASH_CS") (uuid "b945b811-e8b4-45d6-b1ab-1a67524b65bc")) (pad "1" smd rect (at -1.000 0.000) (size 1.000 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 7 "FLASH_CS") (uuid "1ccfaa3c-7ea6-4eda-888b-928d091041ad"))
(pad "2" smd rect (at 1.000 0.000) (size 1.0 1.2) (layers "F.Cu" "F.Paste" "F.Mask") (net 3 "3V3") (uuid "822ffa6c-5cfc-465e-a985-4ce3593ff60a")) (pad "2" smd rect (at 1.000 0.000) (size 1.000 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 3 "3V3") (uuid "f8c4ab39-a4c3-4458-bdd8-29f399b1abee"))
) )
(gr_text "R2 10K" (at 139 108.3) (layer "F.SilkS") (uuid "ada14ace-3cd5-44e2-9165-76e0941f655b") (effects (font (size 0.4 0.4) (thickness 0.06)))) (gr_text "R2" (at 137.500 106.300) (layer "F.SilkS") (uuid "c690803d-f367-4a01-baaf-b0f211e95d90") (effects (font (size 0.4 0.4) (thickness 0.080))))
(gr_text "10K" (at 137.500 108.800) (layer "F.SilkS") (uuid "71947797-a79c-4b48-9356-ef04c53cb56e") (effects (font (size 0.35 0.35) (thickness 0.080))))
(footprint "panel:R1" (layer "F.Cu") (footprint "panel:R1" (layer "F.Cu")
(at 134 113) (at 132.000 114.000)
(uuid "31b61a4c-cb67-41fe-abde-6237a02672e7") (uuid "37cc5e4d-7bf4-41a9-b81e-78764e60f07e")
(fp_text reference "R1" (at 0 0) (layer "F.Fab") (uuid "f8c37308-786e-400d-81b0-fb29dc6121b0") (fp_text reference "R1" (at 0 0) (layer "F.Fab") (uuid "2ce5f8a6-fc73-4909-a493-fa4121752043")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "6554f611-3d96-4bd4-9be6-ff4f31f8e0f9") (fp_text value "" (at 0 0) (layer "F.Fab") (uuid "7e4aacb8-c4cd-441b-8889-70d980a27059")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(pad "1" smd rect (at -1.000 0.000) (size 1.0 1.2) (layers "F.Cu" "F.Paste" "F.Mask") (net 16 "SIG_8") (uuid "664bc9f2-d270-4113-9d41-1649df5b63e0")) (pad "1" smd rect (at -1.000 0.000) (size 1.000 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 17 "S8") (uuid "8cbfc39f-b0c1-4776-87f0-5c46aa4adca7"))
(pad "2" smd rect (at 1.000 0.000) (size 1.0 1.2) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "AUDIO_FILT") (uuid "9c4ec3bf-1942-4b3b-a0bc-d2270af990a1")) (pad "2" smd rect (at 1.000 0.000) (size 1.000 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 9 "AUDIO_FILT") (uuid "7f43e904-361c-47d3-9be2-9a180465ee3a"))
) )
(gr_text "R1 4.7K" (at 134 111.8) (layer "F.SilkS") (uuid "c302f0de-3645-4a12-bfb6-d6e0acc191bb") (effects (font (size 0.4 0.4) (thickness 0.06)))) (gr_text "R1 4.7K" (at 132.000 112.700) (layer "F.SilkS") (uuid "60598c4b-e455-4930-9b04-61573d2f5eca") (effects (font (size 0.4 0.4) (thickness 0.080))))
(footprint "panel:C5" (layer "F.Cu") (footprint "panel:C5" (layer "F.Cu")
(at 134 115.5) (at 132.000 117.000)
(uuid "c70ac8eb-9f06-48c7-a731-46c4ce383b29") (uuid "c2dc742d-aa63-4e4f-937b-6eca10fc9c75")
(fp_text reference "C5" (at 0 0) (layer "F.Fab") (uuid "6dfa0d66-c59f-4fd3-8df3-928ab755c88b") (fp_text reference "C5" (at 0 0) (layer "F.Fab") (uuid "3a7604db-e795-488a-81b5-f79e4a9493dd")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "c931a903-19ee-46b1-9846-5939fc8aa326") (fp_text value "" (at 0 0) (layer "F.Fab") (uuid "68eb2d54-0fbe-4929-a0a8-f4257e22fdb0")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(pad "1" smd rect (at -1.000 0.000) (size 1.0 1.2) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "AUDIO_FILT") (uuid "3fa692ca-1d5a-4a89-b1a2-f01428dc22f4")) (pad "1" smd rect (at -1.000 0.000) (size 1.000 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 9 "AUDIO_FILT") (uuid "dd5bc709-6ccd-4d90-84d9-e2ba222d74ee"))
(pad "2" smd rect (at 1.000 0.000) (size 1.0 1.2) (layers "F.Cu" "F.Paste" "F.Mask") (net 1 "GND") (uuid "6b0bca98-110f-45d1-aed4-e862f8a1202e")) (pad "2" smd rect (at 1.000 0.000) (size 1.000 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 1 "GND") (uuid "9c8ee84f-d527-41d9-8387-55957a1174d3"))
) )
(gr_text "C5 10n" (at 134 114.3) (layer "F.SilkS") (uuid "5e2e8cd8-6382-4870-a049-816dd507fa2d") (effects (font (size 0.4 0.4) (thickness 0.06)))) (gr_text "C5 10n" (at 132.000 115.700) (layer "F.SilkS") (uuid "d0cfaf10-7857-4574-950b-26e43f1545b7") (effects (font (size 0.4 0.4) (thickness 0.080))))
(gr_circle (center 132.8 121.5) (end 133.10000000000002 121.5) (layer "F.SilkS") (width 0.15) (fill solid) (uuid "a9e16b85-e4af-4e84-94a7-f47d0120bcb1")) (gr_rect (start 130.800 119.900) (end 133.200 122.100) (layer "F.SilkS") (width 0.15) (uuid "0fa298c0-2c90-4739-a08a-2c2f49b38083"))
(gr_text "U1 TPS61220" (at 134 117.5) (layer "F.SilkS") (uuid "b124be9f-a3a8-4149-946d-a031307b61a4") (effects (font (size 0.5 0.5) (thickness 0.075)))) (gr_circle (center 131.200 121.600) (end 131.400 121.600) (layer "F.SilkS") (width 0.1) (fill solid) (uuid "e2f3da83-8936-4675-9858-21bfae676a64"))
(gr_text "1" (at 132.8 122.2) (layer "F.SilkS") (uuid "33ea581f-e2cb-4990-94a7-1983dac9d167") (effects (font (size 0.4 0.4) (thickness 0.06)))) (gr_text "U1" (at 132.000 119.000) (layer "F.SilkS") (uuid "cb9a68ed-419f-491d-8137-cf10ee619bad") (effects (font (size 0.5 0.5) (thickness 0.080))))
(gr_text "TPS61220" (at 132.000 123.000) (layer "F.SilkS") (uuid "1bfc84ca-8d74-42f9-9cb8-03875e1b2e62") (effects (font (size 0.4 0.4) (thickness 0.080))))
(gr_text "●1" (at 130.500 121.700) (layer "F.SilkS") (uuid "3a4a9480-9920-4f69-a857-f558f0f96f1c") (effects (font (size 0.35 0.35) (thickness 0.080))))
(footprint "panel:TPS61220" (layer "F.Cu") (footprint "panel:U1_Boost" (layer "F.Cu")
(at 134 120) (at 132.000 121.000)
(uuid "1f475038-a4b5-4175-91c9-7d26e3766a1e") (uuid "2af40a9c-cc47-4186-b24a-afbc0dc415d2")
(fp_text reference "TPS61220" (at 0 0) (layer "F.Fab") (uuid "40582112-b236-436a-afdc-dbcb9ca5417b") (fp_text reference "U1_Boost" (at 0 0) (layer "F.Fab") (uuid "8bd65444-2019-4305-bd42-ac670d94d03f")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "1acbc7e6-9df7-4224-b91b-20582215db1d") (fp_text value "" (at 0 0) (layer "F.Fab") (uuid "db837181-13dc-4a5b-8aa0-2ff6b17d2bf3")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(pad "1" smd rect (at -0.650 0.700) (size 0.4 0.55) (layers "F.Cu" "F.Paste" "F.Mask") (net 2 "VBAT") (uuid "8b9f424f-e807-4bf0-ac6e-68a45cefae72")) (pad "1" smd rect (at -0.650 0.700) (size 0.400 0.550) (layers "F.Cu" "F.Paste" "F.Mask") (net 2 "VBAT") (uuid "ce1de65a-77a3-4577-be0e-4fcc3d33231e"))
(pad "2" smd rect (at 0.000 0.700) (size 0.4 0.55) (layers "F.Cu" "F.Paste" "F.Mask") (net 1 "GND") (uuid "8aab62be-1aaf-44e0-bc10-877fc0c5cef0")) (pad "2" smd rect (at 0.000 0.700) (size 0.400 0.550) (layers "F.Cu" "F.Paste" "F.Mask") (net 1 "GND") (uuid "217a9c08-efa3-4774-b954-18bbf01ecb7c"))
(pad "3" smd rect (at 0.650 0.700) (size 0.4 0.55) (layers "F.Cu" "F.Paste" "F.Mask") (net 2 "VBAT") (uuid "dcc4a5fd-3515-412c-bc9a-04d98d276173")) (pad "3" smd rect (at 0.650 0.700) (size 0.400 0.550) (layers "F.Cu" "F.Paste" "F.Mask") (net 2 "VBAT") (uuid "5babc1dc-21a4-49d0-9020-12feaa08bc0a"))
(pad "4" smd rect (at 0.650 -0.700) (size 0.4 0.55) (layers "F.Cu" "F.Paste" "F.Mask") (net 3 "3V3") (uuid "b4de3046-f675-425b-ba3b-b91d0a31f6a0")) (pad "4" smd rect (at 0.650 -0.700) (size 0.400 0.550) (layers "F.Cu" "F.Paste" "F.Mask") (net 3 "3V3") (uuid "2ba70765-f8dd-4b1c-83e9-0f937f0f9ab8"))
(pad "5" smd rect (at -0.650 -0.700) (size 0.4 0.55) (layers "F.Cu" "F.Paste" "F.Mask") (net 8 "BOOST_SW") (uuid "1296667a-5140-4529-b8c0-e3e5c52ffe73")) (pad "5" smd rect (at -0.650 -0.700) (size 0.400 0.550) (layers "F.Cu" "F.Paste" "F.Mask") (net 8 "BOOST_SW") (uuid "73df7ccd-cf26-49c3-8502-9e90cde88ae1"))
) )
(footprint "panel:L1" (layer "F.Cu") (footprint "panel:L1" (layer "F.Cu")
(at 130 120) (at 128.000 121.000)
(uuid "31c56158-ebf0-488e-9c27-a7b32fcbf6c4") (uuid "f96fa760-64a2-473d-899a-25cdad7c3597")
(fp_text reference "L1" (at 0 0) (layer "F.Fab") (uuid "e44c635a-7a50-48bd-8af2-1c65a923068a") (fp_text reference "L1" (at 0 0) (layer "F.Fab") (uuid "c21c63d8-c2c4-4bbb-99d9-1b274744d5fe")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "201cfb60-ce63-47dd-bb3f-2377cfdd3367") (fp_text value "" (at 0 0) (layer "F.Fab") (uuid "4279096d-5d93-4770-9180-7becc894136d")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(pad "1" smd rect (at -1.000 0.000) (size 1.0 1.2) (layers "F.Cu" "F.Paste" "F.Mask") (net 8 "BOOST_SW") (uuid "db0d1c42-7f1c-4fc8-bbc2-50d413f665fc")) (pad "1" smd rect (at -1.000 0.000) (size 1.000 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 8 "BOOST_SW") (uuid "b20ee262-c535-417a-a73c-0e2687cad09d"))
(pad "2" smd rect (at 1.000 0.000) (size 1.0 1.2) (layers "F.Cu" "F.Paste" "F.Mask") (net 2 "VBAT") (uuid "07b425f3-ebae-4c23-bdbe-3f3ae544a11f")) (pad "2" smd rect (at 1.000 0.000) (size 1.000 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 2 "VBAT") (uuid "a540c5d1-5051-4643-9505-79000e44981c"))
) )
(gr_text "L1 4.7u" (at 130 118.8) (layer "F.SilkS") (uuid "6a6d0334-20cc-4df5-b4a8-d678450ff424") (effects (font (size 0.4 0.4) (thickness 0.06)))) (gr_text "L1 4.7u" (at 128.000 119.700) (layer "F.SilkS") (uuid "2a91a58a-e32d-4523-bea1-97ba117814e3") (effects (font (size 0.4 0.4) (thickness 0.080))))
(footprint "panel:C1" (layer "F.Cu") (footprint "panel:C1" (layer "F.Cu")
(at 130 123) (at 128.000 124.000)
(uuid "388f4ff3-38e6-4b57-ade2-7879dd444e34") (uuid "3a657071-f4ee-4825-bfba-26a1fb04f5d2")
(fp_text reference "C1" (at 0 0) (layer "F.Fab") (uuid "86f3204f-e9bc-4f25-a3a9-238b9ef0f036") (fp_text reference "C1" (at 0 0) (layer "F.Fab") (uuid "1aea0979-c014-4c85-8e1d-bcbd79658f12")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "862f86fc-3311-4743-904b-b0a7d0a1d8b4") (fp_text value "" (at 0 0) (layer "F.Fab") (uuid "9acc7a02-d4b1-4c31-b43c-5faf0a849ed4")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(pad "1" smd rect (at -1.000 0.000) (size 1.0 1.2) (layers "F.Cu" "F.Paste" "F.Mask") (net 2 "VBAT") (uuid "3f9ec573-2045-4f59-8aa1-61f1e6c044d6")) (pad "1" smd rect (at -1.000 0.000) (size 1.000 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 2 "VBAT") (uuid "0152ceb3-ddd4-40be-a449-d93331e07083"))
(pad "2" smd rect (at 1.000 0.000) (size 1.0 1.2) (layers "F.Cu" "F.Paste" "F.Mask") (net 1 "GND") (uuid "4098d85d-3560-4bfe-88d1-62fdca17533f")) (pad "2" smd rect (at 1.000 0.000) (size 1.000 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 1 "GND") (uuid "8913c282-793c-456e-89fe-6977c0fafc66"))
) )
(gr_text "C1 10u" (at 130 121.8) (layer "F.SilkS") (uuid "e13ad2f1-be9f-4c11-b453-5b3056c504dc") (effects (font (size 0.4 0.4) (thickness 0.06)))) (gr_text "C1 10u" (at 128.000 122.700) (layer "F.SilkS") (uuid "4ea7e5b0-191d-4413-83a4-aad980f4e93a") (effects (font (size 0.4 0.4) (thickness 0.080))))
(footprint "panel:C2" (layer "F.Cu") (footprint "panel:C2" (layer "F.Cu")
(at 138 120) (at 136.000 121.000)
(uuid "71039fd9-95ff-4065-9c59-60105470ff55") (uuid "e8f514a1-88cd-43b2-a781-335492bcbcf2")
(fp_text reference "C2" (at 0 0) (layer "F.Fab") (uuid "4507f636-6ecc-4887-b582-643579401f00") (fp_text reference "C2" (at 0 0) (layer "F.Fab") (uuid "b87afcab-872d-49c9-82fb-f78b84d927e3")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "dbc71da1-b782-46b4-88c6-c69d9b4fed69") (fp_text value "" (at 0 0) (layer "F.Fab") (uuid "60db2f2f-22a9-4755-a5d2-a3ee5f2fb6d4")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(pad "1" smd rect (at -1.000 0.000) (size 1.0 1.2) (layers "F.Cu" "F.Paste" "F.Mask") (net 3 "3V3") (uuid "a0201b14-401e-4afb-b31f-fe5fcb82fdd6")) (pad "1" smd rect (at -1.000 0.000) (size 1.000 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 3 "3V3") (uuid "358331d0-8b7a-41a9-8a9e-1087840ee3d9"))
(pad "2" smd rect (at 1.000 0.000) (size 1.0 1.2) (layers "F.Cu" "F.Paste" "F.Mask") (net 1 "GND") (uuid "cc269e12-18cf-4357-b7bb-a725b6e8a234")) (pad "2" smd rect (at 1.000 0.000) (size 1.000 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 1 "GND") (uuid "f221174c-b9f9-4891-8017-4adfc612ccaf"))
) )
(gr_text "C2 10u" (at 138 118.8) (layer "F.SilkS") (uuid "6b0a22cf-83cb-4569-8a04-62d5d0dfec82") (effects (font (size 0.4 0.4) (thickness 0.06)))) (gr_text "C2 10u" (at 136.000 119.700) (layer "F.SilkS") (uuid "044bb87c-741d-4368-a57d-c8266bbc1771") (effects (font (size 0.4 0.4) (thickness 0.080))))
(gr_text "J1 TO TOY →" (at 136 107) (layer "F.SilkS") (uuid "c569cf60-f111-4dff-83db-fafbd8197660") (effects (font (size 0.5 0.5) (thickness 0.075)))) (gr_rect (start 132.250 112.000) (end 143.750 116.000) (layer "F.SilkS") (width 0.15) (uuid "9ea3ca6a-5fda-4f29-b7db-6ebf9ba7c626"))
(gr_text "1=VBAT 2=GND 3-10=SIG" (at 136 116) (layer "F.SilkS") (uuid "3a1c1424-149b-42dd-9647-76ba66d15e60") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "J1 FPC-20" (at 138.000 111.000) (layer "F.SilkS") (uuid "3422609b-3569-40cb-9db7-0109b17c6ed7") (effects (font (size 0.5 0.5) (thickness 0.080))))
(gr_circle (center 135.7 111) (end 136.0 111) (layer "F.SilkS") (width 0.15) (fill solid) (uuid "937dca26-8795-40b6-aa11-cd91fa320aec")) (gr_text "0.5mm TO TOY" (at 138.000 117.000) (layer "F.SilkS") (uuid "2d55e91d-3585-4aff-9c9c-22b9c00432d6") (effects (font (size 0.35 0.35) (thickness 0.080))))
(gr_circle (center 132.450 114.000) (end 132.650 114.000) (layer "F.SilkS") (width 0.1) (fill solid) (uuid "e391d4d7-a95d-4220-a7df-956ab2b8c543"))
(footprint "panel:J1_JST_SH10" (layer "F.Cu") (footprint "panel:J1_FPC20" (layer "F.Cu")
(at 141 111) (at 138.000 114.000)
(uuid "1bf0b2d9-7ef1-4f6f-aa3a-336ad20f828f") (uuid "3f816365-83a9-4ff8-b514-ccf442363914")
(fp_text reference "J1_JST_SH10" (at 0 0) (layer "F.Fab") (uuid "4a61bb05-8474-4184-a42c-e0f0eb360403") (fp_text reference "J1_FPC20" (at 0 0) (layer "F.Fab") (uuid "aee8fc4f-a915-4316-8fbb-0f0efa9ae59e")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "96812a3b-b2ef-44d8-b9b0-b38e2233d654") (fp_text value "" (at 0 0) (layer "F.Fab") (uuid "f0439331-00e3-4de4-a54f-cc01f3b478f6")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(pad "1" smd rect (at -4.500 0.000) (size 0.6 1.2) (layers "F.Cu" "F.Paste" "F.Mask") (net 2 "VBAT") (uuid "c5100258-7976-444f-aa98-b9e4d45bace7")) (pad "1" smd rect (at -4.750 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 2 "VBAT") (uuid "d1433479-2a86-4aa3-b4bd-c125eaa16e08"))
(pad "2" smd rect (at -3.500 0.000) (size 0.6 1.2) (layers "F.Cu" "F.Paste" "F.Mask") (net 1 "GND") (uuid "65697aea-87a9-40cf-9a90-60397ae8e81d")) (pad "2" smd rect (at -4.250 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 1 "GND") (uuid "b27d4a5e-566f-4a1d-a6ed-6f366e0afc57"))
(pad "3" smd rect (at -2.500 0.000) (size 0.6 1.2) (layers "F.Cu" "F.Paste" "F.Mask") (net 9 "SIG_1") (uuid "b415ff5e-b50e-4f91-a350-43f232c23ab3")) (pad "3" smd rect (at -3.750 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 10 "S1") (uuid "18fd493e-b7c7-4bed-8dc1-13621b62cc84"))
(pad "4" smd rect (at -1.500 0.000) (size 0.6 1.2) (layers "F.Cu" "F.Paste" "F.Mask") (net 10 "SIG_2") (uuid "9bf989cb-344e-43ab-bc5e-1ca8a620a89b")) (pad "4" smd rect (at -3.250 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 11 "S2") (uuid "94d7cc29-fce9-4f0e-b5e9-6f12af13ef92"))
(pad "5" smd rect (at -0.500 0.000) (size 0.6 1.2) (layers "F.Cu" "F.Paste" "F.Mask") (net 11 "SIG_3") (uuid "c81114ae-ab4a-4351-9aef-979bd5776fc5")) (pad "5" smd rect (at -2.750 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 12 "S3") (uuid "59420d4c-db3e-4240-9b1a-c90c8ae1542e"))
(pad "6" smd rect (at 0.500 0.000) (size 0.6 1.2) (layers "F.Cu" "F.Paste" "F.Mask") (net 12 "SIG_4") (uuid "d2de3994-f605-4758-89d3-32dbf3b28812")) (pad "6" smd rect (at -2.250 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 13 "S4") (uuid "faadeab4-57ef-4ef5-b311-b1c7761bc9f7"))
(pad "7" smd rect (at 1.500 0.000) (size 0.6 1.2) (layers "F.Cu" "F.Paste" "F.Mask") (net 13 "SIG_5") (uuid "f29d020f-6822-424e-b2a0-22e7d1669a86")) (pad "7" smd rect (at -1.750 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 14 "S5") (uuid "7efd0d58-367e-4771-ad2a-a3686881bd63"))
(pad "8" smd rect (at 2.500 0.000) (size 0.6 1.2) (layers "F.Cu" "F.Paste" "F.Mask") (net 14 "SIG_6") (uuid "f88f3dcc-efde-4594-ae2b-410f3ca1a074")) (pad "8" smd rect (at -1.250 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 15 "S6") (uuid "7ac40232-945a-46eb-aa7e-8ccccbc12a77"))
(pad "9" smd rect (at 3.500 0.000) (size 0.6 1.2) (layers "F.Cu" "F.Paste" "F.Mask") (net 15 "SIG_7") (uuid "2fb195c4-5246-46f4-a2a1-7718847f4819")) (pad "9" smd rect (at -0.750 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 16 "S7") (uuid "d3c3fb8a-d27f-4f02-bcc3-8545e2054792"))
(pad "10" smd rect (at 4.500 0.000) (size 0.6 1.2) (layers "F.Cu" "F.Paste" "F.Mask") (net 16 "SIG_8") (uuid "7933cf14-f6ed-4f06-b736-87fe37541f89")) (pad "10" smd rect (at -0.250 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 17 "S8") (uuid "70aba067-8afc-49ee-add4-9bbfcb9453f2"))
(pad "S1" smd rect (at -6.000 2.150) (size 1.2 1.8) (layers "F.Cu") (net 0 "") (uuid "77da10bc-5247-4236-90c2-afbb80680c20")) (pad "11" smd rect (at 0.250 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 18 "S9") (uuid "ac6c3278-3618-4701-bd24-d977ce37f602"))
(pad "S2" smd rect (at 6.000 2.150) (size 1.2 1.8) (layers "F.Cu") (net 0 "") (uuid "a31546da-deff-4b09-a1bb-bb654a1e05c4")) (pad "12" smd rect (at 0.750 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 19 "S10") (uuid "b058dd64-c190-4754-99a3-6064013c3e39"))
(pad "13" smd rect (at 1.250 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 20 "S11") (uuid "511b95d4-8977-4d1c-9e3b-a92b188b596c"))
(pad "14" smd rect (at 1.750 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 21 "S12") (uuid "b54af070-335e-4cb5-b91f-bf78e0053d94"))
(pad "15" smd rect (at 2.250 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 22 "S13") (uuid "e804928f-a7ea-40f2-9f2f-3f025713e55a"))
(pad "16" smd rect (at 2.750 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 23 "S14") (uuid "63e74f2d-64c0-4b70-bba4-19f6d732dc1a"))
(pad "17" smd rect (at 3.250 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 24 "S15") (uuid "30b4a519-b7da-4868-b855-f7a9e654003a"))
(pad "18" smd rect (at 3.750 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 25 "S16") (uuid "57dba54c-08f3-41ce-9b9f-f76d817e86bc"))
(pad "19" smd rect (at 4.250 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 1 "GND") (uuid "d060e6ed-acef-4d5c-ae20-63a58c88c1bd"))
(pad "20" smd rect (at 4.750 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 1 "GND") (uuid "ffa04cb1-489a-4f21-80b9-afb8abf193e0"))
(pad "S1" smd rect (at -5.250 2.500) (size 1.500 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "7a1aa6df-4bda-470f-847f-5ae83570ed09"))
(pad "S2" smd rect (at 5.250 2.500) (size 1.500 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "e5bbf1ea-2226-4cc0-ad10-798b08f15f04"))
) )
(footprint "panel:MH" (layer "F.Cu") (footprint "panel:MH" (layer "F.Cu")
(at 104.5 102.5) (at 102.000 124.000)
(uuid "3d6c895f-0a9b-464e-8536-a32c4457a246") (uuid "571767de-220f-4747-a455-fa2326a12da0")
(fp_text reference "MH" (at 0 0) (layer "F.Fab") (uuid "5d96b049-f10c-447b-9bac-97113e1219ec") (fp_text reference "MH" (at 0 0) (layer "F.Fab") (uuid "d9ad2950-5233-4182-bfbe-31ea3e304164")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "4b13c3b7-8e4f-472a-9fd7-8dbbc87151ca") (fp_text value "" (at 0 0) (layer "F.Fab") (uuid "e161b347-8c67-4494-ac88-921b1c6b2902")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(pad "" thru_hole circle (at 0 0) (size 3.5 3.5) (drill 2.2) (layers "*.Cu" "*.Mask") (uuid "6909aca5-a5b1-46df-bfbd-d664ad4f9dd8")) (pad "" thru_hole circle (at 0 0) (size 3.5 3.5) (drill 2.2) (layers "*.Cu" "*.Mask") (uuid "1e1e030e-d951-4662-8166-be001a7a274f"))
) )
(footprint "panel:MH" (layer "F.Cu") (footprint "panel:MH" (layer "F.Cu")
(at 141.0 123.0) (at 141.000 124.000)
(uuid "993bf336-b07f-4cf2-99b9-4b6f1dd8c0fc") (uuid "079cc614-6c0f-45dc-ab83-9ca22a61e4de")
(fp_text reference "MH" (at 0 0) (layer "F.Fab") (uuid "0e7ad9bf-ded2-4dac-8aed-3b81f17dd8b6") (fp_text reference "MH" (at 0 0) (layer "F.Fab") (uuid "7f3bdd48-fbea-40ba-b4e0-433e609224df")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "6fbeac64-dc35-4fbc-9311-d5e822009ffb") (fp_text value "" (at 0 0) (layer "F.Fab") (uuid "e9850b50-cc1e-4a98-ad13-079fd24495c1")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(pad "" thru_hole circle (at 0 0) (size 3.5 3.5) (drill 2.2) (layers "*.Cu" "*.Mask") (uuid "f384efc5-884c-4fc7-be90-6214a76d9363")) (pad "" thru_hole circle (at 0 0) (size 3.5 3.5) (drill 2.2) (layers "*.Cu" "*.Mask") (uuid "fcdaf0bc-fced-4f6d-a9ef-7bd7b8d60db2"))
) )
(gr_text "Baby Mobile Carrier v3.0" (at 124.0 100.5) (layer "F.SilkS") (uuid "536313ba-aa0f-43ca-ad0d-46a9123ce61d") (effects (font (size 0.7 0.7) (thickness 0.105) bold))) (gr_text "XIAO: D0-D6→SIG1-7 D7=MISO D8=MOSI D9=SCK D10=AUDIO(S8)" (at 122.000 113.000) (layer "B.SilkS") (uuid "db3546b9-49a3-48f2-8c4f-0b7752eeafe2") (effects (font (size 0.4 0.4) (thickness 0.080))))
(gr_text "3V3" (at 132.0 125.3) (layer "F.SilkS") (uuid "45d2ab75-759c-4f37-8618-87f620e2d745") (effects (font (size 0.4 0.4) (thickness 0.06)))) (gr_text "FPC: 1=VBAT 2=GND 3-10=S1-S8 19-20=GND" (at 122.000 115.000) (layer "B.SilkS") (uuid "753ca2e9-ce32-4abf-9dd9-52a997487dc0") (effects (font (size 0.4 0.4) (thickness 0.080))))
(gr_text "XIAO D0-D6 = SIG_1-7 (buttons/speaker/motor)" (at 124.0 106) (layer "B.SilkS") (uuid "30f97b1f-9a2e-424f-8178-488ab913f73c") (effects (font (size 0.4 0.4) (thickness 0.06)))) (gr_line (start 103.095 132.050) (end 109.905 132.050) (layer "Edge.Cuts") (width 0.1) (uuid "9a7f2724-0131-4c3b-bea2-2264285f74e4"))
(gr_text "XIAO D7=MISO D8=MOSI D9=SCK D10=AUDIO" (at 124.0 108) (layer "B.SilkS") (uuid "fd1a9361-d67c-4b32-ae97-80ae719e4cf5") (effects (font (size 0.4 0.4) (thickness 0.06)))) (gr_line (start 109.905 132.050) (end 109.905 135.950) (layer "Edge.Cuts") (width 0.1) (uuid "0b095cb1-b39a-4054-9f58-00d6b4936664"))
(gr_text "JST: 1=VBAT 2=GND 3-10=SIG_1-8" (at 124.0 110) (layer "B.SilkS") (uuid "adb6bbb5-5687-41b9-b2df-cef2d9088d0e") (effects (font (size 0.4 0.4) (thickness 0.06)))) (gr_line (start 109.905 135.950) (end 103.095 135.950) (layer "Edge.Cuts") (width 0.1) (uuid "cab1f064-a98c-4d49-9397-25d7695f6423"))
(gr_line (start 103.095 127.55) (end 108.905 127.55) (layer "Edge.Cuts") (width 0.1) (uuid "c6351db3-0d63-4b19-b879-1096a1ebb7cc")) (gr_line (start 103.095 135.950) (end 103.095 132.050) (layer "Edge.Cuts") (width 0.1) (uuid "b29ece6a-b547-4e60-9752-00ce868059b9"))
(gr_line (start 108.905 127.55) (end 108.905 134.45) (layer "Edge.Cuts") (width 0.1) (uuid "4ecacc87-37c8-48d7-a1ef-e7991a4153f9")) (gr_text "SOP-8" (at 106.500 134.000) (layer "F.SilkS") (uuid "539e9b84-172f-48da-b0dd-0b9eba546029") (effects (font (size 0.6 0.6) (thickness 0.080))))
(gr_line (start 108.905 134.45) (end 103.095 134.45) (layer "Edge.Cuts") (width 0.1) (uuid "4ce6f3f0-4e32-4c24-a6d9-84ec04c0c836"))
(gr_line (start 103.095 134.45) (end 103.095 127.55) (layer "Edge.Cuts") (width 0.1) (uuid "997589ec-4d8b-4593-b35f-180de9f3fc82"))
(gr_text "SOP-8" (at 106 126.55) (layer "F.SilkS") (uuid "1b597be2-2a34-4900-98bf-1f2517842d20") (effects (font (size 0.6 0.6) (thickness 0.09) bold)))
(footprint "panel:SOP-8_pads" (layer "B.Cu") (footprint "panel:SOP-8_cast" (layer "B.Cu")
(at 106 132.5) (at 106.500 134.000)
(uuid "0eca431f-4ee4-44a9-afdf-51d718534b5c") (uuid "4c7c992b-b0fd-4d6b-95e8-d3b01e40d0b8")
(fp_text reference "SOP-8_pads" (at 0 0) (layer "B.Fab") (uuid "afa5c0fb-39e0-4941-8a90-6419f4300c8d") (fp_text reference "SOP-8_cast" (at 0 0) (layer "B.Fab") (uuid "23717134-9635-41ca-ae3e-c922dc622cbb")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(fp_text value "" (at 0 0) (layer "B.Fab") (uuid "b5533d64-7952-40ea-beb6-a2586cf440e5") (fp_text value "" (at 0 0) (layer "B.Fab") (uuid "1e7921d7-68b6-484d-96d5-d0275c185e0c")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(pad "1" thru_hole circle (at -1.905 1.950) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "361b27a3-f477-4c94-879b-4e123751cf63")) (pad "1" thru_hole circle (at -1.905 1.950) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 10 "S1") (uuid "5452e05e-b51a-4170-8795-b36d7a08bfdc"))
(pad "8" thru_hole circle (at -1.905 -1.950) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "e38495d5-30b3-4bc4-893d-c51c476300f1")) (pad "8" thru_hole circle (at -1.905 -1.950) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 17 "S8") (uuid "e2f7fbbf-e763-4611-9f49-65a8753d77d0"))
(pad "2" thru_hole circle (at -0.635 1.950) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "050516cc-4844-453e-a4c8-92cc0ef936d1")) (pad "2" thru_hole circle (at -0.635 1.950) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 11 "S2") (uuid "2adf23e2-bc6e-47e3-909a-81b097715476"))
(pad "7" thru_hole circle (at -0.635 -1.950) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "5d2afb12-8ea1-4d80-9e8a-22d4e3620ed3")) (pad "7" thru_hole circle (at -0.635 -1.950) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 16 "S7") (uuid "5a265b71-f783-4e9e-9398-592ee8632a06"))
(pad "3" thru_hole circle (at 0.635 1.950) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "14975a05-c721-4062-afb2-9f336a44c385")) (pad "3" thru_hole circle (at 0.635 1.950) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 12 "S3") (uuid "7eb87ed8-e8dc-4ea9-a54d-f8c22c3d32ad"))
(pad "6" thru_hole circle (at 0.635 -1.950) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "5de5a38d-5292-44a0-b866-5a5d6b86edef")) (pad "6" thru_hole circle (at 0.635 -1.950) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 15 "S6") (uuid "c8f53fcb-3148-4aad-848f-2c48fb98bbf4"))
(pad "4" thru_hole circle (at 1.905 1.950) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "7cdb28e0-15e0-45ae-a7e0-88e0cce8f6b9")) (pad "4" thru_hole circle (at 1.905 1.950) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 13 "S4") (uuid "4316b7f9-5e81-40aa-9f9d-c7877c13ed09"))
(pad "5" thru_hole circle (at 1.905 -1.950) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "d4f5b25e-b4aa-4dae-9928-7e05078eb636")) (pad "5" thru_hole circle (at 1.905 -1.950) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 14 "S5") (uuid "fcbc4fd6-99db-4c24-8ac9-e9f56db86444"))
) )
(gr_text "1" (at 104.095 135.25) (layer "F.SilkS") (uuid "f5c9593e-7259-4d40-9547-c3fa917499db") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "1" (at 104.595 136.650) (layer "F.SilkS") (uuid "4d1476db-ee68-4e0b-9e08-d4a273920de4") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "8" (at 104.095 129.75) (layer "F.SilkS") (uuid "9c12d426-d109-4879-8f62-fa55ac473f6c") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "8" (at 104.595 131.350) (layer "F.SilkS") (uuid "52018866-9c48-40f7-b7e7-5fdd0e592704") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "2" (at 105.365 135.25) (layer "F.SilkS") (uuid "80f87ae1-198d-4372-9e7f-94238f2ca0b8") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "2" (at 105.865 136.650) (layer "F.SilkS") (uuid "e2f9cc71-ad1f-40c0-a864-88aa307f1780") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "7" (at 105.365 129.75) (layer "F.SilkS") (uuid "b567e07a-b5a7-4b34-83a4-5875666ab5a1") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "7" (at 105.865 131.350) (layer "F.SilkS") (uuid "819aa9b0-f2d7-4b9c-a70b-fb0079192465") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "3" (at 106.635 135.25) (layer "F.SilkS") (uuid "1c61d6e3-ba47-4305-89c9-436eef9a9b54") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "3" (at 107.135 136.650) (layer "F.SilkS") (uuid "57194f12-e19b-4c4c-8b66-1f03f908c4e6") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "6" (at 106.635 129.75) (layer "F.SilkS") (uuid "c1fcc1ba-1bd8-4e73-8262-9251a35ffc5c") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "6" (at 107.135 131.350) (layer "F.SilkS") (uuid "8a059530-c396-41e1-8d70-47ff4277db88") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "4" (at 107.905 135.25) (layer "F.SilkS") (uuid "81633807-bc28-4f41-a567-02907c6e5656") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "4" (at 108.405 136.650) (layer "F.SilkS") (uuid "62a91cfa-52ac-4f30-81f0-69ac4ace680a") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "5" (at 107.905 129.75) (layer "F.SilkS") (uuid "55462181-2c84-4bfa-8ca2-613eedb69ac4") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "5" (at 108.405 131.350) (layer "F.SilkS") (uuid "3e364889-9ab4-48ab-a77b-1d878eb4b0b9") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_circle (center 103.495 134.95) (end 103.745 134.95) (layer "F.SilkS") (width 0.15) (fill solid) (uuid "4b74368f-179f-40bd-b0c4-1c6a2e65a838")) (gr_circle (center 104.095 136.450) (end 104.295 136.450) (layer "F.SilkS") (width 0.1) (fill solid) (uuid "97174ff1-068b-4d5b-82b6-5ac872da565b"))
(gr_text "●1" (at 104.095 137.250) (layer "F.SilkS") (uuid "d0f33f1d-5655-45da-8910-dab6754cdf35") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "SOP-8 ●1→" (at 106.500 134.000) (layer "B.SilkS") (uuid "ac735036-ae6b-4610-92b6-cc5fb111887a") (effects (font (size 0.5 0.5) (thickness 0.080)) (justify mirror)))
(footprint "panel:SOP-8_JST" (layer "F.Cu") (footprint "panel:SOP-8_FPC" (layer "F.Cu")
(at 106 129.05) (at 106.500 134.000)
(uuid "e98f9c1d-98b1-4684-8a3b-8ded8d0454b1") (uuid "3dad6b1d-9358-4cc3-ac58-82f1c58a2804")
(fp_text reference "SOP-8_JST" (at 0 0) (layer "F.Fab") (uuid "1024358b-e61c-4657-b5f9-482448a2a8cc") (fp_text reference "SOP-8_FPC" (at 0 0) (layer "F.Fab") (uuid "1e680e55-dad0-461a-b3eb-1a4fe213f66c")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "b482a232-0071-4793-a66b-b8244ac0dfd7") (fp_text value "" (at 0 0) (layer "F.Fab") (uuid "23e95c73-5511-413b-83a3-e85bb9e2152a")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(pad "J1" smd rect (at -3.500 0.000) (size 0.6 1.0) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "7f4a8271-2243-4f28-a589-efa81177ed32")) (pad "F1" smd rect (at -2.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 10 "S1") (uuid "38559afc-7c70-4617-805a-91274340e041"))
(pad "J2" smd rect (at -2.500 0.000) (size 0.6 1.0) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "671447e7-c863-49e3-880d-4153c11d9ed4")) (pad "F2" smd rect (at -1.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 11 "S2") (uuid "147c5bcd-be57-4d50-885a-34322ffd14c2"))
(pad "J3" smd rect (at -1.500 0.000) (size 0.6 1.0) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "f7d739a7-0996-49df-accc-1e980e86064a")) (pad "F3" smd rect (at -1.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 12 "S3") (uuid "53cf8a80-96f5-44e5-abd1-11ecafdd614a"))
(pad "J4" smd rect (at -0.500 0.000) (size 0.6 1.0) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "5b438e3d-d561-44da-a542-434a7cb7e986")) (pad "F4" smd rect (at -0.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 13 "S4") (uuid "c770c45d-d862-4e7e-b1ea-c8b4ef1abd91"))
(pad "J5" smd rect (at 0.500 0.000) (size 0.6 1.0) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "379acc48-9b28-4dcf-880b-ea34cbdbc194")) (pad "F5" smd rect (at -0.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 14 "S5") (uuid "be84ab5c-4222-40f7-a3a7-31283ee8bde9"))
(pad "J6" smd rect (at 1.500 0.000) (size 0.6 1.0) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "eac7ffe5-08d0-4880-a0bf-9a65086e63d9")) (pad "F6" smd rect (at 0.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 15 "S6") (uuid "ff8e54c9-95c0-4f37-9a99-9a48bbc51cc8"))
(pad "J7" smd rect (at 2.500 0.000) (size 0.6 1.0) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "0414d2bc-e60a-49e3-a499-16dc1f3287c8")) (pad "F7" smd rect (at 0.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 16 "S7") (uuid "546ad7c7-0baf-40e2-9f87-6a7745fc11c2"))
(pad "J8" smd rect (at 3.500 0.000) (size 0.6 1.0) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "acb37cf8-1c43-4d18-9ab7-bf5dbef4393c")) (pad "F8" smd rect (at 1.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 17 "S8") (uuid "f7015feb-900c-423c-a6a2-8ae7a5d6fa3e"))
(pad "F9" smd rect (at 1.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 1 "GND") (uuid "ef98022a-359f-4fe2-b212-5df918c9f07b"))
(pad "F10" smd rect (at 2.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 2 "VBAT") (uuid "8ab83d95-5a3b-4bdd-a4b3-9fd0ab8f0aa6"))
(pad "SA" smd rect (at -3.750 1.500) (size 1.200 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "605581d3-b6b6-43c9-9b42-c9bf5be3d496"))
(pad "SB" smd rect (at 3.750 1.500) (size 1.200 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "df35960c-79c1-4d08-9e83-e3e8bf37b583"))
) )
(gr_text "JST" (at 106 127.55000000000001) (layer "F.SilkS") (uuid "7fa426dc-36e1-4889-8e8c-927910eeb31a") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "FPC" (at 106.500 132.200) (layer "F.SilkS") (uuid "d8523f7a-d337-4251-9764-b43c43afa08b") (effects (font (size 0.35 0.35) (thickness 0.080))))
(gr_circle (center 101.7 129.05) (end 101.9 129.05) (layer "F.SilkS") (width 0.15) (fill solid) (uuid "fece2278-867a-421f-a49d-78a23eca6b39")) (gr_circle (center 103.650 134.000) (end 103.800 134.000) (layer "F.SilkS") (width 0.1) (fill solid) (uuid "9e6c0818-e3e5-4e00-a639-9c2f3edd8185"))
(gr_line (start 114.555 126.5) (end 125.44500000000001 126.5) (layer "Edge.Cuts") (width 0.1) (uuid "2fc6e446-43a3-405a-a030-10f6e05f5310")) (gr_line (start 115.055 131.000) (end 126.945 131.000) (layer "Edge.Cuts") (width 0.1) (uuid "278bea3d-fc54-47d1-8ced-327a716b464c"))
(gr_line (start 125.44500000000001 126.5) (end 125.44500000000001 135.5) (layer "Edge.Cuts") (width 0.1) (uuid "b924be81-09cb-4afa-b7cd-ba218190706f")) (gr_line (start 126.945 131.000) (end 126.945 137.000) (layer "Edge.Cuts") (width 0.1) (uuid "6b756ef1-0a91-4f02-8b4c-fb525bd364dd"))
(gr_line (start 125.44500000000001 135.5) (end 114.555 135.5) (layer "Edge.Cuts") (width 0.1) (uuid "36c5db66-cf81-4c2f-b7c4-0c0a89a59d87")) (gr_line (start 126.945 137.000) (end 115.055 137.000) (layer "Edge.Cuts") (width 0.1) (uuid "3123ee0d-079a-4ded-b59f-1ef2174dcc8f"))
(gr_line (start 114.555 135.5) (end 114.555 126.5) (layer "Edge.Cuts") (width 0.1) (uuid "b47949f9-1b7f-430b-bfb0-f9f4a17a28ec")) (gr_line (start 115.055 137.000) (end 115.055 131.000) (layer "Edge.Cuts") (width 0.1) (uuid "fbe1d789-50b3-4764-9f8f-c38d1cae5222"))
(gr_text "SOP-16N" (at 120 125.5) (layer "F.SilkS") (uuid "fe5e0f87-c3ec-44c3-9bdb-2943579813c4") (effects (font (size 0.6 0.6) (thickness 0.09) bold))) (gr_text "SOP-16N" (at 121.000 134.000) (layer "F.SilkS") (uuid "e0f52eb7-7282-4579-9095-232aefd08e8f") (effects (font (size 0.6 0.6) (thickness 0.080))))
(footprint "panel:SOP-16N_pads" (layer "B.Cu") (footprint "panel:SOP-16N_cast" (layer "B.Cu")
(at 120 132.5) (at 121.000 134.000)
(uuid "3701fa1b-825b-4648-bb67-5661713c49b3") (uuid "63a9c132-87a0-471b-8398-9b33799cea4c")
(fp_text reference "SOP-16N_pads" (at 0 0) (layer "B.Fab") (uuid "fa9d17ce-47e3-4163-8bbb-ef21c48e8a5b") (fp_text reference "SOP-16N_cast" (at 0 0) (layer "B.Fab") (uuid "8bd9b964-5325-4a22-a5c7-3cecff8bb689")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(fp_text value "" (at 0 0) (layer "B.Fab") (uuid "31bd2f24-ffb9-4929-8e62-b567ca5fa457") (fp_text value "" (at 0 0) (layer "B.Fab") (uuid "d5510553-a0dc-42dc-b640-acc6fe82d989")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(pad "1" thru_hole circle (at -4.445 3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "96894655-c1fd-4926-95e1-720467b1d1db")) (pad "1" thru_hole circle (at -4.445 3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 10 "S1") (uuid "de25202a-0f4b-4f7b-9b73-97e035153c33"))
(pad "16" thru_hole circle (at -4.445 -3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "f24a95ec-fb94-441c-af60-354b16c413b4")) (pad "16" thru_hole circle (at -4.445 -3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 25 "S16") (uuid "0b62ef46-ff73-4621-8ff7-ec3ff2dba80b"))
(pad "2" thru_hole circle (at -3.175 3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "f617f3fe-ed62-4736-b8b7-ffc7e30e4c77")) (pad "2" thru_hole circle (at -3.175 3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 11 "S2") (uuid "369eea38-5703-43c2-b1ef-40c9369089bc"))
(pad "15" thru_hole circle (at -3.175 -3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "ffb8c150-9b59-44d2-8de6-ea9761fab4a1")) (pad "15" thru_hole circle (at -3.175 -3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 24 "S15") (uuid "2c6f5a7d-5516-4a78-abbf-5373f4d04169"))
(pad "3" thru_hole circle (at -1.905 3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "eca590f6-c2d0-4081-8a03-b9732a4cde1c")) (pad "3" thru_hole circle (at -1.905 3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 12 "S3") (uuid "7a5fada2-9023-4d4e-8276-14e77ec74bd1"))
(pad "14" thru_hole circle (at -1.905 -3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "2bb228b2-3315-41bb-8a55-7f1a67adac95")) (pad "14" thru_hole circle (at -1.905 -3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 23 "S14") (uuid "629acbd3-a15a-4b66-8d96-4b13ef86f732"))
(pad "4" thru_hole circle (at -0.635 3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "ac0baa4b-7af9-4749-88dc-ab7009d200b2")) (pad "4" thru_hole circle (at -0.635 3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 13 "S4") (uuid "69b92902-85e6-43ef-963b-8a83a6e99108"))
(pad "13" thru_hole circle (at -0.635 -3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "b8e3c538-e5bc-4a47-822c-1f8333c82a28")) (pad "13" thru_hole circle (at -0.635 -3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 22 "S13") (uuid "efdd3233-a26a-4941-83e3-ea736ac2087b"))
(pad "5" thru_hole circle (at 0.635 3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "0e3a6f08-8df6-4b07-b647-b5c2ac8ff96e")) (pad "5" thru_hole circle (at 0.635 3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 14 "S5") (uuid "b31cc215-de29-41a6-be18-5801d8cb0b68"))
(pad "12" thru_hole circle (at 0.635 -3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "61698711-bd67-4626-9590-ddd735effbd7")) (pad "12" thru_hole circle (at 0.635 -3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 21 "S12") (uuid "f8449e7e-881c-4476-b784-1df7da95acae"))
(pad "6" thru_hole circle (at 1.905 3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "38d4335c-662f-4be5-9fbf-53ee1084c374")) (pad "6" thru_hole circle (at 1.905 3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 15 "S6") (uuid "b37926b4-9547-4f90-bb69-5be24f954dca"))
(pad "11" thru_hole circle (at 1.905 -3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "b8e01f00-14d1-4280-bb10-1682af9b6a1b")) (pad "11" thru_hole circle (at 1.905 -3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 20 "S11") (uuid "7846e631-5ac4-4d85-be2a-f9a7314b5beb"))
(pad "7" thru_hole circle (at 3.175 3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "9fa33513-28db-41b0-b412-d76ce27b9e18")) (pad "7" thru_hole circle (at 3.175 3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 16 "S7") (uuid "5a158927-c1d4-4794-8d5c-f6c10469b84f"))
(pad "10" thru_hole circle (at 3.175 -3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "4a533dd2-9097-4ef2-afad-921cfb7e3983")) (pad "10" thru_hole circle (at 3.175 -3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 19 "S10") (uuid "f1598ad1-7c80-4052-97a6-dd1a86f1d28b"))
(pad "8" thru_hole circle (at 4.445 3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "85330de0-c53d-4800-9578-0cc3dafb2e3f")) (pad "8" thru_hole circle (at 4.445 3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 17 "S8") (uuid "9cddec30-5010-4a9e-98ac-3aee52581bb9"))
(pad "9" thru_hole circle (at 4.445 -3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "93c0d157-1a13-4732-997c-4469b9eb4ffa")) (pad "9" thru_hole circle (at 4.445 -3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 18 "S9") (uuid "30c995c0-e685-4468-ac69-76f89e09f5cb"))
) )
(gr_text "1" (at 115.555 136.3) (layer "F.SilkS") (uuid "5875da56-cd75-453c-99b1-d99292331ce7") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "1" (at 116.555 137.700) (layer "F.SilkS") (uuid "861255cc-92e3-4c96-b0db-972a8710ec3d") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "16" (at 115.555 128.7) (layer "F.SilkS") (uuid "05383887-6c29-421f-b812-5af47aeb8af4") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "16" (at 116.555 130.300) (layer "F.SilkS") (uuid "0e4ef0cf-a2c7-423b-805f-de6ffcd9f267") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "2" (at 116.825 136.3) (layer "F.SilkS") (uuid "58407aeb-0041-4ff3-bc69-3d05922b6680") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "2" (at 117.825 137.700) (layer "F.SilkS") (uuid "22d4ec78-a50f-4388-96ef-a207c0a58414") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "15" (at 116.825 128.7) (layer "F.SilkS") (uuid "2cec8f90-d7fb-497e-80fa-0528ae2e7f4c") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "15" (at 117.825 130.300) (layer "F.SilkS") (uuid "ef78018b-037e-4f76-ba7a-45d5add286b9") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "3" (at 118.09500000000001 136.3) (layer "F.SilkS") (uuid "3c345293-b744-436e-baca-e390c07ec531") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "3" (at 119.095 137.700) (layer "F.SilkS") (uuid "9bbad598-2f86-4b65-bf7e-64302411428b") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "14" (at 118.09500000000001 128.7) (layer "F.SilkS") (uuid "ddf9ffdf-da47-44a8-96e8-016d1b8e39d0") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "14" (at 119.095 130.300) (layer "F.SilkS") (uuid "e7dbf952-de95-47cc-b419-cf2e47830265") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "4" (at 119.36500000000001 136.3) (layer "F.SilkS") (uuid "1ba584bd-a85f-436e-93c0-f14382e4f112") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "4" (at 120.365 137.700) (layer "F.SilkS") (uuid "beb5fdc3-67e1-43fe-89f8-d0530b801154") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "13" (at 119.36500000000001 128.7) (layer "F.SilkS") (uuid "b43e5efc-f5cd-4fa0-975b-3a5c455bf433") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "13" (at 120.365 130.300) (layer "F.SilkS") (uuid "f8550647-8a68-4391-8c52-510da97112ee") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "5" (at 120.635 136.3) (layer "F.SilkS") (uuid "638812b1-cf4a-43d5-882c-65ebf45d50a8") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "5" (at 121.635 137.700) (layer "F.SilkS") (uuid "cabc9c30-5616-41f8-90ab-8ead0c566664") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "12" (at 120.635 128.7) (layer "F.SilkS") (uuid "5ed17165-92a2-4292-924b-4a996778b40e") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "12" (at 121.635 130.300) (layer "F.SilkS") (uuid "96123fc0-6fbd-40d5-937d-8fe24c727f5c") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "6" (at 121.905 136.3) (layer "F.SilkS") (uuid "c61c18a6-703d-442b-b5b1-6b2cc330178d") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "6" (at 122.905 137.700) (layer "F.SilkS") (uuid "280e8d2b-d3ab-4379-abad-ffe3fce84cdc") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "11" (at 121.905 128.7) (layer "F.SilkS") (uuid "612d5b34-c3aa-43d7-b5c6-bc3bcd5edf85") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "11" (at 122.905 130.300) (layer "F.SilkS") (uuid "18759563-886c-4a36-860b-9678bfe74593") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "7" (at 123.17500000000001 136.3) (layer "F.SilkS") (uuid "8c73cee8-e49b-4516-b1b2-d5b458c65ed3") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "7" (at 124.175 137.700) (layer "F.SilkS") (uuid "3665623e-544a-46ba-95f8-a6bc45cba4ca") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "10" (at 123.17500000000001 128.7) (layer "F.SilkS") (uuid "81415c0e-b422-417b-891c-9b265f3a9490") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "10" (at 124.175 130.300) (layer "F.SilkS") (uuid "e6e0fac5-49f7-4ee4-abba-67b11f4b4e95") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "8" (at 124.44500000000001 136.3) (layer "F.SilkS") (uuid "4643670c-3e2e-4898-93fa-f94089b8bc70") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "8" (at 125.445 137.700) (layer "F.SilkS") (uuid "a5c0cc95-a0b6-4332-9c29-0c542602f42a") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "9" (at 124.44500000000001 128.7) (layer "F.SilkS") (uuid "3f211df8-900b-4182-9056-dafbab78e44c") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "9" (at 125.445 130.300) (layer "F.SilkS") (uuid "75f820d9-7ff4-43cf-bdc2-d4e0c478675c") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_circle (center 114.95500000000001 136.0) (end 115.20500000000001 136.0) (layer "F.SilkS") (width 0.15) (fill solid) (uuid "ae452f51-64f3-492c-800f-0a92aae3f25a")) (gr_circle (center 116.055 137.500) (end 116.255 137.500) (layer "F.SilkS") (width 0.1) (fill solid) (uuid "507b13c4-cf63-48f5-91a3-dd9ad8a64909"))
(gr_text "●1" (at 116.055 138.300) (layer "F.SilkS") (uuid "c0b75fc3-1a01-4266-9de1-e238d54be244") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "SOP-16N ●1→" (at 121.000 134.000) (layer "B.SilkS") (uuid "51a0fff5-be82-46bc-b9c4-dee3cf88dd4d") (effects (font (size 0.5 0.5) (thickness 0.080)) (justify mirror)))
(footprint "panel:SOP-16N_JST" (layer "F.Cu") (footprint "panel:SOP-16N_FPC" (layer "F.Cu")
(at 120 128.0) (at 121.000 134.000)
(uuid "2b8602d1-de42-4302-8ea1-29bc923063a5") (uuid "ae74481d-2f56-49a1-8f27-a926411ea186")
(fp_text reference "SOP-16N_JST" (at 0 0) (layer "F.Fab") (uuid "2f071088-2901-4294-850e-43ec54f05465") (fp_text reference "SOP-16N_FPC" (at 0 0) (layer "F.Fab") (uuid "b30597ce-ea92-4731-ab3f-c4a67e4da731")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "cfe264e6-6db0-4df7-b0ee-fd08effe36a3") (fp_text value "" (at 0 0) (layer "F.Fab") (uuid "0212948b-b15d-4aa6-bf09-fc15310b842b")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(pad "J1" smd rect (at -4.500 0.000) (size 0.6 1.0) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "2fc2338d-5959-41d5-9e87-4249c11d83b0")) (pad "F1" smd rect (at -4.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 10 "S1") (uuid "6848f536-3f15-4874-81cd-ee627c008269"))
(pad "J2" smd rect (at -3.500 0.000) (size 0.6 1.0) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "174d4da3-c824-49a7-9289-2a4bafb40c61")) (pad "F2" smd rect (at -4.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 11 "S2") (uuid "81fb8224-31be-403d-923e-024cd32561cc"))
(pad "J3" smd rect (at -2.500 0.000) (size 0.6 1.0) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "08f931bf-579d-4e3d-bb8a-a6098144ae7f")) (pad "F3" smd rect (at -3.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 12 "S3") (uuid "2796dc95-3f16-4100-b52c-92c4ac906d3f"))
(pad "J4" smd rect (at -1.500 0.000) (size 0.6 1.0) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "68b1fdc4-e36c-4465-8f13-0607f1033394")) (pad "F4" smd rect (at -3.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 13 "S4") (uuid "3f766e02-4a7e-4428-a83d-2e06642f7ae6"))
(pad "J5" smd rect (at -0.500 0.000) (size 0.6 1.0) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "2e06c2a5-df6d-4454-bf8a-fa56768057da")) (pad "F5" smd rect (at -2.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 14 "S5") (uuid "e9cbd5db-efc1-4b63-a729-797be1dbbfb9"))
(pad "J6" smd rect (at 0.500 0.000) (size 0.6 1.0) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "2a0a15c9-cafb-43cc-be75-43a66b0addd0")) (pad "F6" smd rect (at -2.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 15 "S6") (uuid "69816290-ddc2-42b1-9af8-e71fd8ca8c72"))
(pad "J7" smd rect (at 1.500 0.000) (size 0.6 1.0) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "f8733fb3-787d-4024-8852-abe90145d2e2")) (pad "F7" smd rect (at -1.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 16 "S7") (uuid "78f01e2e-e0cc-4469-8922-b5dcdcd597f5"))
(pad "J8" smd rect (at 2.500 0.000) (size 0.6 1.0) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "cd9cac1b-2505-4223-ba93-11ace821e5ad")) (pad "F8" smd rect (at -1.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 17 "S8") (uuid "93d8934a-283d-4d71-a8e8-09d43810a953"))
(pad "J9" smd rect (at 3.500 0.000) (size 0.6 1.0) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "248f8301-96c2-4e99-9d41-86b8ba211321")) (pad "F9" smd rect (at -0.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 18 "S9") (uuid "ca8a122d-e1a2-495c-a51b-3e97a9af9513"))
(pad "J10" smd rect (at 4.500 0.000) (size 0.6 1.0) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "556be4a5-a310-44b4-88c4-a8a0729e0d1f")) (pad "F10" smd rect (at -0.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 19 "S10") (uuid "4d8e31d4-788c-4e42-beb0-e9a37a23f85b"))
(pad "F11" smd rect (at 0.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 20 "S11") (uuid "bd63a3a5-0eeb-433e-8257-b50cd07b5172"))
(pad "F12" smd rect (at 0.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 21 "S12") (uuid "32e6090c-7faa-4808-9aff-079d9ebba9f7"))
(pad "F13" smd rect (at 1.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 22 "S13") (uuid "b4fa6767-5a92-49b6-bc03-e75491fc8c90"))
(pad "F14" smd rect (at 1.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 23 "S14") (uuid "e6df1ce7-ebed-46ca-91ea-96d7da4e1db1"))
(pad "F15" smd rect (at 2.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 24 "S15") (uuid "f12fd116-36fa-4ef7-904b-2a45a879c8ec"))
(pad "F16" smd rect (at 2.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 25 "S16") (uuid "145a463b-34e7-4992-8e32-26ad922eef42"))
(pad "F17" smd rect (at 3.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "7eb4c597-28b9-4cdd-ae44-ec068e750df4"))
(pad "F18" smd rect (at 3.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "a48b4d56-cec4-42ea-8715-4343536f6520"))
(pad "F19" smd rect (at 4.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 1 "GND") (uuid "6f125c32-ae8c-4334-8a38-915d07b4125b"))
(pad "F20" smd rect (at 4.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 2 "VBAT") (uuid "af4c0452-c4b9-49cd-8270-df566bbf77e5"))
(pad "SA" smd rect (at -6.250 1.500) (size 1.200 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "9de6e6ba-362f-4860-a44e-7e34486d26be"))
(pad "SB" smd rect (at 6.250 1.500) (size 1.200 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "6414e199-3e57-4f5d-bba4-b5a40acdaefc"))
) )
(gr_text "JST" (at 120 126.5) (layer "F.SilkS") (uuid "2c02c675-43b7-4b85-86c0-a10cc14fcc7a") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "FPC" (at 121.000 132.200) (layer "F.SilkS") (uuid "943d37c1-f507-48e5-8177-c2ebf5f5a780") (effects (font (size 0.35 0.35) (thickness 0.080))))
(gr_circle (center 114.7 128.0) (end 114.9 128.0) (layer "F.SilkS") (width 0.15) (fill solid) (uuid "f09b75e7-7351-43cd-8a0e-b9e9d795466a")) (gr_circle (center 115.650 134.000) (end 115.800 134.000) (layer "F.SilkS") (width 0.1) (fill solid) (uuid "053a0376-4a1e-4705-b71b-cc4c63126042"))
(gr_line (start 131.555 124.35) (end 142.445 124.35) (layer "Edge.Cuts") (width 0.1) (uuid "4c7738b5-0870-478d-9fa0-2f96294e88d7")) (gr_line (start 131.055 128.850) (end 142.945 128.850) (layer "Edge.Cuts") (width 0.1) (uuid "3245e263-e9ff-4d71-bdfb-9acc132ce614"))
(gr_line (start 142.445 124.35) (end 142.445 137.65) (layer "Edge.Cuts") (width 0.1) (uuid "378b3434-232b-4372-899d-ec56bb14c57a")) (gr_line (start 142.945 128.850) (end 142.945 139.150) (layer "Edge.Cuts") (width 0.1) (uuid "11ad8e29-3b20-4828-95cc-13e98813d5e3"))
(gr_line (start 142.445 137.65) (end 131.555 137.65) (layer "Edge.Cuts") (width 0.1) (uuid "60769822-3a55-41ba-af35-1c3058e26ba6")) (gr_line (start 142.945 139.150) (end 131.055 139.150) (layer "Edge.Cuts") (width 0.1) (uuid "f5a4c984-26e9-4937-92b1-ea733f952833"))
(gr_line (start 131.555 137.65) (end 131.555 124.35) (layer "Edge.Cuts") (width 0.1) (uuid "6284e709-5244-43f8-a2f5-660046cfbd85")) (gr_line (start 131.055 139.150) (end 131.055 128.850) (layer "Edge.Cuts") (width 0.1) (uuid "b8de84fe-6c42-4d66-abc7-46eb7ccab318"))
(gr_text "SOP-16W" (at 137 123.35) (layer "F.SilkS") (uuid "b3ed8f8b-4c73-41b1-99a1-da1b41dd4dd5") (effects (font (size 0.6 0.6) (thickness 0.09) bold))) (gr_text "SOP-16W" (at 137.000 134.000) (layer "F.SilkS") (uuid "d4af9f08-ad58-4094-9ae5-5250505e1bf3") (effects (font (size 0.6 0.6) (thickness 0.080))))
(footprint "panel:SOP-16W_pads" (layer "B.Cu") (footprint "panel:SOP-16W_cast" (layer "B.Cu")
(at 137 132.5) (at 137.000 134.000)
(uuid "9c71ac82-8fc0-478d-9d35-73f765bda15d") (uuid "03adeb81-8fd2-4f41-b6ec-9a19c25be013")
(fp_text reference "SOP-16W_pads" (at 0 0) (layer "B.Fab") (uuid "8cea900b-c79a-43fe-844a-148f69cb95b6") (fp_text reference "SOP-16W_cast" (at 0 0) (layer "B.Fab") (uuid "a063439b-bfd8-432a-8bab-34fdb81a51e1")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(fp_text value "" (at 0 0) (layer "B.Fab") (uuid "ae30beaa-083f-4fb7-bdec-79c9dc2cc012") (fp_text value "" (at 0 0) (layer "B.Fab") (uuid "8c828d50-7aea-4415-9738-1eaed69c83ac")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(pad "1" thru_hole circle (at -4.445 5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "d0432d6f-61ac-448a-85c6-181ddbd1aa33")) (pad "1" thru_hole circle (at -4.445 5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 10 "S1") (uuid "e0ed2364-e190-4cf2-8bea-cf8f45e119fc"))
(pad "16" thru_hole circle (at -4.445 -5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "22a1e7eb-27d6-4233-b5b8-f36767df33e9")) (pad "16" thru_hole circle (at -4.445 -5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 25 "S16") (uuid "001966ad-6dd5-4e9f-b5b9-63347ca7c1b6"))
(pad "2" thru_hole circle (at -3.175 5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "5bfa1d99-38b6-4ab7-a56b-61b1a2a3db1d")) (pad "2" thru_hole circle (at -3.175 5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 11 "S2") (uuid "821ef136-a9ea-4b5b-89d3-84e095c5f317"))
(pad "15" thru_hole circle (at -3.175 -5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "b934db02-c5d7-497f-bc1f-2486399da781")) (pad "15" thru_hole circle (at -3.175 -5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 24 "S15") (uuid "0d2d71f9-2c61-48de-8f03-1db0c5453a99"))
(pad "3" thru_hole circle (at -1.905 5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "a700b37c-bc69-41b5-9de2-fbc9e8dc036b")) (pad "3" thru_hole circle (at -1.905 5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 12 "S3") (uuid "ef0d1353-6360-46f4-b3f4-f14335357361"))
(pad "14" thru_hole circle (at -1.905 -5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "b30fe8b5-1352-435a-85dc-749e62f01ebb")) (pad "14" thru_hole circle (at -1.905 -5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 23 "S14") (uuid "6d2b475a-67d8-4e80-b832-1d98d07e8e74"))
(pad "4" thru_hole circle (at -0.635 5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "bd6026e4-be88-4e7d-b235-9808417d9423")) (pad "4" thru_hole circle (at -0.635 5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 13 "S4") (uuid "43030b6e-0a10-436a-a613-e1181199d3f1"))
(pad "13" thru_hole circle (at -0.635 -5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "e3c51d8e-b93e-4342-a5a1-2d09b8b808ab")) (pad "13" thru_hole circle (at -0.635 -5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 22 "S13") (uuid "c2477dc6-9cbd-489d-a00b-73158c3c0639"))
(pad "5" thru_hole circle (at 0.635 5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "bc05b28d-1c31-4589-b8fb-1d60035d7232")) (pad "5" thru_hole circle (at 0.635 5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 14 "S5") (uuid "2bcc30fb-ab58-44e5-9a13-afb44638e3c6"))
(pad "12" thru_hole circle (at 0.635 -5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "77ceab5c-f996-4bb3-97e8-a590fc7a88ae")) (pad "12" thru_hole circle (at 0.635 -5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 21 "S12") (uuid "3ea6995b-c3f3-43ba-bd8f-f075b1e471d1"))
(pad "6" thru_hole circle (at 1.905 5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "6ae748a9-ab27-400b-ae2d-80637c92e869")) (pad "6" thru_hole circle (at 1.905 5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 15 "S6") (uuid "d1f2206e-2195-4a07-9a04-38a4bc7cf3c1"))
(pad "11" thru_hole circle (at 1.905 -5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "afb69667-cf85-4248-88bf-bd9764348c2e")) (pad "11" thru_hole circle (at 1.905 -5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 20 "S11") (uuid "d17321cf-ade0-45fb-aeee-06e5fdaa68e7"))
(pad "7" thru_hole circle (at 3.175 5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "7f3f8b8a-0c4e-4bdd-abb4-0ce85369336f")) (pad "7" thru_hole circle (at 3.175 5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 16 "S7") (uuid "bbe5650f-8272-4951-826c-0219408d73cd"))
(pad "10" thru_hole circle (at 3.175 -5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "bca205a0-edf1-4a22-b9c5-3dc5b2876199")) (pad "10" thru_hole circle (at 3.175 -5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 19 "S10") (uuid "63cb5f6b-69ec-4b02-a58d-0f747f085670"))
(pad "8" thru_hole circle (at 4.445 5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "3cb40bf6-e26f-4ede-9c6f-1d92a4cbca15")) (pad "8" thru_hole circle (at 4.445 5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 17 "S8") (uuid "41ec5aee-f8ba-4088-8232-1c50ad81a9d8"))
(pad "9" thru_hole circle (at 4.445 -5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 0 "") (uuid "4fbaa12e-f2bf-4e17-99fd-1da6892472bb")) (pad "9" thru_hole circle (at 4.445 -5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 18 "S9") (uuid "4cdbd15b-f470-4028-aa99-11f1bc409fce"))
) )
(gr_text "1" (at 132.555 138.45000000000002) (layer "F.SilkS") (uuid "67ae8809-6189-4d62-b63d-803a1ebc7814") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "1" (at 132.555 139.850) (layer "F.SilkS") (uuid "903925f1-1ab0-4ef8-8091-eee1ba4ce83c") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "16" (at 132.555 126.55) (layer "F.SilkS") (uuid "622f424c-467e-421c-8185-b39ea5ae0bdf") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "16" (at 132.555 128.150) (layer "F.SilkS") (uuid "da86f49d-5143-47ea-b69d-4b9832fead6f") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "2" (at 133.82500000000002 138.45000000000002) (layer "F.SilkS") (uuid "0cd9df21-e290-4ee6-903d-cf3c63deac08") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "2" (at 133.825 139.850) (layer "F.SilkS") (uuid "574499ab-7233-4486-83cb-f54f410f254c") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "15" (at 133.82500000000002 126.55) (layer "F.SilkS") (uuid "40292e2a-5cb6-4a2a-9ed0-22db669f357d") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "15" (at 133.825 128.150) (layer "F.SilkS") (uuid "abab922c-b06d-42a5-a83f-dd0fdee84413") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "3" (at 135.095 138.45000000000002) (layer "F.SilkS") (uuid "12e4979e-2a43-45f2-b74a-391e6a055358") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "3" (at 135.095 139.850) (layer "F.SilkS") (uuid "a7206bb0-3b93-40f7-b721-b0f8e559a08a") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "14" (at 135.095 126.55) (layer "F.SilkS") (uuid "da1908e3-ab44-4984-9043-1b1aa520e82f") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "14" (at 135.095 128.150) (layer "F.SilkS") (uuid "7554af84-eaab-46e6-a23b-61be3208358c") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "4" (at 136.365 138.45000000000002) (layer "F.SilkS") (uuid "a75049c3-ea78-4cd6-a54f-87776bf27ee9") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "4" (at 136.365 139.850) (layer "F.SilkS") (uuid "754ceb56-2739-4ffb-95b6-f74fec1b55fe") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "13" (at 136.365 126.55) (layer "F.SilkS") (uuid "8e30096f-00c5-40c7-b944-51f8150dfa61") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "13" (at 136.365 128.150) (layer "F.SilkS") (uuid "8eba4921-1108-42f3-a832-725064d0b8a9") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "5" (at 137.63500000000002 138.45000000000002) (layer "F.SilkS") (uuid "d6d623cc-8f41-430b-b77d-e20779841d1f") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "5" (at 137.635 139.850) (layer "F.SilkS") (uuid "39081f0f-c80d-4f8e-93ab-18f7d2073f11") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "12" (at 137.63500000000002 126.55) (layer "F.SilkS") (uuid "47fd108a-17c2-4c89-966b-b517d9e672a9") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "12" (at 137.635 128.150) (layer "F.SilkS") (uuid "4fafe525-5c4a-4ad0-a9bd-fa1b7525e18c") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "6" (at 138.905 138.45000000000002) (layer "F.SilkS") (uuid "0de8b8ae-d871-45cf-ab0f-5ae66919b156") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "6" (at 138.905 139.850) (layer "F.SilkS") (uuid "4de276b8-3628-4e51-91a7-ccc54c74f700") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "11" (at 138.905 126.55) (layer "F.SilkS") (uuid "699f7121-2403-4879-99d8-231f07b64ab6") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "11" (at 138.905 128.150) (layer "F.SilkS") (uuid "d27ef244-2781-49c2-9afe-ea795a76c9e0") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "7" (at 140.175 138.45000000000002) (layer "F.SilkS") (uuid "7d6d6327-5063-4d9f-b917-295688569b83") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "7" (at 140.175 139.850) (layer "F.SilkS") (uuid "a5febf7b-e28d-475b-9d51-13676d8adec6") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "10" (at 140.175 126.55) (layer "F.SilkS") (uuid "814b9dfc-3c9a-4780-a49d-859adbf1ec8f") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "10" (at 140.175 128.150) (layer "F.SilkS") (uuid "84b49153-2c4a-4ece-8a04-6b499665a85c") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "8" (at 141.445 138.45000000000002) (layer "F.SilkS") (uuid "e6b7e389-6169-4f6c-b8cc-28f43917672e") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "8" (at 141.445 139.850) (layer "F.SilkS") (uuid "a2b8a7f3-e99c-4581-86b4-3fd69ba4a35a") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "9" (at 141.445 126.55) (layer "F.SilkS") (uuid "c9db7018-eb0b-4187-b0b1-a5f271ecc5a8") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "9" (at 141.445 128.150) (layer "F.SilkS") (uuid "c05f3d6b-67d3-4d21-a81e-3839951a4f75") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_circle (center 131.955 138.15) (end 132.205 138.15) (layer "F.SilkS") (width 0.15) (fill solid) (uuid "906e42c9-101a-4cb8-a69d-e5abb20041b7")) (gr_circle (center 132.055 139.650) (end 132.255 139.650) (layer "F.SilkS") (width 0.1) (fill solid) (uuid "c9f11721-a6fa-42bc-befe-e2f4dd6eaf33"))
(gr_text "●1" (at 132.055 140.450) (layer "F.SilkS") (uuid "3b2f91bf-64bb-4074-ab2b-bfe789fec0a6") (effects (font (size 0.3 0.3) (thickness 0.080))))
(gr_text "SOP-16W ●1→" (at 137.000 134.000) (layer "B.SilkS") (uuid "8e3f70e7-d940-41f4-8f33-40a7fedc23e1") (effects (font (size 0.5 0.5) (thickness 0.080)) (justify mirror)))
(footprint "panel:SOP-16W_JST" (layer "F.Cu") (footprint "panel:SOP-16W_FPC" (layer "F.Cu")
(at 137 125.85) (at 137.000 134.000)
(uuid "2b5d7da6-43b0-4993-a157-1ea204151ee4") (uuid "5478245e-9ede-494c-86f7-8c704435e999")
(fp_text reference "SOP-16W_JST" (at 0 0) (layer "F.Fab") (uuid "9be5d86d-f26d-41db-b3d5-96aa9ffdc96b") (fp_text reference "SOP-16W_FPC" (at 0 0) (layer "F.Fab") (uuid "2a4de4cb-a137-40c1-abd2-23c8d6f4a50e")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "61ef7135-26fc-4a16-b06c-1053aa39fbe3") (fp_text value "" (at 0 0) (layer "F.Fab") (uuid "c72e6768-7d5d-4b2e-b8cc-c93c7f06de68")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(pad "J1" smd rect (at -4.500 0.000) (size 0.6 1.0) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "be81bea1-903d-41cf-b073-ceca5dc11f48")) (pad "F1" smd rect (at -4.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 10 "S1") (uuid "4df4fcc1-91f4-4143-a052-5d489d23ba9e"))
(pad "J2" smd rect (at -3.500 0.000) (size 0.6 1.0) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "24e8d037-1b4b-4fa5-8c6c-8ae2af43cae8")) (pad "F2" smd rect (at -4.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 11 "S2") (uuid "99e5aca1-d974-42e7-bd70-3947a4c12696"))
(pad "J3" smd rect (at -2.500 0.000) (size 0.6 1.0) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "93959318-9fd0-4326-9d33-1f4193cf2727")) (pad "F3" smd rect (at -3.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 12 "S3") (uuid "f1cbc508-4e8b-4b32-bf5e-720b074714a1"))
(pad "J4" smd rect (at -1.500 0.000) (size 0.6 1.0) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "ef1e10ae-c8eb-4b8e-a528-b2dc4a061704")) (pad "F4" smd rect (at -3.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 13 "S4") (uuid "674c45c4-5c55-40a1-a9d2-6b3ed7341da9"))
(pad "J5" smd rect (at -0.500 0.000) (size 0.6 1.0) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "5f83f573-7a00-49f9-b631-c93ab0c829a0")) (pad "F5" smd rect (at -2.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 14 "S5") (uuid "337b151c-41af-467f-87b2-00234db90bc2"))
(pad "J6" smd rect (at 0.500 0.000) (size 0.6 1.0) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "27ec44ef-d97a-4997-81fc-b7e4957caa76")) (pad "F6" smd rect (at -2.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 15 "S6") (uuid "db978209-cdee-4ef7-af46-de8b822bbe8e"))
(pad "J7" smd rect (at 1.500 0.000) (size 0.6 1.0) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "c0cd43f0-19ef-4813-935c-1dd41339f027")) (pad "F7" smd rect (at -1.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 16 "S7") (uuid "e1d6460e-2b6d-46b4-b939-75c0977105d2"))
(pad "J8" smd rect (at 2.500 0.000) (size 0.6 1.0) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "a4360e04-4d1a-466c-b637-3b5738c34df4")) (pad "F8" smd rect (at -1.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 17 "S8") (uuid "577260c3-7e9a-4765-8b88-c508c82ca5fe"))
(pad "J9" smd rect (at 3.500 0.000) (size 0.6 1.0) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "ce94402f-7c99-45e6-9b2f-04a9a8e1103e")) (pad "F9" smd rect (at -0.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 18 "S9") (uuid "4b3b0582-a33d-4365-888e-d1d87161e6f9"))
(pad "J10" smd rect (at 4.500 0.000) (size 0.6 1.0) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "6535b20a-7bf1-4cf8-9d59-9f4228e74d47")) (pad "F10" smd rect (at -0.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 19 "S10") (uuid "d76146ee-cf79-4036-88c0-20f702a2d563"))
(pad "F11" smd rect (at 0.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 20 "S11") (uuid "e4e0ff0d-fc4f-4c4e-bbbf-aa1ca1b1c93a"))
(pad "F12" smd rect (at 0.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 21 "S12") (uuid "b0734618-3cdf-45c4-ba08-e3388c711631"))
(pad "F13" smd rect (at 1.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 22 "S13") (uuid "dda517bb-3b46-438f-8d3f-2dfa9a5b3245"))
(pad "F14" smd rect (at 1.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 23 "S14") (uuid "abace38a-0077-4aaf-a85a-6ff5e8583256"))
(pad "F15" smd rect (at 2.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 24 "S15") (uuid "7909ec78-3977-4645-a41f-da0b47002a7e"))
(pad "F16" smd rect (at 2.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 25 "S16") (uuid "c83088b7-ac0b-4663-b84e-feef5eeb0723"))
(pad "F17" smd rect (at 3.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "a7bda6dd-b3b3-47e9-b511-fcb766a1837a"))
(pad "F18" smd rect (at 3.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "89ad3bdd-bdf4-4183-9438-c2e232e12f60"))
(pad "F19" smd rect (at 4.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 1 "GND") (uuid "4d94e0ec-cf5e-4e0d-90c7-67e79b8895fa"))
(pad "F20" smd rect (at 4.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 2 "VBAT") (uuid "bdf4aaea-e105-4332-8cc8-e82574c5981d"))
(pad "SA" smd rect (at -6.250 1.500) (size 1.200 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "bec1c65a-3746-408f-8e77-1658a529d58f"))
(pad "SB" smd rect (at 6.250 1.500) (size 1.200 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "68022482-2ede-4193-8fcc-50f4c15238fc"))
) )
(gr_text "JST" (at 137 124.35) (layer "F.SilkS") (uuid "3ebcdaf3-af81-4207-8b30-06bce9658c7b") (effects (font (size 0.35 0.35) (thickness 0.0525)))) (gr_text "FPC" (at 137.000 132.200) (layer "F.SilkS") (uuid "3c9ae79a-befd-49b6-89e8-48dfbfb5a408") (effects (font (size 0.35 0.35) (thickness 0.080))))
(gr_circle (center 131.7 125.85) (end 131.89999999999998 125.85) (layer "F.SilkS") (width 0.15) (fill solid) (uuid "41121629-2cd5-4e5c-928d-2e259710e93a")) (gr_circle (center 131.650 134.000) (end 131.800 134.000) (layer "F.SilkS") (width 0.1) (fill solid) (uuid "1554c550-4b83-40cc-8602-7a4138599540"))
(gr_text "Snap off adapter matching your toy's MCU. Castellations solder into SOP footprint." (at 124.0 136.0) (layer "B.SilkS") (uuid "8a35efdd-15ba-4ffe-82f7-1ca8fb1d6665") (effects (font (size 0.4 0.4) (thickness 0.06)))) (gr_text "Baby Mobile v4 — JLCPCB Panel" (at 124.000 98.000) (layer "F.SilkS") (uuid "02d054e6-07a0-4ad2-a9a2-903bf039b5bc") (effects (font (size 1.0 1.0) (thickness 0.130))))
(gr_text "JST cable connects adapter to carrier board J1." (at 124.0 137.0) (layer "B.SilkS") (uuid "03798201-3787-40a2-a031-6838215cea81") (effects (font (size 0.4 0.4) (thickness 0.06)))) (gr_text "Castellated Holes=YES V-Score=YES 2-Layer 1.6mm" (at 124.000 143.000) (layer "F.SilkS") (uuid "1a248073-4356-45d5-9f5d-0b7d77830e4a") (effects (font (size 0.5 0.5) (thickness 0.080))))
) )
+1 -7
View File
@@ -6,8 +6,7 @@
"board": { "board": {
"design_settings": { "design_settings": {
"rules": { "rules": {
"min_track_width": 0.15, "min_track_width": 0.15
"min_via_diameter": 0.4
} }
} }
}, },
@@ -17,11 +16,6 @@
"name": "Default", "name": "Default",
"clearance": 0.15, "clearance": 0.15,
"track_width": 0.25 "track_width": 0.25
},
{
"name": "Power",
"clearance": 0.2,
"track_width": 0.5
} }
] ]
} }
+12 -10
View File
@@ -1,14 +1,16 @@
Comment,Designator,Footprint,LCSC Part Number,Qty,Value,Description Comment,Designator,Footprint,LCSC Part Number,Qty,Value,Description
"Boost Converter","U1","SOT-353_SC-70-5","C83951",1,"TPS61220DCKR","3.3V fixed output boost converter 0.7-5.5V in" "Boost Converter","U1","SOT-353_SC-70-5","C83951",1,"TPS61220DCKR","3.3V fixed output boost converter 0.7-5.5V in"
"SPI Flash 16MB","U2","SOIC-8_3.9x4.9mm_P1.27mm","C194872",1,"IS25LP128F-JBLE","128Mbit SPI NOR Flash 2.3-3.6V" "SPI Flash 16MB","U2","SOIC-8_3.9x4.9mm_P1.27mm","C194872",1,"IS25LP128F-JBLE","128Mbit SPI NOR Flash 2.3-3.6V"
"Boost Inductor","L1","L_0805_2012Metric","C408336",1,"4.7uH","Inductor 4.7µH 1.2A saturation" "Boost Inductor","L1","L_0805_2012Metric","C408336",1,"4.7uH","Inductor 4.7uH 1.2A saturation"
"Boost Input Cap","C1","C_0805_2012Metric","C15850",1,"10uF","Ceramic capacitor 10µF 10V X5R" "Boost Input Cap","C1","C_0805_2012Metric","C15850",1,"10uF","Ceramic capacitor 10uF 10V X5R"
"Boost Output Cap","C2","C_0805_2012Metric","C15850",1,"10uF","Ceramic capacitor 10µF 10V X5R" "Boost Output Cap","C2","C_0805_2012Metric","C15850",1,"10uF","Ceramic capacitor 10uF 10V X5R"
"Flash Decoupling","C3","C_0805_2012Metric","C49678",1,"100nF","Ceramic capacitor 100nF 25V X7R" "Flash Decoupling","C3","C_0805_2012Metric","C49678",1,"100nF","Ceramic capacitor 100nF 25V X7R"
"XIAO Decoupling","C4","C_0805_2012Metric","C49678",1,"100nF","Ceramic capacitor 100nF 25V X7R" "Audio LPF Capacitor","C5","C_0805_2012Metric","C1710",1,"10nF","Ceramic capacitor 10nF 50V"
"RC Filter R (audio LPF)","R1","R_0805_2012Metric","C17673",1,"4.7K","Resistor 4.7KΩ 1%" "Audio LPF Resistor","R1","R_0805_2012Metric","C17673",1,"4.7K","Resistor 4.7K 1%"
"RC Filter C (audio LPF)","C5","C_0805_2012Metric","C1710",1,"10nF","Ceramic capacitor 10nF 50V" "Flash CS Pullup","R2","R_0805_2012Metric","C17414",1,"10K","Resistor 10K 1%"
"Flash CS Pullup","R2","R_0805_2012Metric","C17414",1,"10K","Resistor 10KΩ 1% (holds CS high during boot)" "Carrier FPC Connector","J1","FPC_0.5mm_20pin_bottom","C262657",1,"20pin 0.5mm","FPC/FFC connector 20-pin 0.5mm bottom contact"
"Toy Connector","J1","JST_SH_SM10B-SRSS-TB_1x10_P1.00mm","C160404",1,"SM10B-SRSS-TB","JST SH 1.0mm 10-pin SMD right-angle" "XIAO Header Left","J2","PinHeader_1x07_P2.54mm","C124378",1,"1x7 2.54mm","Female pin header 1x7"
"XIAO Header Left","J2","PinHeader_1x07_P2.54mm_Vertical","C124378",1,"1x7 2.54mm","Female pin header 1x7" "XIAO Header Right","J3","PinHeader_1x07_P2.54mm","C124378",1,"1x7 2.54mm","Female pin header 1x7"
"XIAO Header Right","J3","PinHeader_1x07_P2.54mm_Vertical","C124378",1,"1x7 2.54mm","Female pin header 1x7" "Adapter FPC (SOP-16)","J_A16","FPC_0.5mm_20pin_bottom","C262657",2,"20pin 0.5mm","For SOP-16N and SOP-16W adapters"
"Adapter FPC (SOP-8)","J_A8","FPC_0.5mm_10pin_bottom","C262270",1,"10pin 0.5mm","For SOP-8 adapter"
"FPC Cable 20-pin","CABLE","N/A","N/A",1,"20pin 0.5mm 50mm","FPC ribbon cable 20-pin 0.5mm same-side contacts"
1 Comment Designator Footprint LCSC Part Number Qty Value Description
2 Boost Converter U1 SOT-353_SC-70-5 C83951 1 TPS61220DCKR 3.3V fixed output boost converter 0.7-5.5V in
3 SPI Flash 16MB U2 SOIC-8_3.9x4.9mm_P1.27mm C194872 1 IS25LP128F-JBLE 128Mbit SPI NOR Flash 2.3-3.6V
4 Boost Inductor L1 L_0805_2012Metric C408336 1 4.7uH Inductor 4.7µH 1.2A saturation Inductor 4.7uH 1.2A saturation
5 Boost Input Cap C1 C_0805_2012Metric C15850 1 10uF Ceramic capacitor 10µF 10V X5R Ceramic capacitor 10uF 10V X5R
6 Boost Output Cap C2 C_0805_2012Metric C15850 1 10uF Ceramic capacitor 10µF 10V X5R Ceramic capacitor 10uF 10V X5R
7 Flash Decoupling C3 C_0805_2012Metric C49678 1 100nF Ceramic capacitor 100nF 25V X7R
8 XIAO Decoupling Audio LPF Capacitor C4 C5 C_0805_2012Metric C49678 C1710 1 100nF 10nF Ceramic capacitor 100nF 25V X7R Ceramic capacitor 10nF 50V
9 RC Filter R (audio LPF) Audio LPF Resistor R1 R_0805_2012Metric C17673 1 4.7K Resistor 4.7KΩ 1% Resistor 4.7K 1%
10 RC Filter C (audio LPF) Flash CS Pullup C5 R2 C_0805_2012Metric R_0805_2012Metric C1710 C17414 1 10nF 10K Ceramic capacitor 10nF 50V Resistor 10K 1%
11 Flash CS Pullup Carrier FPC Connector R2 J1 R_0805_2012Metric FPC_0.5mm_20pin_bottom C17414 C262657 1 10K 20pin 0.5mm Resistor 10KΩ 1% (holds CS high during boot) FPC/FFC connector 20-pin 0.5mm bottom contact
12 Toy Connector XIAO Header Left J1 J2 JST_SH_SM10B-SRSS-TB_1x10_P1.00mm PinHeader_1x07_P2.54mm C160404 C124378 1 SM10B-SRSS-TB 1x7 2.54mm JST SH 1.0mm 10-pin SMD right-angle Female pin header 1x7
13 XIAO Header Left XIAO Header Right J2 J3 PinHeader_1x07_P2.54mm_Vertical PinHeader_1x07_P2.54mm C124378 1 1x7 2.54mm Female pin header 1x7
14 XIAO Header Right Adapter FPC (SOP-16) J3 J_A16 PinHeader_1x07_P2.54mm_Vertical FPC_0.5mm_20pin_bottom C124378 C262657 1 2 1x7 2.54mm 20pin 0.5mm Female pin header 1x7 For SOP-16N and SOP-16W adapters
15 Adapter FPC (SOP-8) J_A8 FPC_0.5mm_10pin_bottom C262270 1 10pin 0.5mm For SOP-8 adapter
16 FPC Cable 20-pin CABLE N/A N/A 1 20pin 0.5mm 50mm FPC ribbon cable 20-pin 0.5mm same-side contacts
+384 -346
View File
@@ -1,34 +1,40 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
""" """
Generate KiCad 7 combined panel PCB for Baby Mobile project. Baby Mobile — Combined Panel v4
PANEL LAYOUT (v-score breakaway): PANEL LAYOUT:
┌───────────────────────────────────────────────────── ┌───────────────────────────────────────────────┐
CARRIER BOARD (44×26mm)
CARRIER BOARD (42mm × 24mm) ┌───────USB-C──┐
┌──────────────────────────────────────────────┐ │ █████████████ │
┌─────────────┐ [IS25LP128F] [JST SH 10] │ │ │ │ [U2 IS25LP128F] [C3][R2]
XIAO ■USB │ ●1 J1 │ │ XIAO BLE │ ●1
nRF52840 [C3] [R1][C5] │ │ nRF52840 │ [R1][C5]
│ │ │ │
│ D0 .... D10│ [TPS61220] [R2] │ │ D0 D10│ [U1 TPS61220] │
│ D1 D9 │ [L1][C1][C2] │ │ D1 D9│ ●1 [L1][C1][C2] │
│ ... ... │ │ D2 D8│ │
│ │ D6 3V3│ (M2) (M2) │ D3 D7│ ┌────────────────┐
└─────────────┘ │ │ D4 3V3│ │ J1 FPC-20 0.5mm│
└──────────────────────────────────────────────┘ │ │ D5 GND│ └────────────────┘
- - SNAP - - - - - - - - - - - - - - - - - - - - - │ D6 5V│
──────────┐ ┌────────────┐ ┌────────────┐ ───────────────┘ (M2) (M2)
│ │ SOP-8 │ │ SOP-16N │ │ SOP-16W │ │ ├ ─ ─ ─ ─ ─ SNAP ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤
│ castell. │ │ castellated│ │ castellated│ ┌──────┐ ┃ ┌──────────┐ ┃ ┌──────────┐
│ │ [JST 8p] │ │ [JST 10p] │ │ [JST 10p] │ │ │ │SOP-8SOP-16 N SOP-16 W
└──────────┘ └────────────┘ └────────────┘ C│ │C┃C│ │C┃C│ │C
└─────────────────────────────────────────────────────┘ │ A│[FPC] │A┃A│ [FPC] │A┃A│ [FPC] │A │
│ S│ │S┃S│ │S┃S│ │S │
│ T│ │T┃T│ │T┃T│ │T │
│ └──────┘ ┃ └──────────┘ ┃ └──────────┘ │
└───────────┸──────────────┸─────────────────────┘
C=castellated edges ┃=v-score snap lines
Each SOP adapter: Each SOP adapter:
- Board edges cut through SOP pad centers → castellated half-holes - Long edges (top/bottom): castellated half-holes = SOP pads
- Top surface: JST SH connector + pin 1 dot + pin number silk labels - Short edges: v-score snap lines
- Bottom surface: nothing (sits flush on toy PCB) - Center top: FPC 0.5mm connector (20-pin for SOP-16, 10-pin for SOP-8)
- All SOP pins netted to corresponding FPC pins
""" """
import uuid, os, json import uuid, os, json
@@ -37,469 +43,501 @@ def uid():
return str(uuid.uuid4()) return str(uuid.uuid4())
# ============================================================ # ============================================================
# Geometry Constants # KiCad drawing primitives
# ============================================================ # ============================================================
CARRIER_W = 42.0 def gr_line(x1, y1, x2, y2, layer="Edge.Cuts", w=0.1):
CARRIER_H = 24.0 return f' (gr_line (start {x1:.3f} {y1:.3f}) (end {x2:.3f} {y2:.3f}) (layer "{layer}") (width {w}) (uuid "{uid()}"))'
ADAPTER_AREA_H = 10.0 # height for adapter strip below carrier
PANEL_W = 48.0
PANEL_H = CARRIER_H + ADAPTER_AREA_H + 2.0 # +2 for v-score margin
SOP_PITCH = 1.27 def gr_rect(x1, y1, x2, y2, layer="F.SilkS", w=0.15):
SOP8_PINS_PER_SIDE = 4 return f' (gr_rect (start {x1:.3f} {y1:.3f}) (end {x2:.3f} {y2:.3f}) (layer "{layer}") (width {w}) (uuid "{uid()}"))'
SOP16_PINS_PER_SIDE = 8
# SOP pad dimensions def gr_text(s, x, y, sz=0.8, layer="F.SilkS", mirror=False):
PAD_W = 0.6 th = max(0.08, sz * 0.13)
PAD_H = 1.5 mir = " (justify mirror)" if mirror else ""
return f' (gr_text "{s}" (at {x:.3f} {y:.3f}) (layer "{layer}") (uuid "{uid()}") (effects (font (size {sz} {sz}) (thickness {th:.3f})){mir}))'
# Castellated hole def gr_circle(x, y, r=0.3, layer="F.SilkS", fill="solid"):
CAST_DRILL = 0.6 return f' (gr_circle (center {x:.3f} {y:.3f}) (end {x+r:.3f} {y:.3f}) (layer "{layer}") (width 0.1) (fill {fill}) (uuid "{uid()}"))'
CAST_PAD = 1.0
# JST SH 1.0mm pitch def fp_hdr(name, x, y, layer="F.Cu"):
JST_PITCH = 1.0
# ============================================================
# Helpers
# ============================================================
def smd(name, x, y, w, h, net, nname, layer="F.Cu", mask=True):
ml = f'"{layer}" "{layer[0]}.Paste" "{layer[0]}.Mask"' if mask else f'"{layer}"'
return f' (pad "{name}" smd rect (at {x:.3f} {y:.3f}) (size {w} {h}) (layers {ml}) (net {net} "{nname}") (uuid "{uid()}"))'
def thru(name, x, y, pd, dd, net, nname):
return f' (pad "{name}" thru_hole circle (at {x:.3f} {y:.3f}) (size {pd} {pd}) (drill {dd}) (layers "*.Cu" "*.Mask") (net {net} "{nname}") (uuid "{uid()}"))'
def cast(name, x, y, net, nname):
"""Castellated half-hole: thru-hole pad on board edge."""
return f' (pad "{name}" thru_hole circle (at {x:.3f} {y:.3f}) (size {CAST_PAD} {CAST_PAD}) (drill {CAST_DRILL}) (layers "*.Cu" "*.Mask") (net {net} "{nname}") (uuid "{uid()}"))'
def line(x1, y1, x2, y2, layer="Edge.Cuts", w=0.1):
return f' (gr_line (start {x1} {y1}) (end {x2} {y2}) (layer "{layer}") (width {w}) (uuid "{uid()}"))'
def rect(x1, y1, x2, y2, layer="F.SilkS", w=0.15):
return f' (gr_rect (start {x1} {y1}) (end {x2} {y2}) (layer "{layer}") (width {w}) (uuid "{uid()}"))'
def txt(s, x, y, sz=0.8, layer="F.SilkS", bold=False):
th = sz * 0.15
b = " bold" if bold else ""
return f' (gr_text "{s}" (at {x} {y}) (layer "{layer}") (uuid "{uid()}") (effects (font (size {sz} {sz}) (thickness {th}){b})))'
def circle_mark(x, y, r=0.3, layer="F.SilkS"):
"""Pin 1 dot marker."""
return f' (gr_circle (center {x} {y}) (end {x+r} {y}) (layer "{layer}") (width 0.15) (fill solid) (uuid "{uid()}"))'
def fp_start(name, x, y, layer="F.Cu"):
return f""" return f"""
(footprint "panel:{name}" (layer "{layer}") (footprint "panel:{name}" (layer "{layer}")
(at {x} {y}) (at {x:.3f} {y:.3f})
(uuid "{uid()}") (uuid "{uid()}")
(fp_text reference "{name}" (at 0 0) (layer "{layer[0]}.Fab") (uuid "{uid()}") (fp_text reference "{name}" (at 0 0) (layer "{layer[0]}.Fab") (uuid "{uid()}")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide)) (effects (font (size 0.5 0.5) (thickness 0.08)) hide))
(fp_text value "" (at 0 0) (layer "{layer[0]}.Fab") (uuid "{uid()}") (fp_text value "" (at 0 0) (layer "{layer[0]}.Fab") (uuid "{uid()}")
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))""" (effects (font (size 0.5 0.5) (thickness 0.08)) hide))"""
def pad_smd(name, x, y, w, h, net, nname, layer="F.Cu"):
layers = f'"{layer}" "{layer[0]}.Paste" "{layer[0]}.Mask"'
return f' (pad "{name}" smd rect (at {x:.3f} {y:.3f}) (size {w:.3f} {h:.3f}) (layers {layers}) (net {net} "{nname}") (uuid "{uid()}"))'
def pad_thru(name, x, y, pd, dd, net, nname):
return f' (pad "{name}" thru_hole circle (at {x:.3f} {y:.3f}) (size {pd} {pd}) (drill {dd}) (layers "*.Cu" "*.Mask") (net {net} "{nname}") (uuid "{uid()}"))'
def pad_cast(name, x, y, net, nname):
"""Castellated half-hole on board edge."""
return f' (pad "{name}" thru_hole circle (at {x:.3f} {y:.3f}) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net {net} "{nname}") (uuid "{uid()}"))'
# ============================================================ # ============================================================
# Generate Panel # XIAO nRF52840 Dimensions (from Seeed docs)
# ============================================================
# PCB: 21.0mm x 17.5mm
# USB-C: centered on one 17.5mm short edge, ~9mm wide, protrudes ~2.5mm
# Pin headers: 2x7, 2.54mm pitch, rows 17.78mm apart (center-center)
# Pin 1 (D0) at top-left when USB faces left
# Reset button on USB side, LED on opposite side
XIAO_W = 21.0
XIAO_H = 17.5
XIAO_ROW_SPAN = 17.78 # center to center of pin rows
XIAO_USB_W = 8.9
XIAO_USB_H = 3.2
XIAO_USB_PROTRUDE = 1.5 # how far USB sticks past PCB edge
# ============================================================
# Main generator
# ============================================================ # ============================================================
def generate_panel(): def generate():
ox, oy = 100, 100 # KiCad origin offset # Panel dimensions
CARRIER_W = 44.0
CARRIER_H = 26.0
ADAPTER_STRIP_H = 14.0
PANEL_W = 48.0
PANEL_H = CARRIER_H + ADAPTER_STRIP_H + 1.0 # 1mm v-score gap
ox, oy = 100.0, 100.0 # KiCad origin
pcb = [] pcb = []
# --- Header --- # ---- File header ----
pcb.append(f"""(kicad_pcb (version 20221018) (generator "panel_gen_v3") pcb.append(f"""(kicad_pcb (version 20221018) (generator "panel_v4")
(general (thickness 1.6)) (general (thickness 1.6))
(paper "A4") (paper "A4")
(title_block (title_block
(title "Baby Mobile Combined Panel") (title "Baby Mobile Combined Panel v4")
(date "2026-03-11") (date "2026-03-11")
(rev "3.0") (rev "4.0")
(comment 1 "Carrier: XIAO nRF52840 + IS25LP128F + TPS61220") (comment 1 "Carrier: XIAO nRF52840 + IS25LP128F + TPS61220 + FPC-20")
(comment 2 "Breakaway: SOP-8, SOP-16N, SOP-16W castellated adapters") (comment 2 "Adapters: SOP-8, SOP-16N, SOP-16W castellated, FPC connected")
(comment 3 "Order as one panel from JLCPCB with castellated holes + v-score") (comment 3 "Order: JLCPCB, 2-layer, castellated holes=yes, v-score=yes")
) )
(layers (layers
(0 "F.Cu" signal) (31 "B.Cu" signal) (0 "F.Cu" signal) (31 "B.Cu" signal)
(34 "B.Paste" user) (35 "F.Paste" user) (34 "B.Paste" user) (35 "F.Paste" user)
(36 "B.SilkS" user "B.Silkscreen") (37 "F.SilkS" user "F.Silkscreen") (36 "B.SilkS" user "B.Silkscreen") (37 "F.SilkS" user "F.Silkscreen")
(38 "B.Mask" user "B.Mask") (39 "F.Mask" user "F.Mask") (38 "B.Mask" user "B.Mask") (39 "F.Mask" user "F.Mask")
(44 "Edge.Cuts" user) (49 "F.Fab" user "F.Fab") (48 "B.Fab" user "B.Fab") (44 "Edge.Cuts" user)
(48 "B.Fab" user "B.Fab") (49 "F.Fab" user "F.Fab")
) )
(setup (pad_to_mask_clearance 0.05)) (setup
(pad_to_mask_clearance 0.05)
(pcbplotparams (layerselection 0x00010fc_ffffffff) (outputdirectory "gerbers/"))
)
(net 0 "") (net 0 "")
(net 1 "GND") (net 2 "VBAT") (net 3 "3V3") (net 1 "GND") (net 2 "VBAT") (net 3 "3V3")
(net 4 "SPI_MOSI") (net 5 "SPI_MISO") (net 6 "SPI_SCK") (net 7 "FLASH_CS") (net 4 "SPI_MOSI") (net 5 "SPI_MISO") (net 6 "SPI_SCK") (net 7 "FLASH_CS")
(net 8 "BOOST_SW") (net 8 "BOOST_SW") (net 9 "AUDIO_FILT")
(net 9 "SIG_1") (net 10 "SIG_2") (net 11 "SIG_3") (net 12 "SIG_4")
(net 13 "SIG_5") (net 14 "SIG_6") (net 15 "SIG_7") (net 16 "SIG_8")
""") """)
# 16 signal nets for SOP pins / FPC
for i in range(1, 17):
pcb.append(f' (net {i+9} "S{i}")')
# Total nets: 0-25
# ============================ # ================================================================
# PANEL OUTLINE (Edge.Cuts) # PANEL OUTLINE
# ============================ # ================================================================
# Main panel rectangle # Outer rectangle
pcb.append(line(ox, oy, ox+PANEL_W, oy)) pcb.append(gr_line(ox, oy, ox+PANEL_W, oy))
pcb.append(line(ox+PANEL_W, oy, ox+PANEL_W, oy+PANEL_H)) pcb.append(gr_line(ox+PANEL_W, oy, ox+PANEL_W, oy+PANEL_H))
pcb.append(line(ox+PANEL_W, oy+PANEL_H, ox, oy+PANEL_H)) pcb.append(gr_line(ox+PANEL_W, oy+PANEL_H, ox, oy+PANEL_H))
pcb.append(line(ox, oy+PANEL_H, ox, oy)) pcb.append(gr_line(ox, oy+PANEL_H, ox, oy))
# V-score line between carrier and adapter strip # V-score: carrier / adapter strip
vscore_y = oy + CARRIER_H + 1.0 vs_y = oy + CARRIER_H + 0.5
pcb.append(line(ox, vscore_y, ox+PANEL_W, vscore_y)) pcb.append(gr_line(ox, vs_y, ox+PANEL_W, vs_y))
# Mark v-score on silk pcb.append(gr_text("▼ SNAP ▼", ox + PANEL_W/2, vs_y - 0.3, 0.5))
pcb.append(txt("— SNAP HERE —", ox + PANEL_W/2, vscore_y, 0.6))
# V-score lines between adapters in the strip # V-score: between adapters
adapt_y = vscore_y + 1.0 adapt_base = vs_y + 0.5
# Adapter positions in the strip # SOP-8: 10mm wide, SOP-16N: 16mm wide, SOP-16W: 16mm wide
a8_x = ox + 1.0 a8_w = 12.0
a8_w = 10.0 a16n_w = 16.0
a16n_x = a8_x + a8_w + 1.0 a16w_w = 16.0
a16n_w = 14.0 gap = 0.0 # v-score is zero-width
a16w_x = a16n_x + a16n_w + 1.0
a16w_w = 14.0
pcb.append(line(a16n_x - 0.5, adapt_y, a16n_x - 0.5, oy + PANEL_H)) vs_x1 = ox + a8_w + 1.0
pcb.append(line(a16w_x - 0.5, adapt_y, a16w_x - 0.5, oy + PANEL_H)) vs_x2 = vs_x1 + a16n_w
pcb.append(gr_line(vs_x1, adapt_base, vs_x1, oy + PANEL_H))
pcb.append(gr_line(vs_x2, adapt_base, vs_x2, oy + PANEL_H))
# ============================ # ================================================================
# CARRIER BOARD COMPONENTS # CARRIER: XIAO SOCKET with accurate outline
# ============================ # ================================================================
cx = ox + 3 # carrier area left edge (with margin) # Place XIAO with USB-C facing left edge of carrier
cy = oy + 1 # carrier area top edge xiao_cx = ox + 3 + XIAO_W/2 # center of XIAO
xiao_cy = oy + CARRIER_H/2
# ---- XIAO SOCKET ---- # Board outline rectangle
xiao_cx = cx + 13 xb_l = xiao_cx - XIAO_W/2 # left edge of XIAO PCB
xiao_cy = cy + CARRIER_H/2 xb_r = xiao_cx + XIAO_W/2 # right edge
xiao_w, xiao_h = 21, 17.5 xb_t = xiao_cy - XIAO_H/2 # top
row_half = 17.78 / 2 xb_b = xiao_cy + XIAO_H/2 # bottom
pcb.append(gr_rect(xb_l, xb_t, xb_r, xb_b, "F.SilkS", 0.2))
# XIAO outline with USB-C rectangle # USB-C rectangle protruding from left edge
pcb.append(rect(xiao_cx - xiao_w/2, xiao_cy - xiao_h/2, usb_l = xb_l - XIAO_USB_PROTRUDE
xiao_cx + xiao_w/2, xiao_cy + xiao_h/2)) usb_t = xiao_cy - XIAO_USB_W/2
# USB-C bump usb_b = xiao_cy + XIAO_USB_W/2
usb_w, usb_h = 9, 3.5 pcb.append(gr_rect(usb_l, usb_t, xb_l, usb_b, "F.SilkS", 0.2))
pcb.append(rect(xiao_cx - xiao_w/2 - 1, xiao_cy - usb_h/2, # Fill USB area
xiao_cx - xiao_w/2, xiao_cy + usb_h/2)) pcb.append(gr_rect(usb_l + 0.3, usb_t + 0.3, xb_l - 0.1, usb_b - 0.3, "F.SilkS", 0.15))
pcb.append(txt("USB-C", xiao_cx - xiao_w/2 - 3, xiao_cy, 0.5)) pcb.append(gr_text("USB-C", usb_l + 2, xiao_cy, 0.5))
pcb.append(txt("XIAO nRF52840", xiao_cx, xiao_cy, 0.7, bold=True)) pcb.append(gr_text("XIAO nRF52840", xiao_cx + 1, xiao_cy, 0.8))
# Pin labels along XIAO outline # Reset button indicator (top-left corner of XIAO near USB)
pcb.append(gr_text("RST", xb_l + 2, xb_t + 1.5, 0.4))
pcb.append(gr_circle(xb_l + 1, xb_t + 1.5, 0.5, "F.SilkS", "none"))
# Pin labels
left_labels = ["D0","D1","D2","D3","D4","D5","D6"] left_labels = ["D0","D1","D2","D3","D4","D5","D6"]
right_labels = ["D10","D9","D8","D7","3V3","GND","5V"] right_labels = ["D10","D9","D8","D7","3V3","GND","5V"]
# Left header (D0-D6 → signals from toy) # Left row nets: SIG_1..7 → S1..S7 (from toy via FPC)
left_nets = [9, 10, 11, 12, 13, 14, 15] # SIG_1 through SIG_7 left_nets = [(10,"S1"),(11,"S2"),(12,"S3"),(13,"S4"),(14,"S5"),(15,"S6"),(16,"S7")]
pcb.append(fp_start("XIAO_L", xiao_cx - row_half, xiao_cy)) # Right row: D10→S8(audio), D9→SCK, D8→MOSI, D7→MISO, 3V3, GND, 5V(NC)
right_nets = [(17,"S8"),(6,"SPI_SCK"),(4,"SPI_MOSI"),(5,"SPI_MISO"),(3,"3V3"),(1,"GND"),(0,"")]
# Left header
pcb.append(fp_hdr("J2_XIAO_L", xiao_cx - XIAO_ROW_SPAN/2, xiao_cy))
for i in range(7): for i in range(7):
y = -7.62 + i * 2.54 y = -7.62 + i * 2.54
pcb.append(thru(left_labels[i], 0, y, 1.7, 1.0, left_nets[i], f"SIG_{i+1}")) net_id, net_name = left_nets[i]
pcb.append(pad_thru(left_labels[i], 0, y, 1.7, 1.0, net_id, net_name))
pcb.append(" )") pcb.append(" )")
for i, lbl in enumerate(left_labels): for i, lbl in enumerate(left_labels):
pcb.append(txt(lbl, xiao_cx - row_half - 3, xiao_cy - 7.62 + i*2.54, 0.5)) pcb.append(gr_text(lbl, xiao_cx - XIAO_ROW_SPAN/2 - 2.5, xiao_cy - 7.62 + i*2.54, 0.45))
# Right header (D10,D9,D8,D7 → audio/SPI/motor; 3V3,GND,5V → power) # Right header
right_nets = [16, 6, 4, 5, 3, 1, 0] pcb.append(fp_hdr("J3_XIAO_R", xiao_cx + XIAO_ROW_SPAN/2, xiao_cy))
right_nnames = ["SIG_8", "SPI_SCK", "SPI_MOSI", "SPI_MISO", "3V3", "GND", ""]
pcb.append(fp_start("XIAO_R", xiao_cx + row_half, xiao_cy))
for i in range(7): for i in range(7):
y = -7.62 + i * 2.54 y = -7.62 + i * 2.54
n = right_nets[i] net_id, net_name = right_nets[i]
nn = right_nnames[i] if net_id > 0:
if n > 0: pcb.append(pad_thru(right_labels[i], 0, y, 1.7, 1.0, net_id, net_name))
pcb.append(thru(right_labels[i], 0, y, 1.7, 1.0, n, nn))
else: else:
pcb.append(f' (pad "{right_labels[i]}" thru_hole circle (at 0 {y:.2f}) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (uuid "{uid()}"))') pcb.append(f' (pad "{right_labels[i]}" thru_hole circle (at 0 {y:.2f}) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (uuid "{uid()}"))')
pcb.append(" )") pcb.append(" )")
for i, lbl in enumerate(right_labels): for i, lbl in enumerate(right_labels):
pcb.append(txt(lbl, xiao_cx + row_half + 3, xiao_cy - 7.62 + i*2.54, 0.5)) pcb.append(gr_text(lbl, xiao_cx + XIAO_ROW_SPAN/2 + 2.8, xiao_cy - 7.62 + i*2.54, 0.45))
# ---- IS25LP128F (SOIC-8) ---- # ================================================================
fl_cx = cx + 31 # CARRIER: IS25LP128F (SOIC-8)
fl_cy = cy + 5.5 # ================================================================
fl_cx = ox + 32
fl_cy = oy + 5.5
soic_span = 5.4 soic_span = 5.4
# SOIC-8 body outline on silk
pcb.append(gr_rect(fl_cx - 2.5, fl_cy - soic_span/2 - 0.5,
fl_cx + 2.5, fl_cy + soic_span/2 + 0.5))
# Pin 1 dot # Pin 1 dot
pcb.append(circle_mark(fl_cx - 2.5, fl_cy + soic_span/2 + 0.8)) pcb.append(gr_circle(fl_cx - 1.5, fl_cy + soic_span/2 - 0.5, 0.25))
# Outline # Notch on pin 1 end
pcb.append(rect(fl_cx - 2.5, fl_cy - 2, fl_cx + 2.5, fl_cy + 2)) pcb.append(gr_circle(fl_cx, fl_cy + soic_span/2 + 0.5, 0.4, "F.SilkS", "none"))
pcb.append(txt("U2 IS25LP128F", fl_cx, fl_cy - 3.5, 0.5)) pcb.append(gr_text("U2", fl_cx, fl_cy - soic_span/2 - 1.5, 0.5))
pcb.append(txt("●1", fl_cx - 2.5, fl_cy + soic_span/2 + 1.5, 0.4)) pcb.append(gr_text("IS25LP128F", fl_cx, fl_cy + soic_span/2 + 2, 0.4))
# Pin numbers on silk
for i, num in enumerate([1,2,3,4]):
pcb.append(gr_text(str(num), fl_cx - 1.905 + i*1.27, fl_cy + soic_span/2 + 1.2, 0.3))
for i, num in enumerate([8,7,6,5]):
pcb.append(gr_text(str(num), fl_cx - 1.905 + i*1.27, fl_cy - soic_span/2 - 1.2, 0.3))
flash_pins = [ flash_pins = [
(1, -1.905, soic_span/2, 7, "FLASH_CS"), (1, -1.905, soic_span/2, 7, "FLASH_CS"),
(2, -0.635, soic_span/2, 5, "SPI_MISO"), (2, -0.635, soic_span/2, 5, "SPI_MISO"),
(3, 0.635, soic_span/2, 3, "3V3"), (3, 0.635, soic_span/2, 3, "3V3"), # ~WP tie high
(4, 1.905, soic_span/2, 1, "GND"), (4, 1.905, soic_span/2, 1, "GND"),
(5, 1.905, -soic_span/2, 4, "SPI_MOSI"), (5, 1.905, -soic_span/2, 4, "SPI_MOSI"),
(6, 0.635, -soic_span/2, 6, "SPI_SCK"), (6, 0.635, -soic_span/2, 6, "SPI_SCK"),
(7, -0.635, -soic_span/2, 3, "3V3"), (7, -0.635, -soic_span/2, 3, "3V3"), # ~HOLD tie high
(8, -1.905, -soic_span/2, 3, "3V3"), (8, -1.905, -soic_span/2, 3, "3V3"), # VCC
] ]
pcb.append(fp_start("IS25LP128F", fl_cx, fl_cy)) pcb.append(fp_hdr("U2_Flash", fl_cx, fl_cy))
for pin, x, y, net, nn in flash_pins: for pin, x, y, net, nn in flash_pins:
pcb.append(smd(str(pin), x, y, 0.6, 1.5, net, nn)) pcb.append(pad_smd(str(pin), x, y, 0.6, 1.5, net, nn))
pcb.append(" )") pcb.append(" )")
# Flash decoupling C3 (0805) # Flash decoupling C3
pcb.append(fp_start("C3", fl_cx + 5, fl_cy)) pcb.append(fp_hdr("C3", fl_cx + 5.5, fl_cy - 1))
pcb.append(smd("1", -1.0, 0, 1.0, 1.2, 3, "3V3")) pcb.append(pad_smd("1", -1.0, 0, 1.0, 1.2, 3, "3V3"))
pcb.append(smd("2", 1.0, 0, 1.0, 1.2, 1, "GND")) pcb.append(pad_smd("2", 1.0, 0, 1.0, 1.2, 1, "GND"))
pcb.append(" )") pcb.append(" )")
pcb.append(txt("C3 100n", fl_cx + 5, fl_cy - 1.2, 0.4)) pcb.append(gr_text("C3", fl_cx + 5.5, fl_cy - 2.3, 0.4))
# Polarity: + mark on pin 1 side pcb.append(gr_text("100n", fl_cx + 5.5, fl_cy + 0.3, 0.35))
pcb.append(txt("+", fl_cx + 3.8, fl_cy, 0.4))
# ---- Flash CS pullup R2 ---- # Flash CS pullup R2
pcb.append(fp_start("R2", fl_cx + 5, fl_cy + 3)) pcb.append(fp_hdr("R2", fl_cx + 5.5, fl_cy + 2))
pcb.append(smd("1", -1.0, 0, 1.0, 1.2, 7, "FLASH_CS")) pcb.append(pad_smd("1", -1.0, 0, 1.0, 1.2, 7, "FLASH_CS"))
pcb.append(smd("2", 1.0, 0, 1.0, 1.2, 3, "3V3")) pcb.append(pad_smd("2", 1.0, 0, 1.0, 1.2, 3, "3V3"))
pcb.append(" )") pcb.append(" )")
pcb.append(txt("R2 10K", fl_cx + 5, fl_cy + 1.8, 0.4)) pcb.append(gr_text("R2", fl_cx + 5.5, fl_cy + 0.8, 0.4))
pcb.append(gr_text("10K", fl_cx + 5.5, fl_cy + 3.3, 0.35))
# ---- Audio RC LPF: R1 + C5 ---- # ================================================================
pcb.append(fp_start("R1", cx + 31, cy + 12)) # CARRIER: Audio RC filter (R1 + C5)
pcb.append(smd("1", -1.0, 0, 1.0, 1.2, 16, "SIG_8")) # from D10 (audio PWM) # ================================================================
pcb.append(smd("2", 1.0, 0, 1.0, 1.2, 0, "AUDIO_FILT")) # to cap & JST
rc_x = ox + 32
rc_y = oy + 14
pcb.append(fp_hdr("R1", rc_x, rc_y))
pcb.append(pad_smd("1", -1.0, 0, 1.0, 1.2, 17, "S8")) # from XIAO D10
pcb.append(pad_smd("2", 1.0, 0, 1.0, 1.2, 9, "AUDIO_FILT"))
pcb.append(" )") pcb.append(" )")
pcb.append(txt("R1 4.7K", cx+31, cy+10.8, 0.4)) pcb.append(gr_text("R1 4.7K", rc_x, rc_y - 1.3, 0.4))
pcb.append(fp_start("C5", cx + 31, cy + 14.5)) pcb.append(fp_hdr("C5", rc_x, rc_y + 3))
pcb.append(smd("1", -1.0, 0, 1.0, 1.2, 0, "AUDIO_FILT")) pcb.append(pad_smd("1", -1.0, 0, 1.0, 1.2, 9, "AUDIO_FILT"))
pcb.append(smd("2", 1.0, 0, 1.0, 1.2, 1, "GND")) pcb.append(pad_smd("2", 1.0, 0, 1.0, 1.2, 1, "GND"))
pcb.append(" )") pcb.append(" )")
pcb.append(txt("C5 10n", cx+31, cy+13.3, 0.4)) pcb.append(gr_text("C5 10n", rc_x, rc_y + 1.7, 0.4))
# ---- TPS61220 BOOST ---- # ================================================================
boost_cx = cx + 31 # CARRIER: TPS61220 Boost Converter
boost_cy = cy + 19 # ================================================================
# Pin 1 dot bx = ox + 32
pcb.append(circle_mark(boost_cx - 1.2, boost_cy + 1.5)) by = oy + 21
pcb.append(txt("U1 TPS61220", boost_cx, boost_cy - 2.5, 0.5))
pcb.append(txt("●1", boost_cx - 1.2, boost_cy + 2.2, 0.4))
pcb.append(fp_start("TPS61220", boost_cx, boost_cy)) # SC-70-5 outline
pcb.append(smd("1", -0.65, 0.7, 0.4, 0.55, 2, "VBAT")) # VIN pcb.append(gr_rect(bx - 1.2, by - 1.1, bx + 1.2, by + 1.1))
pcb.append(smd("2", 0, 0.7, 0.4, 0.55, 1, "GND")) # GND pcb.append(gr_circle(bx - 0.8, by + 0.6, 0.2)) # pin 1 dot
pcb.append(smd("3", 0.65, 0.7, 0.4, 0.55, 2, "VBAT")) # EN (tied to VIN) pcb.append(gr_text("U1", bx, by - 2, 0.5))
pcb.append(smd("4", 0.65,-0.7, 0.4, 0.55, 3, "3V3")) # VOUT pcb.append(gr_text("TPS61220", bx, by + 2, 0.4))
pcb.append(smd("5", -0.65,-0.7, 0.4, 0.55, 8, "BOOST_SW")) # L (switch) pcb.append(gr_text("●1", bx - 1.5, by + 0.7, 0.35))
pcb.append(fp_hdr("U1_Boost", bx, by))
pcb.append(pad_smd("1", -0.65, 0.7, 0.4, 0.55, 2, "VBAT")) # VIN
pcb.append(pad_smd("2", 0, 0.7, 0.4, 0.55, 1, "GND")) # GND
pcb.append(pad_smd("3", 0.65, 0.7, 0.4, 0.55, 2, "VBAT")) # EN=VIN
pcb.append(pad_smd("4", 0.65, -0.7, 0.4, 0.55, 3, "3V3")) # VOUT
pcb.append(pad_smd("5", -0.65, -0.7, 0.4, 0.55, 8, "BOOST_SW")) # L
pcb.append(" )") pcb.append(" )")
# L1 inductor (0805) # L1 (0805)
pcb.append(fp_start("L1", boost_cx - 4, boost_cy)) pcb.append(fp_hdr("L1", bx - 4, by))
pcb.append(smd("1", -1.0, 0, 1.0, 1.2, 8, "BOOST_SW")) pcb.append(pad_smd("1", -1.0, 0, 1.0, 1.2, 8, "BOOST_SW"))
pcb.append(smd("2", 1.0, 0, 1.0, 1.2, 2, "VBAT")) pcb.append(pad_smd("2", 1.0, 0, 1.0, 1.2, 2, "VBAT"))
pcb.append(" )") pcb.append(" )")
pcb.append(txt("L1 4.7u", boost_cx - 4, boost_cy - 1.2, 0.4)) pcb.append(gr_text("L1 4.7u", bx - 4, by - 1.3, 0.4))
# C1 boost input (0805) # C1 input (0805)
pcb.append(fp_start("C1", boost_cx - 4, boost_cy + 3)) pcb.append(fp_hdr("C1", bx - 4, by + 3))
pcb.append(smd("1", -1.0, 0, 1.0, 1.2, 2, "VBAT")) pcb.append(pad_smd("1", -1.0, 0, 1.0, 1.2, 2, "VBAT"))
pcb.append(smd("2", 1.0, 0, 1.0, 1.2, 1, "GND")) pcb.append(pad_smd("2", 1.0, 0, 1.0, 1.2, 1, "GND"))
pcb.append(" )") pcb.append(" )")
pcb.append(txt("C1 10u", boost_cx - 4, boost_cy + 1.8, 0.4)) pcb.append(gr_text("C1 10u", bx - 4, by + 1.7, 0.4))
# C2 boost output (0805) # C2 output (0805)
pcb.append(fp_start("C2", boost_cx + 4, boost_cy)) pcb.append(fp_hdr("C2", bx + 4, by))
pcb.append(smd("1", -1.0, 0, 1.0, 1.2, 3, "3V3")) pcb.append(pad_smd("1", -1.0, 0, 1.0, 1.2, 3, "3V3"))
pcb.append(smd("2", 1.0, 0, 1.0, 1.2, 1, "GND")) pcb.append(pad_smd("2", 1.0, 0, 1.0, 1.2, 1, "GND"))
pcb.append(" )") pcb.append(" )")
pcb.append(txt("C2 10u", boost_cx + 4, boost_cy - 1.2, 0.4)) pcb.append(gr_text("C2 10u", bx + 4, by - 1.3, 0.4))
# ---- JST SH 10-pin connector (top-right of carrier) ---- # ================================================================
jst_cx = cx + 38 # CARRIER: FPC-20 Connector (0.5mm pitch, bottom-contact)
jst_cy = cy + 10 # ================================================================
pcb.append(txt("J1 TO TOY →", jst_cx - 5, jst_cy - 4, 0.5)) fpc_cx = ox + 38
pcb.append(txt("1=VBAT 2=GND 3-10=SIG", jst_cx - 5, jst_cy + 5, 0.35)) fpc_cy = oy + 14
# Pin 1 mark fpc_pitch = 0.5
pcb.append(circle_mark(jst_cx - 4.5 * JST_PITCH - 0.8, jst_cy)) n_fpc = 20
jst_pin_nets = [ # FPC connector outline
fpc_w = (n_fpc - 1) * fpc_pitch + 2.0
pcb.append(gr_rect(fpc_cx - fpc_w/2, fpc_cy - 2, fpc_cx + fpc_w/2, fpc_cy + 2))
pcb.append(gr_text("J1 FPC-20", fpc_cx, fpc_cy - 3, 0.5))
pcb.append(gr_text("0.5mm TO TOY", fpc_cx, fpc_cy + 3, 0.35))
pcb.append(gr_circle(fpc_cx - (n_fpc-1)*fpc_pitch/2 - 0.8, fpc_cy, 0.2)) # pin 1
# FPC pin assignment:
# 1=VBAT 2=GND 3=S1 4=S2 ... 10=S8 11-16=S9-S14(spare) 17-20=spare/GND
fpc_nets = [
(1, 2, "VBAT"), (2, 1, "GND"), (1, 2, "VBAT"), (2, 1, "GND"),
(3, 9, "SIG_1"), (4, 10, "SIG_2"), (5, 11, "SIG_3"), (3, 10, "S1"), (4, 11, "S2"), (5, 12, "S3"), (6, 13, "S4"),
(6, 12, "SIG_4"), (7, 13, "SIG_5"), (8, 14, "SIG_6"), (7, 14, "S5"), (8, 15, "S6"), (9, 16, "S7"), (10, 17, "S8"),
(9, 15, "SIG_7"), (10, 16, "SIG_8"), (11, 18, "S9"), (12, 19, "S10"), (13, 20, "S11"), (14, 21, "S12"),
(15, 22, "S13"), (16, 23, "S14"), (17, 24, "S15"), (18, 25, "S16"),
(19, 1, "GND"), (20, 1, "GND"),
] ]
pcb.append(fp_start("J1_JST_SH10", jst_cx, jst_cy)) pcb.append(fp_hdr("J1_FPC20", fpc_cx, fpc_cy))
for pin, net, nn in jst_pin_nets: for pin, net, nn in fpc_nets:
x = -(9 * JST_PITCH / 2) + (pin - 1) * JST_PITCH x = -((n_fpc - 1) * fpc_pitch / 2) + (pin - 1) * fpc_pitch
pcb.append(smd(str(pin), x, 0, 0.6, 1.2, net, nn)) pcb.append(pad_smd(str(pin), x, 0, 0.3, 1.2, net, nn))
# Anchor pads # Anchor/lock pads
pcb.append(smd("S1", -6, 2.15, 1.2, 1.8, 0, "", mask=False)) pcb.append(pad_smd("S1", -(fpc_w/2 - 0.5), 2.5, 1.5, 1.0, 0, ""))
pcb.append(smd("S2", 6, 2.15, 1.2, 1.8, 0, "", mask=False)) pcb.append(pad_smd("S2", (fpc_w/2 - 0.5), 2.5, 1.5, 1.0, 0, ""))
pcb.append(" )") pcb.append(" )")
# ---- Mounting holes ---- # ================================================================
for mx, my in [(cx + 1.5, cy + 1.5), (cx + CARRIER_W - 4, cy + CARRIER_H - 2)]: # CARRIER: Mounting holes
pcb.append(fp_start(f"MH", mx, my)) # ================================================================
for mx, my in [(ox + 2, oy + CARRIER_H - 2), (ox + CARRIER_W - 3, oy + CARRIER_H - 2)]:
pcb.append(fp_hdr("MH", mx, my))
pcb.append(f' (pad "" thru_hole circle (at 0 0) (size 3.5 3.5) (drill 2.2) (layers "*.Cu" "*.Mask") (uuid "{uid()}"))') pcb.append(f' (pad "" thru_hole circle (at 0 0) (size 3.5 3.5) (drill 2.2) (layers "*.Cu" "*.Mask") (uuid "{uid()}"))')
pcb.append(" )") pcb.append(" )")
# ---- Carrier silkscreen ---- # Carrier back silk
pcb.append(txt("Baby Mobile Carrier v3.0", cx + CARRIER_W/2, cy - 0.5, 0.7, bold=True)) pcb.append(gr_text("XIAO: D0-D6→SIG1-7 D7=MISO D8=MOSI D9=SCK D10=AUDIO(S8)", ox + CARRIER_W/2, oy + CARRIER_H/2, 0.4, "B.SilkS"))
pcb.append(txt("3V3", cx + CARRIER_W/2 + 8, cy + CARRIER_H + 0.3, 0.4)) pcb.append(gr_text("FPC: 1=VBAT 2=GND 3-10=S1-S8 19-20=GND", ox + CARRIER_W/2, oy + CARRIER_H/2 + 2, 0.4, "B.SilkS"))
# Back silk: wiring guide # ================================================================
pcb.append(txt("XIAO D0-D6 = SIG_1-7 (buttons/speaker/motor)", cx + CARRIER_W/2, cy + 5, 0.4, "B.SilkS")) # ADAPTERS: Castellated SOP breakouts with FPC connectors
pcb.append(txt("XIAO D7=MISO D8=MOSI D9=SCK D10=AUDIO", cx + CARRIER_W/2, cy + 7, 0.4, "B.SilkS")) # ================================================================
pcb.append(txt("JST: 1=VBAT 2=GND 3-10=SIG_1-8", cx + CARRIER_W/2, cy + 9, 0.4, "B.SilkS"))
# ============================ SOP_PITCH = 1.27
# BREAKAWAY ADAPTERS
# ============================
def make_adapter(name, cx, cy, pins_per_side, row_span, n_jst_pins): def make_adapter(name, board_cx, board_cy, pins_per_side, row_span, n_fpc_pins):
""" """
Castellated SOP adapter. Adapter board with:
Board edges run through pad centers on both long sides. - Castellated half-holes on TOP and BOTTOM long edges (SOP pads)
JST SH connector on one short edge (top). - FPC connector centered on F.Cu
- Board edges through SOP pad centers
""" """
total_pins = pins_per_side * 2 total_pins = pins_per_side * 2
row_len = (pins_per_side - 1) * SOP_PITCH row_len = (pins_per_side - 1) * SOP_PITCH
# Board dimensions bw = row_len + 3.0 # board width (along pin rows)
bw = row_len + 2.0 # a bit wider than pin span bh = row_span # board height = exactly SOP row spacing
bh = row_span # exactly the distance between pin rows — edges at pad centers
jst_tab = 3.0 # extra tab at top for JST connector
total_h = bh + jst_tab
bx = cx - bw / 2 # Board outline — edges at castellation centers
by = cy - total_h / 2 bl = board_cx - bw/2
br = board_cx + bw/2
bt = board_cy - bh/2 # top edge (pins N+1..2N)
bb = board_cy + bh/2 # bottom edge (pins 1..N)
# Board outline # Don't draw left/right edges if they coincide with panel v-score
pcb.append(line(bx, by, bx + bw, by)) # (they'll be part of the panel outline or v-score already)
pcb.append(line(bx + bw, by, bx + bw, by + total_h)) # Draw top and bottom edges
pcb.append(line(bx + bw, by + total_h, bx, by + total_h)) pcb.append(gr_line(bl, bt, br, bt))
pcb.append(line(bx, by + total_h, bx, by)) pcb.append(gr_line(br, bt, br, bb))
pcb.append(gr_line(br, bb, bl, bb))
pcb.append(gr_line(bl, bb, bl, bt))
# Labels # Label
pcb.append(txt(name, cx, by - 1.0, 0.6, bold=True)) pcb.append(gr_text(name, board_cx, board_cy, 0.6))
# Castellated pads — pins 1..N on bottom edge, pins N+1..2N on top edge # Castellated pads footprint
# Bottom edge (y = by + total_h): pins 1 through pins_per_side pcb.append(fp_hdr(f"{name}_cast", board_cx, board_cy, "B.Cu"))
# Top edge (y = by + jst_tab): pins 2N down to pins_per_side+1 (SOP convention)
pcb.append(fp_start(f"{name}_pads", cx, cy + jst_tab/2, "B.Cu"))
for i in range(pins_per_side): for i in range(pins_per_side):
pin = i + 1 pin = i + 1
x = -row_len/2 + i * SOP_PITCH x = -row_len/2 + i * SOP_PITCH
# Bottom row castellations (pins 1..N) net_id = pin + 9 # S1=net10, S2=net11, etc.
pcb.append(cast(str(pin), x, bh/2, 0, f"")) # Bottom edge: pins 1..N
# Top row castellations (pins 2N..N+1, reversed per SOP convention) pcb.append(pad_cast(str(pin), x, bh/2, net_id, f"S{pin}"))
# Top edge: pins 2N..N+1 (reversed, SOP convention)
top_pin = total_pins - i top_pin = total_pins - i
pcb.append(cast(str(top_pin), x, -bh/2, 0, f"")) top_net = top_pin + 9
pcb.append(pad_cast(str(top_pin), x, -bh/2, top_net, f"S{top_pin}"))
pcb.append(" )") pcb.append(" )")
# Pin number labels on top silk # Pin labels on front silk
for i in range(pins_per_side): for i in range(pins_per_side):
x = cx - row_len/2 + i * SOP_PITCH x = board_cx - row_len/2 + i * SOP_PITCH
# Bottom row labels pcb.append(gr_text(str(i+1), x, bb + 0.7, 0.3))
pcb.append(txt(str(i+1), x, cy + jst_tab/2 + bh/2 + 0.8, 0.35)) pcb.append(gr_text(str(total_pins - i), x, bt - 0.7, 0.3))
# Top row labels
pcb.append(txt(str(total_pins - i), x, cy + jst_tab/2 - bh/2 - 0.8, 0.35))
# Pin 1 dot # Pin 1 dot
pcb.append(circle_mark(cx - row_len/2 - 0.6, cy + jst_tab/2 + bh/2 + 0.5, 0.25)) pcb.append(gr_circle(board_cx - row_len/2 - 0.5, bb + 0.5, 0.2))
pcb.append(gr_text("●1", board_cx - row_len/2 - 0.5, bb + 1.3, 0.3))
# JST SH connector at the top tab # Pin labels on back silk (mirror, for soldering reference)
jst_y = by + jst_tab / 2 pcb.append(gr_text(f"{name} ●1→", board_cx, board_cy, 0.5, "B.SilkS", mirror=True))
pcb.append(fp_start(f"{name}_JST", cx, jst_y))
for j in range(n_jst_pins): # FPC connector centered
x = -((n_jst_pins - 1) * JST_PITCH / 2) + j * JST_PITCH fpc_pitch_a = 0.5
pcb.append(smd(f"J{j+1}", x, 0, 0.6, 1.0, 0, "")) pcb.append(fp_hdr(f"{name}_FPC", board_cx, board_cy))
for j in range(n_fpc_pins):
x = -((n_fpc_pins - 1) * fpc_pitch_a / 2) + j * fpc_pitch_a
# Map FPC pins to SOP pin nets
if j < total_pins:
sop_pin = j + 1
net_id = sop_pin + 9
nn = f"S{sop_pin}"
elif j == n_fpc_pins - 2:
net_id = 1; nn = "GND" # second-to-last = GND
elif j == n_fpc_pins - 1:
net_id = 2; nn = "VBAT" # last = VBAT
else:
net_id = 0; nn = ""
pcb.append(pad_smd(f"F{j+1}", x, 0, 0.3, 1.0, net_id, nn))
# Anchor pads
aw = (n_fpc_pins - 1) * fpc_pitch_a / 2 + 1.5
pcb.append(pad_smd("SA", -aw, 1.5, 1.2, 0.8, 0, ""))
pcb.append(pad_smd("SB", aw, 1.5, 1.2, 0.8, 0, ""))
pcb.append(" )") pcb.append(" )")
pcb.append(txt("JST", cx, jst_y - 1.5, 0.35))
pcb.append(circle_mark(cx - (n_jst_pins-1)*JST_PITCH/2 - 0.8, jst_y, 0.2))
# --- SOP-8 adapter --- pcb.append(gr_text("FPC", board_cx, board_cy - 1.8, 0.35))
make_adapter("SOP-8", pcb.append(gr_circle(board_cx - (n_fpc_pins-1)*fpc_pitch_a/2 - 0.6, board_cy, 0.15))
ox + 6,
vscore_y + 1 + ADAPTER_AREA_H/2,
SOP8_PINS_PER_SIDE,
3.9, # 150mil narrow row span
8) # 8 JST pins (all SOP pins)
# --- SOP-16 narrow adapter --- # Place adapters in the strip
make_adapter("SOP-16N", strip_cy = vs_y + 0.5 + ADAPTER_STRIP_H / 2
ox + 20,
vscore_y + 1 + ADAPTER_AREA_H/2,
SOP16_PINS_PER_SIDE,
6.0, # narrow SOP-16 lead span
10) # 10 JST pins (all 16 SOP + VBAT + GND → 10 JST via mapping)
# --- SOP-16 wide adapter --- # SOP-8: 4+4 pins, 3.9mm span, 10-pin FPC (8 signals + GND + VBAT)
make_adapter("SOP-16W", make_adapter("SOP-8", ox + a8_w/2 + 0.5, strip_cy, 4, 3.9, 10)
ox + 37,
vscore_y + 1 + ADAPTER_AREA_H/2,
SOP16_PINS_PER_SIDE,
10.3, # wide SOP-16 (300mil body) lead span
10)
# Adapter strip instructions on back silk # SOP-16 narrow: 8+8 pins, 6.0mm span, 20-pin FPC (16 signals + GND + VBAT + 2 spare)
pcb.append(txt("Snap off adapter matching your toy's MCU. Castellations solder into SOP footprint.", make_adapter("SOP-16N", vs_x1 + a16n_w/2, strip_cy, 8, 6.0, 20)
ox + PANEL_W/2, vscore_y + ADAPTER_AREA_H + 1, 0.4, "B.SilkS"))
pcb.append(txt("JST cable connects adapter to carrier board J1.", # SOP-16 wide: 8+8 pins, 10.3mm span, 20-pin FPC
ox + PANEL_W/2, vscore_y + ADAPTER_AREA_H + 2, 0.4, "B.SilkS")) make_adapter("SOP-16W", vs_x2 + a16w_w/2, strip_cy, 8, 10.3, 20)
# ================================================================
# Panel title
# ================================================================
pcb.append(gr_text("Baby Mobile v4 — JLCPCB Panel", ox + PANEL_W/2, oy - 2, 1.0))
pcb.append(gr_text("Castellated Holes=YES V-Score=YES 2-Layer 1.6mm", ox + PANEL_W/2, oy + PANEL_H + 2, 0.5))
pcb.append(")") pcb.append(")")
return "\n".join(pcb) return "\n".join(pcb)
# ============================================================
# Project file
# ============================================================
def generate_project():
return json.dumps({
"meta": {"filename": "baby-mobile-panel.kicad_pro", "version": 1},
"board": {"design_settings": {"rules": {"min_track_width": 0.15, "min_via_diameter": 0.4}}},
"net_settings": {"classes": [
{"name": "Default", "clearance": 0.15, "track_width": 0.25},
{"name": "Power", "clearance": 0.2, "track_width": 0.5},
]},
}, indent=2)
# ============================================================
# Main
# ============================================================
if __name__ == "__main__": if __name__ == "__main__":
outdir = os.path.dirname(os.path.abspath(__file__)) outdir = os.path.dirname(os.path.abspath(__file__))
pcb_text = generate_panel() pcb_text = generate()
pcb_path = os.path.join(outdir, "baby-mobile-panel.kicad_pcb") pcb_path = os.path.join(outdir, "baby-mobile-panel.kicad_pcb")
with open(pcb_path, "w") as f: with open(pcb_path, "w") as f:
f.write(pcb_text) f.write(pcb_text)
print(f"Written: baby-mobile-panel.kicad_pcb ({len(pcb_text)} bytes)") print(f"Written: {pcb_path} ({len(pcb_text)} bytes)")
proj_text = generate_project() proj = json.dumps({
"meta": {"filename": "baby-mobile-panel.kicad_pro", "version": 1},
"board": {"design_settings": {"rules": {"min_track_width": 0.15}}},
"net_settings": {"classes": [{"name":"Default","clearance":0.15,"track_width":0.25}]},
}, indent=2)
with open(os.path.join(outdir, "baby-mobile-panel.kicad_pro"), "w") as f: with open(os.path.join(outdir, "baby-mobile-panel.kicad_pro"), "w") as f:
f.write(proj_text) f.write(proj)
print(f"\nPanel contents:") print("\nPanel:")
print(f" Carrier board: 42mm × 24mm") print(" Carrier (44×26mm): XIAO(accurate outline+USB-C), IS25LP128F(pin1 dot+notch), TPS61220(pin1 dot), FPC-20")
print(f" - XIAO socket (2×7 TH, 2.54mm, 17.78mm apart)") print(" SOP-8 adapter: castellation on long edges, 10-pin FPC center")
print(f" - IS25LP128F SOIC-8 with pin 1 dot") print(" SOP-16N adapter: castellation on long edges, 20-pin FPC center")
print(f" - TPS61220 SC-70-5 with pin 1 dot") print(" SOP-16W adapter: castellation on long edges, 20-pin FPC center")
print(f" - L1 4.7µH, C1/C2 10µF, C3 100nF, R1 4.7K, C5 10nF, R2 10K") print(" V-score between carrier and adapter strip, and between each adapter")
print(f" - JST SH 10-pin right-angle SMD (J1)") print(" All polarized parts have ●1 markers")
print(f" - 2× M2 mounting holes")
print(f" Breakaway adapters:")
print(f" - SOP-8 (4+4 pins, 3.9mm span, 8-pin JST)")
print(f" - SOP-16 narrow (8+8 pins, 6.0mm span, 10-pin JST)")
print(f" - SOP-16 wide (8+8 pins, 10.3mm span, 10-pin JST)")
print(f" All adapters: castellated edges, pin 1 dots, numbered silk")