This commit is contained in:
Your Name
2026-05-24 19:56:38 +03:00
parent c03cfc23fb
commit 8d5af0b70c
55 changed files with 123885 additions and 0 deletions
+40
View File
@@ -0,0 +1,40 @@
# Temporary files
*.000
*.bak
*.bck
*.kicad_pcb-bak
*.kicad_sch-bak
*-backups
*-cache*
*-bak
*-bak*
*~
~*
_autosave-*
\#auto_saved_files\#
*.tmp
*-save.pro
*-save.kicad_pcb
fp-info-cache
~*.lck
\#auto_saved_files#
# Netlist files (exported from Eeschema)
*.net
# Autorouter files (exported from Pcbnew)
*.dsn
*.ses
# Exported BOM files
*.xml
*.csv
# Archived Backups (KiCad 6.0)
**/*-backups/*.zip
# Local git-based history (KiCad 9.0+)
.history
# Local project settings
*.kicad_prl
Binary file not shown.
File diff suppressed because it is too large Load Diff
+272
View File
@@ -0,0 +1,272 @@
%TF.GenerationSoftware,KiCad,Pcbnew,9.0.7*%
%TF.CreationDate,2026-01-13T21:49:27+02:00*%
%TF.ProjectId,Servo2350,53657276-6f32-4333-9530-2e6b69636164,rev?*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Soldermask,Bot*%
%TF.FilePolarity,Negative*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 9.0.7) date 2026-01-13 21:49:27*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%ADD10R,1.700000X1.700000*%
%ADD11C,1.700000*%
%ADD12C,2.154000*%
%ADD13C,0.650000*%
%ADD14O,1.000000X2.100000*%
%ADD15O,1.000000X1.800000*%
%ADD16C,0.425000*%
G04 APERTURE END LIST*
D10*
%TO.C,D6*%
X152475000Y-137230000D03*
D11*
X152475000Y-134690000D03*
X152475000Y-132150000D03*
%TD*%
D12*
%TO.C,POWER1*%
X145400000Y-72800000D03*
X140400000Y-72800000D03*
%TD*%
D10*
%TO.C,14*%
X137310000Y-114600000D03*
D11*
X134770000Y-114600000D03*
X132230000Y-114600000D03*
X129690000Y-114600000D03*
%TD*%
D10*
%TO.C,18*%
X137310000Y-125800000D03*
D11*
X134770000Y-125800000D03*
X132230000Y-125800000D03*
X129690000Y-125800000D03*
%TD*%
D10*
%TO.C,9*%
X137310000Y-100600000D03*
D11*
X134770000Y-100600000D03*
X132230000Y-100600000D03*
X129690000Y-100600000D03*
%TD*%
D10*
%TO.C,15*%
X137310000Y-117400000D03*
D11*
X134770000Y-117400000D03*
X132230000Y-117400000D03*
X129690000Y-117400000D03*
%TD*%
D10*
%TO.C,2*%
X137210000Y-81000000D03*
D11*
X134670000Y-81000000D03*
X132130000Y-81000000D03*
X129590000Y-81000000D03*
%TD*%
D10*
%TO.C,D4*%
X158075000Y-137230000D03*
D11*
X158075000Y-134690000D03*
X158075000Y-132150000D03*
%TD*%
D10*
%TO.C,11*%
X137310000Y-106200000D03*
D11*
X134770000Y-106200000D03*
X132230000Y-106200000D03*
X129690000Y-106200000D03*
%TD*%
D10*
%TO.C,17*%
X137310000Y-123000000D03*
D11*
X134770000Y-123000000D03*
X132230000Y-123000000D03*
X129690000Y-123000000D03*
%TD*%
D10*
%TO.C,D1*%
X166525000Y-137230000D03*
D11*
X166525000Y-134690000D03*
X166525000Y-132150000D03*
%TD*%
D10*
%TO.C,5*%
X137310000Y-89400000D03*
D11*
X134770000Y-89400000D03*
X132230000Y-89400000D03*
X129690000Y-89400000D03*
%TD*%
D10*
%TO.C,1*%
X137240000Y-78200000D03*
D11*
X134700000Y-78200000D03*
X132160000Y-78200000D03*
X129620000Y-78200000D03*
%TD*%
D10*
%TO.C,3*%
X137210000Y-83800000D03*
D11*
X134670000Y-83800000D03*
X132130000Y-83800000D03*
X129590000Y-83800000D03*
%TD*%
D10*
%TO.C,13*%
X137310000Y-111800000D03*
D11*
X134770000Y-111800000D03*
X132230000Y-111800000D03*
X129690000Y-111800000D03*
%TD*%
D10*
%TO.C,D2*%
X163675000Y-137230000D03*
D11*
X163675000Y-134690000D03*
X163675000Y-132150000D03*
%TD*%
D10*
%TO.C,J1*%
X180300000Y-128310000D03*
D11*
X180300000Y-125770000D03*
X180300000Y-123230000D03*
X180300000Y-120690000D03*
X180300000Y-118150000D03*
X180300000Y-115610000D03*
X180300000Y-113070000D03*
X180300000Y-110530000D03*
X180300000Y-107990000D03*
X180300000Y-105450000D03*
X180300000Y-102910000D03*
X180300000Y-100370000D03*
X180300000Y-97830000D03*
X180300000Y-95290000D03*
X180300000Y-92750000D03*
%TD*%
D10*
%TO.C,SWD1*%
X180300000Y-78940000D03*
D11*
X180300000Y-81480000D03*
X180300000Y-84020000D03*
X180300000Y-86560000D03*
X180300000Y-89100000D03*
%TD*%
D10*
%TO.C,D5*%
X155275000Y-137230000D03*
D11*
X155275000Y-134690000D03*
X155275000Y-132150000D03*
%TD*%
D10*
%TO.C,J2*%
X180300000Y-132225000D03*
D11*
X177760000Y-132225000D03*
%TD*%
D10*
%TO.C,12*%
X137310000Y-109000000D03*
D11*
X134770000Y-109000000D03*
X132230000Y-109000000D03*
X129690000Y-109000000D03*
%TD*%
D10*
%TO.C,16*%
X137310000Y-120200000D03*
D11*
X134770000Y-120200000D03*
X132230000Y-120200000D03*
X129690000Y-120200000D03*
%TD*%
D13*
%TO.C,J3*%
X168690000Y-74405000D03*
X162910000Y-74405000D03*
D14*
X170120000Y-74925000D03*
D15*
X170120000Y-70725000D03*
D14*
X161480000Y-74925000D03*
D15*
X161480000Y-70725000D03*
%TD*%
D10*
%TO.C,6*%
X137310000Y-92200000D03*
D11*
X134770000Y-92200000D03*
X132230000Y-92200000D03*
X129690000Y-92200000D03*
%TD*%
D10*
%TO.C,D3*%
X160875000Y-137230000D03*
D11*
X160875000Y-134690000D03*
X160875000Y-132150000D03*
%TD*%
D10*
%TO.C,7*%
X137310000Y-95000000D03*
D11*
X134770000Y-95000000D03*
X132230000Y-95000000D03*
X129690000Y-95000000D03*
%TD*%
D10*
%TO.C,8*%
X137310000Y-97800000D03*
D11*
X134770000Y-97800000D03*
X132230000Y-97800000D03*
X129690000Y-97800000D03*
%TD*%
D16*
%TO.C,U1*%
X161475000Y-107525000D03*
X161475000Y-108375000D03*
X161475000Y-109225000D03*
X162325000Y-107525000D03*
X162325000Y-108375000D03*
X162325000Y-109225000D03*
X163175000Y-107525000D03*
X163175000Y-108375000D03*
X163175000Y-109225000D03*
%TD*%
D10*
%TO.C,10*%
X137310000Y-103400000D03*
D11*
X134770000Y-103400000D03*
X132230000Y-103400000D03*
X129690000Y-103400000D03*
%TD*%
D10*
%TO.C,4*%
X137240000Y-86600000D03*
D11*
X134700000Y-86600000D03*
X132160000Y-86600000D03*
X129620000Y-86600000D03*
%TD*%
M02*
+15
View File
@@ -0,0 +1,15 @@
%TF.GenerationSoftware,KiCad,Pcbnew,9.0.7*%
%TF.CreationDate,2026-01-13T21:49:27+02:00*%
%TF.ProjectId,Servo2350,53657276-6f32-4333-9530-2e6b69636164,rev?*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Paste,Bot*%
%TF.FilePolarity,Positive*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 9.0.7) date 2026-01-13 21:49:27*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 APERTURE END LIST*
M02*
File diff suppressed because it is too large Load Diff
+74
View File
@@ -0,0 +1,74 @@
%TF.GenerationSoftware,KiCad,Pcbnew,9.0.7*%
%TF.CreationDate,2026-01-13T21:49:27+02:00*%
%TF.ProjectId,Servo2350,53657276-6f32-4333-9530-2e6b69636164,rev?*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Profile,NP*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 9.0.7) date 2026-01-13 21:49:27*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%TA.AperFunction,Profile*%
%ADD10C,0.050000*%
%TD*%
G04 APERTURE END LIST*
D10*
X181750000Y-68700000D02*
X129250000Y-68700000D01*
X181750000Y-71200000D02*
G75*
G02*
X179250000Y-71200000I-1250000J0D01*
G01*
X179250000Y-71200000D02*
G75*
G02*
X181750000Y-71200000I1250000J0D01*
G01*
X181750000Y-136200000D02*
G75*
G02*
X179250000Y-136200000I-1250000J0D01*
G01*
X179250000Y-136200000D02*
G75*
G02*
X181750000Y-136200000I1250000J0D01*
G01*
X129250000Y-138700000D02*
X181750000Y-138700000D01*
X183000000Y-69950000D02*
X181750000Y-68700000D01*
X181750000Y-138700000D02*
X183000000Y-137450000D01*
X128000000Y-69950000D02*
X128000000Y-137450000D01*
X131750000Y-71200000D02*
G75*
G02*
X129250000Y-71200000I-1250000J0D01*
G01*
X129250000Y-71200000D02*
G75*
G02*
X131750000Y-71200000I1250000J0D01*
G01*
X131750000Y-136200000D02*
G75*
G02*
X129250000Y-136200000I-1250000J0D01*
G01*
X129250000Y-136200000D02*
G75*
G02*
X131750000Y-136200000I1250000J0D01*
G01*
X129250000Y-68700000D02*
X128000000Y-69950000D01*
X128000000Y-137450000D02*
X129250000Y-138700000D01*
X183000000Y-137450000D02*
X183000000Y-69950000D01*
M02*
File diff suppressed because it is too large Load Diff
+939
View File
@@ -0,0 +1,939 @@
%TF.GenerationSoftware,KiCad,Pcbnew,9.0.7*%
%TF.CreationDate,2026-01-13T21:49:27+02:00*%
%TF.ProjectId,Servo2350,53657276-6f32-4333-9530-2e6b69636164,rev?*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Soldermask,Top*%
%TF.FilePolarity,Negative*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 9.0.7) date 2026-01-13 21:49:27*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 Aperture macros list*
%AMRoundRect*
0 Rectangle with rounded corners*
0 $1 Rounding radius*
0 $2 $3 $4 $5 $6 $7 $8 $9 X,Y pos of 4 corners*
0 Add a 4 corners polygon primitive as box body*
4,1,4,$2,$3,$4,$5,$6,$7,$8,$9,$2,$3,0*
0 Add four circle primitives for the rounded corners*
1,1,$1+$1,$2,$3*
1,1,$1+$1,$4,$5*
1,1,$1+$1,$6,$7*
1,1,$1+$1,$8,$9*
0 Add four rect primitives between the rounded corners*
20,1,$1+$1,$2,$3,$4,$5,0*
20,1,$1+$1,$4,$5,$6,$7,0*
20,1,$1+$1,$6,$7,$8,$9,0*
20,1,$1+$1,$8,$9,$2,$3,0*%
G04 Aperture macros list end*
%ADD10C,0.010000*%
%ADD11R,1.700000X1.700000*%
%ADD12C,1.700000*%
%ADD13RoundRect,0.091750X-0.495250X-0.275250X0.495250X-0.275250X0.495250X0.275250X-0.495250X0.275250X0*%
%ADD14RoundRect,0.135000X-0.135000X-0.185000X0.135000X-0.185000X0.135000X0.185000X-0.135000X0.185000X0*%
%ADD15C,2.154000*%
%ADD16R,0.600000X0.300000*%
%ADD17R,0.300000X1.700000*%
%ADD18RoundRect,0.135000X0.135000X0.185000X-0.135000X0.185000X-0.135000X-0.185000X0.135000X-0.185000X0*%
%ADD19RoundRect,0.140000X0.140000X0.170000X-0.140000X0.170000X-0.140000X-0.170000X0.140000X-0.170000X0*%
%ADD20RoundRect,0.140000X0.170000X-0.140000X0.170000X0.140000X-0.170000X0.140000X-0.170000X-0.140000X0*%
%ADD21RoundRect,0.290500X1.806500X0.871500X-1.806500X0.871500X-1.806500X-0.871500X1.806500X-0.871500X0*%
%ADD22RoundRect,0.135000X-0.185000X0.135000X-0.185000X-0.135000X0.185000X-0.135000X0.185000X0.135000X0*%
%ADD23RoundRect,0.140000X-0.140000X-0.170000X0.140000X-0.170000X0.140000X0.170000X-0.140000X0.170000X0*%
%ADD24RoundRect,0.147500X-0.172500X0.147500X-0.172500X-0.147500X0.172500X-0.147500X0.172500X0.147500X0*%
%ADD25RoundRect,0.140000X-0.170000X0.140000X-0.170000X-0.140000X0.170000X-0.140000X0.170000X0.140000X0*%
%ADD26RoundRect,0.060000X-0.890000X-0.180000X0.890000X-0.180000X0.890000X0.180000X-0.890000X0.180000X0*%
%ADD27RoundRect,0.102000X-0.525000X-0.325000X0.525000X-0.325000X0.525000X0.325000X-0.525000X0.325000X0*%
%ADD28RoundRect,0.102000X0.525000X0.325000X-0.525000X0.325000X-0.525000X-0.325000X0.525000X-0.325000X0*%
%ADD29C,0.650000*%
%ADD30R,0.600000X1.240000*%
%ADD31R,0.300000X1.240000*%
%ADD32O,1.000000X2.100000*%
%ADD33O,1.000000X1.800000*%
%ADD34RoundRect,0.102000X-0.710000X-0.290000X0.710000X-0.290000X0.710000X0.290000X-0.710000X0.290000X0*%
%ADD35RoundRect,0.102000X-0.525000X-0.650000X0.525000X-0.650000X0.525000X0.650000X-0.525000X0.650000X0*%
%ADD36R,0.780000X0.220000*%
%ADD37R,0.220000X0.780000*%
%ADD38C,0.425000*%
%ADD39R,3.400000X3.400000*%
G04 APERTURE END LIST*
D10*
%TO.C,U5*%
X170775000Y-119625000D02*
X170200000Y-119625000D01*
X170200000Y-119275000D01*
X170775000Y-119275000D01*
X170775000Y-119625000D01*
G36*
X170775000Y-119625000D02*
G01*
X170200000Y-119625000D01*
X170200000Y-119275000D01*
X170775000Y-119275000D01*
X170775000Y-119625000D01*
G37*
X170775000Y-120125000D02*
X170200000Y-120125000D01*
X170200000Y-119775000D01*
X170775000Y-119775000D01*
X170775000Y-120125000D01*
G36*
X170775000Y-120125000D02*
G01*
X170200000Y-120125000D01*
X170200000Y-119775000D01*
X170775000Y-119775000D01*
X170775000Y-120125000D01*
G37*
X170775000Y-120625000D02*
X170200000Y-120625000D01*
X170200000Y-120275000D01*
X170775000Y-120275000D01*
X170775000Y-120625000D01*
G36*
X170775000Y-120625000D02*
G01*
X170200000Y-120625000D01*
X170200000Y-120275000D01*
X170775000Y-120275000D01*
X170775000Y-120625000D01*
G37*
X170775000Y-121125000D02*
X170200000Y-121125000D01*
X170200000Y-120775000D01*
X170775000Y-120775000D01*
X170775000Y-121125000D01*
G36*
X170775000Y-121125000D02*
G01*
X170200000Y-121125000D01*
X170200000Y-120775000D01*
X170775000Y-120775000D01*
X170775000Y-121125000D01*
G37*
X171325000Y-119575000D02*
X170975000Y-119575000D01*
X170975000Y-119000000D01*
X171325000Y-119000000D01*
X171325000Y-119575000D01*
G36*
X171325000Y-119575000D02*
G01*
X170975000Y-119575000D01*
X170975000Y-119000000D01*
X171325000Y-119000000D01*
X171325000Y-119575000D01*
G37*
X171325000Y-121400000D02*
X170975000Y-121400000D01*
X170975000Y-120825000D01*
X171325000Y-120825000D01*
X171325000Y-121400000D01*
G36*
X171325000Y-121400000D02*
G01*
X170975000Y-121400000D01*
X170975000Y-120825000D01*
X171325000Y-120825000D01*
X171325000Y-121400000D01*
G37*
X171825000Y-119575000D02*
X171475000Y-119575000D01*
X171475000Y-119000000D01*
X171825000Y-119000000D01*
X171825000Y-119575000D01*
G36*
X171825000Y-119575000D02*
G01*
X171475000Y-119575000D01*
X171475000Y-119000000D01*
X171825000Y-119000000D01*
X171825000Y-119575000D01*
G37*
X171825000Y-121400000D02*
X171475000Y-121400000D01*
X171475000Y-120825000D01*
X171825000Y-120825000D01*
X171825000Y-121400000D01*
G36*
X171825000Y-121400000D02*
G01*
X171475000Y-121400000D01*
X171475000Y-120825000D01*
X171825000Y-120825000D01*
X171825000Y-121400000D01*
G37*
X172325000Y-119575000D02*
X171975000Y-119575000D01*
X171975000Y-119000000D01*
X172325000Y-119000000D01*
X172325000Y-119575000D01*
G36*
X172325000Y-119575000D02*
G01*
X171975000Y-119575000D01*
X171975000Y-119000000D01*
X172325000Y-119000000D01*
X172325000Y-119575000D01*
G37*
X172325000Y-121400000D02*
X171975000Y-121400000D01*
X171975000Y-120825000D01*
X172325000Y-120825000D01*
X172325000Y-121400000D01*
G36*
X172325000Y-121400000D02*
G01*
X171975000Y-121400000D01*
X171975000Y-120825000D01*
X172325000Y-120825000D01*
X172325000Y-121400000D01*
G37*
X173100000Y-119625000D02*
X172525000Y-119625000D01*
X172525000Y-119275000D01*
X173100000Y-119275000D01*
X173100000Y-119625000D01*
G36*
X173100000Y-119625000D02*
G01*
X172525000Y-119625000D01*
X172525000Y-119275000D01*
X173100000Y-119275000D01*
X173100000Y-119625000D01*
G37*
X173100000Y-120125000D02*
X172525000Y-120125000D01*
X172525000Y-119775000D01*
X173100000Y-119775000D01*
X173100000Y-120125000D01*
G36*
X173100000Y-120125000D02*
G01*
X172525000Y-120125000D01*
X172525000Y-119775000D01*
X173100000Y-119775000D01*
X173100000Y-120125000D01*
G37*
X173100000Y-120625000D02*
X172525000Y-120625000D01*
X172525000Y-120275000D01*
X173100000Y-120275000D01*
X173100000Y-120625000D01*
G36*
X173100000Y-120625000D02*
G01*
X172525000Y-120625000D01*
X172525000Y-120275000D01*
X173100000Y-120275000D01*
X173100000Y-120625000D01*
G37*
X173100000Y-121125000D02*
X172525000Y-121125000D01*
X172525000Y-120775000D01*
X173100000Y-120775000D01*
X173100000Y-121125000D01*
G36*
X173100000Y-121125000D02*
G01*
X172525000Y-121125000D01*
X172525000Y-120775000D01*
X173100000Y-120775000D01*
X173100000Y-121125000D01*
G37*
%TD*%
D11*
%TO.C,D6*%
X152475000Y-137230000D03*
D12*
X152475000Y-134690000D03*
X152475000Y-132150000D03*
%TD*%
D13*
%TO.C,RN3*%
X144492500Y-110100000D03*
X144492500Y-110900000D03*
X144492500Y-111700000D03*
X144492500Y-112500000D03*
X146242500Y-112500000D03*
X146242500Y-111700000D03*
X146242500Y-110900000D03*
X146242500Y-110100000D03*
%TD*%
D14*
%TO.C,R12*%
X171511500Y-94675000D03*
X172531500Y-94675000D03*
%TD*%
D15*
%TO.C,POWER1*%
X145400000Y-72800000D03*
X140400000Y-72800000D03*
%TD*%
D16*
%TO.C,U2*%
X150850000Y-100875000D03*
X150850000Y-101375000D03*
X150850000Y-101875000D03*
X150850000Y-102375000D03*
X153350000Y-102375000D03*
X153350000Y-101875000D03*
X153350000Y-101375000D03*
X153350000Y-100875000D03*
D17*
X152100000Y-101625000D03*
%TD*%
D18*
%TO.C,R1*%
X173610000Y-98500000D03*
X172590000Y-98500000D03*
%TD*%
D19*
%TO.C,C12*%
X153080000Y-108675000D03*
X152120000Y-108675000D03*
%TD*%
D20*
%TO.C,C14*%
X166750000Y-99180000D03*
X166750000Y-98220000D03*
%TD*%
D13*
%TO.C,RN2*%
X144550000Y-104500000D03*
X144550000Y-105300000D03*
X144550000Y-106100000D03*
X144550000Y-106900000D03*
X146300000Y-106900000D03*
X146300000Y-106100000D03*
X146300000Y-105300000D03*
X146300000Y-104500000D03*
%TD*%
D11*
%TO.C,14*%
X137310000Y-114600000D03*
D12*
X134770000Y-114600000D03*
X132230000Y-114600000D03*
X129690000Y-114600000D03*
%TD*%
D14*
%TO.C,R7*%
X170743500Y-131590000D03*
X171763500Y-131590000D03*
%TD*%
D11*
%TO.C,18*%
X137310000Y-125800000D03*
D12*
X134770000Y-125800000D03*
X132230000Y-125800000D03*
X129690000Y-125800000D03*
%TD*%
D11*
%TO.C,9*%
X137310000Y-100600000D03*
D12*
X134770000Y-100600000D03*
X132230000Y-100600000D03*
X129690000Y-100600000D03*
%TD*%
D19*
%TO.C,C3*%
X153080000Y-106150000D03*
X152120000Y-106150000D03*
%TD*%
D21*
%TO.C,C26*%
X146565000Y-132800000D03*
X138085000Y-132800000D03*
%TD*%
D18*
%TO.C,R11*%
X164210000Y-78635000D03*
X163190000Y-78635000D03*
%TD*%
D11*
%TO.C,15*%
X137310000Y-117400000D03*
D12*
X134770000Y-117400000D03*
X132230000Y-117400000D03*
X129690000Y-117400000D03*
%TD*%
D22*
%TO.C,R9*%
X158100000Y-120990000D03*
X158100000Y-122010000D03*
%TD*%
D23*
%TO.C,C22*%
X170970000Y-123300000D03*
X171930000Y-123300000D03*
%TD*%
D13*
%TO.C,RN5*%
X144317500Y-121400000D03*
X144317500Y-122200000D03*
X144317500Y-123000000D03*
X144317500Y-123800000D03*
X146067500Y-123800000D03*
X146067500Y-123000000D03*
X146067500Y-122200000D03*
X146067500Y-121400000D03*
%TD*%
D11*
%TO.C,2*%
X137210000Y-81000000D03*
D12*
X134670000Y-81000000D03*
X132130000Y-81000000D03*
X129590000Y-81000000D03*
%TD*%
D20*
%TO.C,C15*%
X164950000Y-99180000D03*
X164950000Y-98220000D03*
%TD*%
D11*
%TO.C,D4*%
X158075000Y-137230000D03*
D12*
X158075000Y-134690000D03*
X158075000Y-132150000D03*
%TD*%
D11*
%TO.C,11*%
X137310000Y-106200000D03*
D12*
X134770000Y-106200000D03*
X132230000Y-106200000D03*
X129690000Y-106200000D03*
%TD*%
D11*
%TO.C,17*%
X137310000Y-123000000D03*
D12*
X134770000Y-123000000D03*
X132230000Y-123000000D03*
X129690000Y-123000000D03*
%TD*%
D19*
%TO.C,C18*%
X154530000Y-99200000D03*
X153570000Y-99200000D03*
%TD*%
D24*
%TO.C,LED2*%
X158100000Y-123815000D03*
X158100000Y-124785000D03*
%TD*%
D25*
%TO.C,C20*%
X168545000Y-81305000D03*
X168545000Y-82265000D03*
%TD*%
D14*
%TO.C,R10*%
X167900000Y-78735000D03*
X168920000Y-78735000D03*
%TD*%
D22*
%TO.C,R5*%
X151650000Y-98190000D03*
X151650000Y-99210000D03*
%TD*%
D11*
%TO.C,D1*%
X166525000Y-137230000D03*
D12*
X166525000Y-134690000D03*
X166525000Y-132150000D03*
%TD*%
D23*
%TO.C,C4*%
X171670000Y-104800000D03*
X172630000Y-104800000D03*
%TD*%
D19*
%TO.C,C17*%
X163455000Y-122250000D03*
X162495000Y-122250000D03*
%TD*%
D11*
%TO.C,5*%
X137310000Y-89400000D03*
D12*
X134770000Y-89400000D03*
X132230000Y-89400000D03*
X129690000Y-89400000D03*
%TD*%
D13*
%TO.C,RN4*%
X144392500Y-115800000D03*
X144392500Y-116600000D03*
X144392500Y-117400000D03*
X144392500Y-118200000D03*
X146142500Y-118200000D03*
X146142500Y-117400000D03*
X146142500Y-116600000D03*
X146142500Y-115800000D03*
%TD*%
D11*
%TO.C,1*%
X137240000Y-78200000D03*
D12*
X134700000Y-78200000D03*
X132160000Y-78200000D03*
X129620000Y-78200000D03*
%TD*%
D26*
%TO.C,U4*%
X148690000Y-83900000D03*
X148690000Y-84550000D03*
X148690000Y-85200000D03*
X148690000Y-85850000D03*
X148690000Y-86500000D03*
X148690000Y-87150000D03*
X148690000Y-87800000D03*
X148690000Y-88450000D03*
X148690000Y-89100000D03*
X148690000Y-89750000D03*
X148690000Y-90400000D03*
X148690000Y-91050000D03*
X155700000Y-91050000D03*
X155700000Y-90400000D03*
X155700000Y-89750000D03*
X155700000Y-89100000D03*
X155700000Y-88450000D03*
X155700000Y-87800000D03*
X155700000Y-87150000D03*
X155700000Y-86500000D03*
X155700000Y-85850000D03*
X155700000Y-85200000D03*
X155700000Y-84550000D03*
X155700000Y-83900000D03*
%TD*%
D11*
%TO.C,3*%
X137210000Y-83800000D03*
D12*
X134670000Y-83800000D03*
X132130000Y-83800000D03*
X129590000Y-83800000D03*
%TD*%
D18*
%TO.C,R6*%
X149960000Y-99200000D03*
X148940000Y-99200000D03*
%TD*%
D11*
%TO.C,13*%
X137310000Y-111800000D03*
D12*
X134770000Y-111800000D03*
X132230000Y-111800000D03*
X129690000Y-111800000D03*
%TD*%
D27*
%TO.C,BOOT*%
X154725000Y-70260000D03*
X158875000Y-70260000D03*
X154725000Y-72410000D03*
X158875000Y-72410000D03*
%TD*%
D28*
%TO.C,RESET*%
X173975000Y-136665000D03*
X169825000Y-136665000D03*
X173975000Y-134515000D03*
X169825000Y-134515000D03*
%TD*%
D23*
%TO.C,C9*%
X171670000Y-108600000D03*
X172630000Y-108600000D03*
%TD*%
D20*
%TO.C,C5*%
X156450000Y-99180000D03*
X156450000Y-98220000D03*
%TD*%
D13*
%TO.C,RN1*%
X144550000Y-98900000D03*
X144550000Y-99700000D03*
X144550000Y-100500000D03*
X144550000Y-101300000D03*
X146300000Y-101300000D03*
X146300000Y-100500000D03*
X146300000Y-99700000D03*
X146300000Y-98900000D03*
%TD*%
D25*
%TO.C,C16*%
X159875000Y-118270000D03*
X159875000Y-119230000D03*
%TD*%
D11*
%TO.C,D2*%
X163675000Y-137230000D03*
D12*
X163675000Y-134690000D03*
X163675000Y-132150000D03*
%TD*%
D19*
%TO.C,C2*%
X153105000Y-111200000D03*
X152145000Y-111200000D03*
%TD*%
D25*
%TO.C,C6*%
X156150000Y-117720000D03*
X156150000Y-118680000D03*
%TD*%
D23*
%TO.C,C8*%
X171670000Y-112200000D03*
X172630000Y-112200000D03*
%TD*%
D22*
%TO.C,R8*%
X155700000Y-120990000D03*
X155700000Y-122010000D03*
%TD*%
D23*
%TO.C,C13*%
X172620000Y-100500000D03*
X173580000Y-100500000D03*
%TD*%
D20*
%TO.C,C1*%
X158150000Y-99180000D03*
X158150000Y-98220000D03*
%TD*%
D23*
%TO.C,C21*%
X155495000Y-81975000D03*
X156455000Y-81975000D03*
%TD*%
D24*
%TO.C,LED1*%
X155700000Y-123815000D03*
X155700000Y-124785000D03*
%TD*%
D20*
%TO.C,C7*%
X159850000Y-99180000D03*
X159850000Y-98220000D03*
%TD*%
D25*
%TO.C,C10*%
X167850000Y-118220000D03*
X167850000Y-119180000D03*
%TD*%
D11*
%TO.C,J1*%
X180300000Y-128310000D03*
D12*
X180300000Y-125770000D03*
X180300000Y-123230000D03*
X180300000Y-120690000D03*
X180300000Y-118150000D03*
X180300000Y-115610000D03*
X180300000Y-113070000D03*
X180300000Y-110530000D03*
X180300000Y-107990000D03*
X180300000Y-105450000D03*
X180300000Y-102910000D03*
X180300000Y-100370000D03*
X180300000Y-97830000D03*
X180300000Y-95290000D03*
X180300000Y-92750000D03*
%TD*%
D25*
%TO.C,C24*%
X158300000Y-117720000D03*
X158300000Y-118680000D03*
%TD*%
D24*
%TO.C,L1*%
X168550000Y-98215000D03*
X168550000Y-99185000D03*
%TD*%
D11*
%TO.C,SWD1*%
X180300000Y-78940000D03*
D12*
X180300000Y-81480000D03*
X180300000Y-84020000D03*
X180300000Y-86560000D03*
X180300000Y-89100000D03*
%TD*%
D11*
%TO.C,D5*%
X155275000Y-137230000D03*
D12*
X155275000Y-134690000D03*
X155275000Y-132150000D03*
%TD*%
D11*
%TO.C,J2*%
X180300000Y-132225000D03*
D12*
X177760000Y-132225000D03*
%TD*%
D22*
%TO.C,R2*%
X165775000Y-118140000D03*
X165775000Y-119160000D03*
%TD*%
D11*
%TO.C,12*%
X137310000Y-109000000D03*
D12*
X134770000Y-109000000D03*
X132230000Y-109000000D03*
X129690000Y-109000000D03*
%TD*%
D22*
%TO.C,R4*%
X163250000Y-98180000D03*
X163250000Y-99200000D03*
%TD*%
D19*
%TO.C,C23*%
X172030000Y-125200000D03*
X171070000Y-125200000D03*
%TD*%
D11*
%TO.C,16*%
X137310000Y-120200000D03*
D12*
X134770000Y-120200000D03*
X132230000Y-120200000D03*
X129690000Y-120200000D03*
%TD*%
D29*
%TO.C,J3*%
X168690000Y-74405000D03*
X162910000Y-74405000D03*
D30*
X169000000Y-75525000D03*
X168200000Y-75525000D03*
D31*
X167050000Y-75525000D03*
X166050000Y-75525000D03*
X165550000Y-75525000D03*
X164550000Y-75525000D03*
D30*
X163400000Y-75525000D03*
X162600000Y-75525000D03*
X162600000Y-75525000D03*
X163400000Y-75525000D03*
D31*
X164050000Y-75525000D03*
X165050000Y-75525000D03*
X166550000Y-75525000D03*
X167550000Y-75525000D03*
D30*
X168200000Y-75525000D03*
X169000000Y-75525000D03*
D32*
X170120000Y-74925000D03*
D33*
X170120000Y-70725000D03*
D32*
X161480000Y-74925000D03*
D33*
X161480000Y-70725000D03*
%TD*%
D23*
%TO.C,C25*%
X171620000Y-103000000D03*
X172580000Y-103000000D03*
%TD*%
%TO.C,C11*%
X171670000Y-106700000D03*
X172630000Y-106700000D03*
%TD*%
D14*
%TO.C,R13*%
X171511500Y-92775000D03*
X172531500Y-92775000D03*
%TD*%
D34*
%TO.C,U3*%
X163755000Y-81285000D03*
X163755000Y-82235000D03*
X163755000Y-83185000D03*
X166045000Y-83185000D03*
X166045000Y-81285000D03*
%TD*%
D11*
%TO.C,6*%
X137310000Y-92200000D03*
D12*
X134770000Y-92200000D03*
X132230000Y-92200000D03*
X129690000Y-92200000D03*
%TD*%
D11*
%TO.C,D3*%
X160875000Y-137230000D03*
D12*
X160875000Y-134690000D03*
X160875000Y-132150000D03*
%TD*%
D11*
%TO.C,7*%
X137310000Y-95000000D03*
D12*
X134770000Y-95000000D03*
X132230000Y-95000000D03*
X129690000Y-95000000D03*
%TD*%
D25*
%TO.C,C19*%
X161345000Y-81305000D03*
X161345000Y-82265000D03*
%TD*%
D11*
%TO.C,8*%
X137310000Y-97800000D03*
D12*
X134770000Y-97800000D03*
X132230000Y-97800000D03*
X129690000Y-97800000D03*
%TD*%
D35*
%TO.C,Y1*%
X162000000Y-117600000D03*
X162000000Y-119900000D03*
X163750000Y-119900000D03*
X163750000Y-117600000D03*
%TD*%
D22*
%TO.C,R3*%
X161550000Y-98190000D03*
X161550000Y-99210000D03*
%TD*%
D36*
%TO.C,U1*%
X157428500Y-104575000D03*
X157428500Y-104975000D03*
X157428500Y-105375000D03*
X157428500Y-105775000D03*
X157428500Y-106175000D03*
X157428500Y-106575000D03*
X157428500Y-106975000D03*
X157428500Y-107375000D03*
X157428500Y-107775000D03*
X157428500Y-108175000D03*
X157428500Y-108575000D03*
X157428500Y-108975000D03*
X157428500Y-109375000D03*
X157428500Y-109775000D03*
X157428500Y-110175000D03*
X157428500Y-110575000D03*
X157428500Y-110975000D03*
X157428500Y-111375000D03*
X157428500Y-111775000D03*
X157428500Y-112175000D03*
D37*
X158525000Y-113271500D03*
X158925000Y-113271500D03*
X159325000Y-113271500D03*
X159725000Y-113271500D03*
X160125000Y-113271500D03*
X160525000Y-113271500D03*
X160925000Y-113271500D03*
X161325000Y-113271500D03*
X161725000Y-113271500D03*
X162125000Y-113271500D03*
X162525000Y-113271500D03*
X162925000Y-113271500D03*
X163325000Y-113271500D03*
X163725000Y-113271500D03*
X164125000Y-113271500D03*
X164525000Y-113271500D03*
X164925000Y-113271500D03*
X165325000Y-113271500D03*
X165725000Y-113271500D03*
X166125000Y-113271500D03*
D36*
X167221500Y-112175000D03*
X167221500Y-111775000D03*
X167221500Y-111375000D03*
X167221500Y-110975000D03*
X167221500Y-110575000D03*
X167221500Y-110175000D03*
X167221500Y-109775000D03*
X167221500Y-109375000D03*
X167221500Y-108975000D03*
X167221500Y-108575000D03*
X167221500Y-108175000D03*
X167221500Y-107775000D03*
X167221500Y-107375000D03*
X167221500Y-106975000D03*
X167221500Y-106575000D03*
X167221500Y-106175000D03*
X167221500Y-105775000D03*
X167221500Y-105375000D03*
X167221500Y-104975000D03*
X167221500Y-104575000D03*
D37*
X166125000Y-103478500D03*
X165725000Y-103478500D03*
X165325000Y-103478500D03*
X164925000Y-103478500D03*
X164525000Y-103478500D03*
X164125000Y-103478500D03*
X163725000Y-103478500D03*
X163325000Y-103478500D03*
X162925000Y-103478500D03*
X162525000Y-103478500D03*
X162125000Y-103478500D03*
X161725000Y-103478500D03*
X161325000Y-103478500D03*
X160925000Y-103478500D03*
X160525000Y-103478500D03*
X160125000Y-103478500D03*
X159725000Y-103478500D03*
X159325000Y-103478500D03*
X158925000Y-103478500D03*
X158525000Y-103478500D03*
D38*
X161475000Y-107525000D03*
X161475000Y-108375000D03*
X161475000Y-109225000D03*
X162325000Y-107525000D03*
X162325000Y-108375000D03*
D39*
X162325000Y-108375000D03*
D38*
X162325000Y-109225000D03*
X163175000Y-107525000D03*
X163175000Y-108375000D03*
X163175000Y-109225000D03*
%TD*%
D11*
%TO.C,10*%
X137310000Y-103400000D03*
D12*
X134770000Y-103400000D03*
X132230000Y-103400000D03*
X129690000Y-103400000D03*
%TD*%
D11*
%TO.C,4*%
X137240000Y-86600000D03*
D12*
X134700000Y-86600000D03*
X132160000Y-86600000D03*
X129620000Y-86600000D03*
%TD*%
M02*
+639
View File
@@ -0,0 +1,639 @@
%TF.GenerationSoftware,KiCad,Pcbnew,9.0.7*%
%TF.CreationDate,2026-01-13T21:49:27+02:00*%
%TF.ProjectId,Servo2350,53657276-6f32-4333-9530-2e6b69636164,rev?*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Paste,Top*%
%TF.FilePolarity,Positive*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 9.0.7) date 2026-01-13 21:49:27*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 Aperture macros list*
%AMRoundRect*
0 Rectangle with rounded corners*
0 $1 Rounding radius*
0 $2 $3 $4 $5 $6 $7 $8 $9 X,Y pos of 4 corners*
0 Add a 4 corners polygon primitive as box body*
4,1,4,$2,$3,$4,$5,$6,$7,$8,$9,$2,$3,0*
0 Add four circle primitives for the rounded corners*
1,1,$1+$1,$2,$3*
1,1,$1+$1,$4,$5*
1,1,$1+$1,$6,$7*
1,1,$1+$1,$8,$9*
0 Add four rect primitives between the rounded corners*
20,1,$1+$1,$2,$3,$4,$5,0*
20,1,$1+$1,$4,$5,$6,$7,0*
20,1,$1+$1,$6,$7,$8,$9,0*
20,1,$1+$1,$8,$9,$2,$3,0*%
G04 Aperture macros list end*
%ADD10C,0.010000*%
%ADD11RoundRect,0.066250X-0.418750X-0.198750X0.418750X-0.198750X0.418750X0.198750X-0.418750X0.198750X0*%
%ADD12RoundRect,0.135000X-0.135000X-0.185000X0.135000X-0.185000X0.135000X0.185000X-0.135000X0.185000X0*%
%ADD13RoundRect,0.135000X0.135000X0.185000X-0.135000X0.185000X-0.135000X-0.185000X0.135000X-0.185000X0*%
%ADD14RoundRect,0.140000X0.140000X0.170000X-0.140000X0.170000X-0.140000X-0.170000X0.140000X-0.170000X0*%
%ADD15RoundRect,0.140000X0.170000X-0.140000X0.170000X0.140000X-0.170000X0.140000X-0.170000X-0.140000X0*%
%ADD16R,0.475000X0.250000*%
%ADD17R,0.250000X0.475000*%
%ADD18RoundRect,0.265000X1.730000X0.795000X-1.730000X0.795000X-1.730000X-0.795000X1.730000X-0.795000X0*%
%ADD19RoundRect,0.135000X-0.185000X0.135000X-0.185000X-0.135000X0.185000X-0.135000X0.185000X0.135000X0*%
%ADD20RoundRect,0.140000X-0.140000X-0.170000X0.140000X-0.170000X0.140000X0.170000X-0.140000X0.170000X0*%
%ADD21RoundRect,0.147500X-0.172500X0.147500X-0.172500X-0.147500X0.172500X-0.147500X0.172500X0.147500X0*%
%ADD22RoundRect,0.140000X-0.170000X0.140000X-0.170000X-0.140000X0.170000X-0.140000X0.170000X0.140000X0*%
%ADD23RoundRect,0.060000X-0.890000X-0.180000X0.890000X-0.180000X0.890000X0.180000X-0.890000X0.180000X0*%
%ADD24R,1.050000X0.650000*%
%ADD25R,0.600000X1.240000*%
%ADD26R,0.300000X1.240000*%
%ADD27R,1.420000X0.580000*%
%ADD28R,1.050000X1.300000*%
%ADD29R,1.000000X1.000000*%
%ADD30R,0.780000X0.220000*%
%ADD31R,0.220000X0.780000*%
G04 APERTURE END LIST*
D10*
%TO.C,U2*%
X151000000Y-100975000D02*
X150450000Y-100975000D01*
X150450000Y-100775000D01*
X151000000Y-100775000D01*
X151000000Y-100975000D01*
G36*
X151000000Y-100975000D02*
G01*
X150450000Y-100975000D01*
X150450000Y-100775000D01*
X151000000Y-100775000D01*
X151000000Y-100975000D01*
G37*
X151000000Y-101475000D02*
X150450000Y-101475000D01*
X150450000Y-101275000D01*
X151000000Y-101275000D01*
X151000000Y-101475000D01*
G36*
X151000000Y-101475000D02*
G01*
X150450000Y-101475000D01*
X150450000Y-101275000D01*
X151000000Y-101275000D01*
X151000000Y-101475000D01*
G37*
X151000000Y-101975000D02*
X150450000Y-101975000D01*
X150450000Y-101775000D01*
X151000000Y-101775000D01*
X151000000Y-101975000D01*
G36*
X151000000Y-101975000D02*
G01*
X150450000Y-101975000D01*
X150450000Y-101775000D01*
X151000000Y-101775000D01*
X151000000Y-101975000D01*
G37*
X151000000Y-102475000D02*
X150450000Y-102475000D01*
X150450000Y-102275000D01*
X151000000Y-102275000D01*
X151000000Y-102475000D01*
G36*
X151000000Y-102475000D02*
G01*
X150450000Y-102475000D01*
X150450000Y-102275000D01*
X151000000Y-102275000D01*
X151000000Y-102475000D01*
G37*
X152200000Y-101525000D02*
X152000000Y-101525000D01*
X152000000Y-101025000D01*
X152200000Y-101025000D01*
X152200000Y-101525000D01*
G36*
X152200000Y-101525000D02*
G01*
X152000000Y-101525000D01*
X152000000Y-101025000D01*
X152200000Y-101025000D01*
X152200000Y-101525000D01*
G37*
X152200000Y-102225000D02*
X152000000Y-102225000D01*
X152000000Y-101725000D01*
X152200000Y-101725000D01*
X152200000Y-102225000D01*
G36*
X152200000Y-102225000D02*
G01*
X152000000Y-102225000D01*
X152000000Y-101725000D01*
X152200000Y-101725000D01*
X152200000Y-102225000D01*
G37*
X153750000Y-100975000D02*
X153200000Y-100975000D01*
X153200000Y-100775000D01*
X153750000Y-100775000D01*
X153750000Y-100975000D01*
G36*
X153750000Y-100975000D02*
G01*
X153200000Y-100975000D01*
X153200000Y-100775000D01*
X153750000Y-100775000D01*
X153750000Y-100975000D01*
G37*
X153750000Y-101475000D02*
X153200000Y-101475000D01*
X153200000Y-101275000D01*
X153750000Y-101275000D01*
X153750000Y-101475000D01*
G36*
X153750000Y-101475000D02*
G01*
X153200000Y-101475000D01*
X153200000Y-101275000D01*
X153750000Y-101275000D01*
X153750000Y-101475000D01*
G37*
X153750000Y-101975000D02*
X153200000Y-101975000D01*
X153200000Y-101775000D01*
X153750000Y-101775000D01*
X153750000Y-101975000D01*
G36*
X153750000Y-101975000D02*
G01*
X153200000Y-101975000D01*
X153200000Y-101775000D01*
X153750000Y-101775000D01*
X153750000Y-101975000D01*
G37*
X153750000Y-102475000D02*
X153200000Y-102475000D01*
X153200000Y-102275000D01*
X153750000Y-102275000D01*
X153750000Y-102475000D01*
G36*
X153750000Y-102475000D02*
G01*
X153200000Y-102475000D01*
X153200000Y-102275000D01*
X153750000Y-102275000D01*
X153750000Y-102475000D01*
G37*
%TD*%
D11*
%TO.C,RN3*%
X144492500Y-110100000D03*
X144492500Y-110900000D03*
X144492500Y-111700000D03*
X144492500Y-112500000D03*
X146242500Y-112500000D03*
X146242500Y-111700000D03*
X146242500Y-110900000D03*
X146242500Y-110100000D03*
%TD*%
D12*
%TO.C,R12*%
X171511500Y-94675000D03*
X172531500Y-94675000D03*
%TD*%
D13*
%TO.C,R1*%
X173610000Y-98500000D03*
X172590000Y-98500000D03*
%TD*%
D14*
%TO.C,C12*%
X153080000Y-108675000D03*
X152120000Y-108675000D03*
%TD*%
D15*
%TO.C,C14*%
X166750000Y-99180000D03*
X166750000Y-98220000D03*
%TD*%
D11*
%TO.C,RN2*%
X144550000Y-104500000D03*
X144550000Y-105300000D03*
X144550000Y-106100000D03*
X144550000Y-106900000D03*
X146300000Y-106900000D03*
X146300000Y-106100000D03*
X146300000Y-105300000D03*
X146300000Y-104500000D03*
%TD*%
D12*
%TO.C,R7*%
X170743500Y-131590000D03*
X171763500Y-131590000D03*
%TD*%
D14*
%TO.C,C3*%
X153080000Y-106150000D03*
X152120000Y-106150000D03*
%TD*%
D16*
%TO.C,U5*%
X170487500Y-119450000D03*
X170487500Y-119950000D03*
X170487500Y-120450000D03*
X170487500Y-120950000D03*
D17*
X171150000Y-121112500D03*
X171650000Y-121112500D03*
X172150000Y-121112500D03*
D16*
X172812500Y-120950000D03*
X172812500Y-120450000D03*
X172812500Y-119950000D03*
X172812500Y-119450000D03*
D17*
X172150000Y-119287500D03*
X171650000Y-119287500D03*
X171150000Y-119287500D03*
%TD*%
D18*
%TO.C,C26*%
X146565000Y-132800000D03*
X138085000Y-132800000D03*
%TD*%
D13*
%TO.C,R11*%
X164210000Y-78635000D03*
X163190000Y-78635000D03*
%TD*%
D19*
%TO.C,R9*%
X158100000Y-120990000D03*
X158100000Y-122010000D03*
%TD*%
D20*
%TO.C,C22*%
X170970000Y-123300000D03*
X171930000Y-123300000D03*
%TD*%
D11*
%TO.C,RN5*%
X144317500Y-121400000D03*
X144317500Y-122200000D03*
X144317500Y-123000000D03*
X144317500Y-123800000D03*
X146067500Y-123800000D03*
X146067500Y-123000000D03*
X146067500Y-122200000D03*
X146067500Y-121400000D03*
%TD*%
D15*
%TO.C,C15*%
X164950000Y-99180000D03*
X164950000Y-98220000D03*
%TD*%
D14*
%TO.C,C18*%
X154530000Y-99200000D03*
X153570000Y-99200000D03*
%TD*%
D21*
%TO.C,LED2*%
X158100000Y-123815000D03*
X158100000Y-124785000D03*
%TD*%
D22*
%TO.C,C20*%
X168545000Y-81305000D03*
X168545000Y-82265000D03*
%TD*%
D12*
%TO.C,R10*%
X167900000Y-78735000D03*
X168920000Y-78735000D03*
%TD*%
D19*
%TO.C,R5*%
X151650000Y-98190000D03*
X151650000Y-99210000D03*
%TD*%
D20*
%TO.C,C4*%
X171670000Y-104800000D03*
X172630000Y-104800000D03*
%TD*%
D14*
%TO.C,C17*%
X163455000Y-122250000D03*
X162495000Y-122250000D03*
%TD*%
D11*
%TO.C,RN4*%
X144392500Y-115800000D03*
X144392500Y-116600000D03*
X144392500Y-117400000D03*
X144392500Y-118200000D03*
X146142500Y-118200000D03*
X146142500Y-117400000D03*
X146142500Y-116600000D03*
X146142500Y-115800000D03*
%TD*%
D23*
%TO.C,U4*%
X148690000Y-83900000D03*
X148690000Y-84550000D03*
X148690000Y-85200000D03*
X148690000Y-85850000D03*
X148690000Y-86500000D03*
X148690000Y-87150000D03*
X148690000Y-87800000D03*
X148690000Y-88450000D03*
X148690000Y-89100000D03*
X148690000Y-89750000D03*
X148690000Y-90400000D03*
X148690000Y-91050000D03*
X155700000Y-91050000D03*
X155700000Y-90400000D03*
X155700000Y-89750000D03*
X155700000Y-89100000D03*
X155700000Y-88450000D03*
X155700000Y-87800000D03*
X155700000Y-87150000D03*
X155700000Y-86500000D03*
X155700000Y-85850000D03*
X155700000Y-85200000D03*
X155700000Y-84550000D03*
X155700000Y-83900000D03*
%TD*%
D13*
%TO.C,R6*%
X149960000Y-99200000D03*
X148940000Y-99200000D03*
%TD*%
D24*
%TO.C,BOOT*%
X154725000Y-70260000D03*
X158875000Y-70260000D03*
X154725000Y-72410000D03*
X158875000Y-72410000D03*
%TD*%
%TO.C,RESET*%
X173975000Y-136665000D03*
X169825000Y-136665000D03*
X173975000Y-134515000D03*
X169825000Y-134515000D03*
%TD*%
D20*
%TO.C,C9*%
X171670000Y-108600000D03*
X172630000Y-108600000D03*
%TD*%
D15*
%TO.C,C5*%
X156450000Y-99180000D03*
X156450000Y-98220000D03*
%TD*%
D11*
%TO.C,RN1*%
X144550000Y-98900000D03*
X144550000Y-99700000D03*
X144550000Y-100500000D03*
X144550000Y-101300000D03*
X146300000Y-101300000D03*
X146300000Y-100500000D03*
X146300000Y-99700000D03*
X146300000Y-98900000D03*
%TD*%
D22*
%TO.C,C16*%
X159875000Y-118270000D03*
X159875000Y-119230000D03*
%TD*%
D14*
%TO.C,C2*%
X153105000Y-111200000D03*
X152145000Y-111200000D03*
%TD*%
D22*
%TO.C,C6*%
X156150000Y-117720000D03*
X156150000Y-118680000D03*
%TD*%
D20*
%TO.C,C8*%
X171670000Y-112200000D03*
X172630000Y-112200000D03*
%TD*%
D19*
%TO.C,R8*%
X155700000Y-120990000D03*
X155700000Y-122010000D03*
%TD*%
D20*
%TO.C,C13*%
X172620000Y-100500000D03*
X173580000Y-100500000D03*
%TD*%
D15*
%TO.C,C1*%
X158150000Y-99180000D03*
X158150000Y-98220000D03*
%TD*%
D20*
%TO.C,C21*%
X155495000Y-81975000D03*
X156455000Y-81975000D03*
%TD*%
D21*
%TO.C,LED1*%
X155700000Y-123815000D03*
X155700000Y-124785000D03*
%TD*%
D15*
%TO.C,C7*%
X159850000Y-99180000D03*
X159850000Y-98220000D03*
%TD*%
D22*
%TO.C,C10*%
X167850000Y-118220000D03*
X167850000Y-119180000D03*
%TD*%
%TO.C,C24*%
X158300000Y-117720000D03*
X158300000Y-118680000D03*
%TD*%
D21*
%TO.C,L1*%
X168550000Y-98215000D03*
X168550000Y-99185000D03*
%TD*%
D19*
%TO.C,R2*%
X165775000Y-118140000D03*
X165775000Y-119160000D03*
%TD*%
%TO.C,R4*%
X163250000Y-98180000D03*
X163250000Y-99200000D03*
%TD*%
D14*
%TO.C,C23*%
X172030000Y-125200000D03*
X171070000Y-125200000D03*
%TD*%
D25*
%TO.C,J3*%
X169000000Y-75525000D03*
X168200000Y-75525000D03*
D26*
X167050000Y-75525000D03*
X166050000Y-75525000D03*
X165550000Y-75525000D03*
X164550000Y-75525000D03*
D25*
X163400000Y-75525000D03*
X162600000Y-75525000D03*
X162600000Y-75525000D03*
X163400000Y-75525000D03*
D26*
X164050000Y-75525000D03*
X165050000Y-75525000D03*
X166550000Y-75525000D03*
X167550000Y-75525000D03*
D25*
X168200000Y-75525000D03*
X169000000Y-75525000D03*
%TD*%
D20*
%TO.C,C25*%
X171620000Y-103000000D03*
X172580000Y-103000000D03*
%TD*%
%TO.C,C11*%
X171670000Y-106700000D03*
X172630000Y-106700000D03*
%TD*%
D12*
%TO.C,R13*%
X171511500Y-92775000D03*
X172531500Y-92775000D03*
%TD*%
D27*
%TO.C,U3*%
X163755000Y-81285000D03*
X163755000Y-82235000D03*
X163755000Y-83185000D03*
X166045000Y-83185000D03*
X166045000Y-81285000D03*
%TD*%
D22*
%TO.C,C19*%
X161345000Y-81305000D03*
X161345000Y-82265000D03*
%TD*%
D28*
%TO.C,Y1*%
X162000000Y-117600000D03*
X162000000Y-119900000D03*
X163750000Y-119900000D03*
X163750000Y-117600000D03*
%TD*%
D19*
%TO.C,R3*%
X161550000Y-98190000D03*
X161550000Y-99210000D03*
%TD*%
D29*
%TO.C,U1*%
X161425000Y-107475000D03*
X161425000Y-109275000D03*
X163225000Y-107475000D03*
X163225000Y-109275000D03*
D30*
X157428500Y-104575000D03*
X157428500Y-104975000D03*
X157428500Y-105375000D03*
X157428500Y-105775000D03*
X157428500Y-106175000D03*
X157428500Y-106575000D03*
X157428500Y-106975000D03*
X157428500Y-107375000D03*
X157428500Y-107775000D03*
X157428500Y-108175000D03*
X157428500Y-108575000D03*
X157428500Y-108975000D03*
X157428500Y-109375000D03*
X157428500Y-109775000D03*
X157428500Y-110175000D03*
X157428500Y-110575000D03*
X157428500Y-110975000D03*
X157428500Y-111375000D03*
X157428500Y-111775000D03*
X157428500Y-112175000D03*
D31*
X158525000Y-113271500D03*
X158925000Y-113271500D03*
X159325000Y-113271500D03*
X159725000Y-113271500D03*
X160125000Y-113271500D03*
X160525000Y-113271500D03*
X160925000Y-113271500D03*
X161325000Y-113271500D03*
X161725000Y-113271500D03*
X162125000Y-113271500D03*
X162525000Y-113271500D03*
X162925000Y-113271500D03*
X163325000Y-113271500D03*
X163725000Y-113271500D03*
X164125000Y-113271500D03*
X164525000Y-113271500D03*
X164925000Y-113271500D03*
X165325000Y-113271500D03*
X165725000Y-113271500D03*
X166125000Y-113271500D03*
D30*
X167221500Y-112175000D03*
X167221500Y-111775000D03*
X167221500Y-111375000D03*
X167221500Y-110975000D03*
X167221500Y-110575000D03*
X167221500Y-110175000D03*
X167221500Y-109775000D03*
X167221500Y-109375000D03*
X167221500Y-108975000D03*
X167221500Y-108575000D03*
X167221500Y-108175000D03*
X167221500Y-107775000D03*
X167221500Y-107375000D03*
X167221500Y-106975000D03*
X167221500Y-106575000D03*
X167221500Y-106175000D03*
X167221500Y-105775000D03*
X167221500Y-105375000D03*
X167221500Y-104975000D03*
X167221500Y-104575000D03*
D31*
X166125000Y-103478500D03*
X165725000Y-103478500D03*
X165325000Y-103478500D03*
X164925000Y-103478500D03*
X164525000Y-103478500D03*
X164125000Y-103478500D03*
X163725000Y-103478500D03*
X163325000Y-103478500D03*
X162925000Y-103478500D03*
X162525000Y-103478500D03*
X162125000Y-103478500D03*
X161725000Y-103478500D03*
X161325000Y-103478500D03*
X160925000Y-103478500D03*
X160525000Y-103478500D03*
X160125000Y-103478500D03*
X159725000Y-103478500D03*
X159325000Y-103478500D03*
X158925000Y-103478500D03*
X158525000Y-103478500D03*
%TD*%
M02*
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+17
View File
@@ -0,0 +1,17 @@
M48
; DRILL file {KiCad 9.0.7} date 2026-01-13T21:49:25+0200
; FORMAT={-:-/ absolute / metric / decimal}
; #@! TF.CreationDate,2026-01-13T21:49:25+02:00
; #@! TF.GenerationSoftware,Kicad,Pcbnew,9.0.7
; #@! TF.FileFunction,NonPlated,1,4,NPTH
FMAT,2
METRIC
; #@! TA.AperFunction,NonPlated,NPTH,ComponentDrill
T1C0.650
%
G90
G05
T1
X162.91Y-74.405
X168.69Y-74.405
M30
+314
View File
@@ -0,0 +1,314 @@
M48
; DRILL file {KiCad 9.0.7} date 2026-01-13T21:49:25+0200
; FORMAT={-:-/ absolute / metric / decimal}
; #@! TF.CreationDate,2026-01-13T21:49:25+02:00
; #@! TF.GenerationSoftware,Kicad,Pcbnew,9.0.7
; #@! TF.FileFunction,Plated,1,4,PTH
FMAT,2
METRIC
; #@! TA.AperFunction,Plated,PTH,ViaDrill
T1C0.250
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T2C0.250
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T3C0.600
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T4C1.000
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T5C1.300
%
G90
G05
T1
X131.25Y-132.15
X143.0Y-100.5
X143.0Y-101.3
X143.0Y-104.5
X143.0Y-105.3
X143.0Y-106.1
X143.0Y-106.9
X143.0Y-108.75
X143.0Y-110.1
X143.0Y-110.9
X143.0Y-111.7
X143.0Y-112.5
X143.0Y-115.8
X143.0Y-116.6
X143.0Y-117.4
X143.0Y-118.2
X143.1Y-121.4
X143.1Y-122.2
X143.2Y-99.6
X144.4Y-97.4
X144.7Y-85.5
X145.7Y-89.9
X146.4Y-91.1
X146.75Y-126.25
X147.5Y-98.9
X147.7Y-92.25
X147.8Y-97.35
X148.45Y-100.45
X148.45Y-102.075
X148.75Y-117.75
X149.4Y-100.5
X149.85Y-101.1
X150.0Y-117.0
X150.1Y-102.5
X150.3Y-106.15
X150.55Y-108.7
X150.6Y-71.25
X150.65Y-96.85
X150.725Y-115.775
X151.2Y-112.65
X151.6Y-114.725
X152.45Y-113.75
X152.55Y-99.85
X152.7Y-112.1
X152.75Y-77.65
X153.275Y-112.875
X153.9Y-112.025
X154.0Y-91.6
X154.1Y-90.4
X154.475Y-102.525
X154.5Y-100.25
X154.6Y-101.2
X154.6Y-118.75
X154.6Y-123.05
X154.65Y-120.1
X154.75Y-117.6
X155.05Y-116.4
X155.2Y-101.8
X155.7Y-82.9
X156.1Y-115.8
X156.7Y-76.1
X156.7Y-100.0
X156.85Y-96.55
X156.9Y-115.5
X156.9Y-124.8
X157.9Y-89.75
X158.4Y-106.2
X158.4Y-110.6
X158.5Y-111.4
X158.8Y-109.55
X158.9Y-99.95
X158.9Y-117.15
X160.05Y-116.55
X160.15Y-99.85
X160.425Y-115.575
X160.525Y-104.3
X160.75Y-121.75
X160.8Y-102.4
X161.325Y-104.9
X161.45Y-86.15
X161.6Y-97.1
X161.65Y-112.0
X161.7Y-102.5
X162.0Y-101.4
X162.1Y-104.6
X162.5Y-79.6
X162.65Y-111.95
X163.3Y-97.1
X163.3Y-104.7
X163.7Y-111.95
X164.15Y-104.95
X164.55Y-105.65
X164.7Y-112.0
X165.0Y-79.5
X165.0Y-115.05
X165.1Y-114.15
X165.15Y-94.35
X165.3Y-112.3
X165.4Y-89.55
X165.45Y-104.9
X165.9Y-110.15
X165.95Y-112.0
X166.1Y-116.1
X166.1Y-120.6
X166.3Y-77.75
X166.3Y-100.6
X166.35Y-97.2
X166.4Y-107.8
X166.9Y-116.1
X166.9Y-120.1
X167.45Y-128.15
X167.85Y-81.3
X167.85Y-120.2
X168.3Y-105.55
X168.45Y-101.65
X168.5Y-79.65
X168.5Y-104.55
X168.7Y-110.95
X168.8Y-110.2
X169.0Y-105.75
X169.6Y-116.55
X169.9Y-105.75
X170.0Y-122.5
X170.3Y-111.8
X170.6Y-108.6
X170.7Y-96.5
X171.0Y-105.0
X171.15Y-122.15
X171.5Y-95.6
X171.8Y-85.9
X172.95Y-73.9
X173.2Y-122.3
X173.85Y-107.9
X174.05Y-79.25
X174.1Y-120.2
X174.3Y-103.45
X174.45Y-125.0
X174.85Y-129.45
X175.2Y-122.55
X176.2Y-72.3
X176.7Y-91.2
X177.8Y-137.35
X177.925Y-113.85
X180.8Y-74.1
T2
X161.475Y-107.525
X161.475Y-108.375
X161.475Y-109.225
X162.325Y-107.525
X162.325Y-108.375
X162.325Y-109.225
X163.175Y-107.525
X163.175Y-108.375
X163.175Y-109.225
T4
X129.59Y-81.0
X129.59Y-83.8
X129.62Y-78.2
X129.62Y-86.6
X129.69Y-89.4
X129.69Y-92.2
X129.69Y-95.0
X129.69Y-97.8
X129.69Y-100.6
X129.69Y-103.4
X129.69Y-106.2
X129.69Y-109.0
X129.69Y-111.8
X129.69Y-114.6
X129.69Y-117.4
X129.69Y-120.2
X129.69Y-123.0
X129.69Y-125.8
X132.13Y-81.0
X132.13Y-83.8
X132.16Y-78.2
X132.16Y-86.6
X132.23Y-89.4
X132.23Y-92.2
X132.23Y-95.0
X132.23Y-97.8
X132.23Y-100.6
X132.23Y-103.4
X132.23Y-106.2
X132.23Y-109.0
X132.23Y-111.8
X132.23Y-114.6
X132.23Y-117.4
X132.23Y-120.2
X132.23Y-123.0
X132.23Y-125.8
X134.67Y-81.0
X134.67Y-83.8
X134.7Y-78.2
X134.7Y-86.6
X134.77Y-89.4
X134.77Y-92.2
X134.77Y-95.0
X134.77Y-97.8
X134.77Y-100.6
X134.77Y-103.4
X134.77Y-106.2
X134.77Y-109.0
X134.77Y-111.8
X134.77Y-114.6
X134.77Y-117.4
X134.77Y-120.2
X134.77Y-123.0
X134.77Y-125.8
X137.21Y-81.0
X137.21Y-83.8
X137.24Y-78.2
X137.24Y-86.6
X137.31Y-89.4
X137.31Y-92.2
X137.31Y-95.0
X137.31Y-97.8
X137.31Y-100.6
X137.31Y-103.4
X137.31Y-106.2
X137.31Y-109.0
X137.31Y-111.8
X137.31Y-114.6
X137.31Y-117.4
X137.31Y-120.2
X137.31Y-123.0
X137.31Y-125.8
X152.475Y-132.15
X152.475Y-134.69
X152.475Y-137.23
X155.275Y-132.15
X155.275Y-134.69
X155.275Y-137.23
X158.075Y-132.15
X158.075Y-134.69
X158.075Y-137.23
X160.875Y-132.15
X160.875Y-134.69
X160.875Y-137.23
X163.675Y-132.15
X163.675Y-134.69
X163.675Y-137.23
X166.525Y-132.15
X166.525Y-134.69
X166.525Y-137.23
X177.76Y-132.225
X180.3Y-78.94
X180.3Y-81.48
X180.3Y-84.02
X180.3Y-86.56
X180.3Y-89.1
X180.3Y-92.75
X180.3Y-95.29
X180.3Y-97.83
X180.3Y-100.37
X180.3Y-102.91
X180.3Y-105.45
X180.3Y-107.99
X180.3Y-110.53
X180.3Y-113.07
X180.3Y-115.61
X180.3Y-118.15
X180.3Y-120.69
X180.3Y-123.23
X180.3Y-125.77
X180.3Y-128.31
X180.3Y-132.225
T5
X140.4Y-72.8
X145.4Y-72.8
T3
G00X161.48Y-71.125
M15
G01X161.48Y-70.325
M16
G05
G00X161.48Y-75.475
M15
G01X161.48Y-74.375
M16
G05
G00X170.12Y-71.125
M15
G01X170.12Y-70.325
M16
G05
G00X170.12Y-75.475
M15
G01X170.12Y-74.375
M16
G05
M30
+6
View File
@@ -0,0 +1,6 @@
### Footprint positions - created on 2026-01-13T21:49:38+0200 ###
### Printed by KiCad version 9.0.7
## Unit = mm, Angle = deg.
## Side : bottom
# Ref Val Package PosX PosY Rot Side
## End
+169
View File
@@ -0,0 +1,169 @@
{
"Header": {
"GenerationSoftware": {
"Vendor": "KiCad",
"Application": "Pcbnew",
"Version": "9.0.7"
},
"CreationDate": "2026-01-13T21:49:28+02:00"
},
"GeneralSpecs": {
"ProjectId": {
"Name": "Servo2350",
"GUID": "53657276-6f32-4333-9530-2e6b69636164",
"Revision": "rev?"
},
"Size": {
"X": 55.05,
"Y": 70.05
},
"LayerNumber": 4,
"BoardThickness": 1.6,
"Finish": "None"
},
"DesignRules": [
{
"Layers": "Outer",
"PadToPad": 0.1,
"PadToTrack": 0.1,
"TrackToTrack": 0.2,
"MinLineWidth": 0.2,
"TrackToRegion": 0.5,
"RegionToRegion": 0.5
},
{
"Layers": "Inner",
"PadToPad": 0.1,
"PadToTrack": 0.1,
"TrackToTrack": 0.2,
"TrackToRegion": 0.5,
"RegionToRegion": 0.5
}
],
"FilesAttributes": [
{
"Path": "Servo2350-F_Cu.gbr",
"FileFunction": "Copper,L1,Top",
"FilePolarity": "Positive"
},
{
"Path": "Servo2350-In1_Cu.gbr",
"FileFunction": "Copper,L2,Inr",
"FilePolarity": "Positive"
},
{
"Path": "Servo2350-In2_Cu.gbr",
"FileFunction": "Copper,L3,Inr",
"FilePolarity": "Positive"
},
{
"Path": "Servo2350-B_Cu.gbr",
"FileFunction": "Copper,L4,Bot",
"FilePolarity": "Positive"
},
{
"Path": "Servo2350-F_Paste.gbr",
"FileFunction": "SolderPaste,Top",
"FilePolarity": "Positive"
},
{
"Path": "Servo2350-B_Paste.gbr",
"FileFunction": "SolderPaste,Bot",
"FilePolarity": "Positive"
},
{
"Path": "Servo2350-F_Silkscreen.gbr",
"FileFunction": "Legend,Top",
"FilePolarity": "Positive"
},
{
"Path": "Servo2350-B_Silkscreen.gbr",
"FileFunction": "Legend,Bot",
"FilePolarity": "Positive"
},
{
"Path": "Servo2350-F_Mask.gbr",
"FileFunction": "SolderMask,Top",
"FilePolarity": "Negative"
},
{
"Path": "Servo2350-B_Mask.gbr",
"FileFunction": "SolderMask,Bot",
"FilePolarity": "Negative"
},
{
"Path": "Servo2350-Edge_Cuts.gbr",
"FileFunction": "Profile",
"FilePolarity": "Positive"
}
],
"MaterialStackup": [
{
"Type": "Legend",
"Name": "Top Silk Screen"
},
{
"Type": "SolderPaste",
"Name": "Top Solder Paste"
},
{
"Type": "SolderMask",
"Thickness": 0.01,
"Name": "Top Solder Mask"
},
{
"Type": "Copper",
"Thickness": 0.035,
"Name": "F.Cu"
},
{
"Type": "Dielectric",
"Thickness": 0.1,
"Material": "FR4",
"Name": "F.Cu/In1.Cu",
"Notes": "Type: dielectric layer 1 (from F.Cu to In1.Cu)"
},
{
"Type": "Copper",
"Thickness": 0.035,
"Name": "In1.Cu"
},
{
"Type": "Dielectric",
"Thickness": 1.24,
"Material": "FR4",
"Name": "In1.Cu/In2.Cu",
"Notes": "Type: dielectric layer 2 (from In1.Cu to In2.Cu)"
},
{
"Type": "Copper",
"Thickness": 0.035,
"Name": "In2.Cu"
},
{
"Type": "Dielectric",
"Thickness": 0.1,
"Material": "FR4",
"Name": "In2.Cu/B.Cu",
"Notes": "Type: dielectric layer 3 (from In2.Cu to B.Cu)"
},
{
"Type": "Copper",
"Thickness": 0.035,
"Name": "B.Cu"
},
{
"Type": "SolderMask",
"Thickness": 0.01,
"Name": "Bottom Solder Mask"
},
{
"Type": "SolderPaste",
"Name": "Bottom Solder Paste"
},
{
"Type": "Legend",
"Name": "Bottom Silk Screen"
}
]
}
+90
View File
@@ -0,0 +1,90 @@
### Footprint positions - created on 2026-01-13T21:49:38+0200 ###
### Printed by KiCad version 9.0.7
## Unit = mm, Angle = deg.
## Side : top
# Ref Val Package PosX PosY Rot Side
1 Conn_01x04_Pin PinHeader_1x04_P2.54mm_Vertical 137.2400 -78.2000 -90.0000 top
2 Conn_01x04_Pin PinHeader_1x04_P2.54mm_Vertical 137.2100 -81.0000 -90.0000 top
3 Conn_01x04_Pin PinHeader_1x04_P2.54mm_Vertical 137.2100 -83.8000 -90.0000 top
4 Conn_01x04_Pin PinHeader_1x04_P2.54mm_Vertical 137.2400 -86.6000 -90.0000 top
5 Conn_01x04_Pin PinHeader_1x04_P2.54mm_Vertical 137.3100 -89.4000 -90.0000 top
6 Conn_01x04_Pin PinHeader_1x04_P2.54mm_Vertical 137.3100 -92.2000 -90.0000 top
7 Conn_01x04_Pin PinHeader_1x04_P2.54mm_Vertical 137.3100 -95.0000 -90.0000 top
8 Conn_01x04_Pin PinHeader_1x04_P2.54mm_Vertical 137.3100 -97.8000 -90.0000 top
9 Conn_01x04_Pin PinHeader_1x04_P2.54mm_Vertical 137.3100 -100.6000 -90.0000 top
10 Conn_01x04_Pin PinHeader_1x04_P2.54mm_Vertical 137.3100 -103.4000 -90.0000 top
11 Conn_01x04_Pin PinHeader_1x04_P2.54mm_Vertical 137.3100 -106.2000 -90.0000 top
12 Conn_01x04_Pin PinHeader_1x04_P2.54mm_Vertical 137.3100 -109.0000 -90.0000 top
13 Conn_01x04_Pin PinHeader_1x04_P2.54mm_Vertical 137.3100 -111.8000 -90.0000 top
14 Conn_01x04_Pin PinHeader_1x04_P2.54mm_Vertical 137.3100 -114.6000 -90.0000 top
15 Conn_01x04_Pin PinHeader_1x04_P2.54mm_Vertical 137.3100 -117.4000 -90.0000 top
16 Conn_01x04_Pin PinHeader_1x04_P2.54mm_Vertical 137.3100 -120.2000 -90.0000 top
17 Conn_01x04_Pin PinHeader_1x04_P2.54mm_Vertical 137.3100 -123.0000 -90.0000 top
18 Conn_01x04_Pin PinHeader_1x04_P2.54mm_Vertical 137.3100 -125.8000 -90.0000 top
BOOT SKRPABE010 SW_SKRPABE010 156.8000 -71.3350 0.0000 top
C1 100nF C_0402_1005Metric 158.1500 -98.7000 90.0000 top
C2 100nF C_0402_1005Metric 152.6250 -111.2000 180.0000 top
C3 100nF C_0402_1005Metric 152.6000 -106.1500 180.0000 top
C4 100nF C_0402_1005Metric 172.1500 -104.8000 0.0000 top
C5 100nF C_0402_1005Metric 156.4500 -98.7000 90.0000 top
C6 100nF C_0402_1005Metric 156.1500 -118.2000 -90.0000 top
C7 100nF C_0402_1005Metric 159.8500 -98.7000 90.0000 top
C8 100nF C_0402_1005Metric 172.1500 -112.2000 0.0000 top
C9 100nF C_0402_1005Metric 172.1500 -108.6000 0.0000 top
C10 100nF C_0402_1005Metric 167.8500 -118.7000 -90.0000 top
C11 4.7uF C_0402_1005Metric 172.1500 -106.7000 0.0000 top
C12 100nF C_0402_1005Metric 152.6000 -108.6750 180.0000 top
C13 4.7uF C_0402_1005Metric 173.1000 -100.5000 0.0000 top
C14 4.7uF C_0402_1005Metric 166.7500 -98.7000 90.0000 top
C15 4.7uF C_0402_1005Metric 164.9500 -98.7000 90.0000 top
C16 15pF C_0402_1005Metric 159.8750 -118.7500 -90.0000 top
C17 15pF C_0402_1005Metric 162.9750 -122.2500 180.0000 top
C18 100nF C_0402_1005Metric 154.0500 -99.2000 180.0000 top
C19 1uF C_0402_1005Metric 161.3450 -81.7850 -90.0000 top
C20 1uF C_0402_1005Metric 168.5450 -81.7850 -90.0000 top
C21 100nF C_0402_1005Metric 155.9750 -81.9750 0.0000 top
C22 100nF C_0402_1005Metric 171.4500 -123.3000 0.0000 top
C23 100nF C_0402_1005Metric 171.5500 -125.2000 180.0000 top
C24 100nF C_0402_1005Metric 158.3000 -118.2000 -90.0000 top
C25 100nF C_0402_1005Metric 172.1000 -103.0000 0.0000 top
C26 220uF CAPAE1030X1080N_UWT1H221MNL1GS 142.3250 -132.8000 180.0000 top
D1 Conn_01x03_Pin PinHeader_1x03_P2.54mm_Vertical 166.5250 -137.2300 180.0000 top
D2 Conn_01x03_Pin PinHeader_1x03_P2.54mm_Vertical 163.6750 -137.2300 180.0000 top
D3 Conn_01x03_Pin PinHeader_1x03_P2.54mm_Vertical 160.8750 -137.2300 180.0000 top
D4 Conn_01x03_Pin PinHeader_1x03_P2.54mm_Vertical 158.0750 -137.2300 180.0000 top
D5 Conn_01x03_Pin PinHeader_1x03_P2.54mm_Vertical 155.2750 -137.2300 180.0000 top
D6 Conn_01x03_Pin PinHeader_1x03_P2.54mm_Vertical 152.4750 -137.2300 180.0000 top
J1 Conn_01x15_Pin PinHeader_1x15_P2.54mm_Vertical 180.3000 -128.3100 180.0000 top
J2 Conn_01x02_Pin PinSocket_1x02_P2.54mm_Vertical 180.3000 -132.2250 -90.0000 top
J3 USB_C_OUT USB_C_Receptacle_G-Switch_GT-USB-7010ASV 165.8000 -71.8000 180.0000 top
L1 3.3u L_0402_1005Metric 168.5500 -98.7000 -90.0000 top
LED1 LED_Small LED_0402_1005Metric 155.7000 -124.3000 -90.0000 top
LED2 LED_Small LED_0402_1005Metric 158.1000 -124.3000 -90.0000 top
POWER1 691137710002 691137710002 142.9000 -72.8000 180.0000 top
R1 33 R_0402_1005Metric 173.1000 -98.5000 180.0000 top
R2 1k R_0402_1005Metric 165.7750 -118.6500 -90.0000 top
R3 27 R_0402_1005Metric 161.5500 -98.7000 -90.0000 top
R4 27 R_0402_1005Metric 163.2500 -98.6900 -90.0000 top
R5 10k R_0402_1005Metric 151.6500 -98.7000 -90.0000 top
R6 1k R_0402_1005Metric 149.4500 -99.2000 180.0000 top
R7 10k R_0402_1005Metric 171.2535 -131.5900 0.0000 top
R8 560 R_0402_1005Metric 155.7000 -121.5000 -90.0000 top
R9 560 R_0402_1005Metric 158.1000 -121.5000 -90.0000 top
R10 5.1k R_0402_1005Metric 168.4100 -78.7350 0.0000 top
R11 5.1k R_0402_1005Metric 163.7000 -78.6350 180.0000 top
R12 10k R_0402_1005Metric 172.0215 -94.6750 0.0000 top
R13 10k R_0402_1005Metric 172.0215 -92.7750 0.0000 top
RESET SKRPABE010 SW_SKRPABE010 171.9000 -135.5900 180.0000 top
RN1 CAY16-181J4LF RESCAF80P320X160X60-8N 145.4250 -100.1000 0.0000 top
RN2 CAY16-181J4LF RESCAF80P320X160X60-8N 145.4250 -105.7000 0.0000 top
RN3 CAY16-181J4LF RESCAF80P320X160X60-8N 145.3675 -111.3000 0.0000 top
RN4 CAY16-181J4LF RESCAF80P320X160X60-8N 145.2675 -117.0000 0.0000 top
RN5 CAY16-181J4LF RESCAF80P320X160X60-8N 145.1925 -122.6000 0.0000 top
SWD1 Conn_01x05_Pin PinHeader_1x05_P2.54mm_Vertical 180.3000 -78.9400 0.0000 top
U1 RP2350B-QFN80 RP2350B_QFN-80_EP_10.573x10.573_Pitch0.4mm 162.3250 -108.3750 0.0000 top
U2 W25Q16JVUXIQ_TR IC_W25Q16JVUXIQ_TR 152.1000 -101.6250 0.0000 top
U3 NCP115ASN330T2G SOT95P275X110-5N 164.9000 -82.2350 0.0000 top
U4 CD74HC4067SM96 SOP65P780X200-24N 152.1950 -87.4750 0.0000 top
U5 ~ IC_ICM-45686 171.6500 -120.2000 0.0000 top
Y1 ABM8-272-T3 XTAL_ABM8-272-T3 162.8750 -118.7500 0.0000 top
## End
+42538
View File
File diff suppressed because it is too large Load Diff
+762
View File
@@ -0,0 +1,762 @@
{
"board": {
"3dviewports": [],
"design_settings": {
"defaults": {
"apply_defaults_to_fp_barcodes": false,
"apply_defaults_to_fp_dimensions": false,
"apply_defaults_to_fp_fields": false,
"apply_defaults_to_fp_shapes": false,
"apply_defaults_to_fp_text": false,
"board_outline_line_width": 0.05,
"copper_line_width": 0.2,
"copper_text_italic": false,
"copper_text_size_h": 1.5,
"copper_text_size_v": 1.5,
"copper_text_thickness": 0.3,
"copper_text_upright": false,
"courtyard_line_width": 0.05,
"dimension_precision": 4,
"dimension_units": 3,
"dimensions": {
"arrow_length": 1270000,
"extension_offset": 500000,
"keep_text_aligned": true,
"suppress_zeroes": true,
"text_position": 0,
"units_format": 0
},
"fab_line_width": 0.1,
"fab_text_italic": false,
"fab_text_size_h": 1.0,
"fab_text_size_v": 1.0,
"fab_text_thickness": 0.15,
"fab_text_upright": false,
"other_line_width": 0.1,
"other_text_italic": false,
"other_text_size_h": 1.0,
"other_text_size_v": 1.0,
"other_text_thickness": 0.15,
"other_text_upright": false,
"pads": {
"drill": 0.25,
"height": 0.425,
"width": 0.425
},
"silk_line_width": 0.1,
"silk_text_italic": false,
"silk_text_size_h": 1.0,
"silk_text_size_v": 1.0,
"silk_text_thickness": 0.1,
"silk_text_upright": false,
"zones": {
"border_display_style": 2,
"border_hatch_pitch": 0.5,
"corner_radius": 0.0,
"corner_smoothing": 0,
"fill_mode": 0,
"hatch_gap": 1.5,
"hatch_orientation": 0.0,
"hatch_smoothing_level": 0,
"hatch_smoothing_value": 0.1,
"hatch_thickness": 1.0,
"min_clearance": 0.5,
"min_island_area": 10.0,
"min_thickness": 0.25,
"pad_connection": 1,
"remove_islands": 0,
"thermal_relief_gap": 0.5,
"thermal_relief_spoke_width": 0.5
}
},
"diff_pair_dimensions": [
{
"gap": 0.0,
"via_gap": 0.0,
"width": 0.0
}
],
"drc_exclusions": [
[
"lib_footprint_mismatch|133430000|78200000|8a40cc05-6103-4a4c-bf5f-5b55275bc31d|00000000-0000-0000-0000-000000000000",
""
]
],
"meta": {
"version": 2
},
"rule_severities": {
"annular_width": "error",
"clearance": "error",
"connection_width": "warning",
"copper_edge_clearance": "error",
"copper_sliver": "warning",
"courtyards_overlap": "error",
"creepage": "error",
"diff_pair_gap_out_of_range": "error",
"diff_pair_uncoupled_length_too_long": "error",
"drill_out_of_range": "error",
"duplicate_footprints": "warning",
"extra_footprint": "warning",
"footprint": "error",
"footprint_filters_mismatch": "ignore",
"footprint_symbol_field_mismatch": "warning",
"footprint_symbol_mismatch": "warning",
"footprint_type_mismatch": "ignore",
"hole_clearance": "error",
"hole_to_hole": "warning",
"holes_co_located": "warning",
"invalid_outline": "error",
"isolated_copper": "warning",
"item_on_disabled_layer": "error",
"items_not_allowed": "error",
"length_out_of_range": "error",
"lib_footprint_issues": "warning",
"lib_footprint_mismatch": "warning",
"malformed_courtyard": "error",
"microvia_drill_out_of_range": "error",
"mirrored_text_on_front_layer": "ignore",
"missing_courtyard": "ignore",
"missing_footprint": "warning",
"missing_tuning_profile": "warning",
"net_conflict": "warning",
"nonmirrored_text_on_back_layer": "ignore",
"npth_inside_courtyard": "ignore",
"padstack": "warning",
"pth_inside_courtyard": "ignore",
"shorting_items": "error",
"silk_edge_clearance": "ignore",
"silk_over_copper": "ignore",
"silk_overlap": "ignore",
"skew_out_of_range": "error",
"solder_mask_bridge": "error",
"starved_thermal": "ignore",
"text_height": "ignore",
"text_on_edge_cuts": "error",
"text_thickness": "ignore",
"through_hole_pad_without_hole": "error",
"too_many_vias": "error",
"track_angle": "error",
"track_dangling": "warning",
"track_not_centered_on_via": "ignore",
"track_on_post_machined_layer": "error",
"track_segment_length": "error",
"track_width": "error",
"tracks_crossing": "error",
"tuning_profile_track_geometries": "ignore",
"unconnected_items": "error",
"unresolved_variable": "error",
"via_dangling": "warning",
"zones_intersect": "error"
},
"rules": {
"max_error": 0.005,
"min_clearance": 0.0,
"min_connection": 0.0,
"min_copper_edge_clearance": 0.5,
"min_groove_width": 0.0,
"min_hole_clearance": 0.25,
"min_hole_to_hole": 0.25,
"min_microvia_diameter": 0.2,
"min_microvia_drill": 0.1,
"min_resolved_spokes": 2,
"min_silk_clearance": 0.0,
"min_text_height": 0.8,
"min_text_thickness": 0.08,
"min_through_hole_diameter": 0.25,
"min_track_width": 0.0,
"min_via_annular_width": 0.1,
"min_via_diameter": 0.45,
"solder_mask_to_copper_clearance": 0.0,
"use_height_for_length_calcs": true
},
"teardrop_options": [
{
"td_onpthpad": true,
"td_onroundshapesonly": false,
"td_onsmdpad": true,
"td_ontrackend": false,
"td_onvia": true
}
],
"teardrop_parameters": [
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_round_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_rect_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_track_end",
"td_width_to_size_filter_ratio": 0.9
}
],
"track_widths": [
0.0,
0.2,
0.5,
1.0,
1.7
],
"tuning_pattern_settings": {
"diff_pair_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 1.0
},
"diff_pair_skew_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
},
"single_track_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
}
},
"via_dimensions": [
{
"diameter": 0.0,
"drill": 0.0
}
],
"zones_allow_external_fillets": false
},
"ipc2581": {
"bom_rev": "",
"dist": "",
"distpn": "",
"internal_id": "",
"mfg": "",
"mpn": "",
"sch_revision": ""
},
"layer_pairs": [],
"layer_presets": [],
"viewports": []
},
"boards": [],
"component_class_settings": {
"assignments": [],
"meta": {
"version": 0
},
"sheet_component_classes": {
"enabled": false
}
},
"cvpcb": {
"equivalence_files": []
},
"erc": {
"erc_exclusions": [],
"meta": {
"version": 0
},
"pin_map": [
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
1,
0,
1,
2
],
[
0,
1,
0,
0,
0,
0,
1,
1,
2,
1,
1,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
2
],
[
1,
1,
1,
1,
1,
0,
1,
1,
1,
1,
1,
2
],
[
0,
0,
0,
1,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
1,
2,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
0,
2,
1,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2
]
],
"rule_severities": {
"bus_definition_conflict": "error",
"bus_entry_needed": "error",
"bus_to_bus_conflict": "error",
"bus_to_net_conflict": "error",
"different_unit_footprint": "error",
"different_unit_net": "error",
"duplicate_reference": "error",
"duplicate_sheet_names": "error",
"endpoint_off_grid": "warning",
"extra_units": "error",
"field_name_whitespace": "warning",
"footprint_filter": "ignore",
"footprint_link_issues": "warning",
"four_way_junction": "ignore",
"global_label_dangling": "warning",
"ground_pin_not_ground": "warning",
"hier_label_mismatch": "error",
"isolated_pin_label": "warning",
"label_dangling": "error",
"label_multiple_wires": "warning",
"lib_symbol_issues": "warning",
"lib_symbol_mismatch": "warning",
"missing_bidi_pin": "warning",
"missing_input_pin": "warning",
"missing_power_pin": "error",
"missing_unit": "warning",
"multiple_net_names": "warning",
"net_not_bus_member": "warning",
"no_connect_connected": "warning",
"no_connect_dangling": "warning",
"pin_not_connected": "error",
"pin_not_driven": "error",
"pin_to_pin": "warning",
"power_pin_not_driven": "error",
"same_local_global_label": "warning",
"similar_label_and_power": "warning",
"similar_labels": "warning",
"similar_power": "warning",
"simulation_model_issue": "ignore",
"single_global_label": "ignore",
"stacked_pin_name": "warning",
"unannotated": "error",
"unconnected_wire_endpoint": "warning",
"undefined_netclass": "error",
"unit_value_mismatch": "error",
"unresolved_variable": "error",
"wire_dangling": "error"
}
},
"libraries": {
"pinned_footprint_libs": [],
"pinned_symbol_libs": []
},
"meta": {
"filename": "Servo2350.kicad_pro",
"version": 3
},
"net_settings": {
"classes": [
{
"bus_width": 12,
"clearance": 0.2,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "Default",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"priority": 2147483647,
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.2,
"tuning_profile": "",
"via_diameter": 0.6,
"via_drill": 0.3,
"wire_width": 6
}
],
"meta": {
"version": 5
},
"net_colors": null,
"netclass_assignments": null,
"netclass_patterns": []
},
"pcbnew": {
"last_paths": {
"gencad": "",
"idf": "",
"netlist": "",
"plot": "output/",
"pos_files": "output/",
"specctra_dsn": "",
"step": "",
"svg": "",
"vrml": ""
},
"page_layout_descr_file": ""
},
"schematic": {
"annotate_start_num": 0,
"annotation": {
"method": 0,
"sort_order": 0
},
"bom_export_filename": "${PROJECTNAME}.csv",
"bom_fmt_presets": [],
"bom_fmt_settings": {
"field_delimiter": ",",
"keep_line_breaks": false,
"keep_tabs": false,
"name": "CSV",
"ref_delimiter": ",",
"ref_range_delimiter": "",
"string_delimiter": "\""
},
"bom_presets": [],
"bom_settings": {
"exclude_dnp": false,
"fields_ordered": [
{
"group_by": false,
"label": "Reference",
"name": "Reference",
"show": true
},
{
"group_by": false,
"label": "Qty",
"name": "${QUANTITY}",
"show": true
},
{
"group_by": true,
"label": "Value",
"name": "Value",
"show": true
},
{
"group_by": true,
"label": "DNP",
"name": "${DNP}",
"show": true
},
{
"group_by": true,
"label": "Exclude from BOM",
"name": "${EXCLUDE_FROM_BOM}",
"show": true
},
{
"group_by": true,
"label": "Exclude from Board",
"name": "${EXCLUDE_FROM_BOARD}",
"show": true
},
{
"group_by": true,
"label": "Footprint",
"name": "Footprint",
"show": true
},
{
"group_by": false,
"label": "Datasheet",
"name": "Datasheet",
"show": true
},
{
"group_by": false,
"label": "MANUFACTURER",
"name": "MANUFACTURER",
"show": false
},
{
"group_by": false,
"label": "MAXIMUM_PACKAGE_HEIGHT",
"name": "MAXIMUM_PACKAGE_HEIGHT",
"show": false
},
{
"group_by": false,
"label": "PARTREV",
"name": "PARTREV",
"show": false
},
{
"group_by": false,
"label": "SNAPEDA_PN",
"name": "SNAPEDA_PN",
"show": false
},
{
"group_by": false,
"label": "STANDARD",
"name": "STANDARD",
"show": false
},
{
"group_by": false,
"label": "Sim.Pin",
"name": "Sim.Pin",
"show": false
},
{
"group_by": false,
"label": "VERIFIER",
"name": "VERIFIER",
"show": false
},
{
"group_by": false,
"label": "CREATOR",
"name": "CREATOR",
"show": false
},
{
"group_by": false,
"label": "Description",
"name": "Description",
"show": false
},
{
"group_by": false,
"label": "#",
"name": "${ITEM_NUMBER}",
"show": false
}
],
"filter_string": "",
"group_symbols": true,
"include_excluded_from_bom": true,
"name": "",
"sort_asc": true,
"sort_field": "Reference"
},
"bus_aliases": {},
"connection_grid_size": 50.0,
"drawing": {
"dashed_lines_dash_length_ratio": 12.0,
"dashed_lines_gap_length_ratio": 3.0,
"default_line_thickness": 6.0,
"default_text_size": 50.0,
"field_names": [],
"hop_over_size_choice": 0,
"intersheets_ref_own_page": false,
"intersheets_ref_prefix": "",
"intersheets_ref_short": false,
"intersheets_ref_show": false,
"intersheets_ref_suffix": "",
"junction_size_choice": 3,
"label_size_ratio": 0.375,
"operating_point_overlay_i_precision": 3,
"operating_point_overlay_i_range": "~A",
"operating_point_overlay_v_precision": 3,
"operating_point_overlay_v_range": "~V",
"overbar_offset_ratio": 1.23,
"pin_symbol_size": 25.0,
"text_offset_ratio": 0.15
},
"legacy_lib_dir": "",
"legacy_lib_list": [],
"meta": {
"version": 1
},
"net_format_name": "",
"page_layout_descr_file": "",
"plot_directory": "Schematic/",
"reuse_designators": true,
"space_save_all_events": true,
"spice_current_sheet_as_root": false,
"spice_external_command": "spice \"%I\"",
"spice_model_current_sheet_as_root": true,
"spice_save_all_currents": false,
"spice_save_all_dissipations": false,
"spice_save_all_voltages": false,
"subpart_first_id": 65,
"subpart_id_separator": 0,
"top_level_sheets": [
{
"filename": "Servo2350.kicad_sch",
"name": "Servo2350",
"uuid": "00000000-0000-0000-0000-000000000000"
}
],
"used_designators": "",
"variants": []
},
"sheets": [
[
"f7b1a6c5-8ce5-4d2c-a65c-2d44b87e188c",
"Root"
]
],
"text_variables": {},
"tuning_profiles": {
"meta": {
"version": 0
},
"tuning_profiles_impedance_geometric": []
}
}
+24681
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+11
View File
@@ -0,0 +1,11 @@
build/
# tmp
reference/
notes.md
tmp/
__pycache__/
logs/
# doxygen
doxygen/
+10
View File
@@ -0,0 +1,10 @@
# SPDX-License-Identifier: Apache-2.0
cmake_minimum_required(VERSION 3.20.0)
set(BOARD_ROOT ${CMAKE_CURRENT_SOURCE_DIR})
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
project(servo2350)
FILE(GLOB app_sources src/*.c)
target_sources(app PRIVATE ${app_sources})
+97
View File
@@ -0,0 +1,97 @@
.. zephyr:code-sample:: blinky
:name: Blinky
:relevant-api: gpio_interface
Blink an LED forever using the GPIO API.
Overview
********
The Blinky sample blinks an LED forever using the :ref:`GPIO API <gpio_api>`.
The source code shows how to:
#. Get a pin specification from the :ref:`devicetree <dt-guide>` as a
:c:struct:`gpio_dt_spec`
#. Configure the GPIO pin as an output
#. Toggle the pin forever
See :zephyr:code-sample:`pwm-blinky` for a similar sample that uses the PWM API instead.
.. _blinky-sample-requirements:
Requirements
************
Your board must:
#. Have an LED connected via a GPIO pin (these are called "User LEDs" on many of
Zephyr's :ref:`boards`).
#. Have the LED configured using the ``led0`` devicetree alias.
Building and Running
********************
Build and flash Blinky as follows, changing ``reel_board`` for your board:
.. zephyr-app-commands::
:zephyr-app: samples/basic/blinky
:board: reel_board
:goals: build flash
:compact:
After flashing, the LED starts to blink and messages with the current LED state
are printed on the console. If a runtime error occurs, the sample exits without
printing to the console.
Build errors
************
You will see a build error at the source code line defining the ``struct
gpio_dt_spec led`` variable if you try to build Blinky for an unsupported
board.
On GCC-based toolchains, the error looks like this:
.. code-block:: none
error: '__device_dts_ord_DT_N_ALIAS_led_P_gpios_IDX_0_PH_ORD' undeclared here (not in a function)
Adding board support
********************
To add support for your board, add something like this to your devicetree:
.. code-block:: DTS
/ {
aliases {
led0 = &myled0;
};
leds {
compatible = "gpio-leds";
myled0: led_0 {
gpios = <&gpio0 13 GPIO_ACTIVE_LOW>;
};
};
};
The above sets your board's ``led0`` alias to use pin 13 on GPIO controller
``gpio0``. The pin flags :c:macro:`GPIO_ACTIVE_LOW` mean the LED is on when
the pin is set to its low state, and off when the pin is in its high state.
Tips:
- See :dtcompatible:`gpio-leds` for more information on defining GPIO-based LEDs
in devicetree.
- If you're not sure what to do, check the devicetrees for supported boards which
use the same SoC as your target. See :ref:`get-devicetree-outputs` for details.
- See :zephyr_file:`include/zephyr/dt-bindings/gpio/gpio.h` for the flags you can use
in devicetree.
- If the LED is built in to your board hardware, the alias should be defined in
your :ref:`BOARD.dts file <devicetree-in-out-files>`. Otherwise, you can
define one in a :ref:`devicetree overlay <set-devicetree-overlays>`.
@@ -0,0 +1,51 @@
if BOARD_SERVO2350
menu "USB sample options"
depends on USB_DEVICE_STACK_NEXT
config USBD_MANUFACTURER
string "USB device sample manufacturer string"
default "Zephyr Project"
help
USB device sample manufacturer string.
config USBD_PRODUCT
string "USB device sample product string"
default "USBD sample"
help
USB device sample product stringa.
config USBD_PID
hex "USB device sample Product ID"
default 0x0001
help
USB device sample Product ID.
config USBD_SELF_POWERED
bool "USB device sample Self-powered attribute"
default y
help
Set the Self-powered attribute in the sample configuration.
config USBD_REMOTE_WAKEUP
bool "USB device sample Remote Wakeup attribute"
help
Set the Remote Wakeup attribute in the sample configuration.
config USBD_MAX_POWER
int "USB device sample bMaxPower value"
default 125
range 0 250
help
bMaxPower value in the sample configuration in 2 mA units.
config USBD_20_EXTENSION_DESC
bool "Use default USB 2.0 Extension Descriptor"
depends on USBD_BOS_SUPPORT
help
Set bcdUSB value to 0201 and use default USB 2.0 Extension Descriptor.
endmenu
endif # BOARD_SERVO2350
@@ -0,0 +1,4 @@
config BOARD_SERVO2350
select SOC_RP2350B_HAZARD3 if BOARD_SERVO2350_RP2350B_HAZARD3
select SOC_RP2350B_M33 if BOARD_SERVO2350_RP2350B_M33
@@ -0,0 +1,20 @@
board_runner_args(openocd --cmd-pre-init "source [find interface/cmsis-dap.cfg]")
if(CONFIG_ARM)
board_runner_args(openocd --cmd-pre-init "source [find target/rp2350.cfg]")
else()
board_runner_args(openocd --cmd-pre-init "source [find target/rp2350-riscv.cfg]")
endif()
board_runner_args(probe-rs "--chip=RP235x")
# The adapter speed is expected to be set by interface configuration.
# The Raspberry Pi's OpenOCD fork doesn't, so match their documentation at
# https://www.raspberrypi.com/documentation/microcontrollers/debug-probe.html#debugging-with-swd
board_runner_args(openocd --cmd-pre-init "set_adapter_speed_if_not_set 5000")
board_runner_args(uf2 "--board-id=RP2350")
include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake)
include(${ZEPHYR_BASE}/boards/common/probe-rs.board.cmake)
include(${ZEPHYR_BASE}/boards/common/uf2.board.cmake)
+6
View File
@@ -0,0 +1,6 @@
board:
name: servo2350
full_name: Servo2350
vendor: arm
socs:
- name: rp2350b
@@ -0,0 +1,75 @@
#include <zephyr/dt-bindings/pinctrl/rpi-pico-rp2350b-pinctrl.h>
&pinctrl {
uart0_default: uart0_default {
group1 {
pinmux = <UART0_TX_P0>;
};
group2 {
pinmux = <UART0_RX_P1>;
input-enable;
};
};
uart1_default: uart1_default {
// These are the same pins as SPI
group1 {
pinmux = <UART1_TX_P26>;
};
group2 {
pinmux = <UART1_RX_P27>;
input-enable;
};
};
i2c0_default: i2c0_default {
group1 {
pinmux = <I2C0_SDA_P36>, <I2C0_SCL_P37>;
input-enable;
input-schmitt-enable;
};
};
spi0_default: spi0_default {
group1 {
pinmux = <SPI0_CSN_P17>, <SPI0_SCK_P18>, <SPI0_TX_P19>;
};
group2 {
pinmux = <SPI0_RX_P16>;
input-enable;
};
};
pwm_default: pwm_default {
group1 {
pinmux = <PWM_0A_P0>,
<PWM_0B_P1>,
<PWM_1A_P2>,
<PWM_1B_P3>,
<PWM_2A_P4>,
<PWM_2B_P5>,
<PWM_3A_P6>,
<PWM_3B_P7>,
<PWM_4A_P8>,
<PWM_4B_P9>,
<PWM_5A_P10>,
<PWM_5B_P11>,
<PWM_6A_P12>,
<PWM_6B_P13>,
<PWM_7A_P14>,
<PWM_7B_P15>,
<PWM_8A_P32>,
<PWM_8B_P33>;
};
};
adc_default: adc_default {
group1 {
pinmux = <ADC_CH0_P40>, <ADC_CH1_P41>, <ADC_CH2_P42>, <ADC_CH3_P43>;
input-enable;
};
};
};
@@ -0,0 +1,406 @@
#include <freq.h>
#include <zephyr/dt-bindings/i2c/i2c.h>
#include <zephyr/dt-bindings/pwm/pwm.h>
#include <zephyr/dt-bindings/input/input-event-codes.h>
#include "servo2350-pinctrl.dtsi"
/ {
chosen {
zephyr,sram = &sram0;
zephyr,flash = &flash0;
zephyr,console = &cdc_acm_uart0;
zephyr,shell-uart = &cdc_acm_uart0;
zephyr,code-partition = &code_partition;
};
zephyr,user {
io-channels = <&adc 0>, /* ADC channel 1 (adc2) - connected to mux */
<&adc 1>, /* ADC channel 0 (adc1) - direct channel 16 */
<&adc 2>; /* ADC channel 2 (adc3) - direct channel 17 */
};
leds {
compatible = "gpio-leds";
led0: led_0 {
gpios = <&gpio0 24 GPIO_ACTIVE_LOW>;
label = "LED0";
};
led1: led_1 {
gpios = <&gpio0 25 GPIO_ACTIVE_LOW>;
label = "LED1";
};
};
imu_int1_pin {
compatible = "gpio-keys";
imu_int1: imu_int1 {
gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>;
label = "IMU_INT1";
};
};
digital_inputs {
compatible = "gpio-keys";
digital1: digital_1 {
gpios = <&gpio0 16 GPIO_ACTIVE_HIGH>;
label = "DIGITAL_1";
};
digital2: digital_2 {
gpios = <&gpio0 17 GPIO_ACTIVE_HIGH>;
label = "DIGITAL_2";
};
digital3: digital_3 {
gpios = <&gpio0 18 GPIO_ACTIVE_HIGH>;
label = "DIGITAL_3";
};
digital4: digital_4 {
gpios = <&gpio0 19 GPIO_ACTIVE_HIGH>;
label = "DIGITAL_4";
};
digital5: digital_5 {
gpios = <&gpio0 20 GPIO_ACTIVE_HIGH>;
label = "DIGITAL_5";
};
digital6: digital_6 {
gpios = <&gpio0 21 GPIO_ACTIVE_HIGH>;
label = "DIGITAL_6";
};
};
digital_outputs {
compatible = "gpio-leds";
leg0_enable: leg0_enable {
gpios = <&gpio0 29 GPIO_ACTIVE_HIGH>;
label = "LEG0_ENABLE";
};
leg1_enable: leg1_enable {
gpios = <&gpio0 30 GPIO_ACTIVE_HIGH>;
label = "LEG1_ENABLE";
};
leg2_enable: leg2_enable {
gpios = <&gpio0 31 GPIO_ACTIVE_HIGH>;
label = "LEG2_ENABLE";
};
leg3_enable: leg3_enable {
gpios = <&gpio0_hi 11 GPIO_ACTIVE_HIGH>;
label = "LEG3_ENABLE";
};
leg4_enable: leg4_enable {
gpios = <&gpio0_hi 12 GPIO_ACTIVE_HIGH>;
label = "LEG4_ENABLE";
};
leg5_enable: leg5_enable {
gpios = <&gpio0_hi 13 GPIO_ACTIVE_HIGH>;
label = "LEG5_ENABLE";
};
};
pwm_servos {
compatible = "pwm-leds";
servo1: servo_1 {
pwms = <&pwm 0 PWM_USEC(20000) PWM_POLARITY_NORMAL>;
label = "SERVO_1";
};
servo2: servo_2 {
pwms = <&pwm 1 PWM_USEC(20000) PWM_POLARITY_NORMAL>;
label = "SERVO_2";
};
servo3: servo_3 {
pwms = <&pwm 2 PWM_USEC(20000) PWM_POLARITY_NORMAL>;
label = "SERVO_3";
};
servo4: servo_4 {
pwms = <&pwm 3 PWM_USEC(20000) PWM_POLARITY_NORMAL>;
label = "SERVO_4";
};
servo5: servo_5 {
pwms = <&pwm 4 PWM_USEC(20000) PWM_POLARITY_NORMAL>;
label = "SERVO_5";
};
servo6: servo_6 {
pwms = <&pwm 5 PWM_USEC(20000) PWM_POLARITY_NORMAL>;
label = "SERVO_6";
};
servo7: servo_7 {
pwms = <&pwm 6 PWM_USEC(20000) PWM_POLARITY_NORMAL>;
label = "SERVO_7";
};
servo8: servo_8 {
pwms = <&pwm 7 PWM_USEC(20000) PWM_POLARITY_NORMAL>;
label = "SERVO_8";
};
servo9: servo_9 {
pwms = <&pwm 8 PWM_USEC(20000) PWM_POLARITY_NORMAL>;
label = "SERVO_9";
};
servo10: servo_10 {
pwms = <&pwm 9 PWM_USEC(20000) PWM_POLARITY_NORMAL>;
label = "SERVO_10";
};
servo11: servo_11 {
pwms = <&pwm 10 PWM_USEC(20000) PWM_POLARITY_NORMAL>;
label = "SERVO_11";
};
servo12: servo_12 {
pwms = <&pwm 11 PWM_USEC(20000) PWM_POLARITY_NORMAL>;
label = "SERVO_12";
};
servo13: servo_13 {
pwms = <&pwm 12 PWM_USEC(20000) PWM_POLARITY_NORMAL>;
label = "SERVO_13";
};
servo14: servo_14 {
pwms = <&pwm 13 PWM_USEC(20000) PWM_POLARITY_NORMAL>;
label = "SERVO_14";
};
servo15: servo_15 {
pwms = <&pwm 14 PWM_USEC(20000) PWM_POLARITY_NORMAL>;
label = "SERVO_15";
};
servo16: servo_16 {
pwms = <&pwm 15 PWM_USEC(20000) PWM_POLARITY_NORMAL>;
label = "SERVO_16";
};
servo17: servo_17 {
pwms = <&pwm 16 PWM_USEC(20000) PWM_POLARITY_NORMAL>;
label = "SERVO_17";
};
servo18: servo_18 {
pwms = <&pwm 17 PWM_USEC(20000) PWM_POLARITY_NORMAL>;
label = "SERVO_18";
};
};
aliases {
watchdog0 = &wdt0;
led0 = &led0;
led1 = &led1;
imu = &icm45686;
imu-int1 = &imu_int1;
digital1 = &digital1;
digital2 = &digital2;
digital3 = &digital3;
digital4 = &digital4;
digital5 = &digital5;
digital6 = &digital6;
leg0-enable = &leg0_enable;
leg1-enable = &leg1_enable;
leg2-enable = &leg2_enable;
leg3-enable = &leg3_enable;
leg4-enable = &leg4_enable;
leg5-enable = &leg5_enable;
servo1 = &servo1;
servo2 = &servo2;
servo3 = &servo3;
servo4 = &servo4;
servo5 = &servo5;
servo6 = &servo6;
servo7 = &servo7;
servo8 = &servo8;
servo9 = &servo9;
servo10 = &servo10;
servo11 = &servo11;
servo12 = &servo12;
servo13 = &servo13;
servo14 = &servo14;
servo15 = &servo15;
servo16 = &servo16;
servo17 = &servo17;
servo18 = &servo18;
adc-mux = &adc1;
adc0 = &adc1;
adc2 = &adc2;
adc3 = &adc3;
uart0 = &uart0;
uart-bridge = &uart1;
};
pico_header: connector {
compatible = "raspberrypi,pico-header";
#gpio-cells = <2>;
gpio-map-mask = <0xffffffff 0xffffffc0>;
gpio-map-pass-thru = <0 0x3f>;
gpio-map = <0 0 &gpio0 0 0>, /* GP0 */
<1 0 &gpio0 1 0>, /* GP1 */
<2 0 &gpio0 2 0>, /* GP2 */
<3 0 &gpio0 3 0>, /* GP3 */
<4 0 &gpio0 4 0>, /* GP4 */
<5 0 &gpio0 5 0>, /* GP5 */
<6 0 &gpio0 6 0>, /* GP6 */
<7 0 &gpio0 7 0>, /* GP7 */
<8 0 &gpio0 8 0>, /* GP8 */
<9 0 &gpio0 9 0>, /* GP9 */
<10 0 &gpio0 10 0>, /* GP10 */
<11 0 &gpio0 11 0>, /* GP11 */
<12 0 &gpio0 12 0>, /* GP12 */
<13 0 &gpio0 13 0>, /* GP13 */
<14 0 &gpio0 14 0>, /* GP14 */
<15 0 &gpio0 15 0>, /* GP15 */
<16 0 &gpio0 16 0>, /* GP16 */
<17 0 &gpio0 17 0>, /* GP17 */
<18 0 &gpio0 18 0>, /* GP18 */
<19 0 &gpio0 19 0>, /* GP19 */
<20 0 &gpio0 20 0>, /* GP20 */
<21 0 &gpio0 21 0>, /* GP21 */
<22 0 &gpio0 22 0>, /* GP22 */
<26 0 &gpio0 26 0>, /* GP26 */
<27 0 &gpio0 27 0>, /* GP27 */
<28 0 &gpio0 28 0>; /* GP28 */
};
};
&flash0 {
/* W25Q16JVUXIQ_TR: 16M-bit (2MB) NOR Flash */
reg = <0x10000000 DT_SIZE_M(2)>;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
/* Code partition: 256KB for application code (starts at beginning of flash) */
code_partition: partition@0 {
label = "code";
reg = <0x00000000 DT_SIZE_K(256)>;
read-only;
};
/* Settings partition: 64KB for settings data */
settings_partition: partition@40000 {
label = "settings";
reg = <0x00040000 DT_SIZE_K(64)>;
};
/* Data partition: 1728KB for data storage (largest partition) */
data_partition: partition@50000 {
label = "data";
reg = <0x00050000 DT_SIZE_K(1728)>;
};
};
};
&uart0 {
current-speed = <115200>;
status = "okay";
pinctrl-0 = <&uart0_default>;
pinctrl-names = "default";
};
&uart1 {
current-speed = <115200>;
status = "okay";
pinctrl-0 = <&uart1_default>;
pinctrl-names = "default";
};
zephyr_udc0: &usbd {
status = "okay";
cdc_acm_uart0: cdc_acm_uart0 {
compatible = "zephyr,cdc-acm-uart";
label = "Zephyr USB CDC-ACM";
};
};
gpio0_lo: &gpio0 {
status = "okay";
};
&gpio0_hi {
status = "okay";
};
&spi0 {
clock-frequency = <DT_FREQ_M(8)>;
pinctrl-0 = <&spi0_default>;
pinctrl-names = "default";
status = "disabled";
};
&i2c0 {
pinctrl-0 = <&i2c0_default>;
pinctrl-names = "default";
status = "okay";
clock-frequency = <I2C_BITRATE_FAST>;
icm45686: icm45686@68 {
compatible = "invensense,icm42688";
reg = <0x68>;
status = "okay";
int1-gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>;
int2-gpios = <&gpio0 23 GPIO_ACTIVE_HIGH>;
accel-pwr-mode = <3>;
accel-ord = <9>;
accel-fs = <16>;
accel-lpf = <0>;
gyro-pwr-mode = <0>; /* turn off */
gyro-ord = <9>;
gyro-fs = <2000>;
};
};
adc0: &adc {
pinctrl-0 = <&adc_default>;
pinctrl-names = "default";
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
adc1: channel@0 {
reg = <0>;
zephyr,gain = "ADC_GAIN_1";
zephyr,reference = "ADC_REF_INTERNAL";
zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>;
zephyr,resolution = <12>;
};
adc2: channel@1 {
reg = <1>;
zephyr,gain = "ADC_GAIN_1";
zephyr,reference = "ADC_REF_INTERNAL";
zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>;
zephyr,resolution = <12>;
};
adc3: channel@2 {
reg = <2>;
zephyr,gain = "ADC_GAIN_1";
zephyr,reference = "ADC_REF_INTERNAL";
zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>;
zephyr,resolution = <12>;
};
};
&pwm {
status = "okay";
pinctrl-0 = <&pwm_default>;
pinctrl-names = "default";
divider-int-0 = <64>;
};
&timer0 {
status = "okay";
};
pico_spi: &spi0 {};
pico_i2c0: &i2c0 {};
pico_i2c1: &i2c1 {};
pico_serial: &uart0 {};
zephyr_i2c: &i2c0 {};
imu: &icm45686 {};
@@ -0,0 +1,12 @@
/dts-v1/;
/* The build system assumes that there's a cpucluster-specific file.
*
* This file provides composition of the device tree:
* 1. The common features of the SoC
* 2. Core-specific configuration.
* 3. Board-specific configuration.
*/
#include <raspberrypi/rpi_pico/rp2350b.dtsi>
#include <riscv/raspberrypi/hazard3.dtsi>
#include "servo2350.dtsi"
@@ -0,0 +1,20 @@
identifier: servo2350/rp2350b/hazard3
name: Servo2350 (Hazard3)
type: mcu
arch: riscv
flash: 16384
ram: 8192
toolchain:
- zephyr
supported:
- adc
- clock
- counter
- dma
- gpio
- hwinfo
- i2c
- pwm
- spi
- usbd
- uart
@@ -0,0 +1,10 @@
CONFIG_BUILD_OUTPUT_HEX=y
CONFIG_BUILD_OUTPUT_UF2=y
CONFIG_CLOCK_CONTROL=y
CONFIG_CONSOLE=y
CONFIG_GPIO=y
CONFIG_RESET=y
CONFIG_SERIAL=y
CONFIG_UART_CONSOLE=y
CONFIG_UART_INTERRUPT_DRIVEN=y
CONFIG_USE_DT_CODE_PARTITION=y
@@ -0,0 +1,12 @@
/dts-v1/;
/* The build system assumes that there's a cpucluster-specific file.
*
* This file provides composition of the device tree:
* 1. The common features of the SoC
* 2. Core-specific configuration.
* 3. Board-specific configuration.
*/
#include <raspberrypi/rpi_pico/rp2350b.dtsi>
#include <raspberrypi/rpi_pico/m33.dtsi>
#include "servo2350.dtsi"
@@ -0,0 +1,21 @@
identifier: servo2350/rp2350b/m33
name: Servo2350 (Cortex-M33)
type: mcu
arch: arm
flash: 16384
ram: 8192
toolchain:
- zephyr
- gnuarmemb
supported:
- adc
- clock
- counter
- dma
- gpio
- hwinfo
- i2c
- pwm
- spi
- usbd
- uart
@@ -0,0 +1,10 @@
CONFIG_BUILD_OUTPUT_HEX=y
CONFIG_BUILD_OUTPUT_UF2=y
CONFIG_CLOCK_CONTROL=y
CONFIG_CONSOLE=y
CONFIG_GPIO=y
CONFIG_RESET=y
CONFIG_SERIAL=y
CONFIG_UART_CONSOLE=y
CONFIG_UART_INTERRUPT_DRIVEN=y
CONFIG_USE_DT_CODE_PARTITION=y
@@ -0,0 +1,8 @@
# Checking and set 'adapter speed'.
# Set the adaptor speed, if unset, and given as an argument.
proc set_adapter_speed_if_not_set { speed } {
puts "checking adapter speed..."
if { [catch {adapter speed} ret] } {
adapter speed $speed
}
}
+2
View File
@@ -0,0 +1,2 @@
add_subdirectory(multiplexer)
+5
View File
@@ -0,0 +1,5 @@
menu "Servo2350 Device Drivers"
rsource "multiplexer/Kconfig"
endmenu
@@ -0,0 +1 @@
add_subdirectory_ifdef(CONFIG_CD74HC4067 cd74hc4067)
+5
View File
@@ -0,0 +1,5 @@
menu "Multiplexer Drivers"
rsource "cd74hc4067/Kconfig"
endmenu
@@ -0,0 +1,5 @@
if(CONFIG_CD74HC4067)
target_sources(app PRIVATE ${CMAKE_CURRENT_LIST_DIR}/cd74hc4067.c)
target_include_directories(app PRIVATE ${CMAKE_CURRENT_LIST_DIR})
endif()
@@ -0,0 +1,23 @@
menuconfig CD74HC4067
bool "TI CD74HC4067 analog multiplexer"
depends on GPIO
help
Enable support for the TI CD74HC4067 16-channel analog/digital
multiplexer/demultiplexer controlled through GPIO selection pins.
if CD74HC4067
config CD74HC4067_INIT_PRIORITY
int "Initialization priority"
default 80
help
Device initialization priority for the CD74HC4067 driver. This should
be higher (lower numeric value) than any clients that depend on the
multiplexer being ready.
module = CD74HC4067
module-str = cd74hc4067
source "subsys/logging/Kconfig.template.log_config"
endif # CD74HC4067
@@ -0,0 +1,217 @@
#define DT_DRV_COMPAT cd74hc4067
#include <errno.h>
#include <stdbool.h>
#include <zephyr/device.h>
#include <zephyr/devicetree.h>
#include <zephyr/drivers/gpio.h>
#include <zephyr/kernel.h>
#include <zephyr/logging/log.h>
#include <zephyr/sys/util.h>
#include "cd74hc4067.h"
LOG_MODULE_REGISTER(cd74hc4067, CONFIG_CD74HC4067_LOG_LEVEL);
#define CD74HC4067_CHANNEL_COUNT 16U
#define CD74HC4067_SELECTION_PIN_COUNT 4U
struct cd74hc4067_config {
struct gpio_dt_spec sel[CD74HC4067_SELECTION_PIN_COUNT];
struct gpio_dt_spec enable;
bool has_enable;
};
struct cd74hc4067_data {
struct k_mutex lock;
uint8_t current_channel;
bool enabled;
};
static int cd74hc4067_sync_enable_state(const struct device *dev, bool enable)
{
const struct cd74hc4067_config *cfg = dev->config;
struct cd74hc4067_data *data = dev->data;
int ret = 0;
if (!cfg->has_enable) {
if (!enable) {
return -ENOTSUP;
}
data->enabled = true;
return 0;
}
if (!device_is_ready(cfg->enable.port)) {
LOG_ERR("%s enable GPIO not ready", dev->name);
return -ENODEV;
}
ret = gpio_pin_set_dt(&cfg->enable, enable ? 0 : 1);
if (ret == 0) {
data->enabled = enable;
}
return ret;
}
static int cd74hc4067_configure_gpios(const struct device *dev)
{
const struct cd74hc4067_config *cfg = dev->config;
int ret;
for (size_t i = 0; i < ARRAY_SIZE(cfg->sel); i++) {
const struct gpio_dt_spec *sel = &cfg->sel[i];
if (!device_is_ready(sel->port)) {
LOG_ERR("%s sel%zu GPIO not ready", dev->name, i);
return -ENODEV;
}
ret = gpio_pin_configure_dt(sel, GPIO_OUTPUT_INACTIVE);
if (ret != 0) {
LOG_ERR("%s failed to configure sel%zu GPIO (%d)", dev->name, i, ret);
return ret;
}
}
if (cfg->has_enable) {
if (!device_is_ready(cfg->enable.port)) {
LOG_ERR("%s enable GPIO not ready", dev->name);
return -ENODEV;
}
ret = gpio_pin_configure_dt(&cfg->enable, GPIO_OUTPUT_HIGH);
if (ret != 0) {
LOG_ERR("%s failed to configure enable GPIO (%d)", dev->name, ret);
return ret;
}
}
return 0;
}
static int cd74hc4067_init(const struct device *dev)
{
const struct cd74hc4067_config *cfg = dev->config;
struct cd74hc4067_data *data = dev->data;
int ret;
k_mutex_init(&data->lock);
data->current_channel = 0U;
data->enabled = !cfg->has_enable;
ret = cd74hc4067_configure_gpios(dev);
if (ret != 0) {
return ret;
}
/* Latch the default channel (0) */
ret = cd74hc4067_select_channel(dev, 0U);
if (ret != 0) {
return ret;
}
LOG_INF("%s initialized (enable pin %s)", dev->name, cfg->has_enable ? "present" : "absent");
return 0;
}
int cd74hc4067_select_channel(const struct device *dev, uint8_t channel)
{
const struct cd74hc4067_config *cfg = dev->config;
struct cd74hc4067_data *data = dev->data;
int ret = 0;
if (channel >= CD74HC4067_CHANNEL_COUNT) {
return -EINVAL;
}
ret = k_mutex_lock(&data->lock, K_FOREVER);
if (ret != 0) {
return ret;
}
for (size_t i = 0; i < ARRAY_SIZE(cfg->sel); i++) {
ret = gpio_pin_set_dt(&cfg->sel[i], (channel >> i) & 0x1);
if (ret != 0) {
LOG_ERR("%s failed to drive sel%zu GPIO (%d)", dev->name, i, ret);
goto out;
}
}
data->current_channel = channel;
out:
k_mutex_unlock(&data->lock);
return ret;
}
int cd74hc4067_enable(const struct device *dev)
{
struct cd74hc4067_data *data = dev->data;
int ret;
ret = k_mutex_lock(&data->lock, K_FOREVER);
if (ret != 0) {
return ret;
}
ret = cd74hc4067_sync_enable_state(dev, true);
k_mutex_unlock(&data->lock);
return ret;
}
int cd74hc4067_disable(const struct device *dev)
{
struct cd74hc4067_data *data = dev->data;
int ret;
ret = k_mutex_lock(&data->lock, K_FOREVER);
if (ret != 0) {
return ret;
}
ret = cd74hc4067_sync_enable_state(dev, false);
k_mutex_unlock(&data->lock);
return ret;
}
uint8_t cd74hc4067_get_current_channel(const struct device *dev)
{
struct cd74hc4067_data *data = dev->data;
uint8_t channel;
k_mutex_lock(&data->lock, K_FOREVER);
channel = data->current_channel;
k_mutex_unlock(&data->lock);
return channel;
}
#define CD74HC4067_DEFINE(inst) \
BUILD_ASSERT(DT_PROP_LEN(DT_DRV_INST(inst), sel_gpios) == CD74HC4067_SELECTION_PIN_COUNT, \
"cd74hc4067 requires exactly 4 selection GPIOs"); \
static const struct cd74hc4067_config cd74hc4067_config_##inst = { \
.sel = { \
GPIO_DT_SPEC_GET_BY_IDX(DT_DRV_INST(inst), sel_gpios, 0), \
GPIO_DT_SPEC_GET_BY_IDX(DT_DRV_INST(inst), sel_gpios, 1), \
GPIO_DT_SPEC_GET_BY_IDX(DT_DRV_INST(inst), sel_gpios, 2), \
GPIO_DT_SPEC_GET_BY_IDX(DT_DRV_INST(inst), sel_gpios, 3), \
}, \
.enable = COND_CODE_1(DT_INST_NODE_HAS_PROP(inst, enable_gpios), \
(GPIO_DT_SPEC_GET(DT_DRV_INST(inst), enable_gpios)), \
((struct gpio_dt_spec){0})), \
.has_enable = DT_INST_NODE_HAS_PROP(inst, enable_gpios), \
}; \
static struct cd74hc4067_data cd74hc4067_data_##inst; \
DEVICE_DT_INST_DEFINE(inst, cd74hc4067_init, NULL, &cd74hc4067_data_##inst, \
&cd74hc4067_config_##inst, POST_KERNEL, \
CONFIG_CD74HC4067_INIT_PRIORITY, NULL);
DT_INST_FOREACH_STATUS_OKAY(CD74HC4067_DEFINE)
@@ -0,0 +1,64 @@
#ifndef SERVO2350_DRIVERS_MULTIPLEXER_CD74HC4067_H_
#define SERVO2350_DRIVERS_MULTIPLEXER_CD74HC4067_H_
#include <stdint.h>
#include <zephyr/device.h>
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief Select one of the 16 multiplexed channels.
*
* @param dev CD74HC4067 device instance.
* @param channel Channel number to route (0-15).
*
* @retval 0 If the channel was selected.
* @retval -EINVAL If the channel number is out of range.
* @retval -ENODEV If one of the selection GPIOs is not ready.
* @retval other Negative errno value from the GPIO driver.
*/
int cd74hc4067_select_channel(const struct device *dev, uint8_t channel);
/**
* @brief Enable the multiplexer output (drives the /EN pin low).
*
* If the instance does not provide an enable GPIO, this call is a no-op.
*
* @param dev CD74HC4067 device instance.
*
* @retval 0 On success.
* @retval -ENODEV If the enable GPIO is not ready.
* @retval negative errno on GPIO failures.
*/
int cd74hc4067_enable(const struct device *dev);
/**
* @brief Disable the multiplexer output (drives the /EN pin high).
*
* @param dev CD74HC4067 device instance.
*
* @retval 0 On success.
* @retval -ENOTSUP If the instance does not expose an enable GPIO.
* @retval -ENODEV If the enable GPIO is not ready.
* @retval negative errno on GPIO failures.
*/
int cd74hc4067_disable(const struct device *dev);
/**
* @brief Return the last channel value written to the device.
*
* @param dev CD74HC4067 device instance.
*
* @return Channel number in the range [0, 15].
*/
uint8_t cd74hc4067_get_current_channel(const struct device *dev);
#ifdef __cplusplus
}
#endif
#endif /* SERVO2350_DRIVERS_MULTIPLEXER_CD74HC4067_H_ */
+27
View File
@@ -0,0 +1,27 @@
description: |
GPIO-controlled 16-channel analog/digital multiplexer/demultiplexer.
The CD74HC4067 has 4 selection pins (S0-S3) that select one of 16 channels.
Supports optional common enable pin for power management.
compatible: "cd74hc4067"
include: base.yaml
properties:
sel-gpios:
type: phandle-array
required: true
description: |
GPIO pins for channel selection (S0-S3).
Array must contain exactly 4 GPIOs:
- Index 0: S0 (LSB)
- Index 1: S1
- Index 2: S2
- Index 3: S3 (MSB)
enable-gpios:
type: phandle-array
description: |
Optional GPIO for common enable pin (E).
When low, enables the multiplexer. When high, disables it.
+31
View File
@@ -0,0 +1,31 @@
# Basic
CONFIG_GPIO=y
CONFIG_PWM=y
# Serial
CONFIG_SERIAL=y
CONFIG_CONSOLE=y
CONFIG_UART_CONSOLE=y
CONFIG_STDOUT_CONSOLE=y
CONFIG_UART_LINE_CTRL=y
# USB
CONFIG_USB_DEVICE_STACK_NEXT=y
CONFIG_CDC_ACM_SERIAL_INITIALIZE_AT_BOOT=y
CONFIG_CDC_ACM_SERIAL_PRODUCT_STRING="Servo2350"
CONFIG_CDC_ACM_SERIAL_PID=0x0004
# Route console/logs to USB CDC ACM (configured via device tree)
CONFIG_LOG=n
CONFIG_LOG_DEFAULT_LEVEL=3
CONFIG_UART_CONSOLE=y
CONFIG_LOG_BACKEND_UART=y
# Shell
CONFIG_SHELL=y
CONFIG_USBD_SHELL=y
CONFIG_SHELL_HISTORY=y
# ZBUS Configuration
CONFIG_ZBUS=y
CONFIG_ZBUS_RUNTIME_OBSERVERS=y
+12
View File
@@ -0,0 +1,12 @@
sample:
name: Blinky Sample
tests:
sample.basic.blinky:
tags:
- LED
- gpio
filter: dt_enabled_alias_with_parent_compat("led0", "gpio-leds")
depends_on: gpio
harness: led
integration_platforms:
- frdm_k64f
+103
View File
@@ -0,0 +1,103 @@
#include "led.h"
#include "zbus_message.h"
#include <zephyr/device.h>
#include <zephyr/devicetree.h>
#include <zephyr/drivers/gpio.h>
#include <zephyr/kernel.h>
#include <zephyr/logging/log.h>
#include <zephyr/zbus/zbus.h>
LOG_MODULE_REGISTER(led, LOG_LEVEL_INF);
#define LED0_NODE DT_ALIAS(led0)
#define LED1_NODE DT_ALIAS(led1)
static const struct gpio_dt_spec led0_gpio = GPIO_DT_SPEC_GET(LED0_NODE, gpios);
static const struct gpio_dt_spec led1_gpio = GPIO_DT_SPEC_GET(LED1_NODE, gpios);
static bool led0_state = false;
static bool led1_state = false;
/* ZBUS handler - update LED state */
static void leds_zbus_handler(const struct zbus_channel *chan)
{
const struct leds_message *msg;
int ret;
const struct gpio_dt_spec *target_gpio;
bool *target_state;
msg = zbus_chan_const_msg(chan);
if (msg == NULL) {
return;
}
if (msg->led_id == 0) {
target_gpio = &led0_gpio;
target_state = &led0_state;
} else if (msg->led_id == 1) {
target_gpio = &led1_gpio;
target_state = &led1_state;
} else {
return;
}
*target_state = msg->led_value;
ret = gpio_pin_set_dt(target_gpio, msg->led_value ? 1 : 0);
if (ret != 0) {
LOG_ERR("Failed to set LED%d: %d", msg->led_id, ret);
return;
}
LOG_DBG("LED%d updated: %s (LED0=%s, LED1=%s)",
msg->led_id, msg->led_value ? "ON" : "OFF",
led0_state ? "ON" : "OFF", led1_state ? "ON" : "OFF");
}
ZBUS_LISTENER_DEFINE(leds_listener, leds_zbus_handler);
int led_init(void)
{
int ret;
if (!device_is_ready(led0_gpio.port)) {
LOG_ERR("LED0 GPIO device not ready");
return -ENODEV;
}
ret = gpio_pin_configure_dt(&led0_gpio, GPIO_OUTPUT_INACTIVE);
if (ret != 0) {
LOG_ERR("Failed to configure LED0 GPIO: %d", ret);
return ret;
}
if (!device_is_ready(led1_gpio.port)) {
LOG_ERR("LED1 GPIO device not ready");
return -ENODEV;
}
ret = gpio_pin_configure_dt(&led1_gpio, GPIO_OUTPUT_INACTIVE);
if (ret != 0) {
LOG_ERR("Failed to configure LED1 GPIO: %d", ret);
return ret;
}
ret = zbus_chan_add_obs(&leds_chan, &leds_listener, K_MSEC(200));
if (ret != 0) {
LOG_ERR("Failed to add LED listener: %d", ret);
return ret;
}
ret = gpio_pin_set_dt(&led0_gpio, 0);
ret |= gpio_pin_set_dt(&led1_gpio, 0);
if (ret != 0) {
LOG_ERR("Failed to initialize LEDs");
return ret;
}
LOG_INF("LED driver initialized (LED0: GPIO %d, LED1: GPIO %d)",
led0_gpio.pin, led1_gpio.pin);
return 0;
}
+17
View File
@@ -0,0 +1,17 @@
#ifndef LED_H
#define LED_H
/**
* @file led.h
* @brief LED control via GPIO and ZBUS
*/
/**
* @brief Initialize LED driver
*
* @return 0 on success, negative errno on failure
*/
int led_init(void);
#endif /* LED_H */
+29
View File
@@ -0,0 +1,29 @@
/*
* Copyright (c) 2016 Intel Corporation
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <stdio.h>
#include <zephyr/kernel.h>
#include <zephyr/logging/log.h>
LOG_MODULE_REGISTER(main, LOG_LEVEL_INF);
int main(void)
{
int ret;
/* LED driver - status indicators */
ret = led_init();
if (ret != 0) {
LOG_ERR("Failed to initialize LED driver: %d", ret);
}
while (1) {
k_msleep(1000);
}
return 0;
}
+127
View File
@@ -0,0 +1,127 @@
#include "zbus_message.h"
#include <zephyr/kernel.h>
#include <zephyr/logging/log.h>
#include <zephyr/shell/shell.h>
#include <zephyr/zbus/zbus.h>
LOG_MODULE_REGISTER(led_shell, LOG_LEVEL_INF);
/**
* @brief Parse and publish an LED command to leds_chan.
*
* Usage:
* led set <id> <on|off>
*
* @param shell Shell instance
* @param argc Argument count (must be 3: "set", id, state)
* @param argv Argument vector
* @return 0 on success, negative errno on failure
*/
static int cmd_led_set(const struct shell *shell, size_t argc, char **argv)
{
struct leds_message msg;
int ret;
/* Parse LED id */
char *endptr;
long id = strtol(argv[1], &endptr, 10);
if (*endptr != '\0' || id < 0 || id > 1) {
shell_error(shell, "Invalid LED id '%s'. Use 0 or 1.", argv[1]);
return -EINVAL;
}
/* Parse state */
if (strcmp(argv[2], "on") == 0) {
msg.led_value = true;
} else if (strcmp(argv[2], "off") == 0) {
msg.led_value = false;
} else {
shell_error(shell, "Invalid state '%s'. Use 'on' or 'off'.", argv[2]);
return -EINVAL;
}
msg.led_id = (uint8_t)id;
ret = zbus_chan_pub(&leds_chan, &msg, K_MSEC(200));
if (ret != 0) {
shell_error(shell, "Failed to publish LED command: %d", ret);
return ret;
}
shell_print(shell, "LED%d turned %s", msg.led_id, msg.led_value ? "ON" : "OFF");
return 0;
}
/**
* @brief Turn on all LEDs.
*/
static int cmd_led_all_on(const struct shell *shell, size_t argc, char **argv)
{
struct leds_message msg;
int ret;
for (uint8_t i = 0; i <= 1; i++) {
msg.led_id = i;
msg.led_value = true;
ret = zbus_chan_pub(&leds_chan, &msg, K_MSEC(200));
if (ret != 0) {
shell_error(shell, "Failed to turn on LED%d: %d", i, ret);
return ret;
}
}
shell_print(shell, "All LEDs turned ON");
return 0;
}
/**
* @brief Turn off all LEDs.
*/
static int cmd_led_all_off(const struct shell *shell, size_t argc, char **argv)
{
struct leds_message msg;
int ret;
for (uint8_t i = 0; i <= 1; i++) {
msg.led_id = i;
msg.led_value = false;
ret = zbus_chan_pub(&leds_chan, &msg, K_MSEC(200));
if (ret != 0) {
shell_error(shell, "Failed to turn off LED%d: %d", i, ret);
return ret;
}
}
shell_print(shell, "All LEDs turned OFF");
return 0;
}
/* Subcommands for the "led" root command */
SHELL_STATIC_SUBCMD_SET_CREATE(sub_led,
SHELL_CMD_ARG(set, NULL,
"Set a single LED state.\n"
"Usage: led set <id> <on|off>\n"
" id : 0 or 1\n"
" state: on | off",
cmd_led_set, 3, 0),
SHELL_CMD(allon, NULL,
"Turn all LEDs on.\n"
"Usage: led allon",
cmd_led_all_on),
SHELL_CMD(alloff, NULL,
"Turn all LEDs off.\n"
"Usage: led alloff",
cmd_led_all_off),
SHELL_SUBCMD_SET_END
);
SHELL_CMD_REGISTER(led, &sub_led,
"LED control commands.\n"
" led set <id> <on|off> - Set LED state\n"
" led allon - Turn all LEDs on\n"
" led alloff - Turn all LEDs off",
NULL);
+16
View File
@@ -0,0 +1,16 @@
#include "zbus_message.h"
#include <zephyr/zbus/zbus.h>
/**
* @brief ZBUS channel definition for LED control.
*
* No validator is used; any leds_message value is accepted.
* Observers are registered at runtime via zbus_chan_add_obs().
*/
ZBUS_CHAN_DEFINE(leds_chan, /* channel name */
struct leds_message, /* message type */
NULL, /* validator */
NULL, /* user data */
ZBUS_OBSERVERS_EMPTY,
ZBUS_MSG_INIT(.led_id = 0, .led_value = false));
+30
View File
@@ -0,0 +1,30 @@
#ifndef ZBUS_MESSAGE_H
#define ZBUS_MESSAGE_H
/**
* @file zbus_message.h
* @brief ZBUS channel and message definitions for LED control
*/
#include <stdbool.h>
#include <zephyr/zbus/zbus.h>
/**
* @brief Message published to leds_chan to control an LED.
*
* @param led_id LED index (0 or 1)
* @param led_value true = ON, false = OFF
*/
struct leds_message {
uint8_t led_id;
bool led_value;
};
/**
* @brief ZBUS channel for LED control messages.
*
* Publish a struct leds_message to this channel to set an LED state.
*/
ZBUS_CHAN_DECLARE(leds_chan);
#endif /* ZBUS_MESSAGE_H */