Compare commits
18
Commits
161352f0ca
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b200b97f1a | ||
|
|
8e410e616e | ||
|
|
067f76f71f | ||
|
|
5c8f5c894c | ||
|
|
d66db88652 | ||
|
|
9204e49e87 | ||
|
|
712d1bac78 | ||
|
|
1c9398681d | ||
|
|
5d46b187ca | ||
|
|
9178984696 | ||
|
|
aded5832ea | ||
|
|
bf6c241c04 | ||
|
|
b4f71f60fa | ||
|
|
ef73f2c7ac | ||
|
|
347241bee2 | ||
|
|
31c9c740b3 | ||
|
|
59a5fd0770 | ||
|
|
d6057525f7 |
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,74 @@
|
|||||||
|
%TF.GenerationSoftware,KiCad,Pcbnew,6.0.11+dfsg-1*%
|
||||||
|
%TF.CreationDate,2025-01-28T23:33:11+01:00*%
|
||||||
|
%TF.ProjectId,Hanglamp,48616e67-6c61-46d7-902e-6b696361645f,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 6.0.11+dfsg-1) date 2025-01-28 23:33:11*
|
||||||
|
%MOMM*%
|
||||||
|
%LPD*%
|
||||||
|
G01*
|
||||||
|
G04 APERTURE LIST*
|
||||||
|
%ADD10C,2.109000*%
|
||||||
|
%ADD11R,1.700000X1.700000*%
|
||||||
|
%ADD12O,1.700000X1.700000*%
|
||||||
|
%ADD13R,2.800000X2.800000*%
|
||||||
|
%ADD14O,2.800000X2.800000*%
|
||||||
|
G04 APERTURE END LIST*
|
||||||
|
D10*
|
||||||
|
%TO.C,U1*%
|
||||||
|
X167640000Y-73920000D03*
|
||||||
|
X167640000Y-71380000D03*
|
||||||
|
X167640000Y-68840000D03*
|
||||||
|
X167640000Y-66300000D03*
|
||||||
|
X167640000Y-61220000D03*
|
||||||
|
X167640000Y-63760000D03*
|
||||||
|
X152400000Y-56140000D03*
|
||||||
|
X167640000Y-56140000D03*
|
||||||
|
X152400000Y-58680000D03*
|
||||||
|
X152400000Y-61220000D03*
|
||||||
|
X152400000Y-63760000D03*
|
||||||
|
X152400000Y-66300000D03*
|
||||||
|
X152400000Y-68840000D03*
|
||||||
|
X152400000Y-71380000D03*
|
||||||
|
X152400000Y-73920000D03*
|
||||||
|
X167640000Y-58680000D03*
|
||||||
|
%TD*%
|
||||||
|
D11*
|
||||||
|
%TO.C,J3*%
|
||||||
|
X147320000Y-71120000D03*
|
||||||
|
D12*
|
||||||
|
X147320000Y-73660000D03*
|
||||||
|
X147320000Y-76200000D03*
|
||||||
|
%TD*%
|
||||||
|
D11*
|
||||||
|
%TO.C,J1*%
|
||||||
|
X175260000Y-66040000D03*
|
||||||
|
D12*
|
||||||
|
X175260000Y-68580000D03*
|
||||||
|
X175260000Y-71120000D03*
|
||||||
|
X175260000Y-73660000D03*
|
||||||
|
X175260000Y-76200000D03*
|
||||||
|
%TD*%
|
||||||
|
D11*
|
||||||
|
%TO.C,J4*%
|
||||||
|
X132080000Y-73660000D03*
|
||||||
|
D12*
|
||||||
|
X132080000Y-76200000D03*
|
||||||
|
%TD*%
|
||||||
|
D13*
|
||||||
|
%TO.C,D1*%
|
||||||
|
X132080000Y-55880000D03*
|
||||||
|
D14*
|
||||||
|
X132080000Y-66040000D03*
|
||||||
|
%TD*%
|
||||||
|
D11*
|
||||||
|
%TO.C,J2*%
|
||||||
|
X142240000Y-71120000D03*
|
||||||
|
D12*
|
||||||
|
X142240000Y-73660000D03*
|
||||||
|
X142240000Y-76200000D03*
|
||||||
|
%TD*%
|
||||||
|
M02*
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
%TF.GenerationSoftware,KiCad,Pcbnew,6.0.11+dfsg-1*%
|
||||||
|
%TF.CreationDate,2025-01-28T23:33:11+01:00*%
|
||||||
|
%TF.ProjectId,Hanglamp,48616e67-6c61-46d7-902e-6b696361645f,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 6.0.11+dfsg-1) date 2025-01-28 23:33:11*
|
||||||
|
%MOMM*%
|
||||||
|
%LPD*%
|
||||||
|
G01*
|
||||||
|
G04 APERTURE LIST*
|
||||||
|
G04 APERTURE END LIST*
|
||||||
|
M02*
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
%TF.GenerationSoftware,KiCad,Pcbnew,6.0.11+dfsg-1*%
|
||||||
|
%TF.CreationDate,2025-01-28T23:33:11+01:00*%
|
||||||
|
%TF.ProjectId,Hanglamp,48616e67-6c61-46d7-902e-6b696361645f,rev?*%
|
||||||
|
%TF.SameCoordinates,Original*%
|
||||||
|
%TF.FileFunction,Legend,Bot*%
|
||||||
|
%TF.FilePolarity,Positive*%
|
||||||
|
%FSLAX46Y46*%
|
||||||
|
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||||
|
G04 Created by KiCad (PCBNEW 6.0.11+dfsg-1) date 2025-01-28 23:33:11*
|
||||||
|
%MOMM*%
|
||||||
|
%LPD*%
|
||||||
|
G01*
|
||||||
|
G04 APERTURE LIST*
|
||||||
|
G04 APERTURE END LIST*
|
||||||
|
M02*
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
%TF.GenerationSoftware,KiCad,Pcbnew,6.0.11+dfsg-1*%
|
||||||
|
%TF.CreationDate,2025-01-28T23:33:11+01:00*%
|
||||||
|
%TF.ProjectId,Hanglamp,48616e67-6c61-46d7-902e-6b696361645f,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 6.0.11+dfsg-1) date 2025-01-28 23:33:11*
|
||||||
|
%MOMM*%
|
||||||
|
%LPD*%
|
||||||
|
G01*
|
||||||
|
G04 APERTURE LIST*
|
||||||
|
%TA.AperFunction,Profile*%
|
||||||
|
%ADD10C,0.100000*%
|
||||||
|
%TD*%
|
||||||
|
G04 APERTURE END LIST*
|
||||||
|
D10*
|
||||||
|
X177800000Y-78740000D02*
|
||||||
|
X177800000Y-53340000D01*
|
||||||
|
X129540000Y-78740000D02*
|
||||||
|
X177800000Y-78740000D01*
|
||||||
|
X129540000Y-53340000D02*
|
||||||
|
X129540000Y-78740000D01*
|
||||||
|
X177800000Y-53340000D02*
|
||||||
|
X129540000Y-53340000D01*
|
||||||
|
M02*
|
||||||
@@ -0,0 +1,365 @@
|
|||||||
|
%TF.GenerationSoftware,KiCad,Pcbnew,6.0.11+dfsg-1*%
|
||||||
|
%TF.CreationDate,2025-01-28T23:33:11+01:00*%
|
||||||
|
%TF.ProjectId,Hanglamp,48616e67-6c61-46d7-902e-6b696361645f,rev?*%
|
||||||
|
%TF.SameCoordinates,Original*%
|
||||||
|
%TF.FileFunction,Copper,L1,Top*%
|
||||||
|
%TF.FilePolarity,Positive*%
|
||||||
|
%FSLAX46Y46*%
|
||||||
|
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||||
|
G04 Created by KiCad (PCBNEW 6.0.11+dfsg-1) date 2025-01-28 23:33:11*
|
||||||
|
%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*
|
||||||
|
%TA.AperFunction,ComponentPad*%
|
||||||
|
%ADD10C,1.905000*%
|
||||||
|
%TD*%
|
||||||
|
%TA.AperFunction,ComponentPad*%
|
||||||
|
%ADD11R,1.700000X1.700000*%
|
||||||
|
%TD*%
|
||||||
|
%TA.AperFunction,ComponentPad*%
|
||||||
|
%ADD12O,1.700000X1.700000*%
|
||||||
|
%TD*%
|
||||||
|
%TA.AperFunction,SMDPad,CuDef*%
|
||||||
|
%ADD13RoundRect,0.165000X-0.165000X-0.475000X0.165000X-0.475000X0.165000X0.475000X-0.165000X0.475000X0*%
|
||||||
|
%TD*%
|
||||||
|
%TA.AperFunction,ComponentPad*%
|
||||||
|
%ADD14R,2.800000X2.800000*%
|
||||||
|
%TD*%
|
||||||
|
%TA.AperFunction,ComponentPad*%
|
||||||
|
%ADD15O,2.800000X2.800000*%
|
||||||
|
%TD*%
|
||||||
|
%TA.AperFunction,SMDPad,CuDef*%
|
||||||
|
%ADD16R,0.900000X1.500000*%
|
||||||
|
%TD*%
|
||||||
|
%TA.AperFunction,ViaPad*%
|
||||||
|
%ADD17C,0.800000*%
|
||||||
|
%TD*%
|
||||||
|
%TA.AperFunction,Conductor*%
|
||||||
|
%ADD18C,0.250000*%
|
||||||
|
%TD*%
|
||||||
|
G04 APERTURE END LIST*
|
||||||
|
D10*
|
||||||
|
%TO.P,U1,0,GPIO0*%
|
||||||
|
%TO.N,Net-(J1-Pad4)*%
|
||||||
|
X167640000Y-73920000D03*
|
||||||
|
%TO.P,U1,1,GPIO1*%
|
||||||
|
%TO.N,Net-(J1-Pad3)*%
|
||||||
|
X167640000Y-71380000D03*
|
||||||
|
%TO.P,U1,2,GPIO2*%
|
||||||
|
%TO.N,Net-(J1-Pad2)*%
|
||||||
|
X167640000Y-68840000D03*
|
||||||
|
%TO.P,U1,3,GPIO3*%
|
||||||
|
%TO.N,unconnected-(U1-Pad3)*%
|
||||||
|
X167640000Y-66300000D03*
|
||||||
|
%TO.P,U1,3.3,3V3*%
|
||||||
|
%TO.N,+3.3V*%
|
||||||
|
X167640000Y-61220000D03*
|
||||||
|
%TO.P,U1,4,GPIO4*%
|
||||||
|
%TO.N,unconnected-(U1-Pad4)*%
|
||||||
|
X167640000Y-63760000D03*
|
||||||
|
%TO.P,U1,5,GPIO5*%
|
||||||
|
%TO.N,GPIO5*%
|
||||||
|
X152400000Y-56140000D03*
|
||||||
|
%TO.P,U1,5V,5V*%
|
||||||
|
%TO.N,+5V*%
|
||||||
|
X167640000Y-56140000D03*
|
||||||
|
%TO.P,U1,6,GPIO6*%
|
||||||
|
%TO.N,GPIO6*%
|
||||||
|
X152400000Y-58680000D03*
|
||||||
|
%TO.P,U1,7,GPIO7*%
|
||||||
|
%TO.N,unconnected-(U1-Pad7)*%
|
||||||
|
X152400000Y-61220000D03*
|
||||||
|
%TO.P,U1,8,GPIO8*%
|
||||||
|
%TO.N,unconnected-(U1-Pad8)*%
|
||||||
|
X152400000Y-63760000D03*
|
||||||
|
%TO.P,U1,9,GPIO9*%
|
||||||
|
%TO.N,unconnected-(U1-Pad9)*%
|
||||||
|
X152400000Y-66300000D03*
|
||||||
|
%TO.P,U1,10,GPIO10*%
|
||||||
|
%TO.N,unconnected-(U1-Pad10)*%
|
||||||
|
X152400000Y-68840000D03*
|
||||||
|
%TO.P,U1,20,GPIO20*%
|
||||||
|
%TO.N,unconnected-(U1-Pad20)*%
|
||||||
|
X152400000Y-71380000D03*
|
||||||
|
%TO.P,U1,21,GPIO21*%
|
||||||
|
%TO.N,unconnected-(U1-Pad21)*%
|
||||||
|
X152400000Y-73920000D03*
|
||||||
|
%TO.P,U1,G,GND*%
|
||||||
|
%TO.N,GND*%
|
||||||
|
X167640000Y-58680000D03*
|
||||||
|
%TD*%
|
||||||
|
D11*
|
||||||
|
%TO.P,J3,1,Pin_1*%
|
||||||
|
%TO.N,+5V*%
|
||||||
|
X147320000Y-71120000D03*
|
||||||
|
D12*
|
||||||
|
%TO.P,J3,2,Pin_2*%
|
||||||
|
X147320000Y-73660000D03*
|
||||||
|
%TO.P,J3,3,Pin_3*%
|
||||||
|
X147320000Y-76200000D03*
|
||||||
|
%TD*%
|
||||||
|
D11*
|
||||||
|
%TO.P,J1,1,Pin_1*%
|
||||||
|
%TO.N,GND*%
|
||||||
|
X175260000Y-66040000D03*
|
||||||
|
D12*
|
||||||
|
%TO.P,J1,2,Pin_2*%
|
||||||
|
%TO.N,Net-(J1-Pad2)*%
|
||||||
|
X175260000Y-68580000D03*
|
||||||
|
%TO.P,J1,3,Pin_3*%
|
||||||
|
%TO.N,Net-(J1-Pad3)*%
|
||||||
|
X175260000Y-71120000D03*
|
||||||
|
%TO.P,J1,4,Pin_4*%
|
||||||
|
%TO.N,Net-(J1-Pad4)*%
|
||||||
|
X175260000Y-73660000D03*
|
||||||
|
%TO.P,J1,5,Pin_5*%
|
||||||
|
%TO.N,+3.3V*%
|
||||||
|
X175260000Y-76200000D03*
|
||||||
|
%TD*%
|
||||||
|
D13*
|
||||||
|
%TO.P,C2,2*%
|
||||||
|
%TO.N,GND*%
|
||||||
|
X145905000Y-66040000D03*
|
||||||
|
%TO.P,C2,1*%
|
||||||
|
%TO.N,+4V*%
|
||||||
|
X144825000Y-66040000D03*
|
||||||
|
%TD*%
|
||||||
|
D11*
|
||||||
|
%TO.P,J4,1,Pin_1*%
|
||||||
|
%TO.N,STRIP1*%
|
||||||
|
X132080000Y-73660000D03*
|
||||||
|
D12*
|
||||||
|
%TO.P,J4,2,Pin_2*%
|
||||||
|
%TO.N,STRIP2*%
|
||||||
|
X132080000Y-76200000D03*
|
||||||
|
%TD*%
|
||||||
|
D14*
|
||||||
|
%TO.P,D1,1,K*%
|
||||||
|
%TO.N,+5V*%
|
||||||
|
X132080000Y-55880000D03*
|
||||||
|
D15*
|
||||||
|
%TO.P,D1,2,A*%
|
||||||
|
%TO.N,+4V*%
|
||||||
|
X132080000Y-66040000D03*
|
||||||
|
%TD*%
|
||||||
|
D13*
|
||||||
|
%TO.P,C1,2*%
|
||||||
|
%TO.N,GND*%
|
||||||
|
X138285000Y-66040000D03*
|
||||||
|
%TO.P,C1,1*%
|
||||||
|
%TO.N,+4V*%
|
||||||
|
X137205000Y-66040000D03*
|
||||||
|
%TD*%
|
||||||
|
D16*
|
||||||
|
%TO.P,D3,4,DIN*%
|
||||||
|
%TO.N,GPIO6*%
|
||||||
|
X145130000Y-58510000D03*
|
||||||
|
%TO.P,D3,3,VSS*%
|
||||||
|
%TO.N,GND*%
|
||||||
|
X148430000Y-58510000D03*
|
||||||
|
%TO.P,D3,2,DOUT*%
|
||||||
|
%TO.N,STRIP2*%
|
||||||
|
X148430000Y-63410000D03*
|
||||||
|
%TO.P,D3,1,VDD*%
|
||||||
|
%TO.N,+4V*%
|
||||||
|
X145130000Y-63410000D03*
|
||||||
|
%TD*%
|
||||||
|
%TO.P,D2,1,VDD*%
|
||||||
|
%TO.N,+4V*%
|
||||||
|
X137510000Y-63410000D03*
|
||||||
|
%TO.P,D2,2,DOUT*%
|
||||||
|
%TO.N,STRIP1*%
|
||||||
|
X140810000Y-63410000D03*
|
||||||
|
%TO.P,D2,3,VSS*%
|
||||||
|
%TO.N,GND*%
|
||||||
|
X140810000Y-58510000D03*
|
||||||
|
%TO.P,D2,4,DIN*%
|
||||||
|
%TO.N,GPIO5*%
|
||||||
|
X137510000Y-58510000D03*
|
||||||
|
%TD*%
|
||||||
|
D11*
|
||||||
|
%TO.P,J2,1,Pin_1*%
|
||||||
|
%TO.N,GND*%
|
||||||
|
X142240000Y-71120000D03*
|
||||||
|
D12*
|
||||||
|
%TO.P,J2,2,Pin_2*%
|
||||||
|
X142240000Y-73660000D03*
|
||||||
|
%TO.P,J2,3,Pin_3*%
|
||||||
|
X142240000Y-76200000D03*
|
||||||
|
%TD*%
|
||||||
|
D17*
|
||||||
|
%TO.N,GND*%
|
||||||
|
X146720525Y-63365349D03*
|
||||||
|
X139115433Y-63424121D03*
|
||||||
|
X139700000Y-58420000D03*
|
||||||
|
X147320000Y-58420000D03*
|
||||||
|
%TD*%
|
||||||
|
D18*
|
||||||
|
%TO.N,STRIP2*%
|
||||||
|
X148430000Y-63410000D02*
|
||||||
|
X148430000Y-66404125D01*
|
||||||
|
X148430000Y-66404125D02*
|
||||||
|
X145935927Y-68898198D01*
|
||||||
|
X145935927Y-68898198D02*
|
||||||
|
X139381802Y-68898198D01*
|
||||||
|
X139381802Y-68898198D02*
|
||||||
|
X132080000Y-76200000D01*
|
||||||
|
%TO.N,GND*%
|
||||||
|
X138285000Y-66040000D02*
|
||||||
|
X139115433Y-65209567D01*
|
||||||
|
X139115433Y-65209567D02*
|
||||||
|
X139115433Y-63424121D01*
|
||||||
|
X145905000Y-66040000D02*
|
||||||
|
X146720525Y-65224475D01*
|
||||||
|
X146720525Y-65224475D02*
|
||||||
|
X146720525Y-63365349D01*
|
||||||
|
%TO.N,+4V*%
|
||||||
|
X144825000Y-66040000D02*
|
||||||
|
X144825000Y-63715000D01*
|
||||||
|
X144825000Y-63715000D02*
|
||||||
|
X145130000Y-63410000D01*
|
||||||
|
X143510000Y-62230000D02*
|
||||||
|
X143510000Y-66040000D01*
|
||||||
|
X137510000Y-63150000D02*
|
||||||
|
X139700000Y-60960000D01*
|
||||||
|
X137510000Y-63410000D02*
|
||||||
|
X137510000Y-63150000D01*
|
||||||
|
X139700000Y-60960000D02*
|
||||||
|
X142240000Y-60960000D01*
|
||||||
|
X142240000Y-60960000D02*
|
||||||
|
X143510000Y-62230000D01*
|
||||||
|
X143510000Y-66040000D02*
|
||||||
|
X144825000Y-66040000D01*
|
||||||
|
X132080000Y-66040000D02*
|
||||||
|
X137205000Y-66040000D01*
|
||||||
|
X137205000Y-66040000D02*
|
||||||
|
X137205000Y-63715000D01*
|
||||||
|
X137205000Y-63715000D02*
|
||||||
|
X137510000Y-63410000D01*
|
||||||
|
X144825000Y-66040000D02*
|
||||||
|
X144780000Y-66040000D01*
|
||||||
|
%TO.N,STRIP1*%
|
||||||
|
X140810000Y-63410000D02*
|
||||||
|
X140810000Y-66409340D01*
|
||||||
|
X140810000Y-66409340D02*
|
||||||
|
X133559340Y-73660000D01*
|
||||||
|
X133559340Y-73660000D02*
|
||||||
|
X132080000Y-73660000D01*
|
||||||
|
%TO.N,+5V*%
|
||||||
|
X158702500Y-54562500D02*
|
||||||
|
X133397500Y-54562500D01*
|
||||||
|
X162560000Y-58420000D02*
|
||||||
|
X158702500Y-54562500D01*
|
||||||
|
X147320000Y-76200000D02*
|
||||||
|
X152400000Y-76200000D01*
|
||||||
|
X152400000Y-76200000D02*
|
||||||
|
X162560000Y-66040000D01*
|
||||||
|
X162560000Y-66040000D02*
|
||||||
|
X162560000Y-58420000D01*
|
||||||
|
X162560000Y-58420000D02*
|
||||||
|
X164840000Y-56140000D01*
|
||||||
|
X147320000Y-76200000D02*
|
||||||
|
X152350922Y-76200000D01*
|
||||||
|
X152350922Y-76200000D02*
|
||||||
|
X162510922Y-66040000D01*
|
||||||
|
X162510922Y-66040000D02*
|
||||||
|
X162560000Y-66040000D01*
|
||||||
|
X164840000Y-56140000D02*
|
||||||
|
X167640000Y-56140000D01*
|
||||||
|
X133397500Y-54562500D02*
|
||||||
|
X132080000Y-55880000D01*
|
||||||
|
%TO.N,GPIO5*%
|
||||||
|
X152400000Y-56140000D02*
|
||||||
|
X152100000Y-55840000D01*
|
||||||
|
X140180000Y-55840000D02*
|
||||||
|
X137510000Y-58510000D01*
|
||||||
|
X152100000Y-55840000D02*
|
||||||
|
X140180000Y-55840000D01*
|
||||||
|
%TO.N,GND*%
|
||||||
|
X139790000Y-58510000D02*
|
||||||
|
X139700000Y-58420000D01*
|
||||||
|
X140810000Y-58510000D02*
|
||||||
|
X139790000Y-58510000D01*
|
||||||
|
X147410000Y-58510000D02*
|
||||||
|
X147320000Y-58420000D01*
|
||||||
|
X148430000Y-58510000D02*
|
||||||
|
X147410000Y-58510000D01*
|
||||||
|
%TO.N,+3.3V*%
|
||||||
|
X165360000Y-73920000D02*
|
||||||
|
X167640000Y-76200000D01*
|
||||||
|
X165360000Y-63500000D02*
|
||||||
|
X165360000Y-73920000D01*
|
||||||
|
X167640000Y-76200000D02*
|
||||||
|
X175260000Y-76200000D01*
|
||||||
|
%TO.N,GPIO6*%
|
||||||
|
X150310000Y-56590000D02*
|
||||||
|
X152400000Y-58680000D01*
|
||||||
|
X145130000Y-58210000D02*
|
||||||
|
X146750000Y-56590000D01*
|
||||||
|
X146750000Y-56590000D02*
|
||||||
|
X150310000Y-56590000D01*
|
||||||
|
X145130000Y-58510000D02*
|
||||||
|
X145130000Y-58210000D01*
|
||||||
|
%TO.N,Net-(J1-Pad2)*%
|
||||||
|
X175000000Y-68840000D02*
|
||||||
|
X175260000Y-68580000D01*
|
||||||
|
X167640000Y-68840000D02*
|
||||||
|
X175000000Y-68840000D01*
|
||||||
|
%TO.N,Net-(J1-Pad3)*%
|
||||||
|
X167640000Y-71380000D02*
|
||||||
|
X175000000Y-71380000D01*
|
||||||
|
X175000000Y-71380000D02*
|
||||||
|
X175260000Y-71120000D01*
|
||||||
|
%TO.N,Net-(J1-Pad4)*%
|
||||||
|
X175000000Y-73920000D02*
|
||||||
|
X175260000Y-73660000D01*
|
||||||
|
X167640000Y-73920000D02*
|
||||||
|
X175000000Y-73920000D01*
|
||||||
|
%TO.N,+3.3V*%
|
||||||
|
X167640000Y-61220000D02*
|
||||||
|
X165360000Y-63500000D01*
|
||||||
|
%TD*%
|
||||||
|
%TA.AperFunction,Conductor*%
|
||||||
|
%TO.N,+5V*%
|
||||||
|
G36*
|
||||||
|
X147516121Y-70886002D02*
|
||||||
|
G01*
|
||||||
|
X147562614Y-70939658D01*
|
||||||
|
X147574000Y-70992000D01*
|
||||||
|
X147574000Y-76328000D01*
|
||||||
|
X147553998Y-76396121D01*
|
||||||
|
X147500342Y-76442614D01*
|
||||||
|
X147448000Y-76454000D01*
|
||||||
|
X147192000Y-76454000D01*
|
||||||
|
X147123879Y-76433998D01*
|
||||||
|
X147077386Y-76380342D01*
|
||||||
|
X147066000Y-76328000D01*
|
||||||
|
X147066000Y-70992000D01*
|
||||||
|
X147086002Y-70923879D01*
|
||||||
|
X147139658Y-70877386D01*
|
||||||
|
X147192000Y-70866000D01*
|
||||||
|
X147448000Y-70866000D01*
|
||||||
|
X147516121Y-70886002D01*
|
||||||
|
G37*
|
||||||
|
%TD.AperFunction*%
|
||||||
|
%TD*%
|
||||||
|
M02*
|
||||||
@@ -0,0 +1,117 @@
|
|||||||
|
%TF.GenerationSoftware,KiCad,Pcbnew,6.0.11+dfsg-1*%
|
||||||
|
%TF.CreationDate,2025-01-28T23:33:11+01:00*%
|
||||||
|
%TF.ProjectId,Hanglamp,48616e67-6c61-46d7-902e-6b696361645f,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 6.0.11+dfsg-1) date 2025-01-28 23:33:11*
|
||||||
|
%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,2.109000*%
|
||||||
|
%ADD11R,1.700000X1.700000*%
|
||||||
|
%ADD12O,1.700000X1.700000*%
|
||||||
|
%ADD13RoundRect,0.165000X-0.165000X-0.475000X0.165000X-0.475000X0.165000X0.475000X-0.165000X0.475000X0*%
|
||||||
|
%ADD14R,2.800000X2.800000*%
|
||||||
|
%ADD15O,2.800000X2.800000*%
|
||||||
|
%ADD16R,0.900000X1.500000*%
|
||||||
|
G04 APERTURE END LIST*
|
||||||
|
D10*
|
||||||
|
%TO.C,U1*%
|
||||||
|
X167640000Y-73920000D03*
|
||||||
|
X167640000Y-71380000D03*
|
||||||
|
X167640000Y-68840000D03*
|
||||||
|
X167640000Y-66300000D03*
|
||||||
|
X167640000Y-61220000D03*
|
||||||
|
X167640000Y-63760000D03*
|
||||||
|
X152400000Y-56140000D03*
|
||||||
|
X167640000Y-56140000D03*
|
||||||
|
X152400000Y-58680000D03*
|
||||||
|
X152400000Y-61220000D03*
|
||||||
|
X152400000Y-63760000D03*
|
||||||
|
X152400000Y-66300000D03*
|
||||||
|
X152400000Y-68840000D03*
|
||||||
|
X152400000Y-71380000D03*
|
||||||
|
X152400000Y-73920000D03*
|
||||||
|
X167640000Y-58680000D03*
|
||||||
|
%TD*%
|
||||||
|
D11*
|
||||||
|
%TO.C,J3*%
|
||||||
|
X147320000Y-71120000D03*
|
||||||
|
D12*
|
||||||
|
X147320000Y-73660000D03*
|
||||||
|
X147320000Y-76200000D03*
|
||||||
|
%TD*%
|
||||||
|
D11*
|
||||||
|
%TO.C,J1*%
|
||||||
|
X175260000Y-66040000D03*
|
||||||
|
D12*
|
||||||
|
X175260000Y-68580000D03*
|
||||||
|
X175260000Y-71120000D03*
|
||||||
|
X175260000Y-73660000D03*
|
||||||
|
X175260000Y-76200000D03*
|
||||||
|
%TD*%
|
||||||
|
D13*
|
||||||
|
%TO.C,C2*%
|
||||||
|
X145905000Y-66040000D03*
|
||||||
|
X144825000Y-66040000D03*
|
||||||
|
%TD*%
|
||||||
|
D11*
|
||||||
|
%TO.C,J4*%
|
||||||
|
X132080000Y-73660000D03*
|
||||||
|
D12*
|
||||||
|
X132080000Y-76200000D03*
|
||||||
|
%TD*%
|
||||||
|
D14*
|
||||||
|
%TO.C,D1*%
|
||||||
|
X132080000Y-55880000D03*
|
||||||
|
D15*
|
||||||
|
X132080000Y-66040000D03*
|
||||||
|
%TD*%
|
||||||
|
D13*
|
||||||
|
%TO.C,C1*%
|
||||||
|
X138285000Y-66040000D03*
|
||||||
|
X137205000Y-66040000D03*
|
||||||
|
%TD*%
|
||||||
|
D16*
|
||||||
|
%TO.C,D3*%
|
||||||
|
X145130000Y-58510000D03*
|
||||||
|
X148430000Y-58510000D03*
|
||||||
|
X148430000Y-63410000D03*
|
||||||
|
X145130000Y-63410000D03*
|
||||||
|
%TD*%
|
||||||
|
%TO.C,D2*%
|
||||||
|
X137510000Y-63410000D03*
|
||||||
|
X140810000Y-63410000D03*
|
||||||
|
X140810000Y-58510000D03*
|
||||||
|
X137510000Y-58510000D03*
|
||||||
|
%TD*%
|
||||||
|
D11*
|
||||||
|
%TO.C,J2*%
|
||||||
|
X142240000Y-71120000D03*
|
||||||
|
D12*
|
||||||
|
X142240000Y-73660000D03*
|
||||||
|
X142240000Y-76200000D03*
|
||||||
|
%TD*%
|
||||||
|
M02*
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
%TF.GenerationSoftware,KiCad,Pcbnew,6.0.11+dfsg-1*%
|
||||||
|
%TF.CreationDate,2025-01-28T23:33:11+01:00*%
|
||||||
|
%TF.ProjectId,Hanglamp,48616e67-6c61-46d7-902e-6b696361645f,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 6.0.11+dfsg-1) date 2025-01-28 23:33:11*
|
||||||
|
%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*
|
||||||
|
%ADD10RoundRect,0.165000X-0.165000X-0.475000X0.165000X-0.475000X0.165000X0.475000X-0.165000X0.475000X0*%
|
||||||
|
%ADD11R,0.900000X1.500000*%
|
||||||
|
G04 APERTURE END LIST*
|
||||||
|
D10*
|
||||||
|
%TO.C,C2*%
|
||||||
|
X145905000Y-66040000D03*
|
||||||
|
X144825000Y-66040000D03*
|
||||||
|
%TD*%
|
||||||
|
%TO.C,C1*%
|
||||||
|
X138285000Y-66040000D03*
|
||||||
|
X137205000Y-66040000D03*
|
||||||
|
%TD*%
|
||||||
|
D11*
|
||||||
|
%TO.C,D3*%
|
||||||
|
X145130000Y-58510000D03*
|
||||||
|
X148430000Y-58510000D03*
|
||||||
|
X148430000Y-63410000D03*
|
||||||
|
X145130000Y-63410000D03*
|
||||||
|
%TD*%
|
||||||
|
%TO.C,D2*%
|
||||||
|
X137510000Y-63410000D03*
|
||||||
|
X140810000Y-63410000D03*
|
||||||
|
X140810000Y-58510000D03*
|
||||||
|
X137510000Y-58510000D03*
|
||||||
|
%TD*%
|
||||||
|
M02*
|
||||||
@@ -0,0 +1,353 @@
|
|||||||
|
%TF.GenerationSoftware,KiCad,Pcbnew,6.0.11+dfsg-1*%
|
||||||
|
%TF.CreationDate,2025-01-28T23:33:11+01:00*%
|
||||||
|
%TF.ProjectId,Hanglamp,48616e67-6c61-46d7-902e-6b696361645f,rev?*%
|
||||||
|
%TF.SameCoordinates,Original*%
|
||||||
|
%TF.FileFunction,Legend,Top*%
|
||||||
|
%TF.FilePolarity,Positive*%
|
||||||
|
%FSLAX46Y46*%
|
||||||
|
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||||
|
G04 Created by KiCad (PCBNEW 6.0.11+dfsg-1) date 2025-01-28 23:33:11*
|
||||||
|
%MOMM*%
|
||||||
|
%LPD*%
|
||||||
|
G01*
|
||||||
|
G04 APERTURE LIST*
|
||||||
|
%ADD10C,0.150000*%
|
||||||
|
%ADD11C,0.127000*%
|
||||||
|
%ADD12C,0.120000*%
|
||||||
|
G04 APERTURE END LIST*
|
||||||
|
D10*
|
||||||
|
%TO.C,U1*%
|
||||||
|
X153543095Y-51839880D02*
|
||||||
|
X153543095Y-52649404D01*
|
||||||
|
X153590714Y-52744642D01*
|
||||||
|
X153638333Y-52792261D01*
|
||||||
|
X153733571Y-52839880D01*
|
||||||
|
X153924047Y-52839880D01*
|
||||||
|
X154019285Y-52792261D01*
|
||||||
|
X154066904Y-52744642D01*
|
||||||
|
X154114523Y-52649404D01*
|
||||||
|
X154114523Y-51839880D01*
|
||||||
|
X155114523Y-52839880D02*
|
||||||
|
X154543095Y-52839880D01*
|
||||||
|
X154828809Y-52839880D02*
|
||||||
|
X154828809Y-51839880D01*
|
||||||
|
X154733571Y-51982738D01*
|
||||||
|
X154638333Y-52077976D01*
|
||||||
|
X154543095Y-52125595D01*
|
||||||
|
%TO.C,J3*%
|
||||||
|
X146986666Y-68242380D02*
|
||||||
|
X146986666Y-68956666D01*
|
||||||
|
X146939047Y-69099523D01*
|
||||||
|
X146843809Y-69194761D01*
|
||||||
|
X146700952Y-69242380D01*
|
||||||
|
X146605714Y-69242380D01*
|
||||||
|
X147367619Y-68242380D02*
|
||||||
|
X147986666Y-68242380D01*
|
||||||
|
X147653333Y-68623333D01*
|
||||||
|
X147796190Y-68623333D01*
|
||||||
|
X147891428Y-68670952D01*
|
||||||
|
X147939047Y-68718571D01*
|
||||||
|
X147986666Y-68813809D01*
|
||||||
|
X147986666Y-69051904D01*
|
||||||
|
X147939047Y-69147142D01*
|
||||||
|
X147891428Y-69194761D01*
|
||||||
|
X147796190Y-69242380D01*
|
||||||
|
X147510476Y-69242380D01*
|
||||||
|
X147415238Y-69194761D01*
|
||||||
|
X147367619Y-69147142D01*
|
||||||
|
%TO.C,J1*%
|
||||||
|
X174926666Y-63162380D02*
|
||||||
|
X174926666Y-63876666D01*
|
||||||
|
X174879047Y-64019523D01*
|
||||||
|
X174783809Y-64114761D01*
|
||||||
|
X174640952Y-64162380D01*
|
||||||
|
X174545714Y-64162380D01*
|
||||||
|
X175926666Y-64162380D02*
|
||||||
|
X175355238Y-64162380D01*
|
||||||
|
X175640952Y-64162380D02*
|
||||||
|
X175640952Y-63162380D01*
|
||||||
|
X175545714Y-63305238D01*
|
||||||
|
X175450476Y-63400476D01*
|
||||||
|
X175355238Y-63448095D01*
|
||||||
|
%TO.C,C2*%
|
||||||
|
X145198333Y-67667142D02*
|
||||||
|
X145150714Y-67714761D01*
|
||||||
|
X145007857Y-67762380D01*
|
||||||
|
X144912619Y-67762380D01*
|
||||||
|
X144769761Y-67714761D01*
|
||||||
|
X144674523Y-67619523D01*
|
||||||
|
X144626904Y-67524285D01*
|
||||||
|
X144579285Y-67333809D01*
|
||||||
|
X144579285Y-67190952D01*
|
||||||
|
X144626904Y-67000476D01*
|
||||||
|
X144674523Y-66905238D01*
|
||||||
|
X144769761Y-66810000D01*
|
||||||
|
X144912619Y-66762380D01*
|
||||||
|
X145007857Y-66762380D01*
|
||||||
|
X145150714Y-66810000D01*
|
||||||
|
X145198333Y-66857619D01*
|
||||||
|
X145579285Y-66857619D02*
|
||||||
|
X145626904Y-66810000D01*
|
||||||
|
X145722142Y-66762380D01*
|
||||||
|
X145960238Y-66762380D01*
|
||||||
|
X146055476Y-66810000D01*
|
||||||
|
X146103095Y-66857619D01*
|
||||||
|
X146150714Y-66952857D01*
|
||||||
|
X146150714Y-67048095D01*
|
||||||
|
X146103095Y-67190952D01*
|
||||||
|
X145531666Y-67762380D01*
|
||||||
|
X146150714Y-67762380D01*
|
||||||
|
%TO.C,J4*%
|
||||||
|
X131746666Y-70782380D02*
|
||||||
|
X131746666Y-71496666D01*
|
||||||
|
X131699047Y-71639523D01*
|
||||||
|
X131603809Y-71734761D01*
|
||||||
|
X131460952Y-71782380D01*
|
||||||
|
X131365714Y-71782380D01*
|
||||||
|
X132651428Y-71115714D02*
|
||||||
|
X132651428Y-71782380D01*
|
||||||
|
X132413333Y-70734761D02*
|
||||||
|
X132175238Y-71449047D01*
|
||||||
|
X132794285Y-71449047D01*
|
||||||
|
%TO.C,D1*%
|
||||||
|
X135502380Y-61698095D02*
|
||||||
|
X134502380Y-61698095D01*
|
||||||
|
X134502380Y-61460000D01*
|
||||||
|
X134550000Y-61317142D01*
|
||||||
|
X134645238Y-61221904D01*
|
||||||
|
X134740476Y-61174285D01*
|
||||||
|
X134930952Y-61126666D01*
|
||||||
|
X135073809Y-61126666D01*
|
||||||
|
X135264285Y-61174285D01*
|
||||||
|
X135359523Y-61221904D01*
|
||||||
|
X135454761Y-61317142D01*
|
||||||
|
X135502380Y-61460000D01*
|
||||||
|
X135502380Y-61698095D01*
|
||||||
|
X135502380Y-60174285D02*
|
||||||
|
X135502380Y-60745714D01*
|
||||||
|
X135502380Y-60460000D02*
|
||||||
|
X134502380Y-60460000D01*
|
||||||
|
X134645238Y-60555238D01*
|
||||||
|
X134740476Y-60650476D01*
|
||||||
|
X134788095Y-60745714D01*
|
||||||
|
X134932380Y-56141904D02*
|
||||||
|
X133932380Y-56141904D01*
|
||||||
|
X134932380Y-55570476D02*
|
||||||
|
X134360952Y-55999047D01*
|
||||||
|
X133932380Y-55570476D02*
|
||||||
|
X134503809Y-56141904D01*
|
||||||
|
%TO.C,C1*%
|
||||||
|
X137578333Y-67667142D02*
|
||||||
|
X137530714Y-67714761D01*
|
||||||
|
X137387857Y-67762380D01*
|
||||||
|
X137292619Y-67762380D01*
|
||||||
|
X137149761Y-67714761D01*
|
||||||
|
X137054523Y-67619523D01*
|
||||||
|
X137006904Y-67524285D01*
|
||||||
|
X136959285Y-67333809D01*
|
||||||
|
X136959285Y-67190952D01*
|
||||||
|
X137006904Y-67000476D01*
|
||||||
|
X137054523Y-66905238D01*
|
||||||
|
X137149761Y-66810000D01*
|
||||||
|
X137292619Y-66762380D01*
|
||||||
|
X137387857Y-66762380D01*
|
||||||
|
X137530714Y-66810000D01*
|
||||||
|
X137578333Y-66857619D01*
|
||||||
|
X138530714Y-67762380D02*
|
||||||
|
X137959285Y-67762380D01*
|
||||||
|
X138245000Y-67762380D02*
|
||||||
|
X138245000Y-66762380D01*
|
||||||
|
X138149761Y-66905238D01*
|
||||||
|
X138054523Y-67000476D01*
|
||||||
|
X137959285Y-67048095D01*
|
||||||
|
%TO.C,D3*%
|
||||||
|
X145232380Y-56618095D02*
|
||||||
|
X144232380Y-56618095D01*
|
||||||
|
X144232380Y-56380000D01*
|
||||||
|
X144280000Y-56237142D01*
|
||||||
|
X144375238Y-56141904D01*
|
||||||
|
X144470476Y-56094285D01*
|
||||||
|
X144660952Y-56046666D01*
|
||||||
|
X144803809Y-56046666D01*
|
||||||
|
X144994285Y-56094285D01*
|
||||||
|
X145089523Y-56141904D01*
|
||||||
|
X145184761Y-56237142D01*
|
||||||
|
X145232380Y-56380000D01*
|
||||||
|
X145232380Y-56618095D01*
|
||||||
|
X144232380Y-55713333D02*
|
||||||
|
X144232380Y-55094285D01*
|
||||||
|
X144613333Y-55427619D01*
|
||||||
|
X144613333Y-55284761D01*
|
||||||
|
X144660952Y-55189523D01*
|
||||||
|
X144708571Y-55141904D01*
|
||||||
|
X144803809Y-55094285D01*
|
||||||
|
X145041904Y-55094285D01*
|
||||||
|
X145137142Y-55141904D01*
|
||||||
|
X145184761Y-55189523D01*
|
||||||
|
X145232380Y-55284761D01*
|
||||||
|
X145232380Y-55570476D01*
|
||||||
|
X145184761Y-55665714D01*
|
||||||
|
X145137142Y-55713333D01*
|
||||||
|
X146502380Y-60674285D02*
|
||||||
|
X146502380Y-61245714D01*
|
||||||
|
X146502380Y-60960000D02*
|
||||||
|
X145502380Y-60960000D01*
|
||||||
|
X145645238Y-61055238D01*
|
||||||
|
X145740476Y-61150476D01*
|
||||||
|
X145788095Y-61245714D01*
|
||||||
|
%TO.C,D2*%
|
||||||
|
X137612380Y-56618095D02*
|
||||||
|
X136612380Y-56618095D01*
|
||||||
|
X136612380Y-56380000D01*
|
||||||
|
X136660000Y-56237142D01*
|
||||||
|
X136755238Y-56141904D01*
|
||||||
|
X136850476Y-56094285D01*
|
||||||
|
X137040952Y-56046666D01*
|
||||||
|
X137183809Y-56046666D01*
|
||||||
|
X137374285Y-56094285D01*
|
||||||
|
X137469523Y-56141904D01*
|
||||||
|
X137564761Y-56237142D01*
|
||||||
|
X137612380Y-56380000D01*
|
||||||
|
X137612380Y-56618095D01*
|
||||||
|
X136707619Y-55665714D02*
|
||||||
|
X136660000Y-55618095D01*
|
||||||
|
X136612380Y-55522857D01*
|
||||||
|
X136612380Y-55284761D01*
|
||||||
|
X136660000Y-55189523D01*
|
||||||
|
X136707619Y-55141904D01*
|
||||||
|
X136802857Y-55094285D01*
|
||||||
|
X136898095Y-55094285D01*
|
||||||
|
X137040952Y-55141904D01*
|
||||||
|
X137612380Y-55713333D01*
|
||||||
|
X137612380Y-55094285D01*
|
||||||
|
X138882380Y-60674285D02*
|
||||||
|
X138882380Y-61245714D01*
|
||||||
|
X138882380Y-60960000D02*
|
||||||
|
X137882380Y-60960000D01*
|
||||||
|
X138025238Y-61055238D01*
|
||||||
|
X138120476Y-61150476D01*
|
||||||
|
X138168095Y-61245714D01*
|
||||||
|
%TO.C,J2*%
|
||||||
|
X139366666Y-73112380D02*
|
||||||
|
X139366666Y-73826666D01*
|
||||||
|
X139319047Y-73969523D01*
|
||||||
|
X139223809Y-74064761D01*
|
||||||
|
X139080952Y-74112380D01*
|
||||||
|
X138985714Y-74112380D01*
|
||||||
|
X139795238Y-73207619D02*
|
||||||
|
X139842857Y-73160000D01*
|
||||||
|
X139938095Y-73112380D01*
|
||||||
|
X140176190Y-73112380D01*
|
||||||
|
X140271428Y-73160000D01*
|
||||||
|
X140319047Y-73207619D01*
|
||||||
|
X140366666Y-73302857D01*
|
||||||
|
X140366666Y-73398095D01*
|
||||||
|
X140319047Y-73540952D01*
|
||||||
|
X139747619Y-74112380D01*
|
||||||
|
X140366666Y-74112380D01*
|
||||||
|
D11*
|
||||||
|
%TO.C,U1*%
|
||||||
|
X169020000Y-54690000D02*
|
||||||
|
X164520000Y-54690000D01*
|
||||||
|
X169020000Y-77390000D02*
|
||||||
|
X169020000Y-54690000D01*
|
||||||
|
X155520000Y-53390000D02*
|
||||||
|
X155520000Y-54690000D01*
|
||||||
|
X164520000Y-53390000D02*
|
||||||
|
X164520000Y-54690000D01*
|
||||||
|
X151020000Y-77390000D02*
|
||||||
|
X151020000Y-54690000D01*
|
||||||
|
X169020000Y-77390000D02*
|
||||||
|
X151020000Y-77390000D01*
|
||||||
|
X164520000Y-53390000D02*
|
||||||
|
X155520000Y-53390000D01*
|
||||||
|
X155520000Y-54690000D02*
|
||||||
|
X151020000Y-54690000D01*
|
||||||
|
D12*
|
||||||
|
%TO.C,J3*%
|
||||||
|
X145990000Y-72390000D02*
|
||||||
|
X148650000Y-72390000D01*
|
||||||
|
X145990000Y-72390000D02*
|
||||||
|
X145990000Y-77530000D01*
|
||||||
|
X145990000Y-77530000D02*
|
||||||
|
X148650000Y-77530000D01*
|
||||||
|
X145990000Y-71120000D02*
|
||||||
|
X145990000Y-69790000D01*
|
||||||
|
X148650000Y-72390000D02*
|
||||||
|
X148650000Y-77530000D01*
|
||||||
|
X145990000Y-69790000D02*
|
||||||
|
X147320000Y-69790000D01*
|
||||||
|
%TO.C,J1*%
|
||||||
|
X173930000Y-64710000D02*
|
||||||
|
X175260000Y-64710000D01*
|
||||||
|
X173930000Y-77530000D02*
|
||||||
|
X176590000Y-77530000D01*
|
||||||
|
X173930000Y-67310000D02*
|
||||||
|
X176590000Y-67310000D01*
|
||||||
|
X176590000Y-67310000D02*
|
||||||
|
X176590000Y-77530000D01*
|
||||||
|
X173930000Y-66040000D02*
|
||||||
|
X173930000Y-64710000D01*
|
||||||
|
X173930000Y-67310000D02*
|
||||||
|
X173930000Y-77530000D01*
|
||||||
|
%TO.C,J4*%
|
||||||
|
X130750000Y-74930000D02*
|
||||||
|
X130750000Y-77530000D01*
|
||||||
|
X130750000Y-77530000D02*
|
||||||
|
X133410000Y-77530000D01*
|
||||||
|
X130750000Y-72330000D02*
|
||||||
|
X132080000Y-72330000D01*
|
||||||
|
X130750000Y-74930000D02*
|
||||||
|
X133410000Y-74930000D01*
|
||||||
|
X133410000Y-74930000D02*
|
||||||
|
X133410000Y-77530000D01*
|
||||||
|
X130750000Y-73660000D02*
|
||||||
|
X130750000Y-72330000D01*
|
||||||
|
%TO.C,D1*%
|
||||||
|
X130440000Y-56390000D02*
|
||||||
|
X130110000Y-56390000D01*
|
||||||
|
X133720000Y-56390000D02*
|
||||||
|
X134050000Y-56390000D01*
|
||||||
|
X130110000Y-65530000D02*
|
||||||
|
X130440000Y-65530000D01*
|
||||||
|
X134050000Y-57965000D02*
|
||||||
|
X130110000Y-57965000D01*
|
||||||
|
X134050000Y-57845000D02*
|
||||||
|
X130110000Y-57845000D01*
|
||||||
|
X134050000Y-65530000D02*
|
||||||
|
X133720000Y-65530000D01*
|
||||||
|
X130110000Y-56390000D02*
|
||||||
|
X130110000Y-65530000D01*
|
||||||
|
X134050000Y-56390000D02*
|
||||||
|
X134050000Y-65530000D01*
|
||||||
|
X134050000Y-57725000D02*
|
||||||
|
X130110000Y-57725000D01*
|
||||||
|
%TO.C,D3*%
|
||||||
|
X149530000Y-64610000D02*
|
||||||
|
X149530000Y-57310000D01*
|
||||||
|
X149530000Y-57310000D02*
|
||||||
|
X148380000Y-57310000D01*
|
||||||
|
X144030000Y-64610000D02*
|
||||||
|
X144030000Y-57310000D01*
|
||||||
|
%TO.C,D2*%
|
||||||
|
X141910000Y-57310000D02*
|
||||||
|
X140760000Y-57310000D01*
|
||||||
|
X136410000Y-64610000D02*
|
||||||
|
X136410000Y-57310000D01*
|
||||||
|
X141910000Y-64610000D02*
|
||||||
|
X141910000Y-57310000D01*
|
||||||
|
%TO.C,J2*%
|
||||||
|
X140910000Y-69790000D02*
|
||||||
|
X142240000Y-69790000D01*
|
||||||
|
X140910000Y-72390000D02*
|
||||||
|
X143570000Y-72390000D01*
|
||||||
|
X143570000Y-72390000D02*
|
||||||
|
X143570000Y-77530000D01*
|
||||||
|
X140910000Y-77530000D02*
|
||||||
|
X143570000Y-77530000D01*
|
||||||
|
X140910000Y-72390000D02*
|
||||||
|
X140910000Y-77530000D01*
|
||||||
|
X140910000Y-71120000D02*
|
||||||
|
X140910000Y-69790000D01*
|
||||||
|
%TD*%
|
||||||
|
M02*
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
M48
|
||||||
|
; DRILL file {KiCad 6.0.11+dfsg-1} date Tue 28 Jan 2025 11:33:07 PM CET
|
||||||
|
; FORMAT={-:-/ absolute / metric / decimal}
|
||||||
|
; #@! TF.CreationDate,2025-01-28T23:33:07+01:00
|
||||||
|
; #@! TF.GenerationSoftware,Kicad,Pcbnew,6.0.11+dfsg-1
|
||||||
|
; #@! TF.FileFunction,NonPlated,1,2,NPTH
|
||||||
|
FMAT,2
|
||||||
|
METRIC
|
||||||
|
%
|
||||||
|
G90
|
||||||
|
G05
|
||||||
|
T0
|
||||||
|
M30
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
M48
|
||||||
|
; DRILL file {KiCad 6.0.11+dfsg-1} date Tue 28 Jan 2025 11:33:07 PM CET
|
||||||
|
; FORMAT={-:-/ absolute / metric / decimal}
|
||||||
|
; #@! TF.CreationDate,2025-01-28T23:33:07+01:00
|
||||||
|
; #@! TF.GenerationSoftware,Kicad,Pcbnew,6.0.11+dfsg-1
|
||||||
|
; #@! TF.FileFunction,Plated,1,2,PTH
|
||||||
|
FMAT,2
|
||||||
|
METRIC
|
||||||
|
; #@! TA.AperFunction,Plated,PTH,ViaDrill
|
||||||
|
T1C0.400
|
||||||
|
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
|
||||||
|
T2C1.000
|
||||||
|
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
|
||||||
|
T3C1.270
|
||||||
|
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
|
||||||
|
T4C1.400
|
||||||
|
%
|
||||||
|
G90
|
||||||
|
G05
|
||||||
|
T1
|
||||||
|
X139.115Y-63.424
|
||||||
|
X139.7Y-58.42
|
||||||
|
X146.721Y-63.365
|
||||||
|
X147.32Y-58.42
|
||||||
|
T2
|
||||||
|
X132.08Y-73.66
|
||||||
|
X132.08Y-76.2
|
||||||
|
X142.24Y-71.12
|
||||||
|
X142.24Y-73.66
|
||||||
|
X142.24Y-76.2
|
||||||
|
X147.32Y-71.12
|
||||||
|
X147.32Y-73.66
|
||||||
|
X147.32Y-76.2
|
||||||
|
X175.26Y-66.04
|
||||||
|
X175.26Y-68.58
|
||||||
|
X175.26Y-71.12
|
||||||
|
X175.26Y-73.66
|
||||||
|
X175.26Y-76.2
|
||||||
|
T3
|
||||||
|
X152.4Y-56.14
|
||||||
|
X152.4Y-58.68
|
||||||
|
X152.4Y-61.22
|
||||||
|
X152.4Y-63.76
|
||||||
|
X152.4Y-66.3
|
||||||
|
X152.4Y-68.84
|
||||||
|
X152.4Y-71.38
|
||||||
|
X152.4Y-73.92
|
||||||
|
X167.64Y-56.14
|
||||||
|
X167.64Y-58.68
|
||||||
|
X167.64Y-61.22
|
||||||
|
X167.64Y-63.76
|
||||||
|
X167.64Y-66.3
|
||||||
|
X167.64Y-68.84
|
||||||
|
X167.64Y-71.38
|
||||||
|
X167.64Y-73.92
|
||||||
|
T4
|
||||||
|
X132.08Y-55.88
|
||||||
|
X132.08Y-66.04
|
||||||
|
T0
|
||||||
|
M30
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,127 @@
|
|||||||
|
{
|
||||||
|
"Header": {
|
||||||
|
"GenerationSoftware": {
|
||||||
|
"Vendor": "KiCad",
|
||||||
|
"Application": "Pcbnew",
|
||||||
|
"Version": "6.0.11+dfsg-1"
|
||||||
|
},
|
||||||
|
"CreationDate": "2025-01-28T23:33:11+01:00"
|
||||||
|
},
|
||||||
|
"GeneralSpecs": {
|
||||||
|
"ProjectId": {
|
||||||
|
"Name": "Hanglamp",
|
||||||
|
"GUID": "48616e67-6c61-46d7-902e-6b696361645f",
|
||||||
|
"Revision": "rev?"
|
||||||
|
},
|
||||||
|
"Size": {
|
||||||
|
"X": 48.36,
|
||||||
|
"Y": 25.5
|
||||||
|
},
|
||||||
|
"LayerNumber": 2,
|
||||||
|
"BoardThickness": 1.6,
|
||||||
|
"Finish": "None"
|
||||||
|
},
|
||||||
|
"DesignRules": [
|
||||||
|
{
|
||||||
|
"Layers": "Outer",
|
||||||
|
"PadToPad": 0.2,
|
||||||
|
"PadToTrack": 0.2,
|
||||||
|
"TrackToTrack": 0.2,
|
||||||
|
"MinLineWidth": 0.25,
|
||||||
|
"TrackToRegion": 0.508,
|
||||||
|
"RegionToRegion": 0.508
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"FilesAttributes": [
|
||||||
|
{
|
||||||
|
"Path": "Hanglamp-F_Cu.gbr",
|
||||||
|
"FileFunction": "Copper,L1,Top",
|
||||||
|
"FilePolarity": "Positive"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Path": "Hanglamp-B_Cu.gbr",
|
||||||
|
"FileFunction": "Copper,L2,Bot",
|
||||||
|
"FilePolarity": "Positive"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Path": "Hanglamp-F_Paste.gbr",
|
||||||
|
"FileFunction": "SolderPaste,Top",
|
||||||
|
"FilePolarity": "Positive"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Path": "Hanglamp-B_Paste.gbr",
|
||||||
|
"FileFunction": "SolderPaste,Bot",
|
||||||
|
"FilePolarity": "Positive"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Path": "Hanglamp-F_Silkscreen.gbr",
|
||||||
|
"FileFunction": "Legend,Top",
|
||||||
|
"FilePolarity": "Positive"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Path": "Hanglamp-B_Silkscreen.gbr",
|
||||||
|
"FileFunction": "Legend,Bot",
|
||||||
|
"FilePolarity": "Positive"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Path": "Hanglamp-F_Mask.gbr",
|
||||||
|
"FileFunction": "SolderMask,Top",
|
||||||
|
"FilePolarity": "Negative"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Path": "Hanglamp-B_Mask.gbr",
|
||||||
|
"FileFunction": "SolderMask,Bot",
|
||||||
|
"FilePolarity": "Negative"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Path": "Hanglamp-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": 1.51,
|
||||||
|
"Material": "FR4",
|
||||||
|
"Name": "F.Cu/B.Cu",
|
||||||
|
"Notes": "Type: dielectric layer 1 (from F.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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,75 @@
|
|||||||
|
{
|
||||||
|
"board": {
|
||||||
|
"active_layer": 0,
|
||||||
|
"active_layer_preset": "All Layers",
|
||||||
|
"auto_track_width": true,
|
||||||
|
"hidden_nets": [],
|
||||||
|
"high_contrast_mode": 0,
|
||||||
|
"net_color_mode": 1,
|
||||||
|
"opacity": {
|
||||||
|
"pads": 1.0,
|
||||||
|
"tracks": 1.0,
|
||||||
|
"vias": 1.0,
|
||||||
|
"zones": 0.6
|
||||||
|
},
|
||||||
|
"ratsnest_display_mode": 0,
|
||||||
|
"selection_filter": {
|
||||||
|
"dimensions": true,
|
||||||
|
"footprints": true,
|
||||||
|
"graphics": true,
|
||||||
|
"keepouts": true,
|
||||||
|
"lockedItems": true,
|
||||||
|
"otherItems": true,
|
||||||
|
"pads": true,
|
||||||
|
"text": true,
|
||||||
|
"tracks": true,
|
||||||
|
"vias": true,
|
||||||
|
"zones": true
|
||||||
|
},
|
||||||
|
"visible_items": [
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
4,
|
||||||
|
5,
|
||||||
|
8,
|
||||||
|
9,
|
||||||
|
10,
|
||||||
|
11,
|
||||||
|
12,
|
||||||
|
13,
|
||||||
|
14,
|
||||||
|
15,
|
||||||
|
16,
|
||||||
|
17,
|
||||||
|
18,
|
||||||
|
19,
|
||||||
|
20,
|
||||||
|
21,
|
||||||
|
22,
|
||||||
|
23,
|
||||||
|
24,
|
||||||
|
25,
|
||||||
|
26,
|
||||||
|
27,
|
||||||
|
28,
|
||||||
|
29,
|
||||||
|
30,
|
||||||
|
32,
|
||||||
|
33,
|
||||||
|
34,
|
||||||
|
35,
|
||||||
|
36
|
||||||
|
],
|
||||||
|
"visible_layers": "fffffff_ffffffff",
|
||||||
|
"zone_display_mode": 0
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"filename": "Hanglamp.kicad_prl",
|
||||||
|
"version": 3
|
||||||
|
},
|
||||||
|
"project": {
|
||||||
|
"files": []
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,455 @@
|
|||||||
|
{
|
||||||
|
"board": {
|
||||||
|
"design_settings": {
|
||||||
|
"defaults": {
|
||||||
|
"board_outline_line_width": 0.09999999999999999,
|
||||||
|
"copper_line_width": 0.19999999999999998,
|
||||||
|
"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.049999999999999996,
|
||||||
|
"dimension_precision": 4,
|
||||||
|
"dimension_units": 3,
|
||||||
|
"dimensions": {
|
||||||
|
"arrow_length": 1270000,
|
||||||
|
"extension_offset": 500000,
|
||||||
|
"keep_text_aligned": true,
|
||||||
|
"suppress_zeroes": false,
|
||||||
|
"text_position": 0,
|
||||||
|
"units_format": 1
|
||||||
|
},
|
||||||
|
"fab_line_width": 0.09999999999999999,
|
||||||
|
"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.15,
|
||||||
|
"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.762,
|
||||||
|
"height": 1.524,
|
||||||
|
"width": 1.524
|
||||||
|
},
|
||||||
|
"silk_line_width": 0.15,
|
||||||
|
"silk_text_italic": false,
|
||||||
|
"silk_text_size_h": 1.0,
|
||||||
|
"silk_text_size_v": 1.0,
|
||||||
|
"silk_text_thickness": 0.15,
|
||||||
|
"silk_text_upright": false,
|
||||||
|
"zones": {
|
||||||
|
"45_degree_only": false,
|
||||||
|
"min_clearance": 0.508
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"diff_pair_dimensions": [
|
||||||
|
{
|
||||||
|
"gap": 0.0,
|
||||||
|
"via_gap": 0.0,
|
||||||
|
"width": 0.0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"drc_exclusions": [],
|
||||||
|
"meta": {
|
||||||
|
"version": 2
|
||||||
|
},
|
||||||
|
"rule_severities": {
|
||||||
|
"annular_width": "error",
|
||||||
|
"clearance": "error",
|
||||||
|
"copper_edge_clearance": "error",
|
||||||
|
"courtyards_overlap": "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_type_mismatch": "error",
|
||||||
|
"hole_clearance": "error",
|
||||||
|
"hole_near_hole": "error",
|
||||||
|
"invalid_outline": "error",
|
||||||
|
"item_on_disabled_layer": "error",
|
||||||
|
"items_not_allowed": "error",
|
||||||
|
"length_out_of_range": "error",
|
||||||
|
"malformed_courtyard": "error",
|
||||||
|
"microvia_drill_out_of_range": "error",
|
||||||
|
"missing_courtyard": "ignore",
|
||||||
|
"missing_footprint": "warning",
|
||||||
|
"net_conflict": "warning",
|
||||||
|
"npth_inside_courtyard": "ignore",
|
||||||
|
"padstack": "error",
|
||||||
|
"pth_inside_courtyard": "ignore",
|
||||||
|
"shorting_items": "error",
|
||||||
|
"silk_over_copper": "warning",
|
||||||
|
"silk_overlap": "warning",
|
||||||
|
"skew_out_of_range": "error",
|
||||||
|
"through_hole_pad_without_hole": "error",
|
||||||
|
"too_many_vias": "error",
|
||||||
|
"track_dangling": "warning",
|
||||||
|
"track_width": "error",
|
||||||
|
"tracks_crossing": "error",
|
||||||
|
"unconnected_items": "error",
|
||||||
|
"unresolved_variable": "error",
|
||||||
|
"via_dangling": "warning",
|
||||||
|
"zone_has_empty_net": "error",
|
||||||
|
"zones_intersect": "error"
|
||||||
|
},
|
||||||
|
"rules": {
|
||||||
|
"allow_blind_buried_vias": false,
|
||||||
|
"allow_microvias": false,
|
||||||
|
"max_error": 0.005,
|
||||||
|
"min_clearance": 0.39999999999999997,
|
||||||
|
"min_copper_edge_clearance": 0.0,
|
||||||
|
"min_hole_clearance": 0.25,
|
||||||
|
"min_hole_to_hole": 0.25,
|
||||||
|
"min_microvia_diameter": 0.19999999999999998,
|
||||||
|
"min_microvia_drill": 0.09999999999999999,
|
||||||
|
"min_silk_clearance": 0.0,
|
||||||
|
"min_through_hole_diameter": 0.3,
|
||||||
|
"min_track_width": 0.19999999999999998,
|
||||||
|
"min_via_annular_width": 0.049999999999999996,
|
||||||
|
"min_via_diameter": 0.39999999999999997,
|
||||||
|
"solder_mask_clearance": 0.0,
|
||||||
|
"solder_mask_min_width": 0.0,
|
||||||
|
"use_height_for_length_calcs": true
|
||||||
|
},
|
||||||
|
"track_widths": [
|
||||||
|
0.0,
|
||||||
|
0.25,
|
||||||
|
0.5
|
||||||
|
],
|
||||||
|
"via_dimensions": [
|
||||||
|
{
|
||||||
|
"diameter": 0.0,
|
||||||
|
"drill": 0.0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"zones_allow_external_fillets": false,
|
||||||
|
"zones_use_no_outline": true
|
||||||
|
},
|
||||||
|
"layer_presets": []
|
||||||
|
},
|
||||||
|
"boards": [],
|
||||||
|
"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_label_syntax": "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",
|
||||||
|
"extra_units": "error",
|
||||||
|
"global_label_dangling": "warning",
|
||||||
|
"hier_label_mismatch": "error",
|
||||||
|
"label_dangling": "error",
|
||||||
|
"lib_symbol_issues": "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",
|
||||||
|
"similar_labels": "warning",
|
||||||
|
"unannotated": "error",
|
||||||
|
"unit_value_mismatch": "error",
|
||||||
|
"unresolved_variable": "error",
|
||||||
|
"wire_dangling": "error"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"libraries": {
|
||||||
|
"pinned_footprint_libs": [],
|
||||||
|
"pinned_symbol_libs": []
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"filename": "Hanglamp.kicad_pro",
|
||||||
|
"version": 1
|
||||||
|
},
|
||||||
|
"net_settings": {
|
||||||
|
"classes": [
|
||||||
|
{
|
||||||
|
"bus_width": 12.0,
|
||||||
|
"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)",
|
||||||
|
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||||
|
"track_width": 0.25,
|
||||||
|
"via_diameter": 0.8,
|
||||||
|
"via_drill": 0.4,
|
||||||
|
"wire_width": 6.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"bus_width": 12.0,
|
||||||
|
"clearance": 0.4,
|
||||||
|
"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": "Power",
|
||||||
|
"nets": [
|
||||||
|
"+5V"
|
||||||
|
],
|
||||||
|
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||||
|
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||||
|
"track_width": 0.25,
|
||||||
|
"via_diameter": 0.8,
|
||||||
|
"via_drill": 0.4,
|
||||||
|
"wire_width": 6.0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"meta": {
|
||||||
|
"version": 2
|
||||||
|
},
|
||||||
|
"net_colors": null
|
||||||
|
},
|
||||||
|
"pcbnew": {
|
||||||
|
"last_paths": {
|
||||||
|
"gencad": "",
|
||||||
|
"idf": "",
|
||||||
|
"netlist": "",
|
||||||
|
"specctra_dsn": "",
|
||||||
|
"step": "",
|
||||||
|
"vrml": ""
|
||||||
|
},
|
||||||
|
"page_layout_descr_file": ""
|
||||||
|
},
|
||||||
|
"schematic": {
|
||||||
|
"annotate_start_num": 0,
|
||||||
|
"drawing": {
|
||||||
|
"default_line_thickness": 6.0,
|
||||||
|
"default_text_size": 50.0,
|
||||||
|
"field_names": [],
|
||||||
|
"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,
|
||||||
|
"pin_symbol_size": 25.0,
|
||||||
|
"text_offset_ratio": 0.15
|
||||||
|
},
|
||||||
|
"legacy_lib_dir": "",
|
||||||
|
"legacy_lib_list": [],
|
||||||
|
"meta": {
|
||||||
|
"version": 1
|
||||||
|
},
|
||||||
|
"net_format_name": "KiCad",
|
||||||
|
"ngspice": {
|
||||||
|
"fix_include_paths": true,
|
||||||
|
"fix_passive_vals": false,
|
||||||
|
"meta": {
|
||||||
|
"version": 0
|
||||||
|
},
|
||||||
|
"model_mode": 0,
|
||||||
|
"workbook_filename": ""
|
||||||
|
},
|
||||||
|
"page_layout_descr_file": "",
|
||||||
|
"plot_directory": "",
|
||||||
|
"spice_adjust_passive_values": false,
|
||||||
|
"spice_external_command": "spice \"%I\"",
|
||||||
|
"subpart_first_id": 65,
|
||||||
|
"subpart_id_separator": 0
|
||||||
|
},
|
||||||
|
"sheets": [
|
||||||
|
[
|
||||||
|
"b1b9fff3-73b3-4638-b03f-be42f313d005",
|
||||||
|
""
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"text_variables": {}
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,313 @@
|
|||||||
|
(export (version "E")
|
||||||
|
(design
|
||||||
|
(source "/home/daan/dev/hanglamp/hardware/Hanglamp/Hanglamp.kicad_sch")
|
||||||
|
(date "Tue 28 Jan 2025 10:55:36 PM CET")
|
||||||
|
(tool "Eeschema 6.0.11+dfsg-1")
|
||||||
|
(sheet (number "1") (name "/") (tstamps "/")
|
||||||
|
(title_block
|
||||||
|
(title)
|
||||||
|
(company)
|
||||||
|
(rev)
|
||||||
|
(date)
|
||||||
|
(source "Hanglamp.kicad_sch")
|
||||||
|
(comment (number "1") (value ""))
|
||||||
|
(comment (number "2") (value ""))
|
||||||
|
(comment (number "3") (value ""))
|
||||||
|
(comment (number "4") (value ""))
|
||||||
|
(comment (number "5") (value ""))
|
||||||
|
(comment (number "6") (value ""))
|
||||||
|
(comment (number "7") (value ""))
|
||||||
|
(comment (number "8") (value ""))
|
||||||
|
(comment (number "9") (value "")))))
|
||||||
|
(components
|
||||||
|
(comp (ref "C1")
|
||||||
|
(value "C")
|
||||||
|
(footprint "Capacitor_SMD:C_0504_1310Metric")
|
||||||
|
(libsource (lib "Device") (part "C") (description "Unpolarized capacitor"))
|
||||||
|
(property (name "Sheetname") (value ""))
|
||||||
|
(property (name "Sheetfile") (value "Hanglamp.kicad_sch"))
|
||||||
|
(sheetpath (names "/") (tstamps "/"))
|
||||||
|
(tstamps "26e5fcde-ff24-4eee-b618-b93f87b175cd"))
|
||||||
|
(comp (ref "C2")
|
||||||
|
(value "C")
|
||||||
|
(footprint "Capacitor_SMD:C_0504_1310Metric")
|
||||||
|
(libsource (lib "Device") (part "C") (description "Unpolarized capacitor"))
|
||||||
|
(property (name "Sheetname") (value ""))
|
||||||
|
(property (name "Sheetfile") (value "Hanglamp.kicad_sch"))
|
||||||
|
(sheetpath (names "/") (tstamps "/"))
|
||||||
|
(tstamps "0045cad5-fb4e-434f-8df3-361f842e5880"))
|
||||||
|
(comp (ref "D1")
|
||||||
|
(value "DIODE")
|
||||||
|
(footprint "Diode_THT:D_5W_P10.16mm_Horizontal")
|
||||||
|
(libsource (lib "pspice") (part "DIODE") (description "Diode symbol for simulation only. Pin order incompatible with official kicad footprints"))
|
||||||
|
(property (name "Sheetname") (value ""))
|
||||||
|
(property (name "Sheetfile") (value "Hanglamp.kicad_sch"))
|
||||||
|
(sheetpath (names "/") (tstamps "/"))
|
||||||
|
(tstamps "ff09fb9d-8ab4-4457-9181-718324fa7db1"))
|
||||||
|
(comp (ref "D2")
|
||||||
|
(value "WS2812B")
|
||||||
|
(footprint "LED_SMD:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm")
|
||||||
|
(datasheet "https://cdn-shop.adafruit.com/datasheets/WS2812B.pdf")
|
||||||
|
(libsource (lib "LED") (part "WS2812B") (description "RGB LED with integrated controller"))
|
||||||
|
(property (name "Sheetname") (value ""))
|
||||||
|
(property (name "Sheetfile") (value "Hanglamp.kicad_sch"))
|
||||||
|
(sheetpath (names "/") (tstamps "/"))
|
||||||
|
(tstamps "207a6b00-255d-4b32-87a5-ecc1fe23ee5a"))
|
||||||
|
(comp (ref "D3")
|
||||||
|
(value "WS2812B")
|
||||||
|
(footprint "LED_SMD:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm")
|
||||||
|
(datasheet "https://cdn-shop.adafruit.com/datasheets/WS2812B.pdf")
|
||||||
|
(libsource (lib "LED") (part "WS2812B") (description "RGB LED with integrated controller"))
|
||||||
|
(property (name "Sheetname") (value ""))
|
||||||
|
(property (name "Sheetfile") (value "Hanglamp.kicad_sch"))
|
||||||
|
(sheetpath (names "/") (tstamps "/"))
|
||||||
|
(tstamps "d5737210-ffc2-4478-b164-64202cd21042"))
|
||||||
|
(comp (ref "J1")
|
||||||
|
(value "CONN_ROT_ENC")
|
||||||
|
(footprint "Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_Vertical")
|
||||||
|
(libsource (lib "Connector_Generic") (part "Conn_01x05") (description "Generic connector, single row, 01x05, script generated (kicad-library-utils/schlib/autogen/connector/)"))
|
||||||
|
(property (name "Sheetname") (value ""))
|
||||||
|
(property (name "Sheetfile") (value "Hanglamp.kicad_sch"))
|
||||||
|
(sheetpath (names "/") (tstamps "/"))
|
||||||
|
(tstamps "a0c3753c-e3fe-4a33-ac41-016f293f037f"))
|
||||||
|
(comp (ref "J2")
|
||||||
|
(value "Conn_01x03")
|
||||||
|
(footprint "Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical")
|
||||||
|
(libsource (lib "Connector_Generic") (part "Conn_01x03") (description "Generic connector, single row, 01x03, script generated (kicad-library-utils/schlib/autogen/connector/)"))
|
||||||
|
(property (name "Sheetname") (value ""))
|
||||||
|
(property (name "Sheetfile") (value "Hanglamp.kicad_sch"))
|
||||||
|
(sheetpath (names "/") (tstamps "/"))
|
||||||
|
(tstamps "e677dc3d-9f7e-434e-9f30-654dfb6badae"))
|
||||||
|
(comp (ref "J3")
|
||||||
|
(value "Conn_01x03")
|
||||||
|
(footprint "Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical")
|
||||||
|
(libsource (lib "Connector_Generic") (part "Conn_01x03") (description "Generic connector, single row, 01x03, script generated (kicad-library-utils/schlib/autogen/connector/)"))
|
||||||
|
(property (name "Sheetname") (value ""))
|
||||||
|
(property (name "Sheetfile") (value "Hanglamp.kicad_sch"))
|
||||||
|
(sheetpath (names "/") (tstamps "/"))
|
||||||
|
(tstamps "d2b05e5e-0ba6-4f7d-9203-efef3ec5b7f7"))
|
||||||
|
(comp (ref "J4")
|
||||||
|
(value "Conn_01x02")
|
||||||
|
(footprint "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical")
|
||||||
|
(libsource (lib "Connector_Generic") (part "Conn_01x02") (description "Generic connector, single row, 01x02, script generated (kicad-library-utils/schlib/autogen/connector/)"))
|
||||||
|
(property (name "Sheetname") (value ""))
|
||||||
|
(property (name "Sheetfile") (value "Hanglamp.kicad_sch"))
|
||||||
|
(sheetpath (names "/") (tstamps "/"))
|
||||||
|
(tstamps "e7d2da4b-3d2c-4100-8e44-f31bd455bcd2"))
|
||||||
|
(comp (ref "U1")
|
||||||
|
(value "ESP32-C3_SUPERMINI_TH")
|
||||||
|
(footprint "esp32-c3:MODULE_ESP32-C3_SUPERMINI")
|
||||||
|
(fields
|
||||||
|
(field (name "Availability") "Not in stock")
|
||||||
|
(field (name "Check_prices") "https://www.snapeda.com/parts/ESP32-C3%20SuperMini_TH/Espressif+Systems/view-part/?ref=eda")
|
||||||
|
(field (name "Description") "\n \n Super tiny ESP32-C3 board\n \n")
|
||||||
|
(field (name "MANUFACTURER") "Espressif")
|
||||||
|
(field (name "MAXIMUM_PACKAGE_HEIGHT") "4.2mm")
|
||||||
|
(field (name "MF") "Espressif Systems")
|
||||||
|
(field (name "MP") "ESP32-C3 SuperMini_TH")
|
||||||
|
(field (name "Package") "Package")
|
||||||
|
(field (name "Price") "None")
|
||||||
|
(field (name "STANDARD") "Manufacturer Recommendations")
|
||||||
|
(field (name "SnapEDA_Link") "https://www.snapeda.com/parts/ESP32-C3%20SuperMini_TH/Espressif+Systems/view-part/?ref=snap"))
|
||||||
|
(libsource (lib "ESP32-C3_SUPERMINI_TH") (part "ESP32-C3_SUPERMINI_TH") (description ""))
|
||||||
|
(property (name "MF") (value "Espressif Systems"))
|
||||||
|
(property (name "MAXIMUM_PACKAGE_HEIGHT") (value "4.2mm"))
|
||||||
|
(property (name "Package") (value "Package"))
|
||||||
|
(property (name "Price") (value "None"))
|
||||||
|
(property (name "Check_prices") (value "https://www.snapeda.com/parts/ESP32-C3%20SuperMini_TH/Espressif+Systems/view-part/?ref=eda"))
|
||||||
|
(property (name "STANDARD") (value "Manufacturer Recommendations"))
|
||||||
|
(property (name "PARTREV") (value ""))
|
||||||
|
(property (name "SnapEDA_Link") (value "https://www.snapeda.com/parts/ESP32-C3%20SuperMini_TH/Espressif+Systems/view-part/?ref=snap"))
|
||||||
|
(property (name "MP") (value "ESP32-C3 SuperMini_TH"))
|
||||||
|
(property (name "Description") (value "\n \n Super tiny ESP32-C3 board\n \n"))
|
||||||
|
(property (name "Availability") (value "Not in stock"))
|
||||||
|
(property (name "MANUFACTURER") (value "Espressif"))
|
||||||
|
(property (name "Sheetname") (value ""))
|
||||||
|
(property (name "Sheetfile") (value "Hanglamp.kicad_sch"))
|
||||||
|
(sheetpath (names "/") (tstamps "/"))
|
||||||
|
(tstamps "baa94b6d-0132-4b29-ab80-540162a717d7")))
|
||||||
|
(libparts
|
||||||
|
(libpart (lib "Connector_Generic") (part "Conn_01x02")
|
||||||
|
(description "Generic connector, single row, 01x02, script generated (kicad-library-utils/schlib/autogen/connector/)")
|
||||||
|
(docs "~")
|
||||||
|
(footprints
|
||||||
|
(fp "Connector*:*_1x??_*"))
|
||||||
|
(fields
|
||||||
|
(field (name "Reference") "J")
|
||||||
|
(field (name "Value") "Conn_01x02")
|
||||||
|
(field (name "Datasheet") "~"))
|
||||||
|
(pins
|
||||||
|
(pin (num "1") (name "Pin_1") (type "passive"))
|
||||||
|
(pin (num "2") (name "Pin_2") (type "passive"))))
|
||||||
|
(libpart (lib "Connector_Generic") (part "Conn_01x03")
|
||||||
|
(description "Generic connector, single row, 01x03, script generated (kicad-library-utils/schlib/autogen/connector/)")
|
||||||
|
(docs "~")
|
||||||
|
(footprints
|
||||||
|
(fp "Connector*:*_1x??_*"))
|
||||||
|
(fields
|
||||||
|
(field (name "Reference") "J")
|
||||||
|
(field (name "Value") "Conn_01x03")
|
||||||
|
(field (name "Datasheet") "~"))
|
||||||
|
(pins
|
||||||
|
(pin (num "1") (name "Pin_1") (type "passive"))
|
||||||
|
(pin (num "2") (name "Pin_2") (type "passive"))
|
||||||
|
(pin (num "3") (name "Pin_3") (type "passive"))))
|
||||||
|
(libpart (lib "Connector_Generic") (part "Conn_01x05")
|
||||||
|
(description "Generic connector, single row, 01x05, script generated (kicad-library-utils/schlib/autogen/connector/)")
|
||||||
|
(docs "~")
|
||||||
|
(footprints
|
||||||
|
(fp "Connector*:*_1x??_*"))
|
||||||
|
(fields
|
||||||
|
(field (name "Reference") "J")
|
||||||
|
(field (name "Value") "Conn_01x05")
|
||||||
|
(field (name "Datasheet") "~"))
|
||||||
|
(pins
|
||||||
|
(pin (num "1") (name "Pin_1") (type "passive"))
|
||||||
|
(pin (num "2") (name "Pin_2") (type "passive"))
|
||||||
|
(pin (num "3") (name "Pin_3") (type "passive"))
|
||||||
|
(pin (num "4") (name "Pin_4") (type "passive"))
|
||||||
|
(pin (num "5") (name "Pin_5") (type "passive"))))
|
||||||
|
(libpart (lib "Device") (part "C")
|
||||||
|
(description "Unpolarized capacitor")
|
||||||
|
(docs "~")
|
||||||
|
(footprints
|
||||||
|
(fp "C_*"))
|
||||||
|
(fields
|
||||||
|
(field (name "Reference") "C")
|
||||||
|
(field (name "Value") "C")
|
||||||
|
(field (name "Datasheet") "~"))
|
||||||
|
(pins
|
||||||
|
(pin (num "1") (name "") (type "passive"))
|
||||||
|
(pin (num "2") (name "") (type "passive"))))
|
||||||
|
(libpart (lib "ESP32-C3_SUPERMINI_TH") (part "ESP32-C3_SUPERMINI_TH")
|
||||||
|
(fields
|
||||||
|
(field (name "Reference") "U")
|
||||||
|
(field (name "Value") "ESP32-C3_SUPERMINI_TH")
|
||||||
|
(field (name "Footprint") "ESP32-C3_SUPERMINI_TH:MODULE_ESP32-C3_SUPERMINI")
|
||||||
|
(field (name "MF") "Espressif Systems")
|
||||||
|
(field (name "MAXIMUM_PACKAGE_HEIGHT") "4.2mm")
|
||||||
|
(field (name "Package") "Package")
|
||||||
|
(field (name "Price") "None")
|
||||||
|
(field (name "Check_prices") "https://www.snapeda.com/parts/ESP32-C3%20SuperMini_TH/Espressif+Systems/view-part/?ref=eda")
|
||||||
|
(field (name "STANDARD") "Manufacturer Recommendations")
|
||||||
|
(field (name "SnapEDA_Link") "https://www.snapeda.com/parts/ESP32-C3%20SuperMini_TH/Espressif+Systems/view-part/?ref=snap")
|
||||||
|
(field (name "MP") "ESP32-C3 SuperMini_TH")
|
||||||
|
(field (name "Description") "\n \n Super tiny ESP32-C3 board\n \n")
|
||||||
|
(field (name "Availability") "Not in stock")
|
||||||
|
(field (name "MANUFACTURER") "Espressif"))
|
||||||
|
(pins
|
||||||
|
(pin (num "0") (name "GPIO0") (type "bidirectional"))
|
||||||
|
(pin (num "1") (name "GPIO1") (type "bidirectional"))
|
||||||
|
(pin (num "2") (name "GPIO2") (type "bidirectional"))
|
||||||
|
(pin (num "3") (name "GPIO3") (type "bidirectional"))
|
||||||
|
(pin (num "3.3") (name "3V3") (type "power_in"))
|
||||||
|
(pin (num "4") (name "GPIO4") (type "bidirectional"))
|
||||||
|
(pin (num "5") (name "GPIO5") (type "bidirectional"))
|
||||||
|
(pin (num "5V") (name "5V") (type "power_in"))
|
||||||
|
(pin (num "6") (name "GPIO6") (type "bidirectional"))
|
||||||
|
(pin (num "7") (name "GPIO7") (type "bidirectional"))
|
||||||
|
(pin (num "8") (name "GPIO8") (type "bidirectional"))
|
||||||
|
(pin (num "9") (name "GPIO9") (type "bidirectional"))
|
||||||
|
(pin (num "10") (name "GPIO10") (type "bidirectional"))
|
||||||
|
(pin (num "20") (name "GPIO20") (type "bidirectional"))
|
||||||
|
(pin (num "21") (name "GPIO21") (type "bidirectional"))
|
||||||
|
(pin (num "G") (name "GND") (type "power_in"))))
|
||||||
|
(libpart (lib "LED") (part "WS2812B")
|
||||||
|
(description "RGB LED with integrated controller")
|
||||||
|
(docs "https://cdn-shop.adafruit.com/datasheets/WS2812B.pdf")
|
||||||
|
(footprints
|
||||||
|
(fp "LED*WS2812*PLCC*5.0x5.0mm*P3.2mm*"))
|
||||||
|
(fields
|
||||||
|
(field (name "Reference") "D")
|
||||||
|
(field (name "Value") "WS2812B")
|
||||||
|
(field (name "Footprint") "LED_SMD:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm")
|
||||||
|
(field (name "Datasheet") "https://cdn-shop.adafruit.com/datasheets/WS2812B.pdf"))
|
||||||
|
(pins
|
||||||
|
(pin (num "1") (name "VDD") (type "power_in"))
|
||||||
|
(pin (num "2") (name "DOUT") (type "output"))
|
||||||
|
(pin (num "3") (name "VSS") (type "power_in"))
|
||||||
|
(pin (num "4") (name "DIN") (type "input"))))
|
||||||
|
(libpart (lib "pspice") (part "DIODE")
|
||||||
|
(description "Diode symbol for simulation only. Pin order incompatible with official kicad footprints")
|
||||||
|
(docs "~")
|
||||||
|
(fields
|
||||||
|
(field (name "Reference") "D")
|
||||||
|
(field (name "Value") "DIODE")
|
||||||
|
(field (name "Datasheet") "~"))
|
||||||
|
(pins
|
||||||
|
(pin (num "1") (name "K") (type "input"))
|
||||||
|
(pin (num "2") (name "A") (type "input")))))
|
||||||
|
(libraries
|
||||||
|
(library (logical "Connector_Generic")
|
||||||
|
(uri "/usr/share/kicad/symbols//Connector_Generic.kicad_sym"))
|
||||||
|
(library (logical "Device")
|
||||||
|
(uri "/usr/share/kicad/symbols//Device.kicad_sym"))
|
||||||
|
(library (logical "ESP32-C3_SUPERMINI_TH")
|
||||||
|
(uri "/home/daan/Downloads/esp32-c3/ESP32-C3_SUPERMINI_TH.kicad_sym"))
|
||||||
|
(library (logical "LED")
|
||||||
|
(uri "/usr/share/kicad/symbols//LED.kicad_sym"))
|
||||||
|
(library (logical "pspice")
|
||||||
|
(uri "/usr/share/kicad/symbols//pspice.kicad_sym")))
|
||||||
|
(nets
|
||||||
|
(net (code "1") (name "+3.3V")
|
||||||
|
(node (ref "J1") (pin "5") (pinfunction "Pin_5") (pintype "passive"))
|
||||||
|
(node (ref "U1") (pin "3.3") (pinfunction "3V3") (pintype "power_in")))
|
||||||
|
(net (code "2") (name "+4V")
|
||||||
|
(node (ref "C1") (pin "1") (pintype "passive"))
|
||||||
|
(node (ref "C2") (pin "1") (pintype "passive"))
|
||||||
|
(node (ref "D1") (pin "2") (pinfunction "A") (pintype "input"))
|
||||||
|
(node (ref "D2") (pin "1") (pinfunction "VDD") (pintype "power_in"))
|
||||||
|
(node (ref "D3") (pin "1") (pinfunction "VDD") (pintype "power_in")))
|
||||||
|
(net (code "3") (name "+5V")
|
||||||
|
(node (ref "D1") (pin "1") (pinfunction "K") (pintype "input"))
|
||||||
|
(node (ref "J3") (pin "1") (pinfunction "Pin_1") (pintype "passive"))
|
||||||
|
(node (ref "J3") (pin "2") (pinfunction "Pin_2") (pintype "passive"))
|
||||||
|
(node (ref "J3") (pin "3") (pinfunction "Pin_3") (pintype "passive"))
|
||||||
|
(node (ref "U1") (pin "5V") (pinfunction "5V") (pintype "power_in")))
|
||||||
|
(net (code "4") (name "GND")
|
||||||
|
(node (ref "C1") (pin "2") (pintype "passive"))
|
||||||
|
(node (ref "C2") (pin "2") (pintype "passive"))
|
||||||
|
(node (ref "D2") (pin "3") (pinfunction "VSS") (pintype "power_in"))
|
||||||
|
(node (ref "D3") (pin "3") (pinfunction "VSS") (pintype "power_in"))
|
||||||
|
(node (ref "J1") (pin "1") (pinfunction "Pin_1") (pintype "passive"))
|
||||||
|
(node (ref "J2") (pin "1") (pinfunction "Pin_1") (pintype "passive"))
|
||||||
|
(node (ref "J2") (pin "2") (pinfunction "Pin_2") (pintype "passive"))
|
||||||
|
(node (ref "J2") (pin "3") (pinfunction "Pin_3") (pintype "passive"))
|
||||||
|
(node (ref "U1") (pin "G") (pinfunction "GND") (pintype "power_in")))
|
||||||
|
(net (code "5") (name "GPIO5")
|
||||||
|
(node (ref "D2") (pin "4") (pinfunction "DIN") (pintype "input"))
|
||||||
|
(node (ref "U1") (pin "5") (pinfunction "GPIO5") (pintype "bidirectional")))
|
||||||
|
(net (code "6") (name "GPIO6")
|
||||||
|
(node (ref "D3") (pin "4") (pinfunction "DIN") (pintype "input"))
|
||||||
|
(node (ref "U1") (pin "6") (pinfunction "GPIO6") (pintype "bidirectional")))
|
||||||
|
(net (code "7") (name "Net-(J1-Pad2)")
|
||||||
|
(node (ref "J1") (pin "2") (pinfunction "Pin_2") (pintype "passive"))
|
||||||
|
(node (ref "U1") (pin "2") (pinfunction "GPIO2") (pintype "bidirectional")))
|
||||||
|
(net (code "8") (name "Net-(J1-Pad3)")
|
||||||
|
(node (ref "J1") (pin "3") (pinfunction "Pin_3") (pintype "passive"))
|
||||||
|
(node (ref "U1") (pin "1") (pinfunction "GPIO1") (pintype "bidirectional")))
|
||||||
|
(net (code "9") (name "Net-(J1-Pad4)")
|
||||||
|
(node (ref "J1") (pin "4") (pinfunction "Pin_4") (pintype "passive"))
|
||||||
|
(node (ref "U1") (pin "0") (pinfunction "GPIO0") (pintype "bidirectional")))
|
||||||
|
(net (code "10") (name "STRIP1")
|
||||||
|
(node (ref "D2") (pin "2") (pinfunction "DOUT") (pintype "output"))
|
||||||
|
(node (ref "J4") (pin "1") (pinfunction "Pin_1") (pintype "passive")))
|
||||||
|
(net (code "11") (name "STRIP2")
|
||||||
|
(node (ref "D3") (pin "2") (pinfunction "DOUT") (pintype "output"))
|
||||||
|
(node (ref "J4") (pin "2") (pinfunction "Pin_2") (pintype "passive")))
|
||||||
|
(net (code "12") (name "unconnected-(U1-Pad3)")
|
||||||
|
(node (ref "U1") (pin "3") (pinfunction "GPIO3") (pintype "bidirectional")))
|
||||||
|
(net (code "13") (name "unconnected-(U1-Pad4)")
|
||||||
|
(node (ref "U1") (pin "4") (pinfunction "GPIO4") (pintype "bidirectional")))
|
||||||
|
(net (code "14") (name "unconnected-(U1-Pad7)")
|
||||||
|
(node (ref "U1") (pin "7") (pinfunction "GPIO7") (pintype "bidirectional")))
|
||||||
|
(net (code "15") (name "unconnected-(U1-Pad8)")
|
||||||
|
(node (ref "U1") (pin "8") (pinfunction "GPIO8") (pintype "bidirectional")))
|
||||||
|
(net (code "16") (name "unconnected-(U1-Pad9)")
|
||||||
|
(node (ref "U1") (pin "9") (pinfunction "GPIO9") (pintype "bidirectional")))
|
||||||
|
(net (code "17") (name "unconnected-(U1-Pad10)")
|
||||||
|
(node (ref "U1") (pin "10") (pinfunction "GPIO10") (pintype "bidirectional")))
|
||||||
|
(net (code "18") (name "unconnected-(U1-Pad20)")
|
||||||
|
(node (ref "U1") (pin "20") (pinfunction "GPIO20") (pintype "bidirectional")))
|
||||||
|
(net (code "19") (name "unconnected-(U1-Pad21)")
|
||||||
|
(node (ref "U1") (pin "21") (pinfunction "GPIO21") (pintype "bidirectional")))))
|
||||||
File diff suppressed because it is too large
Load Diff
+11
-13
@@ -29,6 +29,7 @@ lib_deps =
|
|||||||
devyte/ESPAsyncDNSServer@^1.0.0
|
devyte/ESPAsyncDNSServer@^1.0.0
|
||||||
me-no-dev/ESPAsyncUDP
|
me-no-dev/ESPAsyncUDP
|
||||||
makuna/NeoPixelBus @ ^2.8.0
|
makuna/NeoPixelBus @ ^2.8.0
|
||||||
|
knolleary/PubSubClient@^2.8
|
||||||
lib_ldf_mode = chain+
|
lib_ldf_mode = chain+
|
||||||
monitor_filters =
|
monitor_filters =
|
||||||
default
|
default
|
||||||
@@ -37,22 +38,19 @@ board_build.filesystem = littlefs
|
|||||||
board_build.f_cpu = 80000000L
|
board_build.f_cpu = 80000000L
|
||||||
|
|
||||||
[env:esp32c3_supermini]
|
[env:esp32c3_supermini]
|
||||||
; platform = espressif32
|
|
||||||
; board = esp32-c3-devkitm-1
|
|
||||||
|
|
||||||
; platform = https://github.com/Jason2866/platform-espressif32.git#Arduino/IDF5
|
|
||||||
; board = lolin_c3_mini
|
|
||||||
|
|
||||||
board = dfrobot_beetle_esp32c3
|
board = dfrobot_beetle_esp32c3
|
||||||
platform = espressif32
|
platform = espressif32
|
||||||
framework = arduino
|
framework = arduino
|
||||||
monitor_speed = 460800
|
monitor_speed = 115200
|
||||||
|
monitor_filters =
|
||||||
|
esp32_exception_decoder
|
||||||
|
time
|
||||||
lib_deps =
|
lib_deps =
|
||||||
fastled/FastLED@^3.7.0
|
fastled/FastLED@^3.7.0
|
||||||
|
knolleary/PubSubClient@^2.8
|
||||||
|
|
||||||
; [env:dfrobot_beetle_esp32c3]
|
|
||||||
; platform = espressif32
|
[env:esp32c3_supermini_network]
|
||||||
; board = dfrobot_beetle_esp32c3
|
extends = env:esp32c3_supermini
|
||||||
; framework = arduino
|
upload_protocol = espota
|
||||||
; lib_deps =
|
upload_port = 10.206.0.101
|
||||||
; fastled/FastLED@^3.7.0
|
|
||||||
@@ -0,0 +1,150 @@
|
|||||||
|
#include "Controls.h"
|
||||||
|
|
||||||
|
|
||||||
|
uint8_t controlPins[] = {
|
||||||
|
PIN_A,
|
||||||
|
PIN_B,
|
||||||
|
PIN_KEY,
|
||||||
|
};
|
||||||
|
|
||||||
|
uint16_t thresholds[] = {
|
||||||
|
2048,
|
||||||
|
1000,
|
||||||
|
3072,
|
||||||
|
};
|
||||||
|
|
||||||
|
uint16_t prevState[3];
|
||||||
|
|
||||||
|
uint8_t controlPinCount = sizeof(controlPins) / sizeof(controlPins[0]);
|
||||||
|
|
||||||
|
auto lastChange = micros();
|
||||||
|
uint8_t pinChanges[128];
|
||||||
|
uint8_t pinChangeIndex = 0;
|
||||||
|
|
||||||
|
void Controls_direction_reset(){
|
||||||
|
lastChange = 0;
|
||||||
|
pinChangeIndex = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto lastKey = micros();
|
||||||
|
|
||||||
|
ControlsCallback handler = NULL;
|
||||||
|
|
||||||
|
void Controls_handler(ControlsCallback newHandler){
|
||||||
|
handler = newHandler;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Controls_send_event(ControlEvent event){
|
||||||
|
if(handler){
|
||||||
|
handler(event);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Controls_loop(void *pvParameters){
|
||||||
|
lastKey = 0;
|
||||||
|
lastChange = 0;
|
||||||
|
|
||||||
|
while(true){
|
||||||
|
for(uint8_t a=0; a<controlPinCount; a++){
|
||||||
|
auto pin = controlPins[a];
|
||||||
|
auto currentValueAnalog = analogRead(pin);
|
||||||
|
auto currentValue = currentValueAnalog > thresholds[a];
|
||||||
|
auto prevValue = prevState[a];
|
||||||
|
|
||||||
|
if(CONTROLS_DEBUG > 200){
|
||||||
|
Serial.printf("Pin %d: %d->%d (%d)\n", pin, prevValue, currentValue, currentValueAnalog);
|
||||||
|
}
|
||||||
|
|
||||||
|
// if(abs(currentValue - prevValue) > 100){
|
||||||
|
if(currentValue != prevValue){
|
||||||
|
if(CONTROLS_DEBUG > 100){
|
||||||
|
Serial.printf("Change on pin %d: %d -> %d (%d)\n", pin, prevValue, currentValue, currentValueAnalog);
|
||||||
|
}
|
||||||
|
if(pin == PIN_KEY){
|
||||||
|
if(currentValue){
|
||||||
|
auto duration = micros() - lastKey;
|
||||||
|
if(duration > KEY_DURATION_MS * 1000){
|
||||||
|
if(CONTROLS_DEBUG > 10){
|
||||||
|
Serial.printf("Key: %d\n", duration);
|
||||||
|
}
|
||||||
|
Controls_send_event({Key, (int)duration});
|
||||||
|
}else{
|
||||||
|
if(CONTROLS_DEBUG > 20){
|
||||||
|
Serial.println("Too short");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
lastKey = 0;
|
||||||
|
} else {
|
||||||
|
lastKey = micros();
|
||||||
|
}
|
||||||
|
|
||||||
|
}else{
|
||||||
|
pinChanges[pinChangeIndex++] = pin;
|
||||||
|
lastChange = micros();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
prevState[a] = currentValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//maybe we have a valid sequence
|
||||||
|
if(pinChangeIndex >= 4){
|
||||||
|
// Serial.printf("Have %d changes\n", pinChangeIndex);
|
||||||
|
for(uint8_t base = 0; base + 4 <= pinChangeIndex; base += 4){
|
||||||
|
if(
|
||||||
|
pinChanges[base + 0] == PIN_A &&
|
||||||
|
pinChanges[base + 1] == PIN_B &&
|
||||||
|
pinChanges[base + 2] == PIN_A &&
|
||||||
|
pinChanges[base + 3] == PIN_B
|
||||||
|
){
|
||||||
|
|
||||||
|
if(CONTROLS_DEBUG > 10){
|
||||||
|
Serial.println("Dir A");
|
||||||
|
}
|
||||||
|
Controls_send_event({Counterclockwise, NULL});
|
||||||
|
}else if(
|
||||||
|
pinChanges[base + 0] == PIN_B &&
|
||||||
|
pinChanges[base + 1] == PIN_A &&
|
||||||
|
pinChanges[base + 2] == PIN_B &&
|
||||||
|
pinChanges[base + 3] == PIN_A
|
||||||
|
){
|
||||||
|
|
||||||
|
if(CONTROLS_DEBUG > 10){
|
||||||
|
Serial.println("Dir B");
|
||||||
|
}
|
||||||
|
Controls_send_event({Clockwise, NULL});
|
||||||
|
}else{
|
||||||
|
if(CONTROLS_DEBUG > 20){
|
||||||
|
Serial.println("Unknown direction");
|
||||||
|
Serial.printf("[%d, %d, %d, %d]\n", pinChanges[base + 0], pinChanges[base + 1], pinChanges[base + 2], pinChanges[base + 3]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Controls_direction_reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(lastChange){
|
||||||
|
if(micros() - lastChange > 100 * 1000){
|
||||||
|
|
||||||
|
if(CONTROLS_DEBUG > 100){
|
||||||
|
Serial.println("changes expired");
|
||||||
|
}
|
||||||
|
Controls_direction_reset();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
vTaskDelay(2/portTICK_PERIOD_MS);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Controls_setup(){
|
||||||
|
pinMode(PIN_A, INPUT_PULLDOWN);
|
||||||
|
pinMode(PIN_B, INPUT_PULLDOWN);
|
||||||
|
pinMode(PIN_KEY, INPUT_PULLDOWN);
|
||||||
|
|
||||||
|
|
||||||
|
TaskHandle_t taskControls = NULL;
|
||||||
|
xTaskCreate(Controls_loop, "Controls_loop", 2048, NULL, tskIDLE_PRIORITY, &taskControls);
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
|
||||||
|
#define PIN_A 1
|
||||||
|
#define PIN_B 0
|
||||||
|
#define PIN_KEY 2
|
||||||
|
|
||||||
|
#define KEY_DURATION_MS 150
|
||||||
|
|
||||||
|
#define CONTROLS_DEBUG 1
|
||||||
|
|
||||||
|
|
||||||
|
enum ControlEventType {
|
||||||
|
Clockwise,
|
||||||
|
Counterclockwise,
|
||||||
|
Key
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ControlEvent {
|
||||||
|
ControlEventType type;
|
||||||
|
int data;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef void (* ControlsCallback)( ControlEvent ) ;
|
||||||
|
|
||||||
|
void Controls_setup();
|
||||||
|
|
||||||
|
void Controls_handler(ControlsCallback callback);
|
||||||
+174
-209
@@ -1,234 +1,199 @@
|
|||||||
#define INCLUDE_LED
|
#include "Hanglamp.hpp"
|
||||||
#ifdef INCLUDE_LED
|
|
||||||
#include "Led.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <Arduino.h>
|
|
||||||
|
|
||||||
#define _TASK_SLEEP_ON_IDLE_RUN // Enable 1 ms SLEEP_IDLE powerdowns between runs if no callback methods were invoked during the pass
|
|
||||||
#define _TASK_STATUS_REQUEST // Compile with support for StatusRequest functionality - triggering tasks on status change events in addition to time only
|
|
||||||
|
|
||||||
// #define ENABLE_MQTT
|
|
||||||
// #define ENABLE_WIFI
|
|
||||||
// #define ENABLE_FS
|
|
||||||
// #define ENABLE_PINFINDER
|
|
||||||
|
|
||||||
// #include <TaskScheduler.h>
|
|
||||||
|
|
||||||
#ifdef ENABLE_MQTT
|
|
||||||
#include "MQTT.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef ENABLE_WIFI
|
|
||||||
#include "Wifi.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef ENABLE_FS
|
|
||||||
#include "FS.h"
|
|
||||||
#include <LittleFS.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef ENABLE_PINFINDER
|
|
||||||
#include "PinFinder.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
void feedWatchdog(){
|
|
||||||
// ESP.wdtFeed();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool blinkStatus = false;
|
|
||||||
void blink(){
|
|
||||||
blinkStatus = !blinkStatus;
|
|
||||||
digitalWrite(LED_BUILTIN, blinkStatus);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef INCLUDE_LED
|
|
||||||
CRGB colorTable[] = {
|
CRGB colorTable[] = {
|
||||||
|
CRGB(255, 142, 32), // "warm wit"
|
||||||
|
// CRGB(255, 100, 4),
|
||||||
|
// CRGB(255, 128, 4),
|
||||||
|
// CRGB(255, 100, 32),
|
||||||
|
// CRGB(255, 128, 32),
|
||||||
|
CRGB::White,
|
||||||
CRGB::Red,
|
CRGB::Red,
|
||||||
CRGB::Blue,
|
|
||||||
CRGB::Green,
|
CRGB::Green,
|
||||||
CRGB::Purple,
|
|
||||||
CRGB::Turquoise,
|
|
||||||
CRGB::Yellow,
|
|
||||||
CRGB::Red,
|
|
||||||
CRGB::Blue,
|
CRGB::Blue,
|
||||||
CRGB::Green,
|
|
||||||
CRGB::Purple,
|
|
||||||
CRGB::Turquoise,
|
|
||||||
CRGB::Yellow,
|
CRGB::Yellow,
|
||||||
CRGB::Red,
|
|
||||||
CRGB::Blue,
|
|
||||||
CRGB::Green,
|
|
||||||
CRGB::Purple,
|
|
||||||
CRGB::Turquoise,
|
CRGB::Turquoise,
|
||||||
CRGB::Yellow,
|
|
||||||
CRGB::Red,
|
|
||||||
CRGB::Blue,
|
|
||||||
CRGB::Green,
|
|
||||||
CRGB::Purple,
|
CRGB::Purple,
|
||||||
CRGB::Turquoise,
|
|
||||||
CRGB::Yellow,
|
|
||||||
CRGB::Red,
|
|
||||||
CRGB::Blue,
|
|
||||||
CRGB::Green,
|
|
||||||
CRGB::Purple,
|
|
||||||
CRGB::Turquoise,
|
|
||||||
CRGB::Yellow,
|
|
||||||
CRGB::Red,
|
|
||||||
CRGB::Blue,
|
|
||||||
CRGB::Green,
|
|
||||||
CRGB::Purple,
|
|
||||||
CRGB::Turquoise,
|
|
||||||
CRGB::Yellow,
|
|
||||||
CRGB::Red,
|
|
||||||
CRGB::Blue,
|
|
||||||
CRGB::Green,
|
|
||||||
CRGB::Purple,
|
|
||||||
CRGB::Turquoise,
|
|
||||||
CRGB::Yellow,
|
|
||||||
CRGB::Red,
|
|
||||||
CRGB::Blue,
|
|
||||||
CRGB::Green,
|
|
||||||
CRGB::Purple,
|
|
||||||
CRGB::Turquoise,
|
|
||||||
CRGB::Yellow,
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
uint8_t colorIndex = 0;
|
|
||||||
void colors(){
|
Hanglamp::Hanglamp(){
|
||||||
colorIndex++;
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void parseHexColor(const String& hexColor, uint8_t& r, uint8_t& g, uint8_t& b) {
|
||||||
|
String cleanHex = hexColor;
|
||||||
|
|
||||||
|
// Remove leading '#' if present
|
||||||
|
if (cleanHex.startsWith("#")) {
|
||||||
|
cleanHex = cleanHex.substring(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make sure it's exactly 6 characters
|
||||||
|
if (cleanHex.length() != 6) {
|
||||||
|
r = g = b = 0; // default/fallback
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Parse the color components
|
||||||
|
r = strtoul(cleanHex.substring(0, 2).c_str(), NULL, 16);
|
||||||
|
g = strtoul(cleanHex.substring(2, 4).c_str(), NULL, 16);
|
||||||
|
b = strtoul(cleanHex.substring(4, 6).c_str(), NULL, 16);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Hanglamp::setup(){
|
||||||
|
|
||||||
|
#ifdef ENABLE_MQTT
|
||||||
|
|
||||||
|
MQTT_subscribe("hanglamp/CMD/brightness", [&](unsigned char* payload, unsigned int len){
|
||||||
|
String input = String((const char*)payload).substring(0, len);
|
||||||
|
int brightness = constrain(input.toInt(), 0, 255);
|
||||||
|
setBrightness(brightness);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
MQTT_subscribe("hanglamp/CMD/color", [&](unsigned char* payload, unsigned int len){
|
||||||
|
String input = String((const char*)payload).substring(0, len);
|
||||||
|
uint8_t r, g, b;
|
||||||
|
|
||||||
|
parseHexColor(input, r, g, b);
|
||||||
|
|
||||||
|
Serial.printf("input: %s, r: %d, g: %d, b: %d\n", input, r, g, b);
|
||||||
|
CRGB color(r, g, b);
|
||||||
|
setColor(color);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
MQTT_subscribe("hanglamp/CMD/power", [&](unsigned char* payload, unsigned int len){
|
||||||
|
String input = String((const char*)payload).substring(0, len);
|
||||||
|
Serial.printf("Have power command: [%s]\n", input.c_str());
|
||||||
|
if(input == "true" || input == "1" || input == "on" || input == "ON"){
|
||||||
|
Serial.printf("Setting power to true\n");
|
||||||
|
turnOn();
|
||||||
|
}else{
|
||||||
|
Serial.printf("Setting power to false\n");
|
||||||
|
turnOff();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
setColor(colorTable[this->colorIndex]);
|
||||||
|
turnOn();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Hanglamp::setColor(CRGB color){
|
||||||
|
currentColor = color;
|
||||||
|
jumpTo(currentColor);
|
||||||
|
changed();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Hanglamp::changed(){
|
||||||
|
#ifdef ENABLE_MQTT
|
||||||
|
char buff[128];
|
||||||
|
snprintf(buff, sizeof(buff),
|
||||||
|
"{\"color\":\"%02X%02X%02X\",\"brightness\":%d,\"power\":%s}",
|
||||||
|
currentColor.r,
|
||||||
|
currentColor.g,
|
||||||
|
currentColor.b,
|
||||||
|
brightness,
|
||||||
|
on ? "true" : "false"
|
||||||
|
);
|
||||||
|
MQTT_publish("hanglamp/status", buff);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void Hanglamp::nextColor(){
|
||||||
|
this->colorIndex++;
|
||||||
if(colorIndex >= (sizeof(colorTable) / sizeof(CRGB))){
|
if(colorIndex >= (sizeof(colorTable) / sizeof(CRGB))){
|
||||||
colorIndex = 0;
|
colorIndex = 0;
|
||||||
}
|
}
|
||||||
Serial.printf("colorIndex: %d\n", colorIndex);
|
Serial.printf("colorIndex: %d\n", this->colorIndex);
|
||||||
jumpTo(colorTable[colorIndex]);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void setup() {
|
setColor(colorTable[this->colorIndex]);
|
||||||
|
|
||||||
|
|
||||||
Serial.begin(115200);
|
|
||||||
|
|
||||||
delay(500);
|
|
||||||
|
|
||||||
#ifdef ENABLE_FS
|
|
||||||
if(!LittleFS.begin()){
|
|
||||||
Serial.println("LittleFS Mount Failed");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
// runner.init();
|
|
||||||
Serial.println("Initialized scheduler");
|
|
||||||
|
|
||||||
|
|
||||||
Serial.println("Scheduled tasks");
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef ENABLE_PINFINDER
|
|
||||||
PinFinder_setup();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef INCLUDE_LED
|
|
||||||
Led_setup();
|
|
||||||
|
|
||||||
jumpTo(CRGB(0xFF00FF));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef ENABLE_WIFI
|
|
||||||
Wifi_setup();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef INCLUDE_LED
|
|
||||||
jumpTo(CRGB(0x00FFFF));
|
|
||||||
|
|
||||||
jumpTo(CRGB(0x000000));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef ENABLE_MQTT
|
|
||||||
MQTT_setup();
|
|
||||||
#endif
|
|
||||||
#ifdef ENABLE_OTA
|
|
||||||
OTA_setup();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef INCLUDE_LED
|
|
||||||
jumpTo(CRGB(0x00FFFF));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// ESP.wdtEnable(10000);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Hanglamp::setBrightness(int brightness){
|
||||||
void loop() {
|
uint8_t newBrightness = constrain(brightness, 0, 255);
|
||||||
|
if(!isOn()){
|
||||||
#ifdef ENABLE_MQTT
|
turnOn();
|
||||||
MQTT_loop();
|
}
|
||||||
#endif
|
this->brightness = newBrightness;
|
||||||
|
Serial.printf("new brightness: %d\n", newBrightness);
|
||||||
#ifdef ENABLE_OTA
|
FastLED.setBrightness(newBrightness);
|
||||||
OTA_loop();
|
FastLED.show();
|
||||||
#endif
|
changed();
|
||||||
|
|
||||||
#ifdef ENABLE_PINFINDER
|
|
||||||
PinFinder_loop();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef INCLUDE_LED
|
|
||||||
colors();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
delay(1000);
|
|
||||||
|
|
||||||
return;
|
|
||||||
|
|
||||||
sleep(2000);
|
|
||||||
|
|
||||||
// Led_loop();
|
|
||||||
|
|
||||||
|
|
||||||
String command;
|
|
||||||
|
|
||||||
while(Serial.available()) {
|
|
||||||
|
|
||||||
command = Serial.readString();// read the incoming data as string
|
|
||||||
|
|
||||||
Serial.print("Have command: ");
|
|
||||||
Serial.println(command);
|
|
||||||
|
|
||||||
int index = command.indexOf(":");
|
|
||||||
if(index >= 0){
|
|
||||||
String name = command.substring(0, index);
|
|
||||||
Serial.print("Have command name: ");
|
|
||||||
Serial.println(name);
|
|
||||||
|
|
||||||
#ifdef INCLUDE_LED
|
|
||||||
if(name.equals("c")){
|
|
||||||
//c:0xff4000
|
|
||||||
//c:0xff0000
|
|
||||||
//c:0x00ff00
|
|
||||||
//c:0x0000ff
|
|
||||||
String color = command.substring(index+1);
|
|
||||||
if(color.startsWith("0x")){
|
|
||||||
color = color.substring(2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int value = strtol(color.c_str(), NULL, 16);
|
void Hanglamp::adjustBrightness(int add){
|
||||||
|
this->setBrightness(this->brightness + add);
|
||||||
CRGB target;
|
|
||||||
target.r = (value >> 16) & 0xFF;
|
|
||||||
target.g = (value >> 8) & 0xFF;
|
|
||||||
target.b = (value >> 0) & 0xFF;
|
|
||||||
|
|
||||||
jumpTo(target);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Hanglamp::controlsCallback(ControlEvent event){
|
||||||
|
Serial.printf("ControlEventType: %d\n", event);
|
||||||
|
switch(event.type){
|
||||||
|
case Clockwise:
|
||||||
|
adjustBrightness(4);
|
||||||
|
break;
|
||||||
|
case Counterclockwise:
|
||||||
|
adjustBrightness(-4);
|
||||||
|
break;
|
||||||
|
case Key:
|
||||||
|
Serial.printf("key press %d\n", event.data);
|
||||||
|
|
||||||
|
if(!isOn()){
|
||||||
|
turnOn();
|
||||||
|
}else{
|
||||||
|
auto msDuration = event.data/1000;
|
||||||
|
|
||||||
|
Serial.printf("msDuration %d\n", msDuration);
|
||||||
|
if(msDuration > 800){
|
||||||
|
turnOff();
|
||||||
|
}else{
|
||||||
|
nextColor();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Hanglamp::status(CRGB color){
|
||||||
|
Led_status(color);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Hanglamp::setOn(bool on){
|
||||||
|
Serial.printf("Hanglamp::setOn(%d -> %d)\n", this->on, on);
|
||||||
|
this->on = on;
|
||||||
|
if(currentColor == CRGB::Black){
|
||||||
|
nextColor();
|
||||||
|
}
|
||||||
|
changed();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Hanglamp::isOn(){
|
||||||
|
return this->on;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Hanglamp::turnOn(){
|
||||||
|
if(!this->on){
|
||||||
|
|
||||||
|
this->colorIndex = 1;
|
||||||
|
setColor(colorTable[1]);
|
||||||
|
|
||||||
|
FastLED.setBrightness(this->brightness);
|
||||||
|
FastLED.show();
|
||||||
|
this->setOn(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Hanglamp::turnOff(){
|
||||||
|
if(this->on){
|
||||||
|
FastLED.setBrightness(0);
|
||||||
|
FastLED.show();
|
||||||
|
this->setOn(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,38 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#include <FastLED.h>
|
||||||
|
|
||||||
|
#include "Led.h"
|
||||||
|
#include "Controls.h"
|
||||||
|
#include "MQTT.h"
|
||||||
|
|
||||||
|
class Hanglamp {
|
||||||
|
public:
|
||||||
|
Hanglamp();
|
||||||
|
void setup();
|
||||||
|
void setBrightness(int brightness);
|
||||||
|
void adjustBrightness(int add);
|
||||||
|
void nextColor();
|
||||||
|
void controlsCallback(ControlEvent event);
|
||||||
|
void status(CRGB color);
|
||||||
|
void setColor(CRGB color);
|
||||||
|
|
||||||
|
bool isOn();
|
||||||
|
void turnOn();
|
||||||
|
void turnOff();
|
||||||
|
|
||||||
|
// void receiveBrightnessFromMQTT(uint8_t * payload, unsigned int len);
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
void changed();
|
||||||
|
char colorIndex = 0;
|
||||||
|
CRGB currentColor;
|
||||||
|
int brightness = 128;
|
||||||
|
bool on = false;
|
||||||
|
void setOn(bool on);
|
||||||
|
|
||||||
|
};
|
||||||
+25
-8
@@ -5,16 +5,23 @@ CRGB led;
|
|||||||
CRGB source;
|
CRGB source;
|
||||||
CRGB target;
|
CRGB target;
|
||||||
|
|
||||||
|
#ifdef LEVEL_SHIFT_WS2812B
|
||||||
|
#define SKIP_PIXELS 1
|
||||||
|
#else
|
||||||
|
#define SKIP_PIXELS 0
|
||||||
|
#endif
|
||||||
|
|
||||||
CRGB strip1[STRIP_LENGTH];
|
#define NUM_LEDS STRIP_LENGTH + SKIP_PIXELS
|
||||||
CRGB strip2[STRIP_LENGTH];
|
|
||||||
|
// Add one black pixel to the front
|
||||||
|
CRGB strip1[NUM_LEDS];
|
||||||
|
CRGB strip2[NUM_LEDS];
|
||||||
|
|
||||||
|
|
||||||
int fadeStart = 0;
|
int fadeStart = 0;
|
||||||
|
|
||||||
#ifdef LED_NEOPIXEL_BUS
|
#ifdef LED_NEOPIXEL_BUS
|
||||||
NeoPixelBus<NeoGrbFeature, NeoWs2812xMethod> strip(STRIP_LENGTH, PIN_STRIP1);
|
NeoPixelBus<NeoGrbFeature, NeoWs2812xMethod> strip(STRIP_LENGTH, PIN_STRIP1);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void fadeTo(const CRGB & dest){
|
void fadeTo(const CRGB & dest){
|
||||||
@@ -40,10 +47,10 @@ void fadeTo(const CRGB & dest){
|
|||||||
void displayLed(){
|
void displayLed(){
|
||||||
|
|
||||||
#ifdef LED_FASTLED
|
#ifdef LED_FASTLED
|
||||||
for(uint8_t index = 0; index < STRIP_LENGTH; index++){
|
for(uint8_t index = SKIP_PIXELS; index < NUM_LEDS; index++){
|
||||||
// Serial.printf("Led 1:%02d 0x%02x%02x%02x\n", index, strip1[index].r, strip1[index].g, strip1[index].b);
|
// Serial.printf("Led 1:%02d 0x%02x%02x%02x\n", index, strip1[index].r, strip1[index].g, strip1[index].b);
|
||||||
}
|
}
|
||||||
for(uint8_t index = 0; index < STRIP_LENGTH; index++){
|
for(uint8_t index = SKIP_PIXELS; index < NUM_LEDS; index++){
|
||||||
// Serial.printf("Led 2:%02d 0x%02x%02x%02x\n", index, strip2[index].r, strip2[index].g, strip2[index].b);
|
// Serial.printf("Led 2:%02d 0x%02x%02x%02x\n", index, strip2[index].r, strip2[index].g, strip2[index].b);
|
||||||
}
|
}
|
||||||
auto before = micros();
|
auto before = micros();
|
||||||
@@ -73,7 +80,7 @@ void jumpTo(const CRGB & dest){
|
|||||||
// Serial.printf("FastLED.showColor took %d micros\n", after - before);
|
// Serial.printf("FastLED.showColor took %d micros\n", after - before);
|
||||||
// return;
|
// return;
|
||||||
|
|
||||||
for(uint8_t index = 0; index < STRIP_LENGTH; index++){
|
for(uint8_t index = SKIP_PIXELS; index < NUM_LEDS; index++){
|
||||||
strip1[index] = CRGB(dest);
|
strip1[index] = CRGB(dest);
|
||||||
strip2[index] = CRGB(dest);
|
strip2[index] = CRGB(dest);
|
||||||
}
|
}
|
||||||
@@ -116,8 +123,12 @@ void Led_setup(){
|
|||||||
// analogWriteRange(255);
|
// analogWriteRange(255);
|
||||||
|
|
||||||
#ifdef LED_FASTLED
|
#ifdef LED_FASTLED
|
||||||
FastLED.addLeds<WS2812B, PIN_STRIP1>(strip2, STRIP_LENGTH);
|
FastLED.addLeds<WS2812B, PIN_STRIP1, GRB>(strip2, NUM_LEDS).setRgbw(RgbwDefault());
|
||||||
FastLED.addLeds<WS2812B, PIN_STRIP2>(strip2, STRIP_LENGTH);
|
FastLED.addLeds<WS2812B, PIN_STRIP2, GRB>(strip2, NUM_LEDS).setRgbw(RgbwDefault());
|
||||||
|
strip1[0] = CRGB::Black;
|
||||||
|
strip2[0] = CRGB::Black;
|
||||||
|
|
||||||
|
FastLED.show();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef LED_NEOPIXEL_BUS
|
#ifdef LED_NEOPIXEL_BUS
|
||||||
@@ -148,3 +159,9 @@ void Led_loop(){
|
|||||||
FastLED.show();
|
FastLED.show();
|
||||||
delay(500);
|
delay(500);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Led_status(CRGB color){
|
||||||
|
strip1[0] = color;
|
||||||
|
strip2[0] = color;
|
||||||
|
FastLED.show();
|
||||||
|
}
|
||||||
@@ -1,7 +1,10 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
|
||||||
#include "stdint.h"
|
#include "stdint.h"
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
|
|
||||||
// #define LED_NEOPIXEL_BUS
|
// #define LED_NEOPIXEL_BUS
|
||||||
@@ -20,10 +23,11 @@
|
|||||||
#include <NeoPixelBus.h>
|
#include <NeoPixelBus.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define PIN_STRIP1 3
|
#define PIN_STRIP1 5
|
||||||
#define PIN_STRIP2 4
|
#define PIN_STRIP2 6
|
||||||
|
|
||||||
#define STRIP_LENGTH 46
|
#define STRIP_LENGTH 46
|
||||||
|
#define LEVEL_SHIFT_WS2812B
|
||||||
|
|
||||||
#define FADE_PERIOD 3.0f
|
#define FADE_PERIOD 3.0f
|
||||||
|
|
||||||
@@ -35,3 +39,5 @@ void jumpTo(const CRGB & dest);
|
|||||||
|
|
||||||
void fadeTo(const CRGB & dest);
|
void fadeTo(const CRGB & dest);
|
||||||
void fadeTask();
|
void fadeTask();
|
||||||
|
|
||||||
|
void Led_status(CRGB color);
|
||||||
+38
-28
@@ -1,28 +1,35 @@
|
|||||||
#ifdef ENABLE_MQTT
|
|
||||||
#include "MQTT.h"
|
#include "MQTT.h"
|
||||||
|
|
||||||
#include <PubSubClient.h>
|
#include <PubSubClient.h>
|
||||||
|
|
||||||
|
|
||||||
#include <ESP8266WiFi.h>
|
|
||||||
#include <WiFiUdp.h>
|
|
||||||
|
|
||||||
|
|
||||||
WiFiClient espClient;
|
WiFiClient espClient;
|
||||||
PubSubClient client(espClient);
|
PubSubClient client(espClient);
|
||||||
|
|
||||||
|
|
||||||
std::vector<SubscribedChannel> * channels = new std::vector<SubscribedChannel>();
|
std::vector<SubscribedChannel> * channels = new std::vector<SubscribedChannel>();
|
||||||
|
|
||||||
char mqtt_server[40] = "manus";
|
char mqtt_server[40] = "10.206.0.175";
|
||||||
char mqtt_port[6] = "1883";
|
char mqtt_port[6] = "1883";
|
||||||
|
|
||||||
|
|
||||||
|
uint32_t chipId = 0;
|
||||||
|
|
||||||
void connect() {
|
void connect() {
|
||||||
|
|
||||||
Serial.print("Attempting MQTT connection...");
|
|
||||||
|
if (WiFi.status() != WL_CONNECTED){
|
||||||
|
Serial.println("Wifi not connected");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Serial.println("Attempting MQTT connection...");
|
||||||
// Create a random client ID
|
// Create a random client ID
|
||||||
String clientId = "Konijntje-";
|
String clientId = "Hanglamp-";
|
||||||
clientId += String(ESP.getChipId());
|
clientId += String(chipId, 16);
|
||||||
|
Serial.printf("MQTT: Connecting as %s\n", clientId.c_str());
|
||||||
|
|
||||||
// Attempt to connect
|
// Attempt to connect
|
||||||
if (client.connect(clientId.c_str())) {
|
if (client.connect(clientId.c_str())) {
|
||||||
Serial.println("connected");
|
Serial.println("connected");
|
||||||
@@ -39,20 +46,18 @@ void connect() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void MQTT_publish(const char * topic, String str){
|
void MQTT_publish(const char * topic, String str){
|
||||||
char * buff = new char[str.length() + 1];
|
// char * buff = new char[str.length() + 1];
|
||||||
str.toCharArray(buff, str.length() + 1);
|
// str.toCharArray(buff, str.length() + 1);
|
||||||
MQTT_publish(topic, buff);
|
MQTT_publish(topic, str.c_str());
|
||||||
delete buff;
|
// delete buff;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MQTT_publish(const char * topic, const char * msg){
|
void MQTT_publish(const char * topic, const char * msg){
|
||||||
|
Serial.printf("MQTT_publish(%s, %s)\n", topic, msg);
|
||||||
client.publish(topic, msg);
|
client.publish(topic, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
void (*pCallback)(uint8_t *, unsigned int) = NULL;
|
void MQTT_subscribe(char * topic, mqtt_callback callback){
|
||||||
|
|
||||||
|
|
||||||
void MQTT_subscribe(char * topic, void (*callback)(uint8_t *, unsigned int)){
|
|
||||||
Serial.println("MQTT_subscribe");
|
Serial.println("MQTT_subscribe");
|
||||||
|
|
||||||
Serial.printf("Topic: [%s]\n", topic);
|
Serial.printf("Topic: [%s]\n", topic);
|
||||||
@@ -81,21 +86,22 @@ void MQTT_callback(char* topic, uint8_t * payload, unsigned int length){
|
|||||||
|
|
||||||
void MQTT_setup(){
|
void MQTT_setup(){
|
||||||
|
|
||||||
Serial.println("MQTT_init");
|
for (int i = 0; i < 17; i = i + 8) {
|
||||||
|
chipId |= ((ESP.getEfuseMac() >> (40 - i)) & 0xff) << i;
|
||||||
|
}
|
||||||
|
|
||||||
|
Serial.printf("MQTT_init: %06x\n", chipId);
|
||||||
|
|
||||||
client.setServer(mqtt_server, String(mqtt_port).toInt());
|
client.setServer(mqtt_server, String(mqtt_port).toInt());
|
||||||
client.setCallback(MQTT_callback);
|
client.setCallback(MQTT_callback);
|
||||||
|
|
||||||
// Serial.println("MQTT_init after callback");
|
TaskHandle_t taskMqtt = NULL;
|
||||||
// char buff[256];
|
xTaskCreate(MQTT_loop, "MQTT_loop", 10000, NULL, tskIDLE_PRIORITY, &taskMqtt);
|
||||||
// sprintf(buff, "%08x", _pCallback);
|
|
||||||
// Serial.println(buff);
|
|
||||||
|
|
||||||
connect();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MQTT_loop(){
|
void MQTT_loop(void* params){
|
||||||
|
|
||||||
|
while(true){
|
||||||
#if DEBUG_GENERAL
|
#if DEBUG_GENERAL
|
||||||
Serial.println("MQTT_loop()");
|
Serial.println("MQTT_loop()");
|
||||||
#endif
|
#endif
|
||||||
@@ -106,14 +112,18 @@ void MQTT_loop(){
|
|||||||
connect();
|
connect();
|
||||||
|
|
||||||
if(client.connected()){
|
if(client.connected()){
|
||||||
Serial.println("MQTT: succes!");
|
Serial.println("MQTT: success!");
|
||||||
|
for (auto channel = channels->begin(); channel != channels->end(); ++channel){
|
||||||
|
client.subscribe(channel->topic->c_str());
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}else{
|
}else{
|
||||||
Serial.println("MQTT: connection failed, try again in 5 seconds");
|
Serial.println("MQTT: connection failed, try again in 5 seconds");
|
||||||
// Wait 5 seconds before retrying
|
// Wait 5 seconds before retrying
|
||||||
delay(5000);
|
vTaskDelay(5000/portTICK_PERIOD_MS);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
client.loop();
|
client.loop();
|
||||||
|
vTaskDelay(100/portTICK_PERIOD_MS);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
+14
-3
@@ -1,21 +1,32 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
#include "settings.h"
|
#include "config.h"
|
||||||
|
|
||||||
#include "Arduino.h"
|
#include "Arduino.h"
|
||||||
|
|
||||||
|
#include <WiFi.h>
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
|
||||||
|
extern char mqtt_server[40];
|
||||||
|
extern char mqtt_port[6];
|
||||||
|
|
||||||
|
typedef std::function<void(unsigned char *, unsigned int)> mqtt_callback;
|
||||||
|
|
||||||
struct SubscribedChannel {
|
struct SubscribedChannel {
|
||||||
String * topic;
|
String * topic;
|
||||||
void (*callback)(uint8_t *, unsigned int);
|
mqtt_callback callback;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void MQTT_subscribe(char * topic, mqtt_callback callback);
|
||||||
|
|
||||||
|
|
||||||
void MQTT_publish(const char * topic, String str);
|
void MQTT_publish(const char * topic, String str);
|
||||||
void MQTT_publish(const char * topic, const char * msg);
|
void MQTT_publish(const char * topic, const char * msg);
|
||||||
void MQTT_loop();
|
void MQTT_loop(void* params);
|
||||||
void MQTT_setup();
|
void MQTT_setup();
|
||||||
|
|||||||
+44
@@ -0,0 +1,44 @@
|
|||||||
|
#include "OTA.h"
|
||||||
|
|
||||||
|
#include <ArduinoOTA.h>
|
||||||
|
|
||||||
|
void OTA_setup(){
|
||||||
|
ArduinoOTA
|
||||||
|
.onStart([]() {
|
||||||
|
String type;
|
||||||
|
if (ArduinoOTA.getCommand() == U_FLASH) {
|
||||||
|
type = "sketch";
|
||||||
|
} else { // U_SPIFFS
|
||||||
|
type = "filesystem";
|
||||||
|
}
|
||||||
|
|
||||||
|
// NOTE: if updating SPIFFS this would be the place to unmount SPIFFS using SPIFFS.end()
|
||||||
|
Serial.println("Start updating " + type);
|
||||||
|
})
|
||||||
|
.onEnd([]() {
|
||||||
|
Serial.println("\nEnd");
|
||||||
|
})
|
||||||
|
.onProgress([](unsigned int progress, unsigned int total) {
|
||||||
|
Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
|
||||||
|
})
|
||||||
|
.onError([](ota_error_t error) {
|
||||||
|
Serial.printf("Error[%u]: ", error);
|
||||||
|
if (error == OTA_AUTH_ERROR) {
|
||||||
|
Serial.println("Auth Failed");
|
||||||
|
} else if (error == OTA_BEGIN_ERROR) {
|
||||||
|
Serial.println("Begin Failed");
|
||||||
|
} else if (error == OTA_CONNECT_ERROR) {
|
||||||
|
Serial.println("Connect Failed");
|
||||||
|
} else if (error == OTA_RECEIVE_ERROR) {
|
||||||
|
Serial.println("Receive Failed");
|
||||||
|
} else if (error == OTA_END_ERROR) {
|
||||||
|
Serial.println("End Failed");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
ArduinoOTA.begin();
|
||||||
|
}
|
||||||
|
|
||||||
|
void OTA_loop(){
|
||||||
|
ArduinoOTA.handle();
|
||||||
|
}
|
||||||
@@ -1,2 +1,5 @@
|
|||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
void PinFinder_setup();
|
void PinFinder_setup();
|
||||||
void PinFinder_loop();
|
void PinFinder_loop();
|
||||||
+20
-11
@@ -1,10 +1,6 @@
|
|||||||
#ifdef ENABLE_WIFI
|
|
||||||
|
|
||||||
#include <ESP8266WiFi.h>
|
|
||||||
|
|
||||||
#include <ESPAsync_WiFiManager.h>
|
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
|
|
||||||
|
#include <WiFi.h>
|
||||||
#include "WifiSettings.h"
|
#include "WifiSettings.h"
|
||||||
|
|
||||||
|
|
||||||
@@ -24,15 +20,21 @@ void Wifi_setup_softap(){
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Wifi_setup(){
|
void Wifi_loop(void* params){
|
||||||
|
Serial.println("Wifi_setup()");
|
||||||
WiFi.mode(WIFI_STA);
|
WiFi.mode(WIFI_STA);
|
||||||
//TODO:
|
//TODO:
|
||||||
WiFi.begin(WIFI_ESSID, WIFI_PASSWORD);
|
WiFi.begin(WIFI_ESSID, WIFI_PASSWORD);
|
||||||
|
|
||||||
while (WiFi.status() != WL_CONNECTED) {
|
while (true)
|
||||||
delay(500);
|
{
|
||||||
Serial.print(".");
|
while (WiFi.status() != WL_CONNECTED)
|
||||||
|
{
|
||||||
|
Serial.println("Wifi waiting...");
|
||||||
|
vTaskDelay(5000 / portTICK_PERIOD_MS);
|
||||||
|
if(WiFi.status() != WL_CONNECTED){
|
||||||
|
WiFi.reconnect();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Serial.println("");
|
Serial.println("");
|
||||||
@@ -40,6 +42,13 @@ void Wifi_setup(){
|
|||||||
Serial.println("IP address: ");
|
Serial.println("IP address: ");
|
||||||
Serial.println(WiFi.localIP());
|
Serial.println(WiFi.localIP());
|
||||||
|
|
||||||
|
vTaskDelay(60*1000 / portTICK_PERIOD_MS);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
void Wifi_setup(){
|
||||||
|
|
||||||
|
TaskHandle_t taskWifi = NULL;
|
||||||
|
xTaskCreate(Wifi_loop, "Wifi_loop", 10000, NULL, tskIDLE_PRIORITY, &taskWifi);
|
||||||
|
|
||||||
|
}
|
||||||
+1
-1
@@ -1,3 +1,3 @@
|
|||||||
|
#include "config.h"
|
||||||
|
|
||||||
void Wifi_setup();
|
void Wifi_setup();
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#define INCLUDE_LED
|
||||||
|
#define ENABLE_MQTT
|
||||||
|
#define ENABLE_OTA
|
||||||
|
#define ENABLE_WIFI
|
||||||
|
// #define ENABLE_FS
|
||||||
|
// #define ENABLE_PINFINDER
|
||||||
|
#define ENABLE_COLORS
|
||||||
|
// #define ENABLE_PIN_SENSING
|
||||||
|
#define ENABLE_CONTROLS
|
||||||
|
|
||||||
+188
@@ -0,0 +1,188 @@
|
|||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#ifdef INCLUDE_LED
|
||||||
|
#include "Led.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
|
||||||
|
#define _TASK_SLEEP_ON_IDLE_RUN // Enable 1 ms SLEEP_IDLE powerdowns between runs if no callback methods were invoked during the pass
|
||||||
|
#define _TASK_STATUS_REQUEST // Compile with support for StatusRequest functionality - triggering tasks on status change events in addition to time only
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef ENABLE_WIFI
|
||||||
|
#include "Wifi.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef ENABLE_OTA
|
||||||
|
#include "OTA.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef ENABLE_MQTT
|
||||||
|
#include "MQTT.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef ENABLE_FS
|
||||||
|
#include "FS.h"
|
||||||
|
#include <LittleFS.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef ENABLE_PINFINDER
|
||||||
|
#include "PinFinder.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef ENABLE_CONTROLS
|
||||||
|
#include "Controls.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "Hanglamp.hpp"
|
||||||
|
|
||||||
|
Hanglamp hanglamp;
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef ENABLE_CONTROLS
|
||||||
|
|
||||||
|
void controlsCallback(ControlEvent event){
|
||||||
|
hanglamp.controlsCallback(event);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef ENABLE_LED
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
|
||||||
|
Serial.begin(115200);
|
||||||
|
|
||||||
|
Serial.println("Waiting...");
|
||||||
|
delay(1500);
|
||||||
|
Serial.println("That's long enough.");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef ENABLE_PIN_SENSING
|
||||||
|
for(int i=0; i<sizeof(sensePins)/sizeof(gpio_num_t); i++){
|
||||||
|
auto pin = sensePins[i];
|
||||||
|
Serial.printf("Setting pin %d to input\n", pin);
|
||||||
|
// gpio_reset_pin(pin);
|
||||||
|
pinMode(pin, INPUT);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef ENABLE_FS
|
||||||
|
if(!LittleFS.begin()){
|
||||||
|
Serial.println("LittleFS Mount Failed");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef ENABLE_PINFINDER
|
||||||
|
PinFinder_setup();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef ENABLE_CONTROLS
|
||||||
|
Controls_setup();
|
||||||
|
|
||||||
|
Controls_handler(controlsCallback);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef INCLUDE_LED
|
||||||
|
Led_setup();
|
||||||
|
|
||||||
|
FastLED.setBrightness(128);
|
||||||
|
|
||||||
|
|
||||||
|
hanglamp.status(CRGB(0xFF00FF));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
hanglamp.setup();
|
||||||
|
|
||||||
|
#ifdef ENABLE_WIFI
|
||||||
|
Wifi_setup();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef INCLUDE_LED
|
||||||
|
hanglamp.status(CRGB(0x00FFFF));
|
||||||
|
|
||||||
|
hanglamp.status(CRGB(0x000000));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef ENABLE_MQTT
|
||||||
|
MQTT_setup();
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_OTA
|
||||||
|
OTA_setup();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef INCLUDE_LED
|
||||||
|
hanglamp.status(CRGB(0x00FFFF));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
delay(1000);
|
||||||
|
|
||||||
|
hanglamp.status(CRGB::Black);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
|
||||||
|
#ifdef ENABLE_OTA
|
||||||
|
OTA_loop();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef ENABLE_PINFINDER
|
||||||
|
PinFinder_loop();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
delay(1000);
|
||||||
|
|
||||||
|
String command;
|
||||||
|
|
||||||
|
while(Serial.available()) {
|
||||||
|
|
||||||
|
command = Serial.readString();// read the incoming data as string
|
||||||
|
|
||||||
|
Serial.print("Have command: ");
|
||||||
|
Serial.println(command);
|
||||||
|
|
||||||
|
int index = command.indexOf(":");
|
||||||
|
if(index >= 0){
|
||||||
|
String name = command.substring(0, index);
|
||||||
|
Serial.print("Have command name: ");
|
||||||
|
Serial.println(name);
|
||||||
|
|
||||||
|
#ifdef INCLUDE_LED
|
||||||
|
if(name.equals("c")){
|
||||||
|
//c:0xff4000
|
||||||
|
//c:0xff0000
|
||||||
|
//c:0x00ff00
|
||||||
|
//c:0x0000ff
|
||||||
|
String color = command.substring(index+1);
|
||||||
|
if(color.startsWith("0x")){
|
||||||
|
color = color.substring(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
int value = strtol(color.c_str(), NULL, 16);
|
||||||
|
|
||||||
|
CRGB target;
|
||||||
|
target.r = (value >> 16) & 0xFF;
|
||||||
|
target.g = (value >> 8) & 0xFF;
|
||||||
|
target.b = (value >> 0) & 0xFF;
|
||||||
|
|
||||||
|
hanglamp.setColor(target);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
#ifndef SETTINGS_H
|
|
||||||
#define SETTINGS_H
|
|
||||||
|
|
||||||
extern char mqtt_server[40];
|
|
||||||
extern char mqtt_port[6];
|
|
||||||
|
|
||||||
#endif
|
|
||||||
Reference in New Issue
Block a user