Fix nets, breakaway layout, add schematic
This commit is contained in:
@@ -1,521 +0,0 @@
|
||||
(kicad_pcb (version 20221018) (generator "panel_v4")
|
||||
(general (thickness 1.6))
|
||||
(paper "A4")
|
||||
(title_block
|
||||
(title "Baby Mobile Combined Panel v4")
|
||||
(date "2026-03-11")
|
||||
(rev "4.0")
|
||||
(comment 1 "Carrier: XIAO nRF52840 + IS25LP128F + TPS61220 + FPC-20")
|
||||
(comment 2 "Adapters: SOP-8, SOP-16N, SOP-16W — castellated, FPC connected")
|
||||
(comment 3 "Order: JLCPCB, 2-layer, castellated holes=yes, v-score=yes")
|
||||
)
|
||||
(layers
|
||||
(0 "F.Cu" signal) (31 "B.Cu" signal)
|
||||
(34 "B.Paste" user) (35 "F.Paste" user)
|
||||
(36 "B.SilkS" user "B.Silkscreen") (37 "F.SilkS" user "F.Silkscreen")
|
||||
(38 "B.Mask" user "B.Mask") (39 "F.Mask" user "F.Mask")
|
||||
(44 "Edge.Cuts" user)
|
||||
(48 "B.Fab" user "B.Fab") (49 "F.Fab" user "F.Fab")
|
||||
)
|
||||
(setup
|
||||
(pad_to_mask_clearance 0.05)
|
||||
(pcbplotparams (layerselection 0x00010fc_ffffffff) (outputdirectory "gerbers/"))
|
||||
)
|
||||
|
||||
(net 0 "")
|
||||
(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 8 "BOOST_SW") (net 9 "AUDIO_FILT")
|
||||
|
||||
(net 10 "S1")
|
||||
(net 11 "S2")
|
||||
(net 12 "S3")
|
||||
(net 13 "S4")
|
||||
(net 14 "S5")
|
||||
(net 15 "S6")
|
||||
(net 16 "S7")
|
||||
(net 17 "S8")
|
||||
(net 18 "S9")
|
||||
(net 19 "S10")
|
||||
(net 20 "S11")
|
||||
(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:J2_XIAO_L" (layer "F.Cu")
|
||||
(at 104.610 113.000)
|
||||
(uuid "1880d745-c8b8-49c4-801a-b7dded7fa4d4")
|
||||
(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))
|
||||
(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))
|
||||
(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 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 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 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 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 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 16 "S7") (uuid "12b9d945-953b-4147-abb0-b33958ede447"))
|
||||
)
|
||||
(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 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 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 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 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 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 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:J3_XIAO_R" (layer "F.Cu")
|
||||
(at 122.390 113.000)
|
||||
(uuid "478daaf8-7483-4c18-8d16-3af8d13f1e5a")
|
||||
(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))
|
||||
(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))
|
||||
(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 "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 "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 "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 "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 "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 "f3f13533-e920-4db6-80a9-3517b7a64c80"))
|
||||
)
|
||||
(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 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 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 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 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 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 125.190 120.620) (layer "F.SilkS") (uuid "29c03aea-4a86-4e11-a534-6e8a142e738f") (effects (font (size 0.45 0.45) (thickness 0.080))))
|
||||
(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_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_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 "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:U2_Flash" (layer "F.Cu")
|
||||
(at 132.000 105.500)
|
||||
(uuid "33f564be-74cb-4b07-9514-48c38bcf8b14")
|
||||
(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))
|
||||
(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))
|
||||
(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.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.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.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.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.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.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.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")
|
||||
(at 137.500 104.500)
|
||||
(uuid "efd45baf-76b1-41b8-9a69-d16c4aff9996")
|
||||
(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))
|
||||
(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))
|
||||
(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.000 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 1 "GND") (uuid "fbdd13da-6c60-4ea6-911e-fe65eede2847"))
|
||||
)
|
||||
(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 "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")
|
||||
(at 137.500 107.500)
|
||||
(uuid "4828ff79-0549-47d3-8288-89dd7fd1ffc0")
|
||||
(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))
|
||||
(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))
|
||||
(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.000 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 3 "3V3") (uuid "f8c4ab39-a4c3-4458-bdd8-29f399b1abee"))
|
||||
)
|
||||
(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")
|
||||
(at 132.000 114.000)
|
||||
(uuid "37cc5e4d-7bf4-41a9-b81e-78764e60f07e")
|
||||
(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))
|
||||
(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))
|
||||
(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.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 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")
|
||||
(at 132.000 117.000)
|
||||
(uuid "c2dc742d-aa63-4e4f-937b-6eca10fc9c75")
|
||||
(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))
|
||||
(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))
|
||||
(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.000 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 1 "GND") (uuid "9c8ee84f-d527-41d9-8387-55957a1174d3"))
|
||||
)
|
||||
(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_rect (start 130.800 119.900) (end 133.200 122.100) (layer "F.SilkS") (width 0.15) (uuid "0fa298c0-2c90-4739-a08a-2c2f49b38083"))
|
||||
(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 "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:U1_Boost" (layer "F.Cu")
|
||||
(at 132.000 121.000)
|
||||
(uuid "2af40a9c-cc47-4186-b24a-afbc0dc415d2")
|
||||
(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))
|
||||
(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))
|
||||
(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.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.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.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.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")
|
||||
(at 128.000 121.000)
|
||||
(uuid "f96fa760-64a2-473d-899a-25cdad7c3597")
|
||||
(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))
|
||||
(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))
|
||||
(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.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 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")
|
||||
(at 128.000 124.000)
|
||||
(uuid "3a657071-f4ee-4825-bfba-26a1fb04f5d2")
|
||||
(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))
|
||||
(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))
|
||||
(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.000 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 1 "GND") (uuid "8913c282-793c-456e-89fe-6977c0fafc66"))
|
||||
)
|
||||
(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")
|
||||
(at 136.000 121.000)
|
||||
(uuid "e8f514a1-88cd-43b2-a781-335492bcbcf2")
|
||||
(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))
|
||||
(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))
|
||||
(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.000 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 1 "GND") (uuid "f221174c-b9f9-4891-8017-4adfc612ccaf"))
|
||||
)
|
||||
(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_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 "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_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_FPC20" (layer "F.Cu")
|
||||
(at 138.000 114.000)
|
||||
(uuid "3f816365-83a9-4ff8-b514-ccf442363914")
|
||||
(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))
|
||||
(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))
|
||||
(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 -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 -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 -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 -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 -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.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 -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 -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 -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 "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 "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")
|
||||
(at 102.000 124.000)
|
||||
(uuid "571767de-220f-4747-a455-fa2326a12da0")
|
||||
(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))
|
||||
(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))
|
||||
(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")
|
||||
(at 141.000 124.000)
|
||||
(uuid "079cc614-6c0f-45dc-ab83-9ca22a61e4de")
|
||||
(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))
|
||||
(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))
|
||||
(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 "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 "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_line (start 103.095 132.050) (end 109.905 132.050) (layer "Edge.Cuts") (width 0.1) (uuid "9a7f2724-0131-4c3b-bea2-2264285f74e4"))
|
||||
(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_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 135.950) (end 103.095 132.050) (layer "Edge.Cuts") (width 0.1) (uuid "b29ece6a-b547-4e60-9752-00ce868059b9"))
|
||||
(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))))
|
||||
|
||||
(footprint "panel:SOP-8_cast" (layer "B.Cu")
|
||||
(at 106.500 134.000)
|
||||
(uuid "4c7c992b-b0fd-4d6b-95e8-d3b01e40d0b8")
|
||||
(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))
|
||||
(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))
|
||||
(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 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 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 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 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 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 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 14 "S5") (uuid "fcbc4fd6-99db-4c24-8ac9-e9f56db86444"))
|
||||
)
|
||||
(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.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.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.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 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 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 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 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 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_FPC" (layer "F.Cu")
|
||||
(at 106.500 134.000)
|
||||
(uuid "3dad6b1d-9358-4cc3-ac58-82f1c58a2804")
|
||||
(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))
|
||||
(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))
|
||||
(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 "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 "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 "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 "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 "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 "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 "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 "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 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 115.055 131.000) (end 126.945 131.000) (layer "Edge.Cuts") (width 0.1) (uuid "278bea3d-fc54-47d1-8ced-327a716b464c"))
|
||||
(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 126.945 137.000) (end 115.055 137.000) (layer "Edge.Cuts") (width 0.1) (uuid "3123ee0d-079a-4ded-b59f-1ef2174dcc8f"))
|
||||
(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 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_cast" (layer "B.Cu")
|
||||
(at 121.000 134.000)
|
||||
(uuid "63a9c132-87a0-471b-8398-9b33799cea4c")
|
||||
(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))
|
||||
(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))
|
||||
(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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 18 "S9") (uuid "30c995c0-e685-4468-ac69-76f89e09f5cb"))
|
||||
)
|
||||
(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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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_FPC" (layer "F.Cu")
|
||||
(at 121.000 134.000)
|
||||
(uuid "ae74481d-2f56-49a1-8f27-a926411ea186")
|
||||
(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))
|
||||
(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))
|
||||
(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 "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 "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 "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 "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 "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 "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 "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 "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 "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 "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 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.055 128.850) (end 142.945 128.850) (layer "Edge.Cuts") (width 0.1) (uuid "3245e263-e9ff-4d71-bdfb-9acc132ce614"))
|
||||
(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.945 139.150) (end 131.055 139.150) (layer "Edge.Cuts") (width 0.1) (uuid "f5a4c984-26e9-4937-92b1-ea733f952833"))
|
||||
(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.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_cast" (layer "B.Cu")
|
||||
(at 137.000 134.000)
|
||||
(uuid "03adeb81-8fd2-4f41-b6ec-9a19c25be013")
|
||||
(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))
|
||||
(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))
|
||||
(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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 18 "S9") (uuid "4cdbd15b-f470-4028-aa99-11f1bc409fce"))
|
||||
)
|
||||
(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 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.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.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 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 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 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 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.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.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 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 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 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 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 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 128.150) (layer "F.SilkS") (uuid "c05f3d6b-67d3-4d21-a81e-3839951a4f75") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(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_FPC" (layer "F.Cu")
|
||||
(at 137.000 134.000)
|
||||
(uuid "5478245e-9ede-494c-86f7-8c704435e999")
|
||||
(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))
|
||||
(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))
|
||||
(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 "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 "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 "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 "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 "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 "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 "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 "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 "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 "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.650 134.000) (end 131.800 134.000) (layer "F.SilkS") (width 0.1) (fill solid) (uuid "1554c550-4b83-40cc-8602-7a4138599540"))
|
||||
(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 "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))))
|
||||
)
|
||||
@@ -0,0 +1,613 @@
|
||||
(kicad_pcb (version 20221018) (generator "bm_v5")
|
||||
(general (thickness 1.6))
|
||||
(paper "A4")
|
||||
(title_block
|
||||
(title "Baby Mobile v5 — Key-Shaped Panel")
|
||||
(date "2026-03-11") (rev "5.0")
|
||||
(comment 1 "Carrier head + breakaway adapter stem")
|
||||
(comment 2 "Unique nets per sub-board, FPC interconnect")
|
||||
)
|
||||
(layers
|
||||
(0 "F.Cu" signal) (31 "B.Cu" signal)
|
||||
(34 "B.Paste" user) (35 "F.Paste" user)
|
||||
(36 "B.SilkS" user "B.Silkscreen") (37 "F.SilkS" user "F.Silkscreen")
|
||||
(38 "B.Mask" user "B.Mask") (39 "F.Mask" user "F.Mask")
|
||||
(44 "Edge.Cuts" user)
|
||||
(48 "B.Fab" user "B.Fab") (49 "F.Fab" user "F.Fab")
|
||||
)
|
||||
(net 0 "")
|
||||
(net 1 "GND")
|
||||
(net 2 "C_VBAT")
|
||||
(net 3 "C_3V3")
|
||||
(net 4 "BOOST_SW")
|
||||
(net 5 "AUDIO_FILT")
|
||||
(net 6 "SPI_MOSI")
|
||||
(net 7 "SPI_MISO")
|
||||
(net 8 "SPI_SCK")
|
||||
(net 9 "FLASH_CS")
|
||||
(net 10 "C_S1")
|
||||
(net 11 "C_S2")
|
||||
(net 12 "C_S3")
|
||||
(net 13 "C_S4")
|
||||
(net 14 "C_S5")
|
||||
(net 15 "C_S6")
|
||||
(net 16 "C_S7")
|
||||
(net 17 "C_S8")
|
||||
(net 18 "FPC_C1")
|
||||
(net 19 "FPC_C2")
|
||||
(net 20 "FPC_C3")
|
||||
(net 21 "FPC_C4")
|
||||
(net 22 "FPC_C5")
|
||||
(net 23 "FPC_C6")
|
||||
(net 24 "FPC_C7")
|
||||
(net 25 "FPC_C8")
|
||||
(net 26 "FPC_C9")
|
||||
(net 27 "FPC_C10")
|
||||
(net 28 "FPC_C11")
|
||||
(net 29 "FPC_C12")
|
||||
(net 30 "FPC_C13")
|
||||
(net 31 "FPC_C14")
|
||||
(net 32 "FPC_C15")
|
||||
(net 33 "FPC_C16")
|
||||
(net 34 "FPC_C17")
|
||||
(net 35 "FPC_C18")
|
||||
(net 36 "FPC_C19")
|
||||
(net 37 "FPC_C20")
|
||||
(net 38 "A8_P1")
|
||||
(net 39 "A8_P2")
|
||||
(net 40 "A8_P3")
|
||||
(net 41 "A8_P4")
|
||||
(net 42 "A8_P5")
|
||||
(net 43 "A8_P6")
|
||||
(net 44 "A8_P7")
|
||||
(net 45 "A8_P8")
|
||||
(net 46 "A8_VBAT")
|
||||
(net 47 "A8_GND")
|
||||
(net 48 "FPC_A8_1")
|
||||
(net 49 "FPC_A8_2")
|
||||
(net 50 "FPC_A8_3")
|
||||
(net 51 "FPC_A8_4")
|
||||
(net 52 "FPC_A8_5")
|
||||
(net 53 "FPC_A8_6")
|
||||
(net 54 "FPC_A8_7")
|
||||
(net 55 "FPC_A8_8")
|
||||
(net 56 "FPC_A8_9")
|
||||
(net 57 "FPC_A8_10")
|
||||
(net 58 "A16N_P1")
|
||||
(net 59 "A16N_P2")
|
||||
(net 60 "A16N_P3")
|
||||
(net 61 "A16N_P4")
|
||||
(net 62 "A16N_P5")
|
||||
(net 63 "A16N_P6")
|
||||
(net 64 "A16N_P7")
|
||||
(net 65 "A16N_P8")
|
||||
(net 66 "A16N_P9")
|
||||
(net 67 "A16N_P10")
|
||||
(net 68 "A16N_P11")
|
||||
(net 69 "A16N_P12")
|
||||
(net 70 "A16N_P13")
|
||||
(net 71 "A16N_P14")
|
||||
(net 72 "A16N_P15")
|
||||
(net 73 "A16N_P16")
|
||||
(net 74 "A16N_VBAT")
|
||||
(net 75 "A16N_GND")
|
||||
(net 76 "FPC_A16N_1")
|
||||
(net 77 "FPC_A16N_2")
|
||||
(net 78 "FPC_A16N_3")
|
||||
(net 79 "FPC_A16N_4")
|
||||
(net 80 "FPC_A16N_5")
|
||||
(net 81 "FPC_A16N_6")
|
||||
(net 82 "FPC_A16N_7")
|
||||
(net 83 "FPC_A16N_8")
|
||||
(net 84 "FPC_A16N_9")
|
||||
(net 85 "FPC_A16N_10")
|
||||
(net 86 "FPC_A16N_11")
|
||||
(net 87 "FPC_A16N_12")
|
||||
(net 88 "FPC_A16N_13")
|
||||
(net 89 "FPC_A16N_14")
|
||||
(net 90 "FPC_A16N_15")
|
||||
(net 91 "FPC_A16N_16")
|
||||
(net 92 "FPC_A16N_17")
|
||||
(net 93 "FPC_A16N_18")
|
||||
(net 94 "FPC_A16N_19")
|
||||
(net 95 "FPC_A16N_20")
|
||||
(net 96 "A16W_P1")
|
||||
(net 97 "A16W_P2")
|
||||
(net 98 "A16W_P3")
|
||||
(net 99 "A16W_P4")
|
||||
(net 100 "A16W_P5")
|
||||
(net 101 "A16W_P6")
|
||||
(net 102 "A16W_P7")
|
||||
(net 103 "A16W_P8")
|
||||
(net 104 "A16W_P9")
|
||||
(net 105 "A16W_P10")
|
||||
(net 106 "A16W_P11")
|
||||
(net 107 "A16W_P12")
|
||||
(net 108 "A16W_P13")
|
||||
(net 109 "A16W_P14")
|
||||
(net 110 "A16W_P15")
|
||||
(net 111 "A16W_P16")
|
||||
(net 112 "A16W_VBAT")
|
||||
(net 113 "A16W_GND")
|
||||
(net 114 "FPC_A16W_1")
|
||||
(net 115 "FPC_A16W_2")
|
||||
(net 116 "FPC_A16W_3")
|
||||
(net 117 "FPC_A16W_4")
|
||||
(net 118 "FPC_A16W_5")
|
||||
(net 119 "FPC_A16W_6")
|
||||
(net 120 "FPC_A16W_7")
|
||||
(net 121 "FPC_A16W_8")
|
||||
(net 122 "FPC_A16W_9")
|
||||
(net 123 "FPC_A16W_10")
|
||||
(net 124 "FPC_A16W_11")
|
||||
(net 125 "FPC_A16W_12")
|
||||
(net 126 "FPC_A16W_13")
|
||||
(net 127 "FPC_A16W_14")
|
||||
(net 128 "FPC_A16W_15")
|
||||
(net 129 "FPC_A16W_16")
|
||||
(net 130 "FPC_A16W_17")
|
||||
(net 131 "FPC_A16W_18")
|
||||
(net 132 "FPC_A16W_19")
|
||||
(net 133 "FPC_A16W_20")
|
||||
|
||||
(setup (pad_to_mask_clearance 0.05)
|
||||
(pcbplotparams (layerselection 0x00010fc_ffffffff) (outputdirectory "gerbers/")))
|
||||
|
||||
|
||||
(gr_line (start 100.000 100.000) (end 126.000 100.000) (layer "Edge.Cuts") (width 0.1) (uuid "4d661e2a-9510-461b-8504-90f994722549"))
|
||||
(gr_line (start 126.000 100.000) (end 126.000 124.000) (layer "Edge.Cuts") (width 0.1) (uuid "b6a3f7d2-4c68-4ecc-b5c3-5fb65b525c78"))
|
||||
(gr_line (start 126.000 124.000) (end 120.000 124.000) (layer "Edge.Cuts") (width 0.1) (uuid "b6a457b6-5caf-4e28-9260-481968dead15"))
|
||||
(gr_line (start 120.000 124.000) (end 120.000 156.000) (layer "Edge.Cuts") (width 0.1) (uuid "97a94f6a-2664-4c31-815d-20f12b369994"))
|
||||
(gr_line (start 120.000 156.000) (end 106.000 156.000) (layer "Edge.Cuts") (width 0.1) (uuid "ab567175-e60f-4630-94cb-2020237ce09b"))
|
||||
(gr_line (start 106.000 156.000) (end 106.000 124.000) (layer "Edge.Cuts") (width 0.1) (uuid "861d5736-f347-4632-af8e-69c13686e9a9"))
|
||||
(gr_line (start 106.000 124.000) (end 100.000 124.000) (layer "Edge.Cuts") (width 0.1) (uuid "7bf4650b-dd82-449c-b095-18d174f5f0c9"))
|
||||
(gr_line (start 100.000 124.000) (end 100.000 100.000) (layer "Edge.Cuts") (width 0.1) (uuid "8268d642-8255-4d5f-8830-3bd339f1ab0f"))
|
||||
(gr_line (start 106.000 132.000) (end 120.000 132.000) (layer "Edge.Cuts") (width 0.1) (uuid "eb4f805a-3060-4d03-8d53-57533430963f"))
|
||||
(gr_line (start 106.000 142.000) (end 120.000 142.000) (layer "Edge.Cuts") (width 0.1) (uuid "40ac3a54-0553-46fe-95c6-e92c688905d0"))
|
||||
(gr_text "SNAP" (at 113.000 131.700) (layer "F.SilkS") (uuid "29097a4f-cad7-4970-bcd5-60ea382323c3") (effects (font (size 0.4 0.4) (thickness 0.080))))
|
||||
(gr_text "SNAP" (at 113.000 141.700) (layer "F.SilkS") (uuid "d3f74d74-3e23-4b89-861c-7c2370be3d35") (effects (font (size 0.4 0.4) (thickness 0.080))))
|
||||
(gr_rect (start 104.250 101.500) (end 121.750 122.500) (layer "F.SilkS") (width 0.2) (uuid "1a2aa14c-38b9-4c8f-a464-794909866483"))
|
||||
(gr_rect (start 108.550 98.300) (end 117.450 101.500) (layer "F.SilkS") (width 0.2) (uuid "30e02621-4bc8-4fa3-9af9-cc7dc5e650d9"))
|
||||
(gr_text "USB-C" (at 113.000 99.900) (layer "F.SilkS") (uuid "1a4672f7-33d3-4241-b27e-5dd8780886b4") (effects (font (size 0.45 0.45) (thickness 0.080))))
|
||||
(gr_text "XIAO nRF52840" (at 113.000 112.000) (layer "F.SilkS") (uuid "e97ffc86-50b8-4c2a-b0a9-1c03b8a08668") (effects (font (size 0.6 0.6) (thickness 0.080))))
|
||||
(gr_text "RST" (at 106.250 103.000) (layer "F.SilkS") (uuid "ac56f812-ff40-4033-966c-e4616002c6e7") (effects (font (size 0.35 0.35) (thickness 0.080))))
|
||||
|
||||
(footprint "bm:XIAO_L" (layer "F.Cu")
|
||||
(at 105.500 104.500)
|
||||
(uuid "551872f2-8dee-4593-b20c-796277d6acc3")
|
||||
(fp_text reference "XIAO_L" (at 0 0) (layer "F.Fab") (uuid "d4e3b7a8-59d4-489e-b2a5-b7af2e7a0181")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "425c0bee-1bc3-4f73-af00-955a63070d8d")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(pad "D0" thru_hole circle (at 0.000 0.000) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 10 "C_S1") (uuid "918edf81-9320-40a2-8c80-1162f8938b60"))
|
||||
(pad "D0_ext" smd rect (at -1.250 0.000) (size 2.500 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 10 "C_S1") (uuid "b5abb68b-d992-43dc-aae6-a6c2a6041988"))
|
||||
(pad "D1" thru_hole circle (at 0.000 2.540) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 11 "C_S2") (uuid "adbe6677-5404-4b22-a97e-56d454711771"))
|
||||
(pad "D1_ext" smd rect (at -1.250 2.540) (size 2.500 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 11 "C_S2") (uuid "8b95bde1-6c3c-457d-942b-b20315d5f12b"))
|
||||
(pad "D2" thru_hole circle (at 0.000 5.080) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 12 "C_S3") (uuid "830837c9-4cec-4fec-8c7a-40c0921a9302"))
|
||||
(pad "D2_ext" smd rect (at -1.250 5.080) (size 2.500 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 12 "C_S3") (uuid "68152166-2e60-40b7-9f30-1b2b3510e4c1"))
|
||||
(pad "D3" thru_hole circle (at 0.000 7.620) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 13 "C_S4") (uuid "5b040d51-18e4-4320-86b2-d62b01f7c105"))
|
||||
(pad "D3_ext" smd rect (at -1.250 7.620) (size 2.500 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 13 "C_S4") (uuid "b872c662-716f-432b-92d1-94a9d695840a"))
|
||||
(pad "D4" thru_hole circle (at 0.000 10.160) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 14 "C_S5") (uuid "1d2d094b-ab58-4680-8685-4cbd7b1539c4"))
|
||||
(pad "D4_ext" smd rect (at -1.250 10.160) (size 2.500 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 14 "C_S5") (uuid "2cdcd78d-6f40-4047-ae48-ee3564db08bc"))
|
||||
(pad "D5" thru_hole circle (at 0.000 12.700) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 15 "C_S6") (uuid "f61758f6-d402-4fb9-a76a-792e5fed462b"))
|
||||
(pad "D5_ext" smd rect (at -1.250 12.700) (size 2.500 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 15 "C_S6") (uuid "aeb44519-ae51-4ce4-a73b-7c5783a67dec"))
|
||||
(pad "D6" thru_hole circle (at 0.000 15.240) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 16 "C_S7") (uuid "c7cb01a5-81e1-437e-ad79-41aed8d55205"))
|
||||
(pad "D6_ext" smd rect (at -1.250 15.240) (size 2.500 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 16 "C_S7") (uuid "252d7758-687f-494a-95fc-cc02a6544d68"))
|
||||
)
|
||||
|
||||
(footprint "bm:XIAO_R" (layer "F.Cu")
|
||||
(at 120.500 104.500)
|
||||
(uuid "48745a48-98b4-446d-928b-3547bebd99b0")
|
||||
(fp_text reference "XIAO_R" (at 0 0) (layer "F.Fab") (uuid "5f82ce7e-f368-4b7d-9232-6a42aa4fae6c")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "6b3766e6-3e2e-46dd-9263-050f9a0ac1d4")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(pad "D10" thru_hole circle (at 0.000 0.000) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 17 "C_S8") (uuid "9884cfc9-6630-4e17-8dfe-e2743ffa95f9"))
|
||||
(pad "D10_ext" smd rect (at 1.250 0.000) (size 2.500 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 17 "C_S8") (uuid "dd4472ce-fd07-420c-9a44-7e33174ff0e2"))
|
||||
(pad "D9" thru_hole circle (at 0.000 2.540) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 8 "SPI_SCK") (uuid "504940f5-d577-414c-9402-efe99bcc3e43"))
|
||||
(pad "D9_ext" smd rect (at 1.250 2.540) (size 2.500 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 8 "SPI_SCK") (uuid "f6e7c4c7-d66f-485e-8f4e-2add177d3adc"))
|
||||
(pad "D8" thru_hole circle (at 0.000 5.080) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 6 "SPI_MOSI") (uuid "0f933d38-d98e-49f5-9cf2-45905eccf505"))
|
||||
(pad "D8_ext" smd rect (at 1.250 5.080) (size 2.500 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 6 "SPI_MOSI") (uuid "f8eb2db1-b401-4928-8d83-022515471300"))
|
||||
(pad "D7" thru_hole circle (at 0.000 7.620) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 7 "SPI_MISO") (uuid "6bdb1169-3776-471a-8cf9-53f54ca9433f"))
|
||||
(pad "D7_ext" smd rect (at 1.250 7.620) (size 2.500 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 7 "SPI_MISO") (uuid "012ecb11-f33a-4192-a79c-70ec3a396a82"))
|
||||
(pad "3V3" thru_hole circle (at 0.000 10.160) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 3 "C_3V3") (uuid "fe87aace-c849-4ae1-b48d-64531c6dfd7f"))
|
||||
(pad "3V3_ext" smd rect (at 1.250 10.160) (size 2.500 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 3 "C_3V3") (uuid "b8ff930b-9f56-4ebb-bab9-7c817ddc2aae"))
|
||||
(pad "GND" thru_hole circle (at 0.000 12.700) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (net 1 "GND") (uuid "fe3fa3ca-cb25-4889-8c23-f6cc62e5cc08"))
|
||||
(pad "GND_ext" smd rect (at 1.250 12.700) (size 2.500 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 1 "GND") (uuid "5d35ae55-9acb-4df2-a543-9ffca955e6dc"))
|
||||
(pad "5V" thru_hole circle (at 0 15.24) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (uuid "ebf46029-718e-458a-b79a-461d5e89048c"))
|
||||
)
|
||||
(gr_text "D0" (at 102.000 104.500) (layer "F.SilkS") (uuid "32840411-5531-46aa-b855-369ec2fb817a") (effects (font (size 0.4 0.4) (thickness 0.080))))
|
||||
(gr_text "D1" (at 102.000 107.040) (layer "F.SilkS") (uuid "3af3164e-58c2-4eb2-ad6f-2c0133d5f1a9") (effects (font (size 0.4 0.4) (thickness 0.080))))
|
||||
(gr_text "D2" (at 102.000 109.580) (layer "F.SilkS") (uuid "b0a86e22-6d61-484d-82b6-6985655e1c8e") (effects (font (size 0.4 0.4) (thickness 0.080))))
|
||||
(gr_text "D3" (at 102.000 112.120) (layer "F.SilkS") (uuid "1955aebd-63eb-445a-9446-e9ee23c4f4c3") (effects (font (size 0.4 0.4) (thickness 0.080))))
|
||||
(gr_text "D4" (at 102.000 114.660) (layer "F.SilkS") (uuid "a56b6f68-6279-4db2-b2d4-618c473c62cf") (effects (font (size 0.4 0.4) (thickness 0.080))))
|
||||
(gr_text "D5" (at 102.000 117.200) (layer "F.SilkS") (uuid "1d69a2ff-05b2-45d0-ad8e-74cf0e7b2c88") (effects (font (size 0.4 0.4) (thickness 0.080))))
|
||||
(gr_text "D6" (at 102.000 119.740) (layer "F.SilkS") (uuid "e8ce1a22-3b04-4268-b870-35cdf0071709") (effects (font (size 0.4 0.4) (thickness 0.080))))
|
||||
(gr_text "D10" (at 124.000 104.500) (layer "F.SilkS") (uuid "5dd2e93f-29f8-49ae-b782-c8f4ebeb8409") (effects (font (size 0.4 0.4) (thickness 0.080))))
|
||||
(gr_text "D9" (at 124.000 107.040) (layer "F.SilkS") (uuid "fbf4b0cc-da36-4f2a-823a-ff748bde9879") (effects (font (size 0.4 0.4) (thickness 0.080))))
|
||||
(gr_text "D8" (at 124.000 109.580) (layer "F.SilkS") (uuid "f522affe-54c9-4822-be3a-9d09ec9cc2f1") (effects (font (size 0.4 0.4) (thickness 0.080))))
|
||||
(gr_text "D7" (at 124.000 112.120) (layer "F.SilkS") (uuid "ed12d2f1-bd26-4a95-bb7f-5f959454496d") (effects (font (size 0.4 0.4) (thickness 0.080))))
|
||||
(gr_text "3V3" (at 124.000 114.660) (layer "F.SilkS") (uuid "0d9e54b8-8284-4aa3-9a7f-234e34e88b2c") (effects (font (size 0.4 0.4) (thickness 0.080))))
|
||||
(gr_text "GND" (at 124.000 117.200) (layer "F.SilkS") (uuid "0d64d025-59ae-495c-b81f-6a90b555bb7f") (effects (font (size 0.4 0.4) (thickness 0.080))))
|
||||
(gr_text "5V" (at 124.000 119.740) (layer "F.SilkS") (uuid "eb994112-6f2c-4b69-ae6c-34ddfde25340") (effects (font (size 0.4 0.4) (thickness 0.080))))
|
||||
(gr_rect (start 102.500 115.800) (end 107.500 122.200) (layer "F.SilkS") (width 0.15) (uuid "10d999fa-4170-4bf2-92be-a273d40b305c"))
|
||||
(gr_circle (center 103.500 121.200) (end 103.750 121.200) (layer "F.SilkS") (width 0.1) (fill solid) (uuid "69d44fa8-5763-45db-9560-34f02d96768f"))
|
||||
(gr_text "U2 IS25LP128F" (at 105.000 114.800) (layer "F.SilkS") (uuid "f0541a99-65e1-40e4-9786-7bf5c1979f41") (effects (font (size 0.4 0.4) (thickness 0.080))))
|
||||
(gr_text "●1" (at 102.800 122.700) (layer "F.SilkS") (uuid "28074b02-eeb5-473a-b50e-d877459f1fa6") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
|
||||
(footprint "bm:U2" (layer "F.Cu")
|
||||
(at 105.000 119.000)
|
||||
(uuid "eeb1632e-2ac0-4e48-a25a-e35bf5f37d33")
|
||||
(fp_text reference "U2" (at 0 0) (layer "F.Fab") (uuid "07c27233-41e0-4d3b-93bc-f72e1dc3d305")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "af27cccd-38ad-414e-80f9-becbac42ba8c")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(pad "1" smd rect (at -1.905 2.700) (size 0.600 1.500) (layers "F.Cu" "F.Paste" "F.Mask") (net 9 "FLASH_CS") (uuid "1060637d-2a1d-4260-a2c0-7327fa7f61de"))
|
||||
(pad "2" smd rect (at -0.635 2.700) (size 0.600 1.500) (layers "F.Cu" "F.Paste" "F.Mask") (net 7 "SPI_MISO") (uuid "af041413-3536-421e-b344-0cf51bc5a571"))
|
||||
(pad "3" smd rect (at 0.635 2.700) (size 0.600 1.500) (layers "F.Cu" "F.Paste" "F.Mask") (net 3 "C_3V3") (uuid "b02d8372-ca42-4f34-8d49-06cb4cb33eaa"))
|
||||
(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 "37f119e9-2622-4c33-84f6-1ad336275972"))
|
||||
(pad "5" smd rect (at 1.905 -2.700) (size 0.600 1.500) (layers "F.Cu" "F.Paste" "F.Mask") (net 6 "SPI_MOSI") (uuid "d17703a1-9598-4d2a-a9a6-592441596c96"))
|
||||
(pad "6" smd rect (at 0.635 -2.700) (size 0.600 1.500) (layers "F.Cu" "F.Paste" "F.Mask") (net 8 "SPI_SCK") (uuid "801e09b1-3f0e-4866-be65-4828e597a290"))
|
||||
(pad "7" smd rect (at -0.635 -2.700) (size 0.600 1.500) (layers "F.Cu" "F.Paste" "F.Mask") (net 3 "C_3V3") (uuid "6af62354-b745-418b-8513-fcdfe33aa2a3"))
|
||||
(pad "8" smd rect (at -1.905 -2.700) (size 0.600 1.500) (layers "F.Cu" "F.Paste" "F.Mask") (net 3 "C_3V3") (uuid "b742fc85-14c0-4eb5-a6ed-8626f356de09"))
|
||||
)
|
||||
|
||||
(footprint "bm:C3" (layer "F.Cu")
|
||||
(at 110.000 119.000)
|
||||
(uuid "9b293f49-5a52-40ce-af16-244875946894")
|
||||
(fp_text reference "C3" (at 0 0) (layer "F.Fab") (uuid "dd0c8bc1-3b82-4aeb-9fa9-a494bbbf97ac")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "baa9b95a-213a-45d8-bf04-9cbaa791f112")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(pad "1" smd rect (at -1.000 0.000) (size 1.000 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 3 "C_3V3") (uuid "797480c0-aa23-4971-8a2a-cc928660a4b0"))
|
||||
(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 "695b48dc-266a-419f-a2a8-1feaacd59418"))
|
||||
)
|
||||
(gr_text "C3 100n" (at 110.000 117.700) (layer "F.SilkS") (uuid "87e48e56-c232-4d1b-a01e-83cf57198333") (effects (font (size 0.35 0.35) (thickness 0.080))))
|
||||
|
||||
(footprint "bm:R2" (layer "F.Cu")
|
||||
(at 110.000 122.000)
|
||||
(uuid "4355a1ff-f0a8-46b4-ace3-bccc63526dd5")
|
||||
(fp_text reference "R2" (at 0 0) (layer "F.Fab") (uuid "573ed4b3-4522-4817-892c-11587476b3b8")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "6a3118f2-1889-4c78-b859-23ec10d891e7")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(pad "1" smd rect (at -1.000 0.000) (size 1.000 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 9 "FLASH_CS") (uuid "26e31f7e-04da-4ff0-8577-0ac0bdc857af"))
|
||||
(pad "2" smd rect (at 1.000 0.000) (size 1.000 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 3 "C_3V3") (uuid "c42fbb6b-b503-44b0-8def-32b15cfc39ea"))
|
||||
)
|
||||
(gr_text "R2 10K" (at 110.000 120.700) (layer "F.SilkS") (uuid "3cfca72b-83df-4604-bc1f-3225f16d2ae5") (effects (font (size 0.35 0.35) (thickness 0.080))))
|
||||
(gr_rect (start 118.800 117.900) (end 121.200 120.100) (layer "F.SilkS") (width 0.15) (uuid "8ea3a519-c668-4818-ac97-20afa75a0c79"))
|
||||
(gr_circle (center 119.200 119.600) (end 119.400 119.600) (layer "F.SilkS") (width 0.1) (fill solid) (uuid "cd3db26d-c76d-4082-9cc9-53dbccf03d3f"))
|
||||
(gr_text "U1 TPS61220" (at 120.000 116.800) (layer "F.SilkS") (uuid "74c5fd46-c16c-476f-b9b1-bac3f1ae775f") (effects (font (size 0.4 0.4) (thickness 0.080))))
|
||||
(gr_text "●1" (at 118.500 119.700) (layer "F.SilkS") (uuid "2ef30410-9c11-4bcf-ad51-ad8faf2af57f") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
|
||||
(footprint "bm:U1" (layer "F.Cu")
|
||||
(at 120.000 119.000)
|
||||
(uuid "963e5e6a-77e4-4261-bc4d-6fdf227c4e74")
|
||||
(fp_text reference "U1" (at 0 0) (layer "F.Fab") (uuid "01c75bb7-e8d1-4a05-9f1a-d4bc78cc7448")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "cc97d349-623c-4dd6-881c-0bb329eb15bf")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(pad "1" smd rect (at -0.650 0.700) (size 0.400 0.550) (layers "F.Cu" "F.Paste" "F.Mask") (net 2 "C_VBAT") (uuid "b847ff69-f2d8-4845-af95-426026b18651"))
|
||||
(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 "f5d62e8d-6029-4e6b-8198-65aa3d557d56"))
|
||||
(pad "3" smd rect (at 0.650 0.700) (size 0.400 0.550) (layers "F.Cu" "F.Paste" "F.Mask") (net 2 "C_VBAT") (uuid "93872455-4311-41eb-8bb4-302c36aa1cad"))
|
||||
(pad "4" smd rect (at 0.650 -0.700) (size 0.400 0.550) (layers "F.Cu" "F.Paste" "F.Mask") (net 3 "C_3V3") (uuid "46a00625-0f41-4859-b296-196745df0731"))
|
||||
(pad "5" smd rect (at -0.650 -0.700) (size 0.400 0.550) (layers "F.Cu" "F.Paste" "F.Mask") (net 4 "BOOST_SW") (uuid "e826909c-27e5-48f2-99d2-e6cd239ce52c"))
|
||||
)
|
||||
|
||||
(footprint "bm:L1" (layer "F.Cu")
|
||||
(at 116.000 119.000)
|
||||
(uuid "9e997d7b-3b52-43ed-8e35-843c44c9640b")
|
||||
(fp_text reference "L1" (at 0 0) (layer "F.Fab") (uuid "365afaa5-a21e-4478-9e03-7eb7c8eed3f1")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "4eabc636-a16e-41fe-ae22-7fa02edf5ddc")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(pad "1" smd rect (at -1.000 0.000) (size 1.000 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 4 "BOOST_SW") (uuid "de0ac487-cfaf-4c5e-9b67-e67e20b5805a"))
|
||||
(pad "2" smd rect (at 1.000 0.000) (size 1.000 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 2 "C_VBAT") (uuid "6a6147a4-f349-49c2-aa26-c4b8a0041e8a"))
|
||||
)
|
||||
(gr_text "L1 4.7u" (at 116.000 117.700) (layer "F.SilkS") (uuid "93b415e5-72b2-4784-9815-1b5383211b03") (effects (font (size 0.35 0.35) (thickness 0.080))))
|
||||
|
||||
(footprint "bm:C1" (layer "F.Cu")
|
||||
(at 116.000 122.000)
|
||||
(uuid "f951f085-fb58-4af4-9490-1de9ec829dc9")
|
||||
(fp_text reference "C1" (at 0 0) (layer "F.Fab") (uuid "17efd631-28b3-42dd-bea8-6da44e4ca8d3")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "a5fed5c4-97f6-4741-a5b5-e3f977105fb8")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(pad "1" smd rect (at -1.000 0.000) (size 1.000 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 2 "C_VBAT") (uuid "7e775c67-3e73-4fb0-881e-7faca3548a9d"))
|
||||
(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 "5153977d-22e2-4fd6-9d7a-98fb9715029e"))
|
||||
)
|
||||
(gr_text "C1 10u" (at 116.000 120.700) (layer "F.SilkS") (uuid "1bda24a2-6c5f-4e6c-b63e-a059efcb621e") (effects (font (size 0.35 0.35) (thickness 0.080))))
|
||||
|
||||
(footprint "bm:C2" (layer "F.Cu")
|
||||
(at 124.000 119.000)
|
||||
(uuid "f62440e5-8ac8-44fd-a72d-54dd79cf50ff")
|
||||
(fp_text reference "C2" (at 0 0) (layer "F.Fab") (uuid "a5753694-0481-4f82-93a1-12ffd92358fd")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "eef336bb-fdf3-4ea6-9b8b-b0688cb19204")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(pad "1" smd rect (at -1.000 0.000) (size 1.000 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 3 "C_3V3") (uuid "2e8e52d9-2ff5-45e7-acb9-1cbae39b1fe0"))
|
||||
(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 "7b97937e-098f-4e0c-bfaa-a78431554ff2"))
|
||||
)
|
||||
(gr_text "C2 10u" (at 124.000 117.700) (layer "F.SilkS") (uuid "b26186c7-59ae-4f5b-aa70-9d513b44b2b4") (effects (font (size 0.35 0.35) (thickness 0.080))))
|
||||
|
||||
(footprint "bm:R1" (layer "F.Cu")
|
||||
(at 120.000 113.000)
|
||||
(uuid "f748ae6e-8d82-4eaa-ba68-287792efa120")
|
||||
(fp_text reference "R1" (at 0 0) (layer "F.Fab") (uuid "58de0583-ac80-4644-af63-1b12bf3c7258")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "dcf55329-41d6-4736-bf46-36a963515885")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(pad "1" smd rect (at -1.000 0.000) (size 1.000 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 17 "C_S8") (uuid "56d7dc2e-e471-46e2-968c-7b9d694bbffd"))
|
||||
(pad "2" smd rect (at 1.000 0.000) (size 1.000 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 5 "AUDIO_FILT") (uuid "ad705d20-d3bd-4574-9cb8-efd98c2a2eb0"))
|
||||
)
|
||||
(gr_text "R1 4.7K" (at 120.000 111.700) (layer "F.SilkS") (uuid "bdb0dee7-31f7-4c5f-abe8-c0d9feb0d876") (effects (font (size 0.35 0.35) (thickness 0.080))))
|
||||
|
||||
(footprint "bm:C5" (layer "F.Cu")
|
||||
(at 124.000 113.000)
|
||||
(uuid "b403dab6-1e19-4417-af03-6b360aa7a953")
|
||||
(fp_text reference "C5" (at 0 0) (layer "F.Fab") (uuid "972fde16-b367-46be-9bb7-3a7842b72e82")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "cdf733f2-27b4-4d70-aaa3-8c09fc8ee6d4")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(pad "1" smd rect (at -1.000 0.000) (size 1.000 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 5 "AUDIO_FILT") (uuid "31ab9bc2-3957-441e-b932-e67756c66c63"))
|
||||
(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 "28d00756-6c12-4008-aa33-53dd7538247f"))
|
||||
)
|
||||
(gr_text "C5 10n" (at 124.000 111.700) (layer "F.SilkS") (uuid "ea19d5e4-361c-460c-abf1-88ff5700a5b1") (effects (font (size 0.35 0.35) (thickness 0.080))))
|
||||
(gr_rect (start 107.000 121.000) (end 119.000 124.000) (layer "F.SilkS") (width 0.15) (uuid "762b0b26-d437-4f12-9598-6301434bc78b"))
|
||||
(gr_text "J1 FPC-20 0.5mm" (at 113.000 120.000) (layer "F.SilkS") (uuid "2cd50abf-b341-4837-9d06-af14500fdd77") (effects (font (size 0.4 0.4) (thickness 0.080))))
|
||||
(gr_circle (center 107.650 122.500) (end 107.800 122.500) (layer "F.SilkS") (width 0.1) (fill solid) (uuid "20794221-f961-4388-bc97-24e5bbbafbc8"))
|
||||
|
||||
(footprint "bm:J1_FPC" (layer "F.Cu")
|
||||
(at 113.000 122.500)
|
||||
(uuid "19cfa1f2-b5a5-4dec-aeff-dc17b4121836")
|
||||
(fp_text reference "J1_FPC" (at 0 0) (layer "F.Fab") (uuid "25c3db5a-d287-4cdd-a0ad-375c2ca30dec")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "75044527-bcc7-4d9a-b7c7-e818e59317e5")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(pad "1" smd rect (at -4.750 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 18 "FPC_C1") (uuid "d6f099ae-e2dd-4f66-99c5-5a226d56d698"))
|
||||
(pad "2" smd rect (at -4.250 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 19 "FPC_C2") (uuid "c079224d-4ebe-4666-84a1-ffafcb73753c"))
|
||||
(pad "3" smd rect (at -3.750 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 20 "FPC_C3") (uuid "a7d762a0-da09-4df3-ae4e-828051267370"))
|
||||
(pad "4" smd rect (at -3.250 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 21 "FPC_C4") (uuid "b2837c57-574f-4a40-8527-6df58cb5814f"))
|
||||
(pad "5" smd rect (at -2.750 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 22 "FPC_C5") (uuid "ca76ba7a-f453-4964-935b-c1bf21a053f3"))
|
||||
(pad "6" smd rect (at -2.250 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 23 "FPC_C6") (uuid "d299f650-8ff9-4735-987e-c47602414db8"))
|
||||
(pad "7" smd rect (at -1.750 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 24 "FPC_C7") (uuid "abae1514-1d63-47d6-a0bf-9ecc5897caff"))
|
||||
(pad "8" smd rect (at -1.250 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 25 "FPC_C8") (uuid "0a32016b-0d7a-4b22-a87b-e42bd9c5e48a"))
|
||||
(pad "9" smd rect (at -0.750 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 26 "FPC_C9") (uuid "863f3a30-7703-404e-a6a3-694e20aee0de"))
|
||||
(pad "10" smd rect (at -0.250 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 27 "FPC_C10") (uuid "7dc10a2e-998d-4336-a4be-5d116735c546"))
|
||||
(pad "11" smd rect (at 0.250 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 28 "FPC_C11") (uuid "c79a607d-9fa8-4029-b023-c9cc1466c6f9"))
|
||||
(pad "12" smd rect (at 0.750 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 29 "FPC_C12") (uuid "d6441313-24c7-4166-bc40-0535a364572e"))
|
||||
(pad "13" smd rect (at 1.250 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 30 "FPC_C13") (uuid "4153bf5c-86f4-4ac9-91a7-5c12d4da90a6"))
|
||||
(pad "14" smd rect (at 1.750 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 31 "FPC_C14") (uuid "e7ee20e5-9313-4127-8d71-1c0805d90317"))
|
||||
(pad "15" smd rect (at 2.250 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 32 "FPC_C15") (uuid "5c0255c2-4682-4d60-ba54-979c5af4bd70"))
|
||||
(pad "16" smd rect (at 2.750 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 33 "FPC_C16") (uuid "921c3377-a2e0-4283-9b85-d71c484d2a97"))
|
||||
(pad "17" smd rect (at 3.250 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 34 "FPC_C17") (uuid "644ad356-d452-4c72-9ff0-d29b2ebd7b8b"))
|
||||
(pad "18" smd rect (at 3.750 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 35 "FPC_C18") (uuid "de54aa31-4919-4127-aced-82a2ef2e6ba4"))
|
||||
(pad "19" smd rect (at 4.250 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 36 "FPC_C19") (uuid "544a9ab2-16ef-482a-b0ae-c929694bde49"))
|
||||
(pad "20" smd rect (at 4.750 0.000) (size 0.300 1.200) (layers "F.Cu" "F.Paste" "F.Mask") (net 37 "FPC_C20") (uuid "431399d8-2791-47a1-8ccc-28d9cd01e59a"))
|
||||
(pad "SA" smd rect (at -6.000 2.000) (size 1.500 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "12572b12-1e3d-4948-8a24-ff791b87a85e"))
|
||||
(pad "SB" smd rect (at 6.000 2.000) (size 1.500 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "5cf56352-7c4d-47e3-8e18-616a42f2ae33"))
|
||||
)
|
||||
|
||||
(footprint "bm:MH" (layer "F.Cu")
|
||||
(at 102.000 102.000)
|
||||
(uuid "03674a7f-9385-4e6d-b579-89b3abede418")
|
||||
(fp_text reference "MH" (at 0 0) (layer "F.Fab") (uuid "7ccb9564-7ccb-4bb4-907f-da577d241da0")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "7f905ce4-a12f-40be-8a0f-a9c0d34c6951")
|
||||
(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 "cdcd6619-eeec-4d9e-a703-744dcec3891b"))
|
||||
)
|
||||
|
||||
(footprint "bm:MH" (layer "F.Cu")
|
||||
(at 124.000 102.000)
|
||||
(uuid "b7d0cbca-5472-4c07-978d-e2d8a3374b61")
|
||||
(fp_text reference "MH" (at 0 0) (layer "F.Fab") (uuid "a5fa6328-87e3-4d8e-92ca-1475519e8e68")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "b63d96b0-0401-47b5-9b65-f424af0adc20")
|
||||
(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 "21143b98-956d-43df-93a6-78ab7e85e327"))
|
||||
)
|
||||
(gr_text "A8" (at 113.000 128.000) (layer "F.SilkS") (uuid "49856665-93c8-40f9-9d99-95466e0feb46") (effects (font (size 0.5 0.5) (thickness 0.080))))
|
||||
|
||||
(footprint "bm:A8_cast" (layer "B.Cu")
|
||||
(at 113.000 128.000)
|
||||
(uuid "f0ca5498-dbeb-4510-882d-4b5e3fc3d1fa")
|
||||
(fp_text reference "A8_cast" (at 0 0) (layer "B.Fab") (uuid "0136d0c3-208f-4a60-ba0c-0a35abfc604d")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(fp_text value "" (at 0 0) (layer "B.Fab") (uuid "624eb998-da3b-4a8b-983a-6f078f0df88f")
|
||||
(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 38 "A8_P1") (uuid "e9d6835b-09b0-46c7-8883-c4f1490b6740"))
|
||||
(pad "8" thru_hole circle (at -1.905 -1.950) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 45 "A8_P8") (uuid "721b32b4-617b-4414-8b14-9102a6702567"))
|
||||
(pad "2" thru_hole circle (at -0.635 1.950) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 39 "A8_P2") (uuid "2b8168d8-6d36-4e36-aa5e-9b1a4c0b3f7a"))
|
||||
(pad "7" thru_hole circle (at -0.635 -1.950) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 44 "A8_P7") (uuid "2139692c-8fe6-4d67-a7e7-58342c1d4e63"))
|
||||
(pad "3" thru_hole circle (at 0.635 1.950) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 40 "A8_P3") (uuid "bf22b362-8835-43c1-bc54-152c9344a7df"))
|
||||
(pad "6" thru_hole circle (at 0.635 -1.950) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 43 "A8_P6") (uuid "250d1c37-8f91-4848-89f6-5746f95f2073"))
|
||||
(pad "4" thru_hole circle (at 1.905 1.950) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 41 "A8_P4") (uuid "dacd7ba7-5f1e-4724-a8bf-1ff874057031"))
|
||||
(pad "5" thru_hole circle (at 1.905 -1.950) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 42 "A8_P5") (uuid "981a185a-fb98-4a16-a2a6-28e49b7d76a7"))
|
||||
)
|
||||
(gr_text "1" (at 111.095 130.650) (layer "F.SilkS") (uuid "dc34c3c5-5e44-4e26-82f6-55617e409842") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "8" (at 111.095 125.350) (layer "F.SilkS") (uuid "df026f8a-218b-4736-83df-267d0c5ee6b4") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "2" (at 112.365 130.650) (layer "F.SilkS") (uuid "ba669a8f-826c-4464-9b80-d5fd7cbcb42b") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "7" (at 112.365 125.350) (layer "F.SilkS") (uuid "9793916e-0574-4553-855b-2d17217cbc3c") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "3" (at 113.635 130.650) (layer "F.SilkS") (uuid "54ea836e-7879-4401-8026-cbd7bbb6ca1c") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "6" (at 113.635 125.350) (layer "F.SilkS") (uuid "aba90156-ebf5-4180-bca6-91a80cda0e9a") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "4" (at 114.905 130.650) (layer "F.SilkS") (uuid "b4b1a7b2-bc3d-478a-9002-e63e39252ed8") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "5" (at 114.905 125.350) (layer "F.SilkS") (uuid "89c61b92-7dfa-44d5-a926-1ca74340b650") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_circle (center 110.595 130.450) (end 110.795 130.450) (layer "F.SilkS") (width 0.1) (fill solid) (uuid "bd77be42-ad11-4122-9801-2b68492b0db9"))
|
||||
|
||||
(footprint "bm:A8_FPC" (layer "F.Cu")
|
||||
(at 113.000 128.000)
|
||||
(uuid "37de2937-ce4e-4fdc-a417-6a75971a1878")
|
||||
(fp_text reference "A8_FPC" (at 0 0) (layer "F.Fab") (uuid "99c485b0-3162-4950-ac25-0f0796a60d77")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "3e0370fe-27d0-4661-a444-1056a2057729")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(pad "F1" smd rect (at -2.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 48 "FPC_A8_1") (uuid "b4da56b2-6f3c-4491-b2fc-793c8d3a8aca"))
|
||||
(pad "F2" smd rect (at -1.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 49 "FPC_A8_2") (uuid "8ccc7c9b-9b1b-48d1-8498-d40cf445bd47"))
|
||||
(pad "F3" smd rect (at -1.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 50 "FPC_A8_3") (uuid "2eefc767-126a-4294-8b74-c5da07fe9a94"))
|
||||
(pad "F4" smd rect (at -0.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 51 "FPC_A8_4") (uuid "3bab7c10-243c-47d4-a45a-c4c5304204b9"))
|
||||
(pad "F5" smd rect (at -0.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 52 "FPC_A8_5") (uuid "4efbd9e9-1181-4aa7-9990-de9e7bc1c250"))
|
||||
(pad "F6" smd rect (at 0.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 53 "FPC_A8_6") (uuid "7e980de6-4e5f-4607-a1d6-116a3cb37811"))
|
||||
(pad "F7" smd rect (at 0.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 54 "FPC_A8_7") (uuid "dfe83fea-3d82-4a84-957b-d93488130672"))
|
||||
(pad "F8" smd rect (at 1.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 55 "FPC_A8_8") (uuid "beeef48f-b21e-4f14-9b7b-0cb8188a9f3a"))
|
||||
(pad "F9" smd rect (at 1.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 47 "A8_GND") (uuid "5634eb19-8f54-4d05-bb2e-7f6ad3ecf758"))
|
||||
(pad "F10" smd rect (at 2.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 46 "A8_VBAT") (uuid "832739d4-c871-4995-94d9-28cd55438af6"))
|
||||
(pad "SA" smd rect (at -3.500 1.500) (size 1.200 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "c5ab104c-a883-4ef9-bc4a-303ec3a016d3"))
|
||||
(pad "SB" smd rect (at 3.500 1.500) (size 1.200 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "0197ef78-fd59-49bc-b9a0-24cf1c6cb1d6"))
|
||||
)
|
||||
(gr_text "FPC" (at 113.000 126.500) (layer "F.SilkS") (uuid "90530fa1-e7e9-4b9e-8f21-0fa2424a1f58") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_circle (center 110.250 128.000) (end 110.400 128.000) (layer "F.SilkS") (width 0.1) (fill solid) (uuid "89d7a751-4e18-4501-94cf-ae12bad5ce55"))
|
||||
(gr_text "A16N" (at 113.000 137.000) (layer "F.SilkS") (uuid "aeedd7fd-a80e-43fc-b285-2ec3f9f02b9c") (effects (font (size 0.5 0.5) (thickness 0.080))))
|
||||
|
||||
(footprint "bm:A16N_cast" (layer "B.Cu")
|
||||
(at 113.000 137.000)
|
||||
(uuid "6dfb49d1-2ba9-4ae8-8a94-4add8ec3b82c")
|
||||
(fp_text reference "A16N_cast" (at 0 0) (layer "B.Fab") (uuid "5e3e1b16-6dff-4fee-b4d0-12e962d61078")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(fp_text value "" (at 0 0) (layer "B.Fab") (uuid "fd80f108-e2cd-4a18-bb89-dcb5a47440ac")
|
||||
(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 58 "A16N_P1") (uuid "4b97ab18-8d2e-446a-bf3c-571f9c9d5a54"))
|
||||
(pad "16" thru_hole circle (at -4.445 -3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 73 "A16N_P16") (uuid "6cfe58a9-a16f-4ae5-9cbc-1a23e69613ba"))
|
||||
(pad "2" thru_hole circle (at -3.175 3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 59 "A16N_P2") (uuid "82a27c68-c209-4a69-acdc-0f6793646324"))
|
||||
(pad "15" thru_hole circle (at -3.175 -3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 72 "A16N_P15") (uuid "31c08b65-c6d0-4890-854a-7ada51d87a25"))
|
||||
(pad "3" thru_hole circle (at -1.905 3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 60 "A16N_P3") (uuid "46d10b18-459b-4b0f-a1d8-3f2f31cbde51"))
|
||||
(pad "14" thru_hole circle (at -1.905 -3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 71 "A16N_P14") (uuid "ebad1736-4178-467f-b2bf-eb9e26bb8b6b"))
|
||||
(pad "4" thru_hole circle (at -0.635 3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 61 "A16N_P4") (uuid "da95db98-5927-4550-b1d7-00ac317953d7"))
|
||||
(pad "13" thru_hole circle (at -0.635 -3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 70 "A16N_P13") (uuid "d0f06a80-3212-4170-bc6c-af1c2d43f191"))
|
||||
(pad "5" thru_hole circle (at 0.635 3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 62 "A16N_P5") (uuid "c04f46cc-0523-44b5-8e68-520d4483af19"))
|
||||
(pad "12" thru_hole circle (at 0.635 -3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 69 "A16N_P12") (uuid "7a39b886-895e-4237-9563-27a9d8b86abb"))
|
||||
(pad "6" thru_hole circle (at 1.905 3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 63 "A16N_P6") (uuid "f50c7366-d4d4-4579-af55-359f42236019"))
|
||||
(pad "11" thru_hole circle (at 1.905 -3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 68 "A16N_P11") (uuid "0e14f554-a439-4dfd-80f9-1f5745df4f77"))
|
||||
(pad "7" thru_hole circle (at 3.175 3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 64 "A16N_P7") (uuid "b9fc1901-39fc-4d39-a465-44ae9cf3d4c2"))
|
||||
(pad "10" thru_hole circle (at 3.175 -3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 67 "A16N_P10") (uuid "446282fc-86dc-4b54-abfa-c13a3d9f74ee"))
|
||||
(pad "8" thru_hole circle (at 4.445 3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 65 "A16N_P8") (uuid "ad8f95e8-893a-4dde-98fb-f3ca7ebc9e19"))
|
||||
(pad "9" thru_hole circle (at 4.445 -3.000) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 66 "A16N_P9") (uuid "0f7a0530-9369-48d6-9e0b-3fd7230ad59f"))
|
||||
)
|
||||
(gr_text "1" (at 108.555 140.700) (layer "F.SilkS") (uuid "fa5aaf65-ab8b-4175-8cb0-50f57436e6b8") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "16" (at 108.555 133.300) (layer "F.SilkS") (uuid "4b896783-f68b-4f76-a6b1-de42db1d5ab3") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "2" (at 109.825 140.700) (layer "F.SilkS") (uuid "bf75c4b5-2b34-4b0f-868e-da1b41bfcb84") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "15" (at 109.825 133.300) (layer "F.SilkS") (uuid "16bc56f1-ab1c-48d2-8d05-5ff3ccc65769") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "3" (at 111.095 140.700) (layer "F.SilkS") (uuid "c917d263-3bf6-4844-a386-3165bac6925a") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "14" (at 111.095 133.300) (layer "F.SilkS") (uuid "06534565-e708-4e18-8bf7-2b86046e8528") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "4" (at 112.365 140.700) (layer "F.SilkS") (uuid "0a70e4be-d096-4693-a80e-c0fb1276d31c") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "13" (at 112.365 133.300) (layer "F.SilkS") (uuid "855f7112-e90d-4781-8b7d-afcd944e2a62") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "5" (at 113.635 140.700) (layer "F.SilkS") (uuid "b172e232-ad56-4b07-bd08-9f17231a65c1") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "12" (at 113.635 133.300) (layer "F.SilkS") (uuid "949fa22b-0496-4c8e-bfed-3ee3ac36e7ea") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "6" (at 114.905 140.700) (layer "F.SilkS") (uuid "485e93da-637b-4b8a-850e-7fb203186f39") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "11" (at 114.905 133.300) (layer "F.SilkS") (uuid "f7f71eee-1a22-46e8-a7f7-a336d2295684") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "7" (at 116.175 140.700) (layer "F.SilkS") (uuid "88454b69-2e7e-4807-8f15-5f2ba0cbaf04") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "10" (at 116.175 133.300) (layer "F.SilkS") (uuid "0c754e09-4df9-43a4-8b5f-1aacaf0777ce") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "8" (at 117.445 140.700) (layer "F.SilkS") (uuid "b117770c-9b8b-4e70-b8cc-e8f62c0a47a7") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "9" (at 117.445 133.300) (layer "F.SilkS") (uuid "27a94798-4c0f-4226-95fe-fb1dbdc21ee0") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_circle (center 108.055 140.500) (end 108.255 140.500) (layer "F.SilkS") (width 0.1) (fill solid) (uuid "4c1a3c18-2ee9-42e0-8bc6-737b451f80e4"))
|
||||
|
||||
(footprint "bm:A16N_FPC" (layer "F.Cu")
|
||||
(at 113.000 137.000)
|
||||
(uuid "8e9f970b-ca12-4814-ad94-1fd0b5a3852c")
|
||||
(fp_text reference "A16N_FPC" (at 0 0) (layer "F.Fab") (uuid "ed8014e7-860d-47f7-a14c-5f05245686db")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "5a373ac3-80f4-4023-bfcd-67b4453453d7")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(pad "F1" smd rect (at -4.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 76 "FPC_A16N_1") (uuid "0bc555f5-780c-4d00-a342-239ec5acaa4f"))
|
||||
(pad "F2" smd rect (at -4.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 77 "FPC_A16N_2") (uuid "ae2171e2-e78e-4b74-b8f7-e389872c5f70"))
|
||||
(pad "F3" smd rect (at -3.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 78 "FPC_A16N_3") (uuid "97bb0e99-e4c1-4c13-8bbd-e279e66e3d3f"))
|
||||
(pad "F4" smd rect (at -3.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 79 "FPC_A16N_4") (uuid "4138072b-5dc9-4396-b6b2-f8031062ab3f"))
|
||||
(pad "F5" smd rect (at -2.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 80 "FPC_A16N_5") (uuid "765ea27f-4c43-4e49-8902-e4a8981f8172"))
|
||||
(pad "F6" smd rect (at -2.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 81 "FPC_A16N_6") (uuid "aad7d33c-f605-4e52-85e6-b9bd2f8e88e2"))
|
||||
(pad "F7" smd rect (at -1.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 82 "FPC_A16N_7") (uuid "56a6a615-377e-4529-a51c-b92d8ee264ee"))
|
||||
(pad "F8" smd rect (at -1.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 83 "FPC_A16N_8") (uuid "fd3d0b79-cd64-419b-a05b-b3d27c3cf6da"))
|
||||
(pad "F9" smd rect (at -0.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 84 "FPC_A16N_9") (uuid "755fcea3-e219-4688-941f-171845a52b32"))
|
||||
(pad "F10" smd rect (at -0.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 85 "FPC_A16N_10") (uuid "a6ef5721-49c6-457e-a0c8-49f92b8a9699"))
|
||||
(pad "F11" smd rect (at 0.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 86 "FPC_A16N_11") (uuid "18de422e-5f1e-4878-990a-a055b5d360a7"))
|
||||
(pad "F12" smd rect (at 0.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 87 "FPC_A16N_12") (uuid "e24dee78-6ecc-4140-8c37-6642840d4806"))
|
||||
(pad "F13" smd rect (at 1.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 88 "FPC_A16N_13") (uuid "ee9acadb-1a2d-4dd2-ae58-9952e554dcf3"))
|
||||
(pad "F14" smd rect (at 1.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 89 "FPC_A16N_14") (uuid "a14aee8b-2691-460d-9639-ccf960ad5dbb"))
|
||||
(pad "F15" smd rect (at 2.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 90 "FPC_A16N_15") (uuid "34695dc7-80e4-4428-9cad-36a0a0da67de"))
|
||||
(pad "F16" smd rect (at 2.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 91 "FPC_A16N_16") (uuid "c4366022-dca4-4836-83f7-6ba9c55b5cf1"))
|
||||
(pad "F17" smd rect (at 3.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 92 "FPC_A16N_17") (uuid "fd493c98-97e0-4d0d-9546-031173746b50"))
|
||||
(pad "F18" smd rect (at 3.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 93 "FPC_A16N_18") (uuid "295f88d6-b156-4a1a-aaa6-3049b4b73928"))
|
||||
(pad "F19" smd rect (at 4.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 75 "A16N_GND") (uuid "9e117ab1-b77a-477e-ab40-4c7c9658e888"))
|
||||
(pad "F20" smd rect (at 4.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 74 "A16N_VBAT") (uuid "727cf874-f5b0-4154-b0cb-3a0b7f302a59"))
|
||||
(pad "SA" smd rect (at -6.000 1.500) (size 1.200 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "572afd92-9a36-437f-a337-ab448e7154f8"))
|
||||
(pad "SB" smd rect (at 6.000 1.500) (size 1.200 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "8039bca5-e25c-4b19-b08e-4cb089df2e7d"))
|
||||
)
|
||||
(gr_text "FPC" (at 113.000 135.500) (layer "F.SilkS") (uuid "1bf5f1b5-c314-4b7a-99ac-80311b9a0cf3") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_circle (center 107.750 137.000) (end 107.900 137.000) (layer "F.SilkS") (width 0.1) (fill solid) (uuid "b3528300-d618-4c81-af50-380273cd1cbf"))
|
||||
(gr_text "A16W" (at 113.000 149.000) (layer "F.SilkS") (uuid "f0d667bc-8cc2-4a5d-a744-03dd2e88cd29") (effects (font (size 0.5 0.5) (thickness 0.080))))
|
||||
|
||||
(footprint "bm:A16W_cast" (layer "B.Cu")
|
||||
(at 113.000 149.000)
|
||||
(uuid "99503dc6-2bf5-4029-bad1-3f483c6719a4")
|
||||
(fp_text reference "A16W_cast" (at 0 0) (layer "B.Fab") (uuid "ce0f3024-68c9-4479-abd9-f0f7b073d89c")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(fp_text value "" (at 0 0) (layer "B.Fab") (uuid "f0163b26-b21d-4eb9-b8db-78ea3b94b299")
|
||||
(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 96 "A16W_P1") (uuid "056b8409-e52c-42f2-8079-69f7c8187cb5"))
|
||||
(pad "16" thru_hole circle (at -4.445 -5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 111 "A16W_P16") (uuid "b35c4a4a-4815-4caf-b70b-50ce83c281a6"))
|
||||
(pad "2" thru_hole circle (at -3.175 5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 97 "A16W_P2") (uuid "f8595b8a-933e-4402-801f-6c206995bb4a"))
|
||||
(pad "15" thru_hole circle (at -3.175 -5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 110 "A16W_P15") (uuid "2d6caaab-a2ce-4395-af75-0e8edfcf71e8"))
|
||||
(pad "3" thru_hole circle (at -1.905 5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 98 "A16W_P3") (uuid "d19a4f5a-90a8-4900-86a5-48c68e78de74"))
|
||||
(pad "14" thru_hole circle (at -1.905 -5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 109 "A16W_P14") (uuid "e6728212-0b5e-4472-b3ff-18993837b3e5"))
|
||||
(pad "4" thru_hole circle (at -0.635 5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 99 "A16W_P4") (uuid "47b1649d-bcd5-49fe-96dd-5b1565f293c7"))
|
||||
(pad "13" thru_hole circle (at -0.635 -5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 108 "A16W_P13") (uuid "140b4446-32e4-498f-8550-432ac506f87f"))
|
||||
(pad "5" thru_hole circle (at 0.635 5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 100 "A16W_P5") (uuid "829e8f71-f092-481a-a55d-a1e4cb2a41b7"))
|
||||
(pad "12" thru_hole circle (at 0.635 -5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 107 "A16W_P12") (uuid "12713997-0538-4ada-bcee-4ffb1a1f6688"))
|
||||
(pad "6" thru_hole circle (at 1.905 5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 101 "A16W_P6") (uuid "bf05bc8b-3e1b-4a9a-8bbb-1ecc754ff9be"))
|
||||
(pad "11" thru_hole circle (at 1.905 -5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 106 "A16W_P11") (uuid "46989dc2-6771-45e5-9be3-8f02029dfcce"))
|
||||
(pad "7" thru_hole circle (at 3.175 5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 102 "A16W_P7") (uuid "3cc92b16-b684-45d5-b738-30b95f9ef4e6"))
|
||||
(pad "10" thru_hole circle (at 3.175 -5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 105 "A16W_P10") (uuid "de956d6a-3889-4cdb-ad69-21715d25fd12"))
|
||||
(pad "8" thru_hole circle (at 4.445 5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 103 "A16W_P8") (uuid "b5999f7b-2242-4637-bad8-377e9ce670eb"))
|
||||
(pad "9" thru_hole circle (at 4.445 -5.150) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net 104 "A16W_P9") (uuid "8d42d6ab-3480-4e71-a135-06bd90a0c23b"))
|
||||
)
|
||||
(gr_text "1" (at 108.555 154.850) (layer "F.SilkS") (uuid "e876a39a-7360-4980-b87b-cc4235359c3b") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "16" (at 108.555 143.150) (layer "F.SilkS") (uuid "05cd49c5-94fa-45bf-a72e-3fcfca902992") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "2" (at 109.825 154.850) (layer "F.SilkS") (uuid "8506690f-7712-486e-a1ae-8636ef231b5f") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "15" (at 109.825 143.150) (layer "F.SilkS") (uuid "18fd3746-13ff-40ce-8a01-1ad805ed5db9") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "3" (at 111.095 154.850) (layer "F.SilkS") (uuid "14b384c9-df5f-4412-bcc1-74adab757a06") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "14" (at 111.095 143.150) (layer "F.SilkS") (uuid "fceecbc6-0e35-4311-be15-c39f931e6357") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "4" (at 112.365 154.850) (layer "F.SilkS") (uuid "c1df4942-a775-478c-96c5-252df73b33df") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "13" (at 112.365 143.150) (layer "F.SilkS") (uuid "7d83a0f2-f1de-49ae-82c4-d6bf21de42d4") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "5" (at 113.635 154.850) (layer "F.SilkS") (uuid "b619d081-a89c-4b99-87e2-22dfaad3ba77") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "12" (at 113.635 143.150) (layer "F.SilkS") (uuid "91950814-a1ae-444a-981a-802854e8738a") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "6" (at 114.905 154.850) (layer "F.SilkS") (uuid "b801344b-47bd-4230-9a5b-62b24672eb98") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "11" (at 114.905 143.150) (layer "F.SilkS") (uuid "7f3df10e-8c09-4c24-80c4-3b7f2b0efeec") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "7" (at 116.175 154.850) (layer "F.SilkS") (uuid "f87dd1be-e7ea-4e75-93bb-15d98a54b03b") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "10" (at 116.175 143.150) (layer "F.SilkS") (uuid "e6586e20-8a6e-4335-903a-4d3b0b9ac173") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "8" (at 117.445 154.850) (layer "F.SilkS") (uuid "ff0d5117-bb33-4b3d-896c-24567b7176a9") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_text "9" (at 117.445 143.150) (layer "F.SilkS") (uuid "b197a1a5-c0ff-42d2-b422-6f7ea5db60bf") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_circle (center 108.055 154.650) (end 108.255 154.650) (layer "F.SilkS") (width 0.1) (fill solid) (uuid "ac9e7c36-489e-44f0-acca-52f10b01f048"))
|
||||
|
||||
(footprint "bm:A16W_FPC" (layer "F.Cu")
|
||||
(at 113.000 149.000)
|
||||
(uuid "970aabd5-4f8b-4986-a3b2-e62f3bb4a11d")
|
||||
(fp_text reference "A16W_FPC" (at 0 0) (layer "F.Fab") (uuid "65882fcf-a241-4793-a510-e6a4f14298a5")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(fp_text value "" (at 0 0) (layer "F.Fab") (uuid "5768ec21-8078-4053-a96e-a7bc20b3e5d1")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))
|
||||
(pad "F1" smd rect (at -4.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 114 "FPC_A16W_1") (uuid "d1ad76b1-4ba6-4f5d-b0f4-c39eff22367b"))
|
||||
(pad "F2" smd rect (at -4.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 115 "FPC_A16W_2") (uuid "98a3c7d8-ef20-4a50-bd90-553a5807bc56"))
|
||||
(pad "F3" smd rect (at -3.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 116 "FPC_A16W_3") (uuid "8c48c459-4d7c-49a6-8688-f9783f514fe5"))
|
||||
(pad "F4" smd rect (at -3.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 117 "FPC_A16W_4") (uuid "98b83623-57b1-4272-95bc-7f00a15e2143"))
|
||||
(pad "F5" smd rect (at -2.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 118 "FPC_A16W_5") (uuid "92577cba-a544-4943-8116-14d4f340d6c6"))
|
||||
(pad "F6" smd rect (at -2.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 119 "FPC_A16W_6") (uuid "271dba86-2272-4ee1-b0cc-92fd3d4d5414"))
|
||||
(pad "F7" smd rect (at -1.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 120 "FPC_A16W_7") (uuid "6e43b6b9-1bc3-4421-ade1-5c159f8175be"))
|
||||
(pad "F8" smd rect (at -1.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 121 "FPC_A16W_8") (uuid "818400d5-3c4a-4908-ba40-95a6e561d3b9"))
|
||||
(pad "F9" smd rect (at -0.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 122 "FPC_A16W_9") (uuid "f0631815-1616-4abe-9aa4-0c84e97e0a06"))
|
||||
(pad "F10" smd rect (at -0.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 123 "FPC_A16W_10") (uuid "8a5bee5e-eba2-4485-88dc-dcfd206dbff3"))
|
||||
(pad "F11" smd rect (at 0.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 124 "FPC_A16W_11") (uuid "3cff834e-a417-449c-8945-e8004f330477"))
|
||||
(pad "F12" smd rect (at 0.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 125 "FPC_A16W_12") (uuid "cb6174d8-5058-4c4d-a30d-71385c782c1c"))
|
||||
(pad "F13" smd rect (at 1.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 126 "FPC_A16W_13") (uuid "360b448b-93a8-4b26-a64a-4979b29df940"))
|
||||
(pad "F14" smd rect (at 1.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 127 "FPC_A16W_14") (uuid "a026958f-077b-4917-9b94-47cd3ae98eb1"))
|
||||
(pad "F15" smd rect (at 2.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 128 "FPC_A16W_15") (uuid "5c6b855a-f326-43c2-aebb-f5deaca0f1ea"))
|
||||
(pad "F16" smd rect (at 2.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 129 "FPC_A16W_16") (uuid "deb34697-4345-4bb7-9a2f-7ee70445d057"))
|
||||
(pad "F17" smd rect (at 3.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 130 "FPC_A16W_17") (uuid "c4d33771-2f82-4ad4-8937-d15ef5915856"))
|
||||
(pad "F18" smd rect (at 3.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 131 "FPC_A16W_18") (uuid "4c767cfd-09de-4c67-884f-c8f962105d68"))
|
||||
(pad "F19" smd rect (at 4.250 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 113 "A16W_GND") (uuid "db2338f4-bf36-48fa-bd02-7d9acdf7a57d"))
|
||||
(pad "F20" smd rect (at 4.750 0.000) (size 0.300 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 112 "A16W_VBAT") (uuid "2040e8b6-bb10-4a57-a802-a616edebe6a9"))
|
||||
(pad "SA" smd rect (at -6.000 1.500) (size 1.200 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "9718e42f-cd94-4536-bb3b-22c35a22d355"))
|
||||
(pad "SB" smd rect (at 6.000 1.500) (size 1.200 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 0 "") (uuid "9455a897-bfdf-41be-b617-20561d9e6079"))
|
||||
)
|
||||
(gr_text "FPC" (at 113.000 147.500) (layer "F.SilkS") (uuid "4f14f339-bb71-4185-b05a-ff9db5cc6780") (effects (font (size 0.3 0.3) (thickness 0.080))))
|
||||
(gr_circle (center 107.750 149.000) (end 107.900 149.000) (layer "F.SilkS") (width 0.1) (fill solid) (uuid "c91f59ef-7ee2-43b6-abcf-161d422ea4c3"))
|
||||
(gr_text "Baby Mobile v5 — github.com/you/baby-mobile" (at 113.000 112.000) (layer "B.SilkS") (uuid "ab2d28e7-e371-4dce-8027-69df7d50f77c") (effects (font (size 0.4 0.4) (thickness 0.080))))
|
||||
)
|
||||
@@ -1,12 +1,13 @@
|
||||
{
|
||||
"meta": {
|
||||
"filename": "baby-mobile-panel.kicad_pro",
|
||||
"filename": "baby-mobile-v5.kicad_pro",
|
||||
"version": 1
|
||||
},
|
||||
"board": {
|
||||
"design_settings": {
|
||||
"rules": {
|
||||
"min_track_width": 0.15
|
||||
"min_track_width": 0.15,
|
||||
"min_via_diameter": 0.4
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -16,6 +17,11 @@
|
||||
"name": "Default",
|
||||
"clearance": 0.15,
|
||||
"track_width": 0.25
|
||||
},
|
||||
{
|
||||
"name": "Power",
|
||||
"clearance": 0.2,
|
||||
"track_width": 0.5
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,318 @@
|
||||
(kicad_sch (version 20230121) (generator "bm_v5_sch")
|
||||
(uuid "3033f063-d051-4b2e-89f5-f1cfe4577b32")
|
||||
(paper "A3")
|
||||
(title_block
|
||||
(title "Baby Mobile v5 — Schematic")
|
||||
(date "2026-03-11") (rev "5.0")
|
||||
(comment 1 "XIAO nRF52840 + IS25LP128F + TPS61220")
|
||||
(comment 2 "Key-shaped panel with breakaway SOP adapters")
|
||||
)
|
||||
|
||||
(lib_symbols
|
||||
|
||||
(symbol "bm:R" (in_bom yes) (on_board yes)
|
||||
(property "Reference" "R" (at 2 0 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Value" "R" (at 2 -2 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Footprint" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(property "Datasheet" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(symbol "R_0_1"
|
||||
(rectangle (start -1 2.5) (end 1 -2.5) (stroke (width 0.254) (type default)) (fill (type background)))
|
||||
)
|
||||
(symbol "R_1_1"
|
||||
(pin passive line (at 0 5 270) (length 2.5) (name "1" (effects (font (size 1 1)))) (number "1" (effects (font (size 1 1)))))
|
||||
(pin passive line (at 0 -5 90) (length 2.5) (name "2" (effects (font (size 1 1)))) (number "2" (effects (font (size 1 1)))))
|
||||
)
|
||||
)
|
||||
|
||||
(symbol "bm:C" (in_bom yes) (on_board yes)
|
||||
(property "Reference" "C" (at 2 0 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Value" "C" (at 2 -2 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Footprint" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(property "Datasheet" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(symbol "C_0_1"
|
||||
(rectangle (start -1 2.5) (end 1 -2.5) (stroke (width 0.254) (type default)) (fill (type background)))
|
||||
)
|
||||
(symbol "C_1_1"
|
||||
(pin passive line (at 0 5 270) (length 2.5) (name "1" (effects (font (size 1 1)))) (number "1" (effects (font (size 1 1)))))
|
||||
(pin passive line (at 0 -5 90) (length 2.5) (name "2" (effects (font (size 1 1)))) (number "2" (effects (font (size 1 1)))))
|
||||
)
|
||||
)
|
||||
|
||||
(symbol "bm:L" (in_bom yes) (on_board yes)
|
||||
(property "Reference" "L" (at 2 0 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Value" "L" (at 2 -2 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Footprint" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(property "Datasheet" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(symbol "L_0_1"
|
||||
(rectangle (start -1 2.5) (end 1 -2.5) (stroke (width 0.254) (type default)) (fill (type background)))
|
||||
)
|
||||
(symbol "L_1_1"
|
||||
(pin passive line (at 0 5 270) (length 2.5) (name "1" (effects (font (size 1 1)))) (number "1" (effects (font (size 1 1)))))
|
||||
(pin passive line (at 0 -5 90) (length 2.5) (name "2" (effects (font (size 1 1)))) (number "2" (effects (font (size 1 1)))))
|
||||
)
|
||||
)
|
||||
|
||||
(symbol "bm:TPS61220" (in_bom yes) (on_board yes)
|
||||
(property "Reference" "U" (at 0 6 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Value" "TPS61220" (at 0 -6 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Footprint" "Package_TO_SOT_SMD:SOT-353_SC-70-5" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(property "Datasheet" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(symbol "TPS61220_0_1"
|
||||
(rectangle (start -7 5) (end 7 -5) (stroke (width 0.254) (type default)) (fill (type background)))
|
||||
)
|
||||
(symbol "TPS61220_1_1"
|
||||
(pin power_in line (at -10 3 0) (length 3) (name "VIN" (effects (font (size 1 1)))) (number "1" (effects (font (size 1 1)))))
|
||||
(pin power_in line (at -10 -3 0) (length 3) (name "GND" (effects (font (size 1 1)))) (number "2" (effects (font (size 1 1)))))
|
||||
(pin input line (at 10 -3 180) (length 3) (name "EN" (effects (font (size 1 1)))) (number "3" (effects (font (size 1 1)))))
|
||||
(pin power_out line (at 10 3 180) (length 3) (name "VOUT" (effects (font (size 1 1)))) (number "4" (effects (font (size 1 1)))))
|
||||
(pin passive line (at 0 8 270) (length 3) (name "L" (effects (font (size 1 1)))) (number "5" (effects (font (size 1 1)))))
|
||||
)
|
||||
)
|
||||
|
||||
(symbol "bm:IS25LP128F" (in_bom yes) (on_board yes)
|
||||
(property "Reference" "U" (at 0 9 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Value" "IS25LP128F" (at 0 7 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Footprint" "Package_SO:SOIC-8_3.9x4.9mm_P1.27mm" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(property "Datasheet" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(symbol "IS25LP128F_0_1"
|
||||
(rectangle (start -7 6) (end 7 -6) (stroke (width 0.254) (type default)) (fill (type background)))
|
||||
)
|
||||
(symbol "IS25LP128F_1_1"
|
||||
(pin input line (at -10 4 0) (length 3) (name "~{CS}" (effects (font (size 1 1)))) (number "1" (effects (font (size 1 1)))))
|
||||
(pin output line (at -10 1.5 0) (length 3) (name "SO" (effects (font (size 1 1)))) (number "2" (effects (font (size 1 1)))))
|
||||
(pin input line (at -10 -1.5 0) (length 3) (name "~{WP}" (effects (font (size 1 1)))) (number "3" (effects (font (size 1 1)))))
|
||||
(pin power_in line (at -10 -4 0) (length 3) (name "GND" (effects (font (size 1 1)))) (number "4" (effects (font (size 1 1)))))
|
||||
(pin input line (at 10 -4 180) (length 3) (name "SI" (effects (font (size 1 1)))) (number "5" (effects (font (size 1 1)))))
|
||||
(pin input line (at 10 -1.5 180) (length 3) (name "SCLK" (effects (font (size 1 1)))) (number "6" (effects (font (size 1 1)))))
|
||||
(pin input line (at 10 1.5 180) (length 3) (name "~{HOLD}" (effects (font (size 1 1)))) (number "7" (effects (font (size 1 1)))))
|
||||
(pin power_in line (at 10 4 180) (length 3) (name "VCC" (effects (font (size 1 1)))) (number "8" (effects (font (size 1 1)))))
|
||||
)
|
||||
)
|
||||
|
||||
(symbol "bm:FPC_10" (in_bom yes) (on_board yes)
|
||||
(property "Reference" "J" (at 0 12 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Value" "FPC-10" (at 0 -12 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Footprint" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(property "Datasheet" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(symbol "FPC_10_0_1"
|
||||
(rectangle (start -3 10) (end 3 -10) (stroke (width 0.254) (type default)) (fill (type background)))
|
||||
)
|
||||
(symbol "FPC_10_1_1"
|
||||
|
||||
(pin passive line (at -6 9 0) (length 3) (name "P1" (effects (font (size 1 1)))) (number "1" (effects (font (size 1 1)))))
|
||||
(pin passive line (at -6 7 0) (length 3) (name "P2" (effects (font (size 1 1)))) (number "2" (effects (font (size 1 1)))))
|
||||
(pin passive line (at -6 5 0) (length 3) (name "P3" (effects (font (size 1 1)))) (number "3" (effects (font (size 1 1)))))
|
||||
(pin passive line (at -6 3 0) (length 3) (name "P4" (effects (font (size 1 1)))) (number "4" (effects (font (size 1 1)))))
|
||||
(pin passive line (at -6 1 0) (length 3) (name "P5" (effects (font (size 1 1)))) (number "5" (effects (font (size 1 1)))))
|
||||
(pin passive line (at -6 -1 0) (length 3) (name "P6" (effects (font (size 1 1)))) (number "6" (effects (font (size 1 1)))))
|
||||
(pin passive line (at -6 -3 0) (length 3) (name "P7" (effects (font (size 1 1)))) (number "7" (effects (font (size 1 1)))))
|
||||
(pin passive line (at -6 -5 0) (length 3) (name "P8" (effects (font (size 1 1)))) (number "8" (effects (font (size 1 1)))))
|
||||
(pin passive line (at -6 -7 0) (length 3) (name "P9" (effects (font (size 1 1)))) (number "9" (effects (font (size 1 1)))))
|
||||
(pin passive line (at -6 -9 0) (length 3) (name "P10" (effects (font (size 1 1)))) (number "10" (effects (font (size 1 1)))))
|
||||
)
|
||||
)
|
||||
|
||||
(symbol "bm:FPC_20" (in_bom yes) (on_board yes)
|
||||
(property "Reference" "J" (at 0 22 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Value" "FPC-20" (at 0 -22 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Footprint" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(property "Datasheet" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(symbol "FPC_20_0_1"
|
||||
(rectangle (start -3 20) (end 3 -20) (stroke (width 0.254) (type default)) (fill (type background)))
|
||||
)
|
||||
(symbol "FPC_20_1_1"
|
||||
|
||||
(pin passive line (at -6 19 0) (length 3) (name "P1" (effects (font (size 1 1)))) (number "1" (effects (font (size 1 1)))))
|
||||
(pin passive line (at -6 17 0) (length 3) (name "P2" (effects (font (size 1 1)))) (number "2" (effects (font (size 1 1)))))
|
||||
(pin passive line (at -6 15 0) (length 3) (name "P3" (effects (font (size 1 1)))) (number "3" (effects (font (size 1 1)))))
|
||||
(pin passive line (at -6 13 0) (length 3) (name "P4" (effects (font (size 1 1)))) (number "4" (effects (font (size 1 1)))))
|
||||
(pin passive line (at -6 11 0) (length 3) (name "P5" (effects (font (size 1 1)))) (number "5" (effects (font (size 1 1)))))
|
||||
(pin passive line (at -6 9 0) (length 3) (name "P6" (effects (font (size 1 1)))) (number "6" (effects (font (size 1 1)))))
|
||||
(pin passive line (at -6 7 0) (length 3) (name "P7" (effects (font (size 1 1)))) (number "7" (effects (font (size 1 1)))))
|
||||
(pin passive line (at -6 5 0) (length 3) (name "P8" (effects (font (size 1 1)))) (number "8" (effects (font (size 1 1)))))
|
||||
(pin passive line (at -6 3 0) (length 3) (name "P9" (effects (font (size 1 1)))) (number "9" (effects (font (size 1 1)))))
|
||||
(pin passive line (at -6 1 0) (length 3) (name "P10" (effects (font (size 1 1)))) (number "10" (effects (font (size 1 1)))))
|
||||
(pin passive line (at -6 -1 0) (length 3) (name "P11" (effects (font (size 1 1)))) (number "11" (effects (font (size 1 1)))))
|
||||
(pin passive line (at -6 -3 0) (length 3) (name "P12" (effects (font (size 1 1)))) (number "12" (effects (font (size 1 1)))))
|
||||
(pin passive line (at -6 -5 0) (length 3) (name "P13" (effects (font (size 1 1)))) (number "13" (effects (font (size 1 1)))))
|
||||
(pin passive line (at -6 -7 0) (length 3) (name "P14" (effects (font (size 1 1)))) (number "14" (effects (font (size 1 1)))))
|
||||
(pin passive line (at -6 -9 0) (length 3) (name "P15" (effects (font (size 1 1)))) (number "15" (effects (font (size 1 1)))))
|
||||
(pin passive line (at -6 -11 0) (length 3) (name "P16" (effects (font (size 1 1)))) (number "16" (effects (font (size 1 1)))))
|
||||
(pin passive line (at -6 -13 0) (length 3) (name "P17" (effects (font (size 1 1)))) (number "17" (effects (font (size 1 1)))))
|
||||
(pin passive line (at -6 -15 0) (length 3) (name "P18" (effects (font (size 1 1)))) (number "18" (effects (font (size 1 1)))))
|
||||
(pin passive line (at -6 -17 0) (length 3) (name "P19" (effects (font (size 1 1)))) (number "19" (effects (font (size 1 1)))))
|
||||
(pin passive line (at -6 -19 0) (length 3) (name "P20" (effects (font (size 1 1)))) (number "20" (effects (font (size 1 1)))))
|
||||
)
|
||||
)
|
||||
|
||||
(symbol "bm:XIAO_nRF52840" (in_bom yes) (on_board yes)
|
||||
(property "Reference" "U" (at 0 22 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Value" "XIAO_nRF52840" (at 0 20 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Footprint" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(property "Datasheet" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(symbol "XIAO_nRF52840_0_1"
|
||||
(rectangle (start -12 19) (end 12 -19) (stroke (width 0.254) (type default)) (fill (type background)))
|
||||
)
|
||||
(symbol "XIAO_nRF52840_1_1"
|
||||
(pin bidirectional line (at -15 15 0) (length 3) (name "D0" (effects (font (size 1 1)))) (number "1" (effects (font (size 1 1)))))
|
||||
(pin bidirectional line (at -15 12.5 0) (length 3) (name "D1" (effects (font (size 1 1)))) (number "2" (effects (font (size 1 1)))))
|
||||
(pin bidirectional line (at -15 10 0) (length 3) (name "D2" (effects (font (size 1 1)))) (number "3" (effects (font (size 1 1)))))
|
||||
(pin bidirectional line (at -15 7.5 0) (length 3) (name "D3" (effects (font (size 1 1)))) (number "4" (effects (font (size 1 1)))))
|
||||
(pin bidirectional line (at -15 5 0) (length 3) (name "D4" (effects (font (size 1 1)))) (number "5" (effects (font (size 1 1)))))
|
||||
(pin bidirectional line (at -15 2.5 0) (length 3) (name "D5" (effects (font (size 1 1)))) (number "6" (effects (font (size 1 1)))))
|
||||
(pin bidirectional line (at -15 0 0) (length 3) (name "D6" (effects (font (size 1 1)))) (number "7" (effects (font (size 1 1)))))
|
||||
(pin bidirectional line (at 15 15 180) (length 3) (name "D10" (effects (font (size 1 1)))) (number "8" (effects (font (size 1 1)))))
|
||||
(pin bidirectional line (at 15 12.5 180) (length 3) (name "D9/SCK" (effects (font (size 1 1)))) (number "9" (effects (font (size 1 1)))))
|
||||
(pin bidirectional line (at 15 10 180) (length 3) (name "D8/MOSI" (effects (font (size 1 1)))) (number "10" (effects (font (size 1 1)))))
|
||||
(pin bidirectional line (at 15 7.5 180) (length 3) (name "D7/MISO" (effects (font (size 1 1)))) (number "11" (effects (font (size 1 1)))))
|
||||
(pin power_in line (at 15 2.5 180) (length 3) (name "3V3" (effects (font (size 1 1)))) (number "12" (effects (font (size 1 1)))))
|
||||
(pin power_in line (at 15 0 180) (length 3) (name "GND" (effects (font (size 1 1)))) (number "13" (effects (font (size 1 1)))))
|
||||
(pin power_in line (at 15 -2.5 180) (length 3) (name "5V" (effects (font (size 1 1)))) (number "14" (effects (font (size 1 1)))))
|
||||
)
|
||||
)
|
||||
)
|
||||
(symbol (lib_id "bm:XIAO_nRF52840") (at 80 80 0) (unit 1)
|
||||
(in_bom yes) (on_board yes) (dnp no)
|
||||
(uuid "fe1b6661-12b7-4ecc-bcbc-62703a98c889")
|
||||
(property "Reference" "U3" (at 83 77 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Value" "XIAO_nRF52840" (at 83 83 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Footprint" "" (at 80 80 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(property "Datasheet" "" (at 80 80 0) (effects (font (size 1.27 1.27)) hide))
|
||||
)
|
||||
(symbol (lib_id "bm:IS25LP128F") (at 180 60 0) (unit 1)
|
||||
(in_bom yes) (on_board yes) (dnp no)
|
||||
(uuid "99510a8f-20f8-4a1d-bd80-67345835871d")
|
||||
(property "Reference" "U2" (at 183 57 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Value" "IS25LP128F" (at 183 63 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Footprint" "Package_SO:SOIC-8_3.9x4.9mm_P1.27mm" (at 180 60 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(property "Datasheet" "" (at 180 60 0) (effects (font (size 1.27 1.27)) hide))
|
||||
)
|
||||
(symbol (lib_id "bm:TPS61220") (at 180 130 0) (unit 1)
|
||||
(in_bom yes) (on_board yes) (dnp no)
|
||||
(uuid "e47a68ed-6db7-48d9-bbe9-e2cda9f6e485")
|
||||
(property "Reference" "U1" (at 183 127 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Value" "TPS61220" (at 183 133 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Footprint" "Package_TO_SOT_SMD:SOT-353_SC-70-5" (at 180 130 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(property "Datasheet" "" (at 180 130 0) (effects (font (size 1.27 1.27)) hide))
|
||||
)
|
||||
(symbol (lib_id "bm:FPC_20") (at 80 160 0) (unit 1)
|
||||
(in_bom yes) (on_board yes) (dnp no)
|
||||
(uuid "9426180e-9cc5-457d-9538-1387435d67fd")
|
||||
(property "Reference" "J1" (at 83 157 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Value" "FPC-20 Carrier" (at 83 163 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Footprint" "" (at 80 160 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(property "Datasheet" "" (at 80 160 0) (effects (font (size 1.27 1.27)) hide))
|
||||
)
|
||||
(symbol (lib_id "bm:R") (at 140 80 0) (unit 1)
|
||||
(in_bom yes) (on_board yes) (dnp no)
|
||||
(uuid "a658da19-5644-4160-b300-be8c7c773405")
|
||||
(property "Reference" "R1" (at 143 77 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Value" "4.7K" (at 143 83 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Footprint" "Resistor_SMD:R_0805_2012Metric" (at 140 80 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(property "Datasheet" "" (at 140 80 0) (effects (font (size 1.27 1.27)) hide))
|
||||
)
|
||||
(symbol (lib_id "bm:C") (at 150 90 0) (unit 1)
|
||||
(in_bom yes) (on_board yes) (dnp no)
|
||||
(uuid "16705866-bee7-4f26-a10e-6f7bfbff4c09")
|
||||
(property "Reference" "C5" (at 153 87 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Value" "10nF" (at 153 93 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Footprint" "Capacitor_SMD:C_0805_2012Metric" (at 150 90 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(property "Datasheet" "" (at 150 90 0) (effects (font (size 1.27 1.27)) hide))
|
||||
)
|
||||
(symbol (lib_id "bm:R") (at 210 50 0) (unit 1)
|
||||
(in_bom yes) (on_board yes) (dnp no)
|
||||
(uuid "696b8ca8-97f4-4851-97cc-70c56c8f54f5")
|
||||
(property "Reference" "R2" (at 213 47 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Value" "10K" (at 213 53 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Footprint" "Resistor_SMD:R_0805_2012Metric" (at 210 50 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(property "Datasheet" "" (at 210 50 0) (effects (font (size 1.27 1.27)) hide))
|
||||
)
|
||||
(symbol (lib_id "bm:C") (at 210 70 0) (unit 1)
|
||||
(in_bom yes) (on_board yes) (dnp no)
|
||||
(uuid "4ea7caff-53f9-4c00-bf01-2c0cfc1ebd9c")
|
||||
(property "Reference" "C3" (at 213 67 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Value" "100nF" (at 213 73 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Footprint" "Capacitor_SMD:C_0805_2012Metric" (at 210 70 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(property "Datasheet" "" (at 210 70 0) (effects (font (size 1.27 1.27)) hide))
|
||||
)
|
||||
(symbol (lib_id "bm:L") (at 180 115 0) (unit 1)
|
||||
(in_bom yes) (on_board yes) (dnp no)
|
||||
(uuid "c358b595-8b13-497e-9e9e-49f65d43ca20")
|
||||
(property "Reference" "L1" (at 183 112 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Value" "4.7uH" (at 183 118 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Footprint" "Inductor_SMD:L_0805_2012Metric" (at 180 115 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(property "Datasheet" "" (at 180 115 0) (effects (font (size 1.27 1.27)) hide))
|
||||
)
|
||||
(symbol (lib_id "bm:C") (at 160 140 0) (unit 1)
|
||||
(in_bom yes) (on_board yes) (dnp no)
|
||||
(uuid "be44b856-bd18-4c09-9ee0-04202caf4768")
|
||||
(property "Reference" "C1" (at 163 137 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Value" "10uF" (at 163 143 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Footprint" "Capacitor_SMD:C_0805_2012Metric" (at 160 140 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(property "Datasheet" "" (at 160 140 0) (effects (font (size 1.27 1.27)) hide))
|
||||
)
|
||||
(symbol (lib_id "bm:C") (at 200 140 0) (unit 1)
|
||||
(in_bom yes) (on_board yes) (dnp no)
|
||||
(uuid "d225c3fa-9586-478d-a854-6d14dbaa4bfd")
|
||||
(property "Reference" "C2" (at 203 137 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Value" "10uF" (at 203 143 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Footprint" "Capacitor_SMD:C_0805_2012Metric" (at 200 140 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(property "Datasheet" "" (at 200 140 0) (effects (font (size 1.27 1.27)) hide))
|
||||
)
|
||||
(symbol (lib_id "bm:FPC_10") (at 280 80 0) (unit 1)
|
||||
(in_bom yes) (on_board yes) (dnp no)
|
||||
(uuid "dbdc9c1a-6b0f-497d-87bf-2ba4cae89123")
|
||||
(property "Reference" "J2" (at 283 77 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Value" "FPC-10 SOP-8" (at 283 83 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Footprint" "" (at 280 80 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(property "Datasheet" "" (at 280 80 0) (effects (font (size 1.27 1.27)) hide))
|
||||
)
|
||||
(symbol (lib_id "bm:FPC_20") (at 280 140 0) (unit 1)
|
||||
(in_bom yes) (on_board yes) (dnp no)
|
||||
(uuid "1e20e107-cee6-42e8-a075-64e6e08c59d3")
|
||||
(property "Reference" "J3" (at 283 137 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Value" "FPC-20 SOP-16N" (at 283 143 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Footprint" "" (at 280 140 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(property "Datasheet" "" (at 280 140 0) (effects (font (size 1.27 1.27)) hide))
|
||||
)
|
||||
(symbol (lib_id "bm:FPC_20") (at 280 200 0) (unit 1)
|
||||
(in_bom yes) (on_board yes) (dnp no)
|
||||
(uuid "088f021c-2eb1-4377-ac14-7c561fdd9f65")
|
||||
(property "Reference" "J4" (at 283 197 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Value" "FPC-20 SOP-16W" (at 283 203 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Footprint" "" (at 280 200 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(property "Datasheet" "" (at 280 200 0) (effects (font (size 1.27 1.27)) hide))
|
||||
)
|
||||
(label "SPI_SCK" (at 95 67.5 0) (effects (font (size 1.27 1.27))) (uuid "c42549fd-10be-4aad-afc7-8c810f319c36"))
|
||||
(label "SPI_SCK" (at 190 58.5 0) (effects (font (size 1.27 1.27))) (uuid "b54a8fdc-6ac2-449c-ba67-22dc6766d98b"))
|
||||
(label "SPI_MOSI" (at 95 70 0) (effects (font (size 1.27 1.27))) (uuid "fa1c1149-1576-4e88-8b85-a0eb1619bcea"))
|
||||
(label "SPI_MOSI" (at 190 56 0) (effects (font (size 1.27 1.27))) (uuid "b88e4cf0-f774-4040-a7c2-24b10243d283"))
|
||||
(label "SPI_MISO" (at 95 72.5 0) (effects (font (size 1.27 1.27))) (uuid "93297208-6d7b-4f46-888b-3eacc4f07f2d"))
|
||||
(label "SPI_MISO" (at 170 61.5 0) (effects (font (size 1.27 1.27))) (uuid "7cc87975-f349-405a-8a10-37857fc82f63"))
|
||||
(label "FLASH_CS" (at 170 64 0) (effects (font (size 1.27 1.27))) (uuid "7c602734-cf64-4579-b740-428c9d1bf4ca"))
|
||||
(label "FLASH_CS" (at 210 45 0) (effects (font (size 1.27 1.27))) (uuid "71348c34-2666-48f0-a1d7-74038192d9ac"))
|
||||
(label "C_3V3" (at 95 77.5 0) (effects (font (size 1.27 1.27))) (uuid "ee3c2698-ac21-4e70-a3c2-b7bf2488d174"))
|
||||
(label "C_3V3" (at 190 64 0) (effects (font (size 1.27 1.27))) (uuid "0495d91b-e07e-42f8-97b5-e0f3ba1e8f04"))
|
||||
(label "C_3V3" (at 190 133 0) (effects (font (size 1.27 1.27))) (uuid "3a6f36f4-a58d-4526-bbef-9adda98bf7c0"))
|
||||
(label "GND" (at 95 80 0) (effects (font (size 1.27 1.27))) (uuid "5871e4a9-6710-4460-a682-9a0067aebbbf"))
|
||||
(label "GND" (at 170 56 0) (effects (font (size 1.27 1.27))) (uuid "4efb8414-a693-4e31-a3f5-6fce8f1df21d"))
|
||||
(label "GND" (at 170 127 0) (effects (font (size 1.27 1.27))) (uuid "018eeef1-8d0f-4e97-bfa8-f51f977577bf"))
|
||||
(label "C_S1" (at 65 65 0) (effects (font (size 1.27 1.27))) (uuid "f644a442-355d-445d-8c08-7729fe701df7"))
|
||||
(label "C_S2" (at 65 67.5 0) (effects (font (size 1.27 1.27))) (uuid "4d5124ce-b786-4ad8-92cd-20d493231b0f"))
|
||||
(label "C_S3" (at 65 70 0) (effects (font (size 1.27 1.27))) (uuid "c15ff5c5-329a-4e35-a245-17f45d0f44c2"))
|
||||
(label "C_S4" (at 65 72.5 0) (effects (font (size 1.27 1.27))) (uuid "7bc33049-5614-4b6a-98d5-8d6bcd9cb33e"))
|
||||
(label "C_S5" (at 65 75 0) (effects (font (size 1.27 1.27))) (uuid "6e057bfa-6ec0-4b17-b32b-e4fa2dac8adb"))
|
||||
(label "C_S6" (at 65 77.5 0) (effects (font (size 1.27 1.27))) (uuid "daf90d30-c0ba-4d82-8d00-7786902375c6"))
|
||||
(label "C_S7" (at 65 80 0) (effects (font (size 1.27 1.27))) (uuid "f4d53fcf-2294-4087-adaa-5868e3e1cae4"))
|
||||
(label "C_S8" (at 95 65 0) (effects (font (size 1.27 1.27))) (uuid "2392265d-3aa6-435c-955f-300296cebda5"))
|
||||
(label "C_S8" (at 130 80 0) (effects (font (size 1.27 1.27))) (uuid "220dfbea-98b7-4cf5-9387-f4610df10a5d"))
|
||||
(label "AUDIO_FILT" (at 150 80 0) (effects (font (size 1.27 1.27))) (uuid "652c7bf4-9751-42e0-8fcd-2d704769d29e"))
|
||||
(label "C_VBAT" (at 170 133 0) (effects (font (size 1.27 1.27))) (uuid "38617934-d4a7-466c-9079-41ca1565072a"))
|
||||
(label "C_VBAT" (at 180 110 0) (effects (font (size 1.27 1.27))) (uuid "af0e9186-887c-4293-8f51-af66874d2bd7"))
|
||||
(label "BOOST_SW" (at 180 122 0) (effects (font (size 1.27 1.27))) (uuid "600b6dba-ff8f-449e-8d13-43f8afb71ade"))
|
||||
(label "BOOST_SW" (at 180 120 0) (effects (font (size 1.27 1.27))) (uuid "caaed790-ed9a-4383-9419-464e625cd094"))
|
||||
(text "CARRIER: XIAO nRF52840 + IS25LP128F (16MB) + TPS61220 (3.3V boost)" (at 40 30 0) (effects (font (size 1.5 1.5)) (justify left)) (uuid "f65d8fb2-42b9-41bd-9d1f-2510573aad78"))
|
||||
(text "FPC-20 cable connects carrier to one of the SOP adapter boards" (at 40 35 0) (effects (font (size 1.5 1.5)) (justify left)) (uuid "54d89a0d-93b5-4be0-b8c6-e10b5bb24ab7"))
|
||||
(text "ADAPTERS: Snap-off castellated SOP footprints" (at 250 30 0) (effects (font (size 1.5 1.5)) (justify left)) (uuid "5dc73088-8f3a-4c90-98e7-1b7f701966f9"))
|
||||
(text "Each has its own FPC connector + unique net names" (at 250 35 0) (effects (font (size 1.5 1.5)) (justify left)) (uuid "8947ecc0-f63e-46c6-aef9-f5acf6373af4"))
|
||||
)
|
||||
@@ -1,543 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Baby Mobile — Combined Panel v4
|
||||
|
||||
PANEL LAYOUT:
|
||||
┌───────────────────────────────────────────────┐
|
||||
│ CARRIER BOARD (44×26mm) │
|
||||
│ ┌───────USB-C──┐ │
|
||||
│ │ █████████████ │ │
|
||||
│ │ │ [U2 IS25LP128F] [C3][R2] │
|
||||
│ │ XIAO BLE │ ●1 │
|
||||
│ │ nRF52840 │ [R1][C5] │
|
||||
│ │ │ │
|
||||
│ │ D0 D10│ [U1 TPS61220] │
|
||||
│ │ D1 D9│ ●1 [L1][C1][C2] │
|
||||
│ │ D2 D8│ │
|
||||
│ │ D3 D7│ ┌────────────────┐ │
|
||||
│ │ D4 3V3│ │ J1 FPC-20 0.5mm│ │
|
||||
│ │ D5 GND│ └────────────────┘ │
|
||||
│ │ D6 5V│ │
|
||||
│ └───────────────┘ (M2) (M2) │
|
||||
├ ─ ─ ─ ─ ─ SNAP ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤
|
||||
│ ┌──────┐ ┃ ┌──────────┐ ┃ ┌──────────┐ │
|
||||
│ │SOP-8 │ ┃ │SOP-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:
|
||||
- Long edges (top/bottom): castellated half-holes = SOP pads
|
||||
- Short edges: v-score snap lines
|
||||
- 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
|
||||
|
||||
def uid():
|
||||
return str(uuid.uuid4())
|
||||
|
||||
# ============================================================
|
||||
# KiCad drawing primitives
|
||||
# ============================================================
|
||||
|
||||
def gr_line(x1, y1, x2, y2, layer="Edge.Cuts", w=0.1):
|
||||
return f' (gr_line (start {x1:.3f} {y1:.3f}) (end {x2:.3f} {y2:.3f}) (layer "{layer}") (width {w}) (uuid "{uid()}"))'
|
||||
|
||||
def gr_rect(x1, y1, x2, y2, layer="F.SilkS", w=0.15):
|
||||
return f' (gr_rect (start {x1:.3f} {y1:.3f}) (end {x2:.3f} {y2:.3f}) (layer "{layer}") (width {w}) (uuid "{uid()}"))'
|
||||
|
||||
def gr_text(s, x, y, sz=0.8, layer="F.SilkS", mirror=False):
|
||||
th = max(0.08, sz * 0.13)
|
||||
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}))'
|
||||
|
||||
def gr_circle(x, y, r=0.3, layer="F.SilkS", fill="solid"):
|
||||
return f' (gr_circle (center {x:.3f} {y:.3f}) (end {x+r:.3f} {y:.3f}) (layer "{layer}") (width 0.1) (fill {fill}) (uuid "{uid()}"))'
|
||||
|
||||
def fp_hdr(name, x, y, layer="F.Cu"):
|
||||
return f"""
|
||||
(footprint "panel:{name}" (layer "{layer}")
|
||||
(at {x:.3f} {y:.3f})
|
||||
(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))
|
||||
(fp_text value "" (at 0 0) (layer "{layer[0]}.Fab") (uuid "{uid()}")
|
||||
(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()}"))'
|
||||
|
||||
|
||||
# ============================================================
|
||||
# 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 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 = []
|
||||
|
||||
# ---- File header ----
|
||||
pcb.append(f"""(kicad_pcb (version 20221018) (generator "panel_v4")
|
||||
(general (thickness 1.6))
|
||||
(paper "A4")
|
||||
(title_block
|
||||
(title "Baby Mobile Combined Panel v4")
|
||||
(date "2026-03-11")
|
||||
(rev "4.0")
|
||||
(comment 1 "Carrier: XIAO nRF52840 + IS25LP128F + TPS61220 + FPC-20")
|
||||
(comment 2 "Adapters: SOP-8, SOP-16N, SOP-16W — castellated, FPC connected")
|
||||
(comment 3 "Order: JLCPCB, 2-layer, castellated holes=yes, v-score=yes")
|
||||
)
|
||||
(layers
|
||||
(0 "F.Cu" signal) (31 "B.Cu" signal)
|
||||
(34 "B.Paste" user) (35 "F.Paste" user)
|
||||
(36 "B.SilkS" user "B.Silkscreen") (37 "F.SilkS" user "F.Silkscreen")
|
||||
(38 "B.Mask" user "B.Mask") (39 "F.Mask" user "F.Mask")
|
||||
(44 "Edge.Cuts" user)
|
||||
(48 "B.Fab" user "B.Fab") (49 "F.Fab" user "F.Fab")
|
||||
)
|
||||
(setup
|
||||
(pad_to_mask_clearance 0.05)
|
||||
(pcbplotparams (layerselection 0x00010fc_ffffffff) (outputdirectory "gerbers/"))
|
||||
)
|
||||
|
||||
(net 0 "")
|
||||
(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 8 "BOOST_SW") (net 9 "AUDIO_FILT")
|
||||
""")
|
||||
# 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
|
||||
# ================================================================
|
||||
|
||||
# Outer rectangle
|
||||
pcb.append(gr_line(ox, oy, ox+PANEL_W, oy))
|
||||
pcb.append(gr_line(ox+PANEL_W, oy, ox+PANEL_W, oy+PANEL_H))
|
||||
pcb.append(gr_line(ox+PANEL_W, oy+PANEL_H, ox, oy+PANEL_H))
|
||||
pcb.append(gr_line(ox, oy+PANEL_H, ox, oy))
|
||||
|
||||
# V-score: carrier / adapter strip
|
||||
vs_y = oy + CARRIER_H + 0.5
|
||||
pcb.append(gr_line(ox, vs_y, ox+PANEL_W, vs_y))
|
||||
pcb.append(gr_text("▼ SNAP ▼", ox + PANEL_W/2, vs_y - 0.3, 0.5))
|
||||
|
||||
# V-score: between adapters
|
||||
adapt_base = vs_y + 0.5
|
||||
# SOP-8: 10mm wide, SOP-16N: 16mm wide, SOP-16W: 16mm wide
|
||||
a8_w = 12.0
|
||||
a16n_w = 16.0
|
||||
a16w_w = 16.0
|
||||
gap = 0.0 # v-score is zero-width
|
||||
|
||||
vs_x1 = ox + a8_w + 1.0
|
||||
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: XIAO SOCKET with accurate outline
|
||||
# ================================================================
|
||||
|
||||
# Place XIAO with USB-C facing left edge of carrier
|
||||
xiao_cx = ox + 3 + XIAO_W/2 # center of XIAO
|
||||
xiao_cy = oy + CARRIER_H/2
|
||||
|
||||
# Board outline rectangle
|
||||
xb_l = xiao_cx - XIAO_W/2 # left edge of XIAO PCB
|
||||
xb_r = xiao_cx + XIAO_W/2 # right edge
|
||||
xb_t = xiao_cy - XIAO_H/2 # top
|
||||
xb_b = xiao_cy + XIAO_H/2 # bottom
|
||||
pcb.append(gr_rect(xb_l, xb_t, xb_r, xb_b, "F.SilkS", 0.2))
|
||||
|
||||
# USB-C rectangle protruding from left edge
|
||||
usb_l = xb_l - XIAO_USB_PROTRUDE
|
||||
usb_t = xiao_cy - XIAO_USB_W/2
|
||||
usb_b = xiao_cy + XIAO_USB_W/2
|
||||
pcb.append(gr_rect(usb_l, usb_t, xb_l, usb_b, "F.SilkS", 0.2))
|
||||
# Fill USB area
|
||||
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(gr_text("USB-C", usb_l + 2, xiao_cy, 0.5))
|
||||
pcb.append(gr_text("XIAO nRF52840", xiao_cx + 1, xiao_cy, 0.8))
|
||||
|
||||
# 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"]
|
||||
right_labels = ["D10","D9","D8","D7","3V3","GND","5V"]
|
||||
|
||||
# Left row nets: SIG_1..7 → S1..S7 (from toy via FPC)
|
||||
left_nets = [(10,"S1"),(11,"S2"),(12,"S3"),(13,"S4"),(14,"S5"),(15,"S6"),(16,"S7")]
|
||||
# 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):
|
||||
y = -7.62 + i * 2.54
|
||||
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(" )")
|
||||
for i, lbl in enumerate(left_labels):
|
||||
pcb.append(gr_text(lbl, xiao_cx - XIAO_ROW_SPAN/2 - 2.5, xiao_cy - 7.62 + i*2.54, 0.45))
|
||||
|
||||
# Right header
|
||||
pcb.append(fp_hdr("J3_XIAO_R", xiao_cx + XIAO_ROW_SPAN/2, xiao_cy))
|
||||
for i in range(7):
|
||||
y = -7.62 + i * 2.54
|
||||
net_id, net_name = right_nets[i]
|
||||
if net_id > 0:
|
||||
pcb.append(pad_thru(right_labels[i], 0, y, 1.7, 1.0, net_id, net_name))
|
||||
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(" )")
|
||||
for i, lbl in enumerate(right_labels):
|
||||
pcb.append(gr_text(lbl, xiao_cx + XIAO_ROW_SPAN/2 + 2.8, xiao_cy - 7.62 + i*2.54, 0.45))
|
||||
|
||||
# ================================================================
|
||||
# CARRIER: IS25LP128F (SOIC-8)
|
||||
# ================================================================
|
||||
|
||||
fl_cx = ox + 32
|
||||
fl_cy = oy + 5.5
|
||||
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
|
||||
pcb.append(gr_circle(fl_cx - 1.5, fl_cy + soic_span/2 - 0.5, 0.25))
|
||||
# Notch on pin 1 end
|
||||
pcb.append(gr_circle(fl_cx, fl_cy + soic_span/2 + 0.5, 0.4, "F.SilkS", "none"))
|
||||
pcb.append(gr_text("U2", fl_cx, fl_cy - soic_span/2 - 1.5, 0.5))
|
||||
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 = [
|
||||
(1, -1.905, soic_span/2, 7, "FLASH_CS"),
|
||||
(2, -0.635, soic_span/2, 5, "SPI_MISO"),
|
||||
(3, 0.635, soic_span/2, 3, "3V3"), # ~WP tie high
|
||||
(4, 1.905, soic_span/2, 1, "GND"),
|
||||
(5, 1.905, -soic_span/2, 4, "SPI_MOSI"),
|
||||
(6, 0.635, -soic_span/2, 6, "SPI_SCK"),
|
||||
(7, -0.635, -soic_span/2, 3, "3V3"), # ~HOLD tie high
|
||||
(8, -1.905, -soic_span/2, 3, "3V3"), # VCC
|
||||
]
|
||||
pcb.append(fp_hdr("U2_Flash", fl_cx, fl_cy))
|
||||
for pin, x, y, net, nn in flash_pins:
|
||||
pcb.append(pad_smd(str(pin), x, y, 0.6, 1.5, net, nn))
|
||||
pcb.append(" )")
|
||||
|
||||
# Flash decoupling C3
|
||||
pcb.append(fp_hdr("C3", fl_cx + 5.5, fl_cy - 1))
|
||||
pcb.append(pad_smd("1", -1.0, 0, 1.0, 1.2, 3, "3V3"))
|
||||
pcb.append(pad_smd("2", 1.0, 0, 1.0, 1.2, 1, "GND"))
|
||||
pcb.append(" )")
|
||||
pcb.append(gr_text("C3", fl_cx + 5.5, fl_cy - 2.3, 0.4))
|
||||
pcb.append(gr_text("100n", fl_cx + 5.5, fl_cy + 0.3, 0.35))
|
||||
|
||||
# Flash CS pullup R2
|
||||
pcb.append(fp_hdr("R2", fl_cx + 5.5, fl_cy + 2))
|
||||
pcb.append(pad_smd("1", -1.0, 0, 1.0, 1.2, 7, "FLASH_CS"))
|
||||
pcb.append(pad_smd("2", 1.0, 0, 1.0, 1.2, 3, "3V3"))
|
||||
pcb.append(" )")
|
||||
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))
|
||||
|
||||
# ================================================================
|
||||
# CARRIER: Audio RC filter (R1 + C5)
|
||||
# ================================================================
|
||||
|
||||
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(gr_text("R1 4.7K", rc_x, rc_y - 1.3, 0.4))
|
||||
|
||||
pcb.append(fp_hdr("C5", rc_x, rc_y + 3))
|
||||
pcb.append(pad_smd("1", -1.0, 0, 1.0, 1.2, 9, "AUDIO_FILT"))
|
||||
pcb.append(pad_smd("2", 1.0, 0, 1.0, 1.2, 1, "GND"))
|
||||
pcb.append(" )")
|
||||
pcb.append(gr_text("C5 10n", rc_x, rc_y + 1.7, 0.4))
|
||||
|
||||
# ================================================================
|
||||
# CARRIER: TPS61220 Boost Converter
|
||||
# ================================================================
|
||||
|
||||
bx = ox + 32
|
||||
by = oy + 21
|
||||
|
||||
# SC-70-5 outline
|
||||
pcb.append(gr_rect(bx - 1.2, by - 1.1, bx + 1.2, by + 1.1))
|
||||
pcb.append(gr_circle(bx - 0.8, by + 0.6, 0.2)) # pin 1 dot
|
||||
pcb.append(gr_text("U1", bx, by - 2, 0.5))
|
||||
pcb.append(gr_text("TPS61220", bx, by + 2, 0.4))
|
||||
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(" )")
|
||||
|
||||
# L1 (0805)
|
||||
pcb.append(fp_hdr("L1", bx - 4, by))
|
||||
pcb.append(pad_smd("1", -1.0, 0, 1.0, 1.2, 8, "BOOST_SW"))
|
||||
pcb.append(pad_smd("2", 1.0, 0, 1.0, 1.2, 2, "VBAT"))
|
||||
pcb.append(" )")
|
||||
pcb.append(gr_text("L1 4.7u", bx - 4, by - 1.3, 0.4))
|
||||
|
||||
# C1 input (0805)
|
||||
pcb.append(fp_hdr("C1", bx - 4, by + 3))
|
||||
pcb.append(pad_smd("1", -1.0, 0, 1.0, 1.2, 2, "VBAT"))
|
||||
pcb.append(pad_smd("2", 1.0, 0, 1.0, 1.2, 1, "GND"))
|
||||
pcb.append(" )")
|
||||
pcb.append(gr_text("C1 10u", bx - 4, by + 1.7, 0.4))
|
||||
|
||||
# C2 output (0805)
|
||||
pcb.append(fp_hdr("C2", bx + 4, by))
|
||||
pcb.append(pad_smd("1", -1.0, 0, 1.0, 1.2, 3, "3V3"))
|
||||
pcb.append(pad_smd("2", 1.0, 0, 1.0, 1.2, 1, "GND"))
|
||||
pcb.append(" )")
|
||||
pcb.append(gr_text("C2 10u", bx + 4, by - 1.3, 0.4))
|
||||
|
||||
# ================================================================
|
||||
# CARRIER: FPC-20 Connector (0.5mm pitch, bottom-contact)
|
||||
# ================================================================
|
||||
|
||||
fpc_cx = ox + 38
|
||||
fpc_cy = oy + 14
|
||||
fpc_pitch = 0.5
|
||||
n_fpc = 20
|
||||
|
||||
# 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"),
|
||||
(3, 10, "S1"), (4, 11, "S2"), (5, 12, "S3"), (6, 13, "S4"),
|
||||
(7, 14, "S5"), (8, 15, "S6"), (9, 16, "S7"), (10, 17, "S8"),
|
||||
(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_hdr("J1_FPC20", fpc_cx, fpc_cy))
|
||||
for pin, net, nn in fpc_nets:
|
||||
x = -((n_fpc - 1) * fpc_pitch / 2) + (pin - 1) * fpc_pitch
|
||||
pcb.append(pad_smd(str(pin), x, 0, 0.3, 1.2, net, nn))
|
||||
# Anchor/lock pads
|
||||
pcb.append(pad_smd("S1", -(fpc_w/2 - 0.5), 2.5, 1.5, 1.0, 0, ""))
|
||||
pcb.append(pad_smd("S2", (fpc_w/2 - 0.5), 2.5, 1.5, 1.0, 0, ""))
|
||||
pcb.append(" )")
|
||||
|
||||
# ================================================================
|
||||
# CARRIER: Mounting holes
|
||||
# ================================================================
|
||||
|
||||
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(" )")
|
||||
|
||||
# Carrier back silk
|
||||
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(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"))
|
||||
|
||||
# ================================================================
|
||||
# ADAPTERS: Castellated SOP breakouts with FPC connectors
|
||||
# ================================================================
|
||||
|
||||
SOP_PITCH = 1.27
|
||||
|
||||
def make_adapter(name, board_cx, board_cy, pins_per_side, row_span, n_fpc_pins):
|
||||
"""
|
||||
Adapter board with:
|
||||
- Castellated half-holes on TOP and BOTTOM long edges (SOP pads)
|
||||
- FPC connector centered on F.Cu
|
||||
- Board edges through SOP pad centers
|
||||
"""
|
||||
total_pins = pins_per_side * 2
|
||||
row_len = (pins_per_side - 1) * SOP_PITCH
|
||||
|
||||
bw = row_len + 3.0 # board width (along pin rows)
|
||||
bh = row_span # board height = exactly SOP row spacing
|
||||
|
||||
# Board outline — edges at castellation centers
|
||||
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)
|
||||
|
||||
# Don't draw left/right edges if they coincide with panel v-score
|
||||
# (they'll be part of the panel outline or v-score already)
|
||||
# Draw top and bottom edges
|
||||
pcb.append(gr_line(bl, bt, br, bt))
|
||||
pcb.append(gr_line(br, bt, br, bb))
|
||||
pcb.append(gr_line(br, bb, bl, bb))
|
||||
pcb.append(gr_line(bl, bb, bl, bt))
|
||||
|
||||
# Label
|
||||
pcb.append(gr_text(name, board_cx, board_cy, 0.6))
|
||||
|
||||
# Castellated pads footprint
|
||||
pcb.append(fp_hdr(f"{name}_cast", board_cx, board_cy, "B.Cu"))
|
||||
|
||||
for i in range(pins_per_side):
|
||||
pin = i + 1
|
||||
x = -row_len/2 + i * SOP_PITCH
|
||||
net_id = pin + 9 # S1=net10, S2=net11, etc.
|
||||
# Bottom edge: pins 1..N
|
||||
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_net = top_pin + 9
|
||||
pcb.append(pad_cast(str(top_pin), x, -bh/2, top_net, f"S{top_pin}"))
|
||||
|
||||
pcb.append(" )")
|
||||
|
||||
# Pin labels on front silk
|
||||
for i in range(pins_per_side):
|
||||
x = board_cx - row_len/2 + i * SOP_PITCH
|
||||
pcb.append(gr_text(str(i+1), x, bb + 0.7, 0.3))
|
||||
pcb.append(gr_text(str(total_pins - i), x, bt - 0.7, 0.3))
|
||||
|
||||
# Pin 1 dot
|
||||
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))
|
||||
|
||||
# Pin labels on back silk (mirror, for soldering reference)
|
||||
pcb.append(gr_text(f"{name} ●1→", board_cx, board_cy, 0.5, "B.SilkS", mirror=True))
|
||||
|
||||
# FPC connector centered
|
||||
fpc_pitch_a = 0.5
|
||||
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(gr_text("FPC", board_cx, board_cy - 1.8, 0.35))
|
||||
pcb.append(gr_circle(board_cx - (n_fpc_pins-1)*fpc_pitch_a/2 - 0.6, board_cy, 0.15))
|
||||
|
||||
# Place adapters in the strip
|
||||
strip_cy = vs_y + 0.5 + ADAPTER_STRIP_H / 2
|
||||
|
||||
# SOP-8: 4+4 pins, 3.9mm span, 10-pin FPC (8 signals + GND + VBAT)
|
||||
make_adapter("SOP-8", ox + a8_w/2 + 0.5, strip_cy, 4, 3.9, 10)
|
||||
|
||||
# SOP-16 narrow: 8+8 pins, 6.0mm span, 20-pin FPC (16 signals + GND + VBAT + 2 spare)
|
||||
make_adapter("SOP-16N", vs_x1 + a16n_w/2, strip_cy, 8, 6.0, 20)
|
||||
|
||||
# SOP-16 wide: 8+8 pins, 10.3mm span, 20-pin FPC
|
||||
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(")")
|
||||
return "\n".join(pcb)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
outdir = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
pcb_text = generate()
|
||||
pcb_path = os.path.join(outdir, "baby-mobile-panel.kicad_pcb")
|
||||
with open(pcb_path, "w") as f:
|
||||
f.write(pcb_text)
|
||||
print(f"Written: {pcb_path} ({len(pcb_text)} bytes)")
|
||||
|
||||
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:
|
||||
f.write(proj)
|
||||
|
||||
print("\nPanel:")
|
||||
print(" Carrier (44×26mm): XIAO(accurate outline+USB-C), IS25LP128F(pin1 dot+notch), TPS61220(pin1 dot), FPC-20")
|
||||
print(" SOP-8 adapter: castellation on long edges, 10-pin FPC center")
|
||||
print(" SOP-16N adapter: castellation on long edges, 20-pin FPC center")
|
||||
print(" SOP-16W adapter: castellation on long edges, 20-pin FPC center")
|
||||
print(" V-score between carrier and adapter strip, and between each adapter")
|
||||
print(" All polarized parts have ●1 markers")
|
||||
+720
@@ -0,0 +1,720 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Baby Mobile v5 — Integrated Schematic + PCB Generator
|
||||
|
||||
Fixes from v4 feedback:
|
||||
(a) Generates BOTH .kicad_sch and .kicad_pcb
|
||||
(b) XIAO USB-C on TOP edge, pin rows 15mm apart,
|
||||
carrier pads extended to 20mm with castellated edges
|
||||
(c) Each sub-board has unique net names:
|
||||
- Carrier: C_S1..C_S8, C_VBAT, C_3V3, SPI_*, FLASH_CS, BOOST_SW, AUDIO_FILT
|
||||
- SOP-8 adapter: A8_P1..A8_P8, A8_VBAT, A8_GND
|
||||
- SOP-16N adapter: A16N_P1..A16N_P16, A16N_VBAT, A16N_GND
|
||||
- SOP-16W adapter: A16W_P1..A16W_P16, A16W_VBAT, A16W_GND
|
||||
FPC connects carrier nets to adapter nets (separate pins, separate nets)
|
||||
(d) Key-shaped board: wide carrier head, narrow adapter stem
|
||||
Adapters stacked vertically in stem, v-scored on narrow (short) edges
|
||||
|
||||
Board shape:
|
||||
┌────────────────────────────┐
|
||||
│ CARRIER (26×22mm) │
|
||||
│ XIAO, Flash, Boost, │ wide "head"
|
||||
│ FPC connector │
|
||||
├──────┬─────────────┬───────┤
|
||||
│ ADAPTER │ narrow "stem"
|
||||
│ STRIP │
|
||||
│ (12×30mm) │
|
||||
│ SOP-8 │←v-score
|
||||
│ SOP-16N │←v-score
|
||||
│ SOP-16W │
|
||||
└─────────────┘
|
||||
"""
|
||||
|
||||
import uuid, os, json, sys
|
||||
|
||||
LIB = "bm"
|
||||
|
||||
def uid():
|
||||
return str(uuid.uuid4())
|
||||
|
||||
# ============================================================
|
||||
# NET DEFINITIONS — unique per sub-board
|
||||
# ============================================================
|
||||
|
||||
# We'll build a flat net list. Each net gets a unique integer ID.
|
||||
NETS = {}
|
||||
_net_counter = [0]
|
||||
|
||||
def net(name):
|
||||
"""Register a net name and return its ID."""
|
||||
if name not in NETS:
|
||||
_net_counter[0] += 1
|
||||
NETS[name] = _net_counter[0]
|
||||
return NETS[name]
|
||||
|
||||
def net_decl():
|
||||
"""Generate all (net N "name") declarations."""
|
||||
lines = [' (net 0 "")']
|
||||
for name, idx in sorted(NETS.items(), key=lambda x: x[1]):
|
||||
lines.append(f' (net {idx} "{name}")')
|
||||
return "\n".join(lines)
|
||||
|
||||
# Pre-register all nets
|
||||
# Carrier power
|
||||
net("GND"); net("C_VBAT"); net("C_3V3"); net("BOOST_SW"); net("AUDIO_FILT")
|
||||
# Carrier SPI (on-board, XIAO to flash)
|
||||
net("SPI_MOSI"); net("SPI_MISO"); net("SPI_SCK"); net("FLASH_CS")
|
||||
# Carrier signal nets (XIAO GPIOs that connect to FPC)
|
||||
for i in range(1, 9):
|
||||
net(f"C_S{i}")
|
||||
# Carrier FPC pins (carrier side of cable)
|
||||
for i in range(1, 21):
|
||||
net(f"FPC_C{i}")
|
||||
|
||||
# SOP-8 adapter nets
|
||||
for i in range(1, 9):
|
||||
net(f"A8_P{i}")
|
||||
net("A8_VBAT"); net("A8_GND")
|
||||
for i in range(1, 11):
|
||||
net(f"FPC_A8_{i}")
|
||||
|
||||
# SOP-16N adapter nets
|
||||
for i in range(1, 17):
|
||||
net(f"A16N_P{i}")
|
||||
net("A16N_VBAT"); net("A16N_GND")
|
||||
for i in range(1, 21):
|
||||
net(f"FPC_A16N_{i}")
|
||||
|
||||
# SOP-16W adapter nets
|
||||
for i in range(1, 17):
|
||||
net(f"A16W_P{i}")
|
||||
net("A16W_VBAT"); net("A16W_GND")
|
||||
for i in range(1, 21):
|
||||
net(f"FPC_A16W_{i}")
|
||||
|
||||
|
||||
# ============================================================
|
||||
# XIAO DIMENSIONS
|
||||
# ============================================================
|
||||
|
||||
XIAO_PCB_W = 17.5 # board width (the short dimension when USB is up)
|
||||
XIAO_PCB_H = 21.0 # board height (USB to antenna end)
|
||||
XIAO_ROW_SPAN = 15.0 # center-to-center between pin rows
|
||||
XIAO_USB_W = 8.9
|
||||
XIAO_USB_H = 3.2
|
||||
|
||||
CARRIER_W = 26.0 # wide enough for 20mm pad span + margin
|
||||
CARRIER_H = 24.0 # tall enough for XIAO + components below
|
||||
CARRIER_PAD_SPAN = 20.0 # extended pad span for castellated hand soldering
|
||||
|
||||
STEM_W = 14.0 # narrow stem for adapters
|
||||
SOP_PITCH = 1.27
|
||||
FPC_PITCH = 0.5
|
||||
|
||||
# ============================================================
|
||||
# KiCad primitives (same as before, abbreviated)
|
||||
# ============================================================
|
||||
|
||||
def gl(x1,y1,x2,y2,layer="Edge.Cuts",w=0.1):
|
||||
return f' (gr_line (start {x1:.3f} {y1:.3f}) (end {x2:.3f} {y2:.3f}) (layer "{layer}") (width {w}) (uuid "{uid()}"))'
|
||||
|
||||
def gr(x1,y1,x2,y2,layer="F.SilkS",w=0.15):
|
||||
return f' (gr_rect (start {x1:.3f} {y1:.3f}) (end {x2:.3f} {y2:.3f}) (layer "{layer}") (width {w}) (uuid "{uid()}"))'
|
||||
|
||||
def gt(s,x,y,sz=0.8,layer="F.SilkS"):
|
||||
th=max(0.08,sz*0.13)
|
||||
return f' (gr_text "{s}" (at {x:.3f} {y:.3f}) (layer "{layer}") (uuid "{uid()}") (effects (font (size {sz} {sz}) (thickness {th:.3f}))))'
|
||||
|
||||
def gc(x,y,r=0.3,layer="F.SilkS"):
|
||||
return f' (gr_circle (center {x:.3f} {y:.3f}) (end {x+r:.3f} {y:.3f}) (layer "{layer}") (width 0.1) (fill solid) (uuid "{uid()}"))'
|
||||
|
||||
def fp(name,x,y,layer="F.Cu"):
|
||||
return f"""
|
||||
(footprint "bm:{name}" (layer "{layer}")
|
||||
(at {x:.3f} {y:.3f})
|
||||
(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))
|
||||
(fp_text value "" (at 0 0) (layer "{layer[0]}.Fab") (uuid "{uid()}")
|
||||
(effects (font (size 0.5 0.5) (thickness 0.08)) hide))"""
|
||||
|
||||
def ps(name,x,y,w,h,nid,nn,layer="F.Cu"):
|
||||
ls=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 {ls}) (net {nid} "{nn}") (uuid "{uid()}"))'
|
||||
|
||||
def pt(name,x,y,pd,dd,nid,nn):
|
||||
return f' (pad "{name}" thru_hole circle (at {x:.3f} {y:.3f}) (size {pd} {pd}) (drill {dd}) (layers "*.Cu" "*.Mask") (net {nid} "{nn}") (uuid "{uid()}"))'
|
||||
|
||||
def pc(name,x,y,nid,nn):
|
||||
return f' (pad "{name}" thru_hole circle (at {x:.3f} {y:.3f}) (size 1.0 1.0) (drill 0.6) (layers "*.Cu" "*.Mask") (net {nid} "{nn}") (uuid "{uid()}"))'
|
||||
|
||||
|
||||
# ============================================================
|
||||
# PCB GENERATOR
|
||||
# ============================================================
|
||||
|
||||
def generate_pcb():
|
||||
ox, oy = 100.0, 100.0
|
||||
|
||||
# Adapter heights in the stem
|
||||
a8_h = 8.0 # SOP-8 adapter board height (= row span 3.9mm + FPC tab)
|
||||
a16n_h = 10.0 # SOP-16 narrow
|
||||
a16w_h = 14.0 # SOP-16 wide (10.3mm span + FPC tab)
|
||||
stem_h = a8_h + a16n_h + a16w_h
|
||||
|
||||
total_h = CARRIER_H + stem_h
|
||||
|
||||
pcb = []
|
||||
pcb.append(f"""(kicad_pcb (version 20221018) (generator "bm_v5")
|
||||
(general (thickness 1.6))
|
||||
(paper "A4")
|
||||
(title_block
|
||||
(title "Baby Mobile v5 — Key-Shaped Panel")
|
||||
(date "2026-03-11") (rev "5.0")
|
||||
(comment 1 "Carrier head + breakaway adapter stem")
|
||||
(comment 2 "Unique nets per sub-board, FPC interconnect")
|
||||
)
|
||||
(layers
|
||||
(0 "F.Cu" signal) (31 "B.Cu" signal)
|
||||
(34 "B.Paste" user) (35 "F.Paste" user)
|
||||
(36 "B.SilkS" user "B.Silkscreen") (37 "F.SilkS" user "F.Silkscreen")
|
||||
(38 "B.Mask" user "B.Mask") (39 "F.Mask" user "F.Mask")
|
||||
(44 "Edge.Cuts" user)
|
||||
(48 "B.Fab" user "B.Fab") (49 "F.Fab" user "F.Fab")
|
||||
)
|
||||
(setup (pad_to_mask_clearance 0.05)
|
||||
(pcbplotparams (layerselection 0x00010fc_ffffffff) (outputdirectory "gerbers/")))
|
||||
""")
|
||||
|
||||
# ---- KEY-SHAPED OUTLINE ----
|
||||
# Carrier head: ox to ox+CARRIER_W, oy to oy+CARRIER_H
|
||||
# Stem: centered under carrier, STEM_W wide
|
||||
stem_l = ox + (CARRIER_W - STEM_W) / 2
|
||||
stem_r = stem_l + STEM_W
|
||||
stem_top = oy + CARRIER_H
|
||||
stem_bot = stem_top + stem_h
|
||||
|
||||
# Clockwise outline
|
||||
pcb.append(gl(ox, oy, ox+CARRIER_W, oy)) # top
|
||||
pcb.append(gl(ox+CARRIER_W, oy, ox+CARRIER_W, stem_top)) # right carrier
|
||||
pcb.append(gl(ox+CARRIER_W, stem_top, stem_r, stem_top)) # step right
|
||||
pcb.append(gl(stem_r, stem_top, stem_r, stem_bot)) # right stem
|
||||
pcb.append(gl(stem_r, stem_bot, stem_l, stem_bot)) # bottom stem
|
||||
pcb.append(gl(stem_l, stem_bot, stem_l, stem_top)) # left stem
|
||||
pcb.append(gl(stem_l, stem_top, ox, stem_top)) # step left
|
||||
pcb.append(gl(ox, stem_top, ox, oy)) # left carrier
|
||||
|
||||
# V-score lines between adapters (horizontal, across stem width)
|
||||
vs1_y = stem_top + a8_h
|
||||
vs2_y = vs1_y + a16n_h
|
||||
pcb.append(gl(stem_l, vs1_y, stem_r, vs1_y))
|
||||
pcb.append(gl(stem_l, vs2_y, stem_r, vs2_y))
|
||||
pcb.append(gt("SNAP", (stem_l+stem_r)/2, vs1_y-0.3, 0.4))
|
||||
pcb.append(gt("SNAP", (stem_l+stem_r)/2, vs2_y-0.3, 0.4))
|
||||
|
||||
# ---- XIAO (USB on top edge, centered) ----
|
||||
xiao_cx = ox + CARRIER_W / 2
|
||||
xiao_top = oy + 1.5 # small margin from carrier top
|
||||
xiao_bot = xiao_top + XIAO_PCB_H
|
||||
|
||||
# XIAO board outline
|
||||
pcb.append(gr(xiao_cx - XIAO_PCB_W/2, xiao_top,
|
||||
xiao_cx + XIAO_PCB_W/2, xiao_bot, "F.SilkS", 0.2))
|
||||
# USB-C on top
|
||||
pcb.append(gr(xiao_cx - XIAO_USB_W/2, xiao_top - XIAO_USB_H,
|
||||
xiao_cx + XIAO_USB_W/2, xiao_top, "F.SilkS", 0.2))
|
||||
pcb.append(gt("USB-C", xiao_cx, xiao_top - XIAO_USB_H/2, 0.45))
|
||||
pcb.append(gt("XIAO nRF52840", xiao_cx, (xiao_top+xiao_bot)/2, 0.6))
|
||||
pcb.append(gt("RST", xiao_cx - XIAO_PCB_W/2 + 2, xiao_top + 1.5, 0.35))
|
||||
|
||||
# Pin rows: 7 pins each, 2.54mm pitch, running vertically
|
||||
# Left row at xiao_cx - 7.5mm, right row at xiao_cx + 7.5mm
|
||||
# Pin 1 (D0) at top of left row
|
||||
# Extended pads: each pad extends from 15mm span to carrier edge (20mm or board edge)
|
||||
|
||||
left_x = xiao_cx - XIAO_ROW_SPAN / 2
|
||||
right_x = xiao_cx + XIAO_ROW_SPAN / 2
|
||||
pin1_y = xiao_top + 3.0 # first pin position (some margin from USB)
|
||||
|
||||
left_pins = [
|
||||
("D0", "C_S1"), ("D1", "C_S2"), ("D2", "C_S3"), ("D3", "C_S4"),
|
||||
("D4", "C_S5"), ("D5", "C_S6"), ("D6", "C_S7"),
|
||||
]
|
||||
right_pins = [
|
||||
("D10", "C_S8"), # audio PWM
|
||||
("D9", "SPI_SCK"),
|
||||
("D8", "SPI_MOSI"),
|
||||
("D7", "SPI_MISO"),
|
||||
("3V3", "C_3V3"),
|
||||
("GND", "GND"),
|
||||
("5V", ""), # not connected
|
||||
]
|
||||
|
||||
# Left pin row with extended pads
|
||||
pcb.append(fp("XIAO_L", left_x, pin1_y))
|
||||
for i, (label, nn) in enumerate(left_pins):
|
||||
y = i * 2.54
|
||||
nid = net(nn) if nn else 0
|
||||
# Through-hole at XIAO position
|
||||
pcb.append(pt(label, 0, y, 1.7, 1.0, nid, nn))
|
||||
# Extended SMD pad toward board left edge for castellated soldering
|
||||
ext_x = -(CARRIER_PAD_SPAN/2 - XIAO_ROW_SPAN/2) # offset toward left edge
|
||||
pcb.append(ps(f"{label}_ext", ext_x/2, y, abs(ext_x), 1.2, nid, nn))
|
||||
pcb.append(" )")
|
||||
|
||||
# Right pin row with extended pads
|
||||
pcb.append(fp("XIAO_R", right_x, pin1_y))
|
||||
for i, (label, nn) in enumerate(right_pins):
|
||||
y = i * 2.54
|
||||
nid = net(nn) if nn else 0
|
||||
if nid > 0:
|
||||
pcb.append(pt(label, 0, y, 1.7, 1.0, nid, nn))
|
||||
ext_x = (CARRIER_PAD_SPAN/2 - XIAO_ROW_SPAN/2)
|
||||
pcb.append(ps(f"{label}_ext", ext_x/2, y, abs(ext_x), 1.2, nid, nn))
|
||||
else:
|
||||
pcb.append(f' (pad "{label}" thru_hole circle (at 0 {y:.2f}) (size 1.7 1.7) (drill 1.0) (layers "*.Cu" "*.Mask") (uuid "{uid()}"))')
|
||||
pcb.append(" )")
|
||||
|
||||
# Pin labels
|
||||
for i, (label, _) in enumerate(left_pins):
|
||||
pcb.append(gt(label, left_x - 3.5, pin1_y + i*2.54, 0.4))
|
||||
for i, (label, _) in enumerate(right_pins):
|
||||
pcb.append(gt(label, right_x + 3.5, pin1_y + i*2.54, 0.4))
|
||||
|
||||
# ---- IS25LP128F (SOIC-8, below XIAO on carrier) ----
|
||||
fl_cx = ox + 5
|
||||
fl_cy = oy + CARRIER_H - 5
|
||||
soic_span = 5.4
|
||||
|
||||
pcb.append(gr(fl_cx-2.5, fl_cy-soic_span/2-0.5, fl_cx+2.5, fl_cy+soic_span/2+0.5))
|
||||
pcb.append(gc(fl_cx-1.5, fl_cy+soic_span/2-0.5, 0.25)) # pin 1
|
||||
pcb.append(gt("U2 IS25LP128F", fl_cx, fl_cy-soic_span/2-1.5, 0.4))
|
||||
pcb.append(gt("●1", fl_cx-2.2, fl_cy+soic_span/2+1, 0.3))
|
||||
|
||||
flash_pins = [
|
||||
(1,-1.905, soic_span/2, "FLASH_CS"),
|
||||
(2,-0.635, soic_span/2, "SPI_MISO"),
|
||||
(3, 0.635, soic_span/2, "C_3V3"),
|
||||
(4, 1.905, soic_span/2, "GND"),
|
||||
(5, 1.905,-soic_span/2, "SPI_MOSI"),
|
||||
(6, 0.635,-soic_span/2, "SPI_SCK"),
|
||||
(7,-0.635,-soic_span/2, "C_3V3"),
|
||||
(8,-1.905,-soic_span/2, "C_3V3"),
|
||||
]
|
||||
pcb.append(fp("U2", fl_cx, fl_cy))
|
||||
for pin, x, y, nn in flash_pins:
|
||||
pcb.append(ps(str(pin), x, y, 0.6, 1.5, net(nn), nn))
|
||||
pcb.append(" )")
|
||||
|
||||
# C3 flash decoupling
|
||||
pcb.append(fp("C3", fl_cx+5, fl_cy))
|
||||
pcb.append(ps("1",-1.0,0, 1.0,1.2, net("C_3V3"),"C_3V3"))
|
||||
pcb.append(ps("2", 1.0,0, 1.0,1.2, net("GND"),"GND"))
|
||||
pcb.append(" )")
|
||||
pcb.append(gt("C3 100n", fl_cx+5, fl_cy-1.3, 0.35))
|
||||
|
||||
# R2 CS pullup
|
||||
pcb.append(fp("R2", fl_cx+5, fl_cy+3))
|
||||
pcb.append(ps("1",-1.0,0, 1.0,1.2, net("FLASH_CS"),"FLASH_CS"))
|
||||
pcb.append(ps("2", 1.0,0, 1.0,1.2, net("C_3V3"),"C_3V3"))
|
||||
pcb.append(" )")
|
||||
pcb.append(gt("R2 10K", fl_cx+5, fl_cy+1.7, 0.35))
|
||||
|
||||
# ---- TPS61220 + passives (bottom-right of carrier) ----
|
||||
bx = ox + CARRIER_W - 6
|
||||
by = oy + CARRIER_H - 5
|
||||
|
||||
pcb.append(gr(bx-1.2, by-1.1, bx+1.2, by+1.1))
|
||||
pcb.append(gc(bx-0.8, by+0.6, 0.2))
|
||||
pcb.append(gt("U1 TPS61220", bx, by-2.2, 0.4))
|
||||
pcb.append(gt("●1", bx-1.5, by+0.7, 0.3))
|
||||
|
||||
pcb.append(fp("U1", bx, by))
|
||||
pcb.append(ps("1",-0.65, 0.7, 0.4,0.55, net("C_VBAT"),"C_VBAT"))
|
||||
pcb.append(ps("2", 0, 0.7, 0.4,0.55, net("GND"),"GND"))
|
||||
pcb.append(ps("3", 0.65, 0.7, 0.4,0.55, net("C_VBAT"),"C_VBAT"))
|
||||
pcb.append(ps("4", 0.65,-0.7, 0.4,0.55, net("C_3V3"),"C_3V3"))
|
||||
pcb.append(ps("5",-0.65,-0.7, 0.4,0.55, net("BOOST_SW"),"BOOST_SW"))
|
||||
pcb.append(" )")
|
||||
|
||||
pcb.append(fp("L1", bx-4, by))
|
||||
pcb.append(ps("1",-1.0,0, 1.0,1.2, net("BOOST_SW"),"BOOST_SW"))
|
||||
pcb.append(ps("2", 1.0,0, 1.0,1.2, net("C_VBAT"),"C_VBAT"))
|
||||
pcb.append(" )")
|
||||
pcb.append(gt("L1 4.7u", bx-4, by-1.3, 0.35))
|
||||
|
||||
pcb.append(fp("C1", bx-4, by+3))
|
||||
pcb.append(ps("1",-1.0,0, 1.0,1.2, net("C_VBAT"),"C_VBAT"))
|
||||
pcb.append(ps("2", 1.0,0, 1.0,1.2, net("GND"),"GND"))
|
||||
pcb.append(" )")
|
||||
pcb.append(gt("C1 10u", bx-4, by+1.7, 0.35))
|
||||
|
||||
pcb.append(fp("C2", bx+4, by))
|
||||
pcb.append(ps("1",-1.0,0, 1.0,1.2, net("C_3V3"),"C_3V3"))
|
||||
pcb.append(ps("2", 1.0,0, 1.0,1.2, net("GND"),"GND"))
|
||||
pcb.append(" )")
|
||||
pcb.append(gt("C2 10u", bx+4, by-1.3, 0.35))
|
||||
|
||||
# R1 + C5 audio filter
|
||||
pcb.append(fp("R1", bx, by-6))
|
||||
pcb.append(ps("1",-1.0,0, 1.0,1.2, net("C_S8"),"C_S8"))
|
||||
pcb.append(ps("2", 1.0,0, 1.0,1.2, net("AUDIO_FILT"),"AUDIO_FILT"))
|
||||
pcb.append(" )")
|
||||
pcb.append(gt("R1 4.7K", bx, by-7.3, 0.35))
|
||||
|
||||
pcb.append(fp("C5", bx+4, by-6))
|
||||
pcb.append(ps("1",-1.0,0, 1.0,1.2, net("AUDIO_FILT"),"AUDIO_FILT"))
|
||||
pcb.append(ps("2", 1.0,0, 1.0,1.2, net("GND"),"GND"))
|
||||
pcb.append(" )")
|
||||
pcb.append(gt("C5 10n", bx+4, by-7.3, 0.35))
|
||||
|
||||
# ---- Carrier FPC-20 (at bottom of carrier, connecting to stem) ----
|
||||
fpc_cx = ox + CARRIER_W / 2
|
||||
fpc_cy = oy + CARRIER_H - 1.5
|
||||
n_fpc = 20
|
||||
|
||||
pcb.append(gr(fpc_cx - n_fpc*FPC_PITCH/2 - 1, fpc_cy-1.5,
|
||||
fpc_cx + n_fpc*FPC_PITCH/2 + 1, fpc_cy+1.5))
|
||||
pcb.append(gt("J1 FPC-20 0.5mm", fpc_cx, fpc_cy-2.5, 0.4))
|
||||
pcb.append(gc(fpc_cx - (n_fpc-1)*FPC_PITCH/2 - 0.6, fpc_cy, 0.15))
|
||||
|
||||
# FPC pin mapping: carrier side uses FPC_C1..FPC_C20
|
||||
# 1=C_VBAT 2=GND 3-10=C_S1..C_S8 11-18=spare 19-20=GND
|
||||
fpc_c_map = [
|
||||
("FPC_C1","C_VBAT"), ("FPC_C2","GND"),
|
||||
] + [(f"FPC_C{i+3}", f"C_S{i+1}") for i in range(8)] + [
|
||||
(f"FPC_C{i}", "") for i in range(11,19)
|
||||
] + [("FPC_C19","GND"), ("FPC_C20","GND")]
|
||||
|
||||
pcb.append(fp("J1_FPC", fpc_cx, fpc_cy))
|
||||
for j in range(n_fpc):
|
||||
x = -((n_fpc-1)*FPC_PITCH/2) + j*FPC_PITCH
|
||||
nn = fpc_c_map[j][0]
|
||||
nid = net(nn)
|
||||
pcb.append(ps(str(j+1), x, 0, 0.3, 1.2, nid, nn))
|
||||
pcb.append(ps("SA", -(n_fpc*FPC_PITCH/2+1), 2, 1.5, 1.0, 0, ""))
|
||||
pcb.append(ps("SB", (n_fpc*FPC_PITCH/2+1), 2, 1.5, 1.0, 0, ""))
|
||||
pcb.append(" )")
|
||||
|
||||
# ---- Mounting holes ----
|
||||
for mx,my in [(ox+2, oy+2), (ox+CARRIER_W-2, oy+2)]:
|
||||
pcb.append(fp("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(" )")
|
||||
|
||||
# ================================================================
|
||||
# ADAPTER: SOP-8
|
||||
# ================================================================
|
||||
|
||||
def make_adapter(prefix, center_x, top_y, height, pins_per_side, row_span, n_fpc_pins):
|
||||
total_pins = pins_per_side * 2
|
||||
row_len = (pins_per_side - 1) * SOP_PITCH
|
||||
cy = top_y + height / 2
|
||||
|
||||
pcb.append(gt(prefix, center_x, cy, 0.5))
|
||||
|
||||
# Castellation pads on long (left/right) edges
|
||||
# Bottom row: pins 1..N at cy + row_span/2
|
||||
# Top row: pins 2N..N+1 at cy - row_span/2
|
||||
pcb.append(fp(f"{prefix}_cast", center_x, cy, "B.Cu"))
|
||||
for i in range(pins_per_side):
|
||||
pin = i + 1
|
||||
x = -row_len/2 + i * SOP_PITCH
|
||||
nn = f"{prefix}_P{pin}"
|
||||
pcb.append(pc(str(pin), x, row_span/2, net(nn), nn))
|
||||
top_pin = total_pins - i
|
||||
nn2 = f"{prefix}_P{top_pin}"
|
||||
pcb.append(pc(str(top_pin), x, -row_span/2, net(nn2), nn2))
|
||||
pcb.append(" )")
|
||||
|
||||
# Pin labels
|
||||
for i in range(pins_per_side):
|
||||
x = center_x - row_len/2 + i * SOP_PITCH
|
||||
pcb.append(gt(str(i+1), x, cy + row_span/2 + 0.7, 0.3))
|
||||
pcb.append(gt(str(total_pins-i), x, cy - row_span/2 - 0.7, 0.3))
|
||||
pcb.append(gc(center_x - row_len/2 - 0.5, cy + row_span/2 + 0.5, 0.2))
|
||||
|
||||
# FPC connector centered
|
||||
fpc_y = cy # centered vertically
|
||||
pcb.append(fp(f"{prefix}_FPC", center_x, fpc_y))
|
||||
for j in range(n_fpc_pins):
|
||||
x = -((n_fpc_pins-1)*FPC_PITCH/2) + j*FPC_PITCH
|
||||
if j < total_pins:
|
||||
sop_pin = j + 1
|
||||
nn = f"FPC_{prefix}_{j+1}"
|
||||
elif j == n_fpc_pins - 2:
|
||||
nn = f"{prefix}_GND"
|
||||
elif j == n_fpc_pins - 1:
|
||||
nn = f"{prefix}_VBAT"
|
||||
else:
|
||||
nn = f"FPC_{prefix}_{j+1}"
|
||||
nid = net(nn)
|
||||
pcb.append(ps(f"F{j+1}", x, 0, 0.3, 1.0, nid, nn))
|
||||
pcb.append(ps("SA", -(n_fpc_pins*FPC_PITCH/2+1), 1.5, 1.2, 0.8, 0, ""))
|
||||
pcb.append(ps("SB", (n_fpc_pins*FPC_PITCH/2+1), 1.5, 1.2, 0.8, 0, ""))
|
||||
pcb.append(" )")
|
||||
pcb.append(gt("FPC", center_x, fpc_y - 1.5, 0.3))
|
||||
pcb.append(gc(center_x - (n_fpc_pins-1)*FPC_PITCH/2 - 0.5, fpc_y, 0.15))
|
||||
|
||||
stem_cx = (stem_l + stem_r) / 2
|
||||
|
||||
make_adapter("A8", stem_cx, stem_top, a8_h, 4, 3.9, 10)
|
||||
make_adapter("A16N", stem_cx, vs1_y, a16n_h, 8, 6.0, 20)
|
||||
make_adapter("A16W", stem_cx, vs2_y, a16w_h, 8, 10.3, 20)
|
||||
|
||||
# Back silk instructions
|
||||
pcb.append(gt("Baby Mobile v5 — github.com/you/baby-mobile", ox+CARRIER_W/2, oy+CARRIER_H/2, 0.4, "B.SilkS"))
|
||||
|
||||
# ---- Insert net declarations at the top ----
|
||||
# We need to do this after all nets are registered
|
||||
net_block = net_decl()
|
||||
pcb.insert(1, "") # placeholder, we'll join later
|
||||
|
||||
pcb.append(")")
|
||||
|
||||
# Splice net declarations in after the setup block
|
||||
result = "\n".join(pcb)
|
||||
result = result.replace("(setup (pad_to_mask_clearance 0.05)",
|
||||
f"{net_block}\n\n (setup (pad_to_mask_clearance 0.05)")
|
||||
return result
|
||||
|
||||
|
||||
# ============================================================
|
||||
# SCHEMATIC GENERATOR
|
||||
# ============================================================
|
||||
|
||||
def generate_schematic():
|
||||
"""Generate a matching .kicad_sch with all components and nets."""
|
||||
|
||||
sch = []
|
||||
sch.append(f"""(kicad_sch (version 20230121) (generator "bm_v5_sch")
|
||||
(uuid "{uid()}")
|
||||
(paper "A3")
|
||||
(title_block
|
||||
(title "Baby Mobile v5 — Schematic")
|
||||
(date "2026-03-11") (rev "5.0")
|
||||
(comment 1 "XIAO nRF52840 + IS25LP128F + TPS61220")
|
||||
(comment 2 "Key-shaped panel with breakaway SOP adapters")
|
||||
)
|
||||
""")
|
||||
|
||||
# Lib symbols (using the v2 fix: no library prefix on sub-symbols)
|
||||
sch.append(" (lib_symbols")
|
||||
|
||||
# Generic 2-pin (for R, C, L)
|
||||
for name, ref in [("R","R"), ("C","C"), ("L","L")]:
|
||||
sch.append(f"""
|
||||
(symbol "{LIB}:{name}" (in_bom yes) (on_board yes)
|
||||
(property "Reference" "{ref}" (at 2 0 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Value" "{name}" (at 2 -2 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Footprint" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(property "Datasheet" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(symbol "{name}_0_1"
|
||||
(rectangle (start -1 2.5) (end 1 -2.5) (stroke (width 0.254) (type default)) (fill (type background)))
|
||||
)
|
||||
(symbol "{name}_1_1"
|
||||
(pin passive line (at 0 5 270) (length 2.5) (name "1" (effects (font (size 1 1)))) (number "1" (effects (font (size 1 1)))))
|
||||
(pin passive line (at 0 -5 90) (length 2.5) (name "2" (effects (font (size 1 1)))) (number "2" (effects (font (size 1 1)))))
|
||||
)
|
||||
)""")
|
||||
|
||||
# TPS61220
|
||||
sch.append(f"""
|
||||
(symbol "{LIB}:TPS61220" (in_bom yes) (on_board yes)
|
||||
(property "Reference" "U" (at 0 6 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Value" "TPS61220" (at 0 -6 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Footprint" "Package_TO_SOT_SMD:SOT-353_SC-70-5" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(property "Datasheet" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(symbol "TPS61220_0_1"
|
||||
(rectangle (start -7 5) (end 7 -5) (stroke (width 0.254) (type default)) (fill (type background)))
|
||||
)
|
||||
(symbol "TPS61220_1_1"
|
||||
(pin power_in line (at -10 3 0) (length 3) (name "VIN" (effects (font (size 1 1)))) (number "1" (effects (font (size 1 1)))))
|
||||
(pin power_in line (at -10 -3 0) (length 3) (name "GND" (effects (font (size 1 1)))) (number "2" (effects (font (size 1 1)))))
|
||||
(pin input line (at 10 -3 180) (length 3) (name "EN" (effects (font (size 1 1)))) (number "3" (effects (font (size 1 1)))))
|
||||
(pin power_out line (at 10 3 180) (length 3) (name "VOUT" (effects (font (size 1 1)))) (number "4" (effects (font (size 1 1)))))
|
||||
(pin passive line (at 0 8 270) (length 3) (name "L" (effects (font (size 1 1)))) (number "5" (effects (font (size 1 1)))))
|
||||
)
|
||||
)""")
|
||||
|
||||
# IS25LP128F
|
||||
sch.append(f"""
|
||||
(symbol "{LIB}:IS25LP128F" (in_bom yes) (on_board yes)
|
||||
(property "Reference" "U" (at 0 9 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Value" "IS25LP128F" (at 0 7 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Footprint" "Package_SO:SOIC-8_3.9x4.9mm_P1.27mm" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(property "Datasheet" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(symbol "IS25LP128F_0_1"
|
||||
(rectangle (start -7 6) (end 7 -6) (stroke (width 0.254) (type default)) (fill (type background)))
|
||||
)
|
||||
(symbol "IS25LP128F_1_1"
|
||||
(pin input line (at -10 4 0) (length 3) (name "~{{CS}}" (effects (font (size 1 1)))) (number "1" (effects (font (size 1 1)))))
|
||||
(pin output line (at -10 1.5 0) (length 3) (name "SO" (effects (font (size 1 1)))) (number "2" (effects (font (size 1 1)))))
|
||||
(pin input line (at -10 -1.5 0) (length 3) (name "~{{WP}}" (effects (font (size 1 1)))) (number "3" (effects (font (size 1 1)))))
|
||||
(pin power_in line (at -10 -4 0) (length 3) (name "GND" (effects (font (size 1 1)))) (number "4" (effects (font (size 1 1)))))
|
||||
(pin input line (at 10 -4 180) (length 3) (name "SI" (effects (font (size 1 1)))) (number "5" (effects (font (size 1 1)))))
|
||||
(pin input line (at 10 -1.5 180) (length 3) (name "SCLK" (effects (font (size 1 1)))) (number "6" (effects (font (size 1 1)))))
|
||||
(pin input line (at 10 1.5 180) (length 3) (name "~{{HOLD}}" (effects (font (size 1 1)))) (number "7" (effects (font (size 1 1)))))
|
||||
(pin power_in line (at 10 4 180) (length 3) (name "VCC" (effects (font (size 1 1)))) (number "8" (effects (font (size 1 1)))))
|
||||
)
|
||||
)""")
|
||||
|
||||
# FPC connector (generic N-pin)
|
||||
for npins in [10, 20]:
|
||||
sch.append(f"""
|
||||
(symbol "{LIB}:FPC_{npins}" (in_bom yes) (on_board yes)
|
||||
(property "Reference" "J" (at 0 {npins+2} 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Value" "FPC-{npins}" (at 0 {-npins-2} 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Footprint" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(property "Datasheet" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(symbol "FPC_{npins}_0_1"
|
||||
(rectangle (start -3 {npins}) (end 3 {-npins}) (stroke (width 0.254) (type default)) (fill (type background)))
|
||||
)
|
||||
(symbol "FPC_{npins}_1_1"
|
||||
""")
|
||||
for i in range(npins):
|
||||
y = npins - 1 - i * 2
|
||||
sch.append(f' (pin passive line (at -6 {y} 0) (length 3) (name "P{i+1}" (effects (font (size 1 1)))) (number "{i+1}" (effects (font (size 1 1)))))')
|
||||
sch.append(" )\n )")
|
||||
|
||||
# XIAO module symbol
|
||||
sch.append(f"""
|
||||
(symbol "{LIB}:XIAO_nRF52840" (in_bom yes) (on_board yes)
|
||||
(property "Reference" "U" (at 0 22 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Value" "XIAO_nRF52840" (at 0 20 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Footprint" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(property "Datasheet" "" (at 0 0 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(symbol "XIAO_nRF52840_0_1"
|
||||
(rectangle (start -12 19) (end 12 -19) (stroke (width 0.254) (type default)) (fill (type background)))
|
||||
)
|
||||
(symbol "XIAO_nRF52840_1_1"
|
||||
(pin bidirectional line (at -15 15 0) (length 3) (name "D0" (effects (font (size 1 1)))) (number "1" (effects (font (size 1 1)))))
|
||||
(pin bidirectional line (at -15 12.5 0) (length 3) (name "D1" (effects (font (size 1 1)))) (number "2" (effects (font (size 1 1)))))
|
||||
(pin bidirectional line (at -15 10 0) (length 3) (name "D2" (effects (font (size 1 1)))) (number "3" (effects (font (size 1 1)))))
|
||||
(pin bidirectional line (at -15 7.5 0) (length 3) (name "D3" (effects (font (size 1 1)))) (number "4" (effects (font (size 1 1)))))
|
||||
(pin bidirectional line (at -15 5 0) (length 3) (name "D4" (effects (font (size 1 1)))) (number "5" (effects (font (size 1 1)))))
|
||||
(pin bidirectional line (at -15 2.5 0) (length 3) (name "D5" (effects (font (size 1 1)))) (number "6" (effects (font (size 1 1)))))
|
||||
(pin bidirectional line (at -15 0 0) (length 3) (name "D6" (effects (font (size 1 1)))) (number "7" (effects (font (size 1 1)))))
|
||||
(pin bidirectional line (at 15 15 180) (length 3) (name "D10" (effects (font (size 1 1)))) (number "8" (effects (font (size 1 1)))))
|
||||
(pin bidirectional line (at 15 12.5 180) (length 3) (name "D9/SCK" (effects (font (size 1 1)))) (number "9" (effects (font (size 1 1)))))
|
||||
(pin bidirectional line (at 15 10 180) (length 3) (name "D8/MOSI" (effects (font (size 1 1)))) (number "10" (effects (font (size 1 1)))))
|
||||
(pin bidirectional line (at 15 7.5 180) (length 3) (name "D7/MISO" (effects (font (size 1 1)))) (number "11" (effects (font (size 1 1)))))
|
||||
(pin power_in line (at 15 2.5 180) (length 3) (name "3V3" (effects (font (size 1 1)))) (number "12" (effects (font (size 1 1)))))
|
||||
(pin power_in line (at 15 0 180) (length 3) (name "GND" (effects (font (size 1 1)))) (number "13" (effects (font (size 1 1)))))
|
||||
(pin power_in line (at 15 -2.5 180) (length 3) (name "5V" (effects (font (size 1 1)))) (number "14" (effects (font (size 1 1)))))
|
||||
)
|
||||
)""")
|
||||
|
||||
sch.append(" )") # end lib_symbols
|
||||
|
||||
# Component instances (placed with net labels for connectivity)
|
||||
def inst(lib_id, ref, value, footprint, x, y, angle=0):
|
||||
return f""" (symbol (lib_id "{LIB}:{lib_id}") (at {x} {y} {angle}) (unit 1)
|
||||
(in_bom yes) (on_board yes) (dnp no)
|
||||
(uuid "{uid()}")
|
||||
(property "Reference" "{ref}" (at {x+3} {y-3} 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Value" "{value}" (at {x+3} {y+3} 0) (effects (font (size 1.27 1.27))))
|
||||
(property "Footprint" "{footprint}" (at {x} {y} 0) (effects (font (size 1.27 1.27)) hide))
|
||||
(property "Datasheet" "" (at {x} {y} 0) (effects (font (size 1.27 1.27)) hide))
|
||||
)"""
|
||||
|
||||
def label(name, x, y):
|
||||
return f' (label "{name}" (at {x} {y} 0) (effects (font (size 1.27 1.27))) (uuid "{uid()}"))'
|
||||
|
||||
# Place components
|
||||
sch.append(inst("XIAO_nRF52840", "U3", "XIAO_nRF52840", "", 80, 80))
|
||||
sch.append(inst("IS25LP128F", "U2", "IS25LP128F", "Package_SO:SOIC-8_3.9x4.9mm_P1.27mm", 180, 60))
|
||||
sch.append(inst("TPS61220", "U1", "TPS61220", "Package_TO_SOT_SMD:SOT-353_SC-70-5", 180, 130))
|
||||
sch.append(inst("FPC_20", "J1", "FPC-20 Carrier", "", 80, 160))
|
||||
sch.append(inst("R", "R1", "4.7K", "Resistor_SMD:R_0805_2012Metric", 140, 80))
|
||||
sch.append(inst("C", "C5", "10nF", "Capacitor_SMD:C_0805_2012Metric", 150, 90))
|
||||
sch.append(inst("R", "R2", "10K", "Resistor_SMD:R_0805_2012Metric", 210, 50))
|
||||
sch.append(inst("C", "C3", "100nF", "Capacitor_SMD:C_0805_2012Metric", 210, 70))
|
||||
sch.append(inst("L", "L1", "4.7uH", "Inductor_SMD:L_0805_2012Metric", 180, 115))
|
||||
sch.append(inst("C", "C1", "10uF", "Capacitor_SMD:C_0805_2012Metric", 160, 140))
|
||||
sch.append(inst("C", "C2", "10uF", "Capacitor_SMD:C_0805_2012Metric", 200, 140))
|
||||
|
||||
# Adapter schematics (separate sections for clarity)
|
||||
sch.append(inst("FPC_10", "J2", "FPC-10 SOP-8", "", 280, 80))
|
||||
sch.append(inst("FPC_20", "J3", "FPC-20 SOP-16N", "", 280, 140))
|
||||
sch.append(inst("FPC_20", "J4", "FPC-20 SOP-16W", "", 280, 200))
|
||||
|
||||
# Net labels (connecting everything logically)
|
||||
# XIAO to SPI flash
|
||||
labels = [
|
||||
("SPI_SCK", 95, 67.5), ("SPI_SCK", 190, 58.5),
|
||||
("SPI_MOSI", 95, 70), ("SPI_MOSI", 190, 56),
|
||||
("SPI_MISO", 95, 72.5), ("SPI_MISO", 170, 61.5),
|
||||
("FLASH_CS", 170, 64), ("FLASH_CS", 210, 45),
|
||||
("C_3V3", 95, 77.5), ("C_3V3", 190, 64), ("C_3V3", 190, 133),
|
||||
("GND", 95, 80), ("GND", 170, 56), ("GND", 170, 127),
|
||||
# XIAO signals to carrier FPC
|
||||
("C_S1", 65, 65), ("C_S2", 65, 67.5), ("C_S3", 65, 70),
|
||||
("C_S4", 65, 72.5), ("C_S5", 65, 75), ("C_S6", 65, 77.5),
|
||||
("C_S7", 65, 80), ("C_S8", 95, 65),
|
||||
("C_S8", 130, 80), # to R1
|
||||
("AUDIO_FILT", 150, 80),
|
||||
# Boost
|
||||
("C_VBAT", 170, 133), ("C_VBAT", 180, 110),
|
||||
("BOOST_SW", 180, 122), ("BOOST_SW", 180, 120),
|
||||
]
|
||||
for name, x, y in labels:
|
||||
sch.append(label(name, x, y))
|
||||
|
||||
# Text notes
|
||||
notes = [
|
||||
(40, 30, "CARRIER: XIAO nRF52840 + IS25LP128F (16MB) + TPS61220 (3.3V boost)"),
|
||||
(40, 35, "FPC-20 cable connects carrier to one of the SOP adapter boards"),
|
||||
(250, 30, "ADAPTERS: Snap-off castellated SOP footprints"),
|
||||
(250, 35, "Each has its own FPC connector + unique net names"),
|
||||
]
|
||||
for x, y, text in notes:
|
||||
sch.append(f' (text "{text}" (at {x} {y} 0) (effects (font (size 1.5 1.5)) (justify left)) (uuid "{uid()}"))')
|
||||
|
||||
sch.append(")")
|
||||
return "\n".join(sch)
|
||||
|
||||
|
||||
# ============================================================
|
||||
# MAIN
|
||||
# ============================================================
|
||||
|
||||
if __name__ == "__main__":
|
||||
outdir = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
# Generate PCB
|
||||
pcb_text = generate_pcb()
|
||||
pcb_path = os.path.join(outdir, "baby-mobile-v5.kicad_pcb")
|
||||
with open(pcb_path, "w") as f:
|
||||
f.write(pcb_text)
|
||||
print(f"PCB: {pcb_path} ({len(pcb_text)} bytes)")
|
||||
|
||||
# Generate Schematic
|
||||
sch_text = generate_schematic()
|
||||
sch_path = os.path.join(outdir, "baby-mobile-v5.kicad_sch")
|
||||
with open(sch_path, "w") as f:
|
||||
f.write(sch_text)
|
||||
print(f"SCH: {sch_path} ({len(sch_text)} bytes)")
|
||||
|
||||
# Generate Project
|
||||
proj = json.dumps({
|
||||
"meta": {"filename": "baby-mobile-v5.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)
|
||||
with open(os.path.join(outdir, "baby-mobile-v5.kicad_pro"), "w") as f:
|
||||
f.write(proj)
|
||||
|
||||
print(f"\n{len(NETS)} unique nets registered:")
|
||||
print(f" Carrier: C_S1-8, C_VBAT, C_3V3, SPI_*, FLASH_CS, BOOST_SW, AUDIO_FILT")
|
||||
print(f" SOP-8: A8_P1-8, A8_VBAT, A8_GND, FPC_A8_1-10")
|
||||
print(f" SOP-16N: A16N_P1-16, A16N_VBAT, A16N_GND, FPC_A16N_1-20")
|
||||
print(f" SOP-16W: A16W_P1-16, A16W_VBAT, A16W_GND, FPC_A16W_1-20")
|
||||
print(f" No shared nets between carrier and adapters (FPC bridges them)")
|
||||
print(f"\nKey-shaped board:")
|
||||
print(f" Head (carrier): {CARRIER_W}×{CARRIER_H}mm")
|
||||
print(f" Stem (adapters): {STEM_W}mm wide, stacked SOP-8 + SOP-16N + SOP-16W")
|
||||
print(f" XIAO: USB-C on top, rows {XIAO_ROW_SPAN}mm apart, pads extended to {CARRIER_PAD_SPAN}mm")
|
||||
Reference in New Issue
Block a user