diff --git a/baby-mobile-panel.kicad_pcb b/baby-mobile-panel.kicad_pcb deleted file mode 100644 index a542ca2..0000000 --- a/baby-mobile-panel.kicad_pcb +++ /dev/null @@ -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)))) -) \ No newline at end of file diff --git a/baby-mobile-v5.kicad_pcb b/baby-mobile-v5.kicad_pcb new file mode 100644 index 0000000..67d80d9 --- /dev/null +++ b/baby-mobile-v5.kicad_pcb @@ -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)))) +) \ No newline at end of file diff --git a/baby-mobile-panel.kicad_pro b/baby-mobile-v5.kicad_pro similarity index 55% rename from baby-mobile-panel.kicad_pro rename to baby-mobile-v5.kicad_pro index 7da0a51..5ecfdd5 100644 --- a/baby-mobile-panel.kicad_pro +++ b/baby-mobile-v5.kicad_pro @@ -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 } ] } diff --git a/baby-mobile-v5.kicad_sch b/baby-mobile-v5.kicad_sch new file mode 100644 index 0000000..78148f7 --- /dev/null +++ b/baby-mobile-v5.kicad_sch @@ -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")) +) \ No newline at end of file diff --git a/generate_panel.py b/generate_panel.py deleted file mode 100644 index 872fa76..0000000 --- a/generate_panel.py +++ /dev/null @@ -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") diff --git a/generate_v5.py b/generate_v5.py new file mode 100644 index 0000000..47610fe --- /dev/null +++ b/generate_v5.py @@ -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")