Add poweroff function & status LED. Include 3D files for Seeed XIAO

This commit is contained in:
Matt
2025-12-13 17:38:18 +00:00
parent c762e0d632
commit 00c3c85c67
6 changed files with 4258 additions and 118 deletions

661
3D/Base.step Normal file
View File

@@ -0,0 +1,661 @@
ISO-10303-21;
HEADER;
/* Generated by software containing ST-Developer
* from STEP Tools, Inc. (www.steptools.com)
*/
FILE_DESCRIPTION(
/* description */ (''),
/* implementation_level */ '2;1');
FILE_NAME(
/* name */ 'Base.step',
/* time_stamp */ '2025-12-13T15:33:07Z',
/* author */ (''),
/* organization */ (''),
/* preprocessor_version */ 'ST-DEVELOPER v20.1',
/* originating_system */ 'Autodesk Translation Framework v14.21.0.0',
/* authorisation */ '');
FILE_SCHEMA (('AUTOMOTIVE_DESIGN { 1 0 10303 214 3 1 1 }'));
ENDSEC;
DATA;
#10=MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#13),#583);
#11=SHAPE_REPRESENTATION_RELATIONSHIP('SRR','None',#590,#12);
#12=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#14),#582);
#13=STYLED_ITEM('',(#599),#14);
#14=MANIFOLD_SOLID_BREP('Body3',#355);
#15=PLANE('',#375);
#16=PLANE('',#376);
#17=PLANE('',#377);
#18=PLANE('',#378);
#19=PLANE('',#379);
#20=PLANE('',#380);
#21=PLANE('',#381);
#22=PLANE('',#382);
#23=PLANE('',#383);
#24=PLANE('',#384);
#25=PLANE('',#385);
#26=PLANE('',#386);
#27=PLANE('',#387);
#28=PLANE('',#388);
#29=PLANE('',#389);
#30=PLANE('',#390);
#31=FACE_OUTER_BOUND('',#49,.T.);
#32=FACE_OUTER_BOUND('',#50,.T.);
#33=FACE_OUTER_BOUND('',#51,.T.);
#34=FACE_OUTER_BOUND('',#52,.T.);
#35=FACE_OUTER_BOUND('',#53,.T.);
#36=FACE_OUTER_BOUND('',#54,.T.);
#37=FACE_OUTER_BOUND('',#55,.T.);
#38=FACE_OUTER_BOUND('',#56,.T.);
#39=FACE_OUTER_BOUND('',#57,.T.);
#40=FACE_OUTER_BOUND('',#58,.T.);
#41=FACE_OUTER_BOUND('',#59,.T.);
#42=FACE_OUTER_BOUND('',#60,.T.);
#43=FACE_OUTER_BOUND('',#61,.T.);
#44=FACE_OUTER_BOUND('',#62,.T.);
#45=FACE_OUTER_BOUND('',#63,.T.);
#46=FACE_OUTER_BOUND('',#64,.T.);
#47=FACE_OUTER_BOUND('',#65,.T.);
#48=FACE_OUTER_BOUND('',#66,.T.);
#49=EDGE_LOOP('',(#239,#240,#241,#242));
#50=EDGE_LOOP('',(#243,#244,#245,#246));
#51=EDGE_LOOP('',(#247,#248,#249,#250));
#52=EDGE_LOOP('',(#251,#252,#253,#254,#255,#256,#257,#258));
#53=EDGE_LOOP('',(#259,#260,#261,#262,#263,#264,#265,#266));
#54=EDGE_LOOP('',(#267,#268,#269,#270,#271,#272,#273,#274));
#55=EDGE_LOOP('',(#275,#276,#277,#278));
#56=EDGE_LOOP('',(#279,#280,#281,#282));
#57=EDGE_LOOP('',(#283,#284,#285,#286));
#58=EDGE_LOOP('',(#287,#288,#289,#290,#291,#292,#293,#294));
#59=EDGE_LOOP('',(#295,#296,#297,#298));
#60=EDGE_LOOP('',(#299,#300,#301,#302));
#61=EDGE_LOOP('',(#303,#304,#305,#306,#307,#308,#309,#310));
#62=EDGE_LOOP('',(#311,#312,#313,#314));
#63=EDGE_LOOP('',(#315,#316,#317,#318));
#64=EDGE_LOOP('',(#319,#320,#321,#322));
#65=EDGE_LOOP('',(#323,#324,#325,#326,#327,#328,#329,#330));
#66=EDGE_LOOP('',(#331,#332,#333,#334));
#67=LINE('',#487,#111);
#68=LINE('',#490,#112);
#69=LINE('',#496,#113);
#70=LINE('',#499,#114);
#71=LINE('',#501,#115);
#72=LINE('',#502,#116);
#73=LINE('',#505,#117);
#74=LINE('',#507,#118);
#75=LINE('',#509,#119);
#76=LINE('',#511,#120);
#77=LINE('',#513,#121);
#78=LINE('',#515,#122);
#79=LINE('',#516,#123);
#80=LINE('',#519,#124);
#81=LINE('',#521,#125);
#82=LINE('',#523,#126);
#83=LINE('',#525,#127);
#84=LINE('',#527,#128);
#85=LINE('',#529,#129);
#86=LINE('',#530,#130);
#87=LINE('',#533,#131);
#88=LINE('',#535,#132);
#89=LINE('',#536,#133);
#90=LINE('',#539,#134);
#91=LINE('',#541,#135);
#92=LINE('',#542,#136);
#93=LINE('',#545,#137);
#94=LINE('',#547,#138);
#95=LINE('',#548,#139);
#96=LINE('',#550,#140);
#97=LINE('',#551,#141);
#98=LINE('',#554,#142);
#99=LINE('',#556,#143);
#100=LINE('',#557,#144);
#101=LINE('',#561,#145);
#102=LINE('',#562,#146);
#103=LINE('',#563,#147);
#104=LINE('',#566,#148);
#105=LINE('',#568,#149);
#106=LINE('',#569,#150);
#107=LINE('',#571,#151);
#108=LINE('',#572,#152);
#109=LINE('',#576,#153);
#110=LINE('',#578,#154);
#111=VECTOR('',#397,10.);
#112=VECTOR('',#400,10.);
#113=VECTOR('',#405,10.);
#114=VECTOR('',#408,10.);
#115=VECTOR('',#411,10.);
#116=VECTOR('',#412,10.);
#117=VECTOR('',#415,10.);
#118=VECTOR('',#416,10.);
#119=VECTOR('',#417,10.);
#120=VECTOR('',#418,10.);
#121=VECTOR('',#419,10.);
#122=VECTOR('',#420,10.);
#123=VECTOR('',#421,10.);
#124=VECTOR('',#424,10.);
#125=VECTOR('',#425,10.);
#126=VECTOR('',#426,10.);
#127=VECTOR('',#427,10.);
#128=VECTOR('',#428,10.);
#129=VECTOR('',#429,10.);
#130=VECTOR('',#430,10.);
#131=VECTOR('',#433,10.);
#132=VECTOR('',#434,10.);
#133=VECTOR('',#435,10.);
#134=VECTOR('',#438,10.);
#135=VECTOR('',#439,10.);
#136=VECTOR('',#440,10.);
#137=VECTOR('',#443,10.);
#138=VECTOR('',#444,10.);
#139=VECTOR('',#445,10.);
#140=VECTOR('',#448,10.);
#141=VECTOR('',#449,10.);
#142=VECTOR('',#452,10.);
#143=VECTOR('',#453,10.);
#144=VECTOR('',#454,10.);
#145=VECTOR('',#457,10.);
#146=VECTOR('',#458,10.);
#147=VECTOR('',#459,10.);
#148=VECTOR('',#462,10.);
#149=VECTOR('',#463,10.);
#150=VECTOR('',#464,10.);
#151=VECTOR('',#467,10.);
#152=VECTOR('',#468,10.);
#153=VECTOR('',#475,10.);
#154=VECTOR('',#478,10.);
#155=CIRCLE('',#370,1.45);
#156=CIRCLE('',#371,1.45);
#157=CIRCLE('',#373,1.45);
#158=CIRCLE('',#374,1.45);
#159=VERTEX_POINT('',#483);
#160=VERTEX_POINT('',#484);
#161=VERTEX_POINT('',#486);
#162=VERTEX_POINT('',#488);
#163=VERTEX_POINT('',#492);
#164=VERTEX_POINT('',#493);
#165=VERTEX_POINT('',#495);
#166=VERTEX_POINT('',#497);
#167=VERTEX_POINT('',#504);
#168=VERTEX_POINT('',#506);
#169=VERTEX_POINT('',#508);
#170=VERTEX_POINT('',#510);
#171=VERTEX_POINT('',#512);
#172=VERTEX_POINT('',#514);
#173=VERTEX_POINT('',#518);
#174=VERTEX_POINT('',#520);
#175=VERTEX_POINT('',#522);
#176=VERTEX_POINT('',#524);
#177=VERTEX_POINT('',#526);
#178=VERTEX_POINT('',#528);
#179=VERTEX_POINT('',#532);
#180=VERTEX_POINT('',#534);
#181=VERTEX_POINT('',#538);
#182=VERTEX_POINT('',#540);
#183=VERTEX_POINT('',#544);
#184=VERTEX_POINT('',#546);
#185=VERTEX_POINT('',#553);
#186=VERTEX_POINT('',#555);
#187=VERTEX_POINT('',#559);
#188=VERTEX_POINT('',#560);
#189=VERTEX_POINT('',#565);
#190=VERTEX_POINT('',#567);
#191=EDGE_CURVE('',#159,#160,#155,.T.);
#192=EDGE_CURVE('',#161,#159,#67,.T.);
#193=EDGE_CURVE('',#162,#161,#156,.T.);
#194=EDGE_CURVE('',#160,#162,#68,.T.);
#195=EDGE_CURVE('',#163,#164,#157,.T.);
#196=EDGE_CURVE('',#165,#163,#69,.T.);
#197=EDGE_CURVE('',#166,#165,#158,.T.);
#198=EDGE_CURVE('',#166,#164,#70,.T.);
#199=EDGE_CURVE('',#164,#159,#71,.T.);
#200=EDGE_CURVE('',#161,#166,#72,.T.);
#201=EDGE_CURVE('',#163,#167,#73,.T.);
#202=EDGE_CURVE('',#167,#168,#74,.T.);
#203=EDGE_CURVE('',#168,#169,#75,.T.);
#204=EDGE_CURVE('',#169,#170,#76,.T.);
#205=EDGE_CURVE('',#170,#171,#77,.T.);
#206=EDGE_CURVE('',#171,#172,#78,.T.);
#207=EDGE_CURVE('',#172,#165,#79,.T.);
#208=EDGE_CURVE('',#162,#173,#80,.T.);
#209=EDGE_CURVE('',#173,#174,#81,.T.);
#210=EDGE_CURVE('',#174,#175,#82,.T.);
#211=EDGE_CURVE('',#175,#176,#83,.T.);
#212=EDGE_CURVE('',#176,#177,#84,.T.);
#213=EDGE_CURVE('',#177,#178,#85,.T.);
#214=EDGE_CURVE('',#178,#160,#86,.T.);
#215=EDGE_CURVE('',#172,#179,#87,.T.);
#216=EDGE_CURVE('',#180,#179,#88,.T.);
#217=EDGE_CURVE('',#173,#180,#89,.T.);
#218=EDGE_CURVE('',#170,#181,#90,.T.);
#219=EDGE_CURVE('',#182,#169,#91,.T.);
#220=EDGE_CURVE('',#182,#181,#92,.T.);
#221=EDGE_CURVE('',#181,#183,#93,.T.);
#222=EDGE_CURVE('',#184,#182,#94,.T.);
#223=EDGE_CURVE('',#184,#183,#95,.T.);
#224=EDGE_CURVE('',#183,#175,#96,.T.);
#225=EDGE_CURVE('',#176,#184,#97,.T.);
#226=EDGE_CURVE('',#168,#185,#98,.T.);
#227=EDGE_CURVE('',#186,#185,#99,.T.);
#228=EDGE_CURVE('',#177,#186,#100,.T.);
#229=EDGE_CURVE('',#187,#188,#101,.T.);
#230=EDGE_CURVE('',#188,#186,#102,.T.);
#231=EDGE_CURVE('',#185,#187,#103,.T.);
#232=EDGE_CURVE('',#179,#189,#104,.T.);
#233=EDGE_CURVE('',#189,#190,#105,.T.);
#234=EDGE_CURVE('',#190,#180,#106,.T.);
#235=EDGE_CURVE('',#178,#188,#107,.T.);
#236=EDGE_CURVE('',#167,#187,#108,.T.);
#237=EDGE_CURVE('',#174,#190,#109,.T.);
#238=EDGE_CURVE('',#171,#189,#110,.T.);
#239=ORIENTED_EDGE('',*,*,#191,.F.);
#240=ORIENTED_EDGE('',*,*,#192,.F.);
#241=ORIENTED_EDGE('',*,*,#193,.F.);
#242=ORIENTED_EDGE('',*,*,#194,.F.);
#243=ORIENTED_EDGE('',*,*,#195,.F.);
#244=ORIENTED_EDGE('',*,*,#196,.F.);
#245=ORIENTED_EDGE('',*,*,#197,.F.);
#246=ORIENTED_EDGE('',*,*,#198,.T.);
#247=ORIENTED_EDGE('',*,*,#199,.F.);
#248=ORIENTED_EDGE('',*,*,#198,.F.);
#249=ORIENTED_EDGE('',*,*,#200,.F.);
#250=ORIENTED_EDGE('',*,*,#192,.T.);
#251=ORIENTED_EDGE('',*,*,#196,.T.);
#252=ORIENTED_EDGE('',*,*,#201,.T.);
#253=ORIENTED_EDGE('',*,*,#202,.T.);
#254=ORIENTED_EDGE('',*,*,#203,.T.);
#255=ORIENTED_EDGE('',*,*,#204,.T.);
#256=ORIENTED_EDGE('',*,*,#205,.T.);
#257=ORIENTED_EDGE('',*,*,#206,.T.);
#258=ORIENTED_EDGE('',*,*,#207,.T.);
#259=ORIENTED_EDGE('',*,*,#194,.T.);
#260=ORIENTED_EDGE('',*,*,#208,.T.);
#261=ORIENTED_EDGE('',*,*,#209,.T.);
#262=ORIENTED_EDGE('',*,*,#210,.T.);
#263=ORIENTED_EDGE('',*,*,#211,.T.);
#264=ORIENTED_EDGE('',*,*,#212,.T.);
#265=ORIENTED_EDGE('',*,*,#213,.T.);
#266=ORIENTED_EDGE('',*,*,#214,.T.);
#267=ORIENTED_EDGE('',*,*,#193,.T.);
#268=ORIENTED_EDGE('',*,*,#200,.T.);
#269=ORIENTED_EDGE('',*,*,#197,.T.);
#270=ORIENTED_EDGE('',*,*,#207,.F.);
#271=ORIENTED_EDGE('',*,*,#215,.T.);
#272=ORIENTED_EDGE('',*,*,#216,.F.);
#273=ORIENTED_EDGE('',*,*,#217,.F.);
#274=ORIENTED_EDGE('',*,*,#208,.F.);
#275=ORIENTED_EDGE('',*,*,#218,.F.);
#276=ORIENTED_EDGE('',*,*,#204,.F.);
#277=ORIENTED_EDGE('',*,*,#219,.F.);
#278=ORIENTED_EDGE('',*,*,#220,.T.);
#279=ORIENTED_EDGE('',*,*,#221,.F.);
#280=ORIENTED_EDGE('',*,*,#220,.F.);
#281=ORIENTED_EDGE('',*,*,#222,.F.);
#282=ORIENTED_EDGE('',*,*,#223,.T.);
#283=ORIENTED_EDGE('',*,*,#224,.F.);
#284=ORIENTED_EDGE('',*,*,#223,.F.);
#285=ORIENTED_EDGE('',*,*,#225,.F.);
#286=ORIENTED_EDGE('',*,*,#211,.F.);
#287=ORIENTED_EDGE('',*,*,#225,.T.);
#288=ORIENTED_EDGE('',*,*,#222,.T.);
#289=ORIENTED_EDGE('',*,*,#219,.T.);
#290=ORIENTED_EDGE('',*,*,#203,.F.);
#291=ORIENTED_EDGE('',*,*,#226,.T.);
#292=ORIENTED_EDGE('',*,*,#227,.F.);
#293=ORIENTED_EDGE('',*,*,#228,.F.);
#294=ORIENTED_EDGE('',*,*,#212,.F.);
#295=ORIENTED_EDGE('',*,*,#229,.T.);
#296=ORIENTED_EDGE('',*,*,#230,.T.);
#297=ORIENTED_EDGE('',*,*,#227,.T.);
#298=ORIENTED_EDGE('',*,*,#231,.T.);
#299=ORIENTED_EDGE('',*,*,#232,.T.);
#300=ORIENTED_EDGE('',*,*,#233,.T.);
#301=ORIENTED_EDGE('',*,*,#234,.T.);
#302=ORIENTED_EDGE('',*,*,#216,.T.);
#303=ORIENTED_EDGE('',*,*,#191,.T.);
#304=ORIENTED_EDGE('',*,*,#214,.F.);
#305=ORIENTED_EDGE('',*,*,#235,.T.);
#306=ORIENTED_EDGE('',*,*,#229,.F.);
#307=ORIENTED_EDGE('',*,*,#236,.F.);
#308=ORIENTED_EDGE('',*,*,#201,.F.);
#309=ORIENTED_EDGE('',*,*,#195,.T.);
#310=ORIENTED_EDGE('',*,*,#199,.T.);
#311=ORIENTED_EDGE('',*,*,#202,.F.);
#312=ORIENTED_EDGE('',*,*,#236,.T.);
#313=ORIENTED_EDGE('',*,*,#231,.F.);
#314=ORIENTED_EDGE('',*,*,#226,.F.);
#315=ORIENTED_EDGE('',*,*,#213,.F.);
#316=ORIENTED_EDGE('',*,*,#228,.T.);
#317=ORIENTED_EDGE('',*,*,#230,.F.);
#318=ORIENTED_EDGE('',*,*,#235,.F.);
#319=ORIENTED_EDGE('',*,*,#209,.F.);
#320=ORIENTED_EDGE('',*,*,#217,.T.);
#321=ORIENTED_EDGE('',*,*,#234,.F.);
#322=ORIENTED_EDGE('',*,*,#237,.F.);
#323=ORIENTED_EDGE('',*,*,#224,.T.);
#324=ORIENTED_EDGE('',*,*,#210,.F.);
#325=ORIENTED_EDGE('',*,*,#237,.T.);
#326=ORIENTED_EDGE('',*,*,#233,.F.);
#327=ORIENTED_EDGE('',*,*,#238,.F.);
#328=ORIENTED_EDGE('',*,*,#205,.F.);
#329=ORIENTED_EDGE('',*,*,#218,.T.);
#330=ORIENTED_EDGE('',*,*,#221,.T.);
#331=ORIENTED_EDGE('',*,*,#206,.F.);
#332=ORIENTED_EDGE('',*,*,#238,.T.);
#333=ORIENTED_EDGE('',*,*,#232,.F.);
#334=ORIENTED_EDGE('',*,*,#215,.F.);
#335=CYLINDRICAL_SURFACE('',#369,1.45);
#336=CYLINDRICAL_SURFACE('',#372,1.45);
#337=ADVANCED_FACE('',(#31),#335,.F.);
#338=ADVANCED_FACE('',(#32),#336,.F.);
#339=ADVANCED_FACE('',(#33),#15,.F.);
#340=ADVANCED_FACE('',(#34),#16,.F.);
#341=ADVANCED_FACE('',(#35),#17,.F.);
#342=ADVANCED_FACE('',(#36),#18,.T.);
#343=ADVANCED_FACE('',(#37),#19,.F.);
#344=ADVANCED_FACE('',(#38),#20,.F.);
#345=ADVANCED_FACE('',(#39),#21,.F.);
#346=ADVANCED_FACE('',(#40),#22,.T.);
#347=ADVANCED_FACE('',(#41),#23,.F.);
#348=ADVANCED_FACE('',(#42),#24,.T.);
#349=ADVANCED_FACE('',(#43),#25,.T.);
#350=ADVANCED_FACE('',(#44),#26,.T.);
#351=ADVANCED_FACE('',(#45),#27,.T.);
#352=ADVANCED_FACE('',(#46),#28,.T.);
#353=ADVANCED_FACE('',(#47),#29,.T.);
#354=ADVANCED_FACE('',(#48),#30,.T.);
#355=CLOSED_SHELL('',(#337,#338,#339,#340,#341,#342,#343,#344,#345,#346,
#347,#348,#349,#350,#351,#352,#353,#354));
#356=DERIVED_UNIT_ELEMENT(#358,1.);
#357=DERIVED_UNIT_ELEMENT(#585,-3.);
#358=(
MASS_UNIT()
NAMED_UNIT(*)
SI_UNIT(.KILO.,.GRAM.)
);
#359=DERIVED_UNIT((#356,#357));
#360=MEASURE_REPRESENTATION_ITEM('density measure',
POSITIVE_RATIO_MEASURE(7850.),#359);
#361=PROPERTY_DEFINITION_REPRESENTATION(#366,#363);
#362=PROPERTY_DEFINITION_REPRESENTATION(#367,#364);
#363=REPRESENTATION('material name',(#365),#582);
#364=REPRESENTATION('density',(#360),#582);
#365=DESCRIPTIVE_REPRESENTATION_ITEM('Steel','Steel');
#366=PROPERTY_DEFINITION('material property','material name',#592);
#367=PROPERTY_DEFINITION('material property','density of part',#592);
#368=AXIS2_PLACEMENT_3D('',#481,#391,#392);
#369=AXIS2_PLACEMENT_3D('',#482,#393,#394);
#370=AXIS2_PLACEMENT_3D('',#485,#395,#396);
#371=AXIS2_PLACEMENT_3D('',#489,#398,#399);
#372=AXIS2_PLACEMENT_3D('',#491,#401,#402);
#373=AXIS2_PLACEMENT_3D('',#494,#403,#404);
#374=AXIS2_PLACEMENT_3D('',#498,#406,#407);
#375=AXIS2_PLACEMENT_3D('',#500,#409,#410);
#376=AXIS2_PLACEMENT_3D('',#503,#413,#414);
#377=AXIS2_PLACEMENT_3D('',#517,#422,#423);
#378=AXIS2_PLACEMENT_3D('',#531,#431,#432);
#379=AXIS2_PLACEMENT_3D('',#537,#436,#437);
#380=AXIS2_PLACEMENT_3D('',#543,#441,#442);
#381=AXIS2_PLACEMENT_3D('',#549,#446,#447);
#382=AXIS2_PLACEMENT_3D('',#552,#450,#451);
#383=AXIS2_PLACEMENT_3D('',#558,#455,#456);
#384=AXIS2_PLACEMENT_3D('',#564,#460,#461);
#385=AXIS2_PLACEMENT_3D('',#570,#465,#466);
#386=AXIS2_PLACEMENT_3D('',#573,#469,#470);
#387=AXIS2_PLACEMENT_3D('',#574,#471,#472);
#388=AXIS2_PLACEMENT_3D('',#575,#473,#474);
#389=AXIS2_PLACEMENT_3D('',#577,#476,#477);
#390=AXIS2_PLACEMENT_3D('',#579,#479,#480);
#391=DIRECTION('axis',(0.,0.,1.));
#392=DIRECTION('refdir',(1.,0.,0.));
#393=DIRECTION('center_axis',(-1.,0.,0.));
#394=DIRECTION('ref_axis',(0.,1.,7.65671051465626E-16));
#395=DIRECTION('center_axis',(1.,0.,0.));
#396=DIRECTION('ref_axis',(0.,1.,7.65671051465626E-16));
#397=DIRECTION('',(-1.,0.,0.));
#398=DIRECTION('center_axis',(-1.,0.,5.18795807615523E-17));
#399=DIRECTION('ref_axis',(0.,1.,7.65671051465626E-16));
#400=DIRECTION('',(1.,0.,0.));
#401=DIRECTION('center_axis',(-1.,0.,0.));
#402=DIRECTION('ref_axis',(0.,7.65671051465626E-16,-1.));
#403=DIRECTION('center_axis',(1.,0.,0.));
#404=DIRECTION('ref_axis',(0.,7.65671051465626E-16,-1.));
#405=DIRECTION('',(-1.,0.,0.));
#406=DIRECTION('center_axis',(-1.,0.,5.18795807615523E-17));
#407=DIRECTION('ref_axis',(0.,7.65671051465626E-16,-1.));
#408=DIRECTION('',(-1.,0.,0.));
#409=DIRECTION('center_axis',(0.,1.,1.03436927760108E-15));
#410=DIRECTION('ref_axis',(-1.04646628663102E-32,1.03436927760108E-15,-1.));
#411=DIRECTION('',(0.,-1.03436927760108E-15,1.));
#412=DIRECTION('',(-5.18795807615523E-17,1.03436927760108E-15,-1.));
#413=DIRECTION('center_axis',(0.,1.,0.));
#414=DIRECTION('ref_axis',(0.,0.,1.));
#415=DIRECTION('',(0.,0.,-1.));
#416=DIRECTION('',(-1.,0.,0.));
#417=DIRECTION('',(0.,0.,1.));
#418=DIRECTION('',(-1.,0.,0.));
#419=DIRECTION('',(0.,0.,-1.));
#420=DIRECTION('',(1.,0.,0.));
#421=DIRECTION('',(5.18795807615523E-17,0.,1.));
#422=DIRECTION('center_axis',(0.,1.,0.));
#423=DIRECTION('ref_axis',(0.,0.,1.));
#424=DIRECTION('',(5.18795807615523E-17,0.,1.));
#425=DIRECTION('',(-1.,0.,0.));
#426=DIRECTION('',(0.,0.,-1.));
#427=DIRECTION('',(1.,0.,0.));
#428=DIRECTION('',(0.,0.,1.));
#429=DIRECTION('',(1.,0.,0.));
#430=DIRECTION('',(0.,0.,-1.));
#431=DIRECTION('center_axis',(1.,0.,-5.18795807615523E-17));
#432=DIRECTION('ref_axis',(-5.18795807615523E-17,0.,-1.));
#433=DIRECTION('',(0.,1.,0.));
#434=DIRECTION('',(-5.18795807615523E-17,0.,-1.));
#435=DIRECTION('',(0.,1.,0.));
#436=DIRECTION('center_axis',(0.,0.,-1.));
#437=DIRECTION('ref_axis',(0.,-1.,0.));
#438=DIRECTION('',(0.,1.,0.));
#439=DIRECTION('',(0.,-1.,0.));
#440=DIRECTION('',(-1.,0.,0.));
#441=DIRECTION('center_axis',(0.,1.,0.));
#442=DIRECTION('ref_axis',(0.,0.,-1.));
#443=DIRECTION('',(0.,0.,1.));
#444=DIRECTION('',(0.,0.,-1.));
#445=DIRECTION('',(-1.,0.,0.));
#446=DIRECTION('center_axis',(0.,0.,1.));
#447=DIRECTION('ref_axis',(0.,1.,0.));
#448=DIRECTION('',(0.,-1.,0.));
#449=DIRECTION('',(0.,1.,0.));
#450=DIRECTION('center_axis',(1.,0.,0.));
#451=DIRECTION('ref_axis',(0.,0.,-1.));
#452=DIRECTION('',(0.,1.,0.));
#453=DIRECTION('',(0.,0.,-1.));
#454=DIRECTION('',(0.,1.,0.));
#455=DIRECTION('center_axis',(0.,1.,0.));
#456=DIRECTION('ref_axis',(0.,0.,1.));
#457=DIRECTION('',(0.,0.,1.));
#458=DIRECTION('',(-1.,0.,0.));
#459=DIRECTION('',(1.,0.,0.));
#460=DIRECTION('center_axis',(0.,1.,0.));
#461=DIRECTION('ref_axis',(0.,0.,1.));
#462=DIRECTION('',(-1.,0.,0.));
#463=DIRECTION('',(0.,0.,1.));
#464=DIRECTION('',(1.,0.,0.));
#465=DIRECTION('center_axis',(-1.,0.,0.));
#466=DIRECTION('ref_axis',(0.,0.,1.));
#467=DIRECTION('',(0.,1.,0.));
#468=DIRECTION('',(0.,1.,0.));
#469=DIRECTION('center_axis',(0.,0.,1.));
#470=DIRECTION('ref_axis',(1.,0.,0.));
#471=DIRECTION('center_axis',(0.,0.,-1.));
#472=DIRECTION('ref_axis',(-1.,0.,0.));
#473=DIRECTION('center_axis',(0.,0.,1.));
#474=DIRECTION('ref_axis',(1.,0.,0.));
#475=DIRECTION('',(0.,1.,0.));
#476=DIRECTION('center_axis',(-1.,0.,0.));
#477=DIRECTION('ref_axis',(0.,0.,1.));
#478=DIRECTION('',(0.,1.,0.));
#479=DIRECTION('center_axis',(0.,0.,-1.));
#480=DIRECTION('ref_axis',(-1.,0.,0.));
#481=CARTESIAN_POINT('',(0.,0.,0.));
#482=CARTESIAN_POINT('Origin',(1.69999998882413,2.74999998509883,3.23139995541251));
#483=CARTESIAN_POINT('',(0.499999988824129,4.19999998509883,3.23139995541251));
#484=CARTESIAN_POINT('',(0.499999988824129,2.86139135040288,4.67711499086579));
#485=CARTESIAN_POINT('Origin',(0.499999988824129,2.74999998509883,3.23139995541251));
#486=CARTESIAN_POINT('',(1.69999998882413,4.19999998509883,3.23139995541251));
#487=CARTESIAN_POINT('',(1.69999998882413,4.19999998509883,3.23139995541251));
#488=CARTESIAN_POINT('',(1.69999998882413,2.86139135040288,4.67711499086579));
#489=CARTESIAN_POINT('Origin',(1.69999998882413,2.74999998509883,3.23139995541251));
#490=CARTESIAN_POINT('',(1.69999998882413,2.86139135040288,4.67711499086579));
#491=CARTESIAN_POINT('Origin',(1.69999998882413,2.74999998509884,-3.20860004458749));
#492=CARTESIAN_POINT('',(0.499999988824129,2.86139135040288,-4.65431508004078));
#493=CARTESIAN_POINT('',(0.499999988824129,4.19999998509884,-3.20860004458749));
#494=CARTESIAN_POINT('Origin',(0.499999988824129,2.74999998509884,-3.20860004458749));
#495=CARTESIAN_POINT('',(1.69999998882413,2.86139135040288,-4.65431508004078));
#496=CARTESIAN_POINT('',(1.69999998882413,2.86139135040288,-4.65431508004078));
#497=CARTESIAN_POINT('',(1.69999998882413,4.19999998509884,-3.20860004458749));
#498=CARTESIAN_POINT('Origin',(1.69999998882413,2.74999998509884,-3.20860004458749));
#499=CARTESIAN_POINT('',(1.69999998882413,4.19999998509884,-3.20860004458749));
#500=CARTESIAN_POINT('Origin',(1.69999998882413,4.19999998509883,3.23139995541251));
#501=CARTESIAN_POINT('',(0.499999988824129,4.19999998509884,-3.13429991612297));
#502=CARTESIAN_POINT('',(1.69999998882413,4.19999998509883,6.96570004848677));
#503=CARTESIAN_POINT('Origin',(-29.2500004451722,2.86139135040288,1.76951289176941E-7));
#504=CARTESIAN_POINT('',(0.499999988824129,2.86139135040288,-9.49999978765845));
#505=CARTESIAN_POINT('',(0.499999988824129,2.86139135040288,-4.74999980535358));
#506=CARTESIAN_POINT('',(-59.0000008791685,2.86139135040288,-9.49999978765845));
#507=CARTESIAN_POINT('',(-44.1250006621704,2.86139135040288,-9.49999978765845));
#508=CARTESIAN_POINT('',(-59.0000008791685,2.86139135040288,-3.78104420037607));
#509=CARTESIAN_POINT('',(-59.0000008791685,2.86139135040288,4.75000015925616));
#510=CARTESIAN_POINT('',(-60.2000008791685,2.86139135040288,-3.78104420037607));
#511=CARTESIAN_POINT('',(-44.1250006621704,2.86139135040288,-3.78104420037607));
#512=CARTESIAN_POINT('',(-60.2000008791685,2.86139135040288,-10.6999997876585));
#513=CARTESIAN_POINT('',(-60.2000008791685,2.86139135040288,-5.34999980535358));
#514=CARTESIAN_POINT('',(1.69999998882413,2.86139135040288,-10.6999997876585));
#515=CARTESIAN_POINT('',(-13.775000228174,2.86139135040288,-10.6999997876585));
#516=CARTESIAN_POINT('',(1.69999998882413,2.86139135040288,5.35000015925616));
#517=CARTESIAN_POINT('Origin',(-29.2500004451722,2.86139135040288,1.76951289176941E-7));
#518=CARTESIAN_POINT('',(1.69999998882413,2.86139135040288,10.700000141561));
#519=CARTESIAN_POINT('',(1.69999998882413,2.86139135040288,5.35000015925616));
#520=CARTESIAN_POINT('',(-60.2000008791685,2.86139135040288,10.700000141561));
#521=CARTESIAN_POINT('',(-44.7250006621704,2.86139135040288,10.700000141561));
#522=CARTESIAN_POINT('',(-60.2000008791685,2.86139135040288,3.91895579962393));
#523=CARTESIAN_POINT('',(-60.2000008791685,2.86139135040288,-5.34999980535358));
#524=CARTESIAN_POINT('',(-59.0000008791685,2.86139135040288,3.91895579962393));
#525=CARTESIAN_POINT('',(-44.1250006621704,2.86139135040288,3.91895579962393));
#526=CARTESIAN_POINT('',(-59.0000008791685,2.86139135040288,9.50000014156103));
#527=CARTESIAN_POINT('',(-59.0000008791685,2.86139135040288,4.75000015925616));
#528=CARTESIAN_POINT('',(0.499999988824129,2.86139135040288,9.50000014156103));
#529=CARTESIAN_POINT('',(-14.375000228174,2.86139135040288,9.50000014156103));
#530=CARTESIAN_POINT('',(0.499999988824129,2.86139135040288,-4.74999980535358));
#531=CARTESIAN_POINT('Origin',(1.69999998882413,2.86139135040288,10.700000141561));
#532=CARTESIAN_POINT('',(1.69999998882413,28.3613913504029,-10.6999997876585));
#533=CARTESIAN_POINT('',(1.69999998882413,2.86139135040288,-10.6999997876585));
#534=CARTESIAN_POINT('',(1.69999998882413,28.3613913504029,10.700000141561));
#535=CARTESIAN_POINT('',(1.69999998882413,28.3613913504029,5.35000015925616));
#536=CARTESIAN_POINT('',(1.69999998882413,2.86139135040288,10.700000141561));
#537=CARTESIAN_POINT('Origin',(-59.0000008791685,5.46139135040288,-3.78104420037607));
#538=CARTESIAN_POINT('',(-60.2000008791685,5.46139135040288,-3.78104420037607));
#539=CARTESIAN_POINT('',(-60.2000008791685,4.16139135040288,-3.78104420037607));
#540=CARTESIAN_POINT('',(-59.0000008791685,5.46139135040288,-3.78104420037607));
#541=CARTESIAN_POINT('',(-59.0000008791685,4.16139135040288,-3.78104420037607));
#542=CARTESIAN_POINT('',(-59.0000008791685,5.46139135040288,-3.78104420037607));
#543=CARTESIAN_POINT('Origin',(-59.0000008791685,5.46139135040288,3.91895579962393));
#544=CARTESIAN_POINT('',(-60.2000008791685,5.46139135040288,3.91895579962393));
#545=CARTESIAN_POINT('',(-60.2000008791685,5.46139135040288,-3.39052199401726));
#546=CARTESIAN_POINT('',(-59.0000008791685,5.46139135040288,3.91895579962393));
#547=CARTESIAN_POINT('',(-59.0000008791685,5.46139135040288,6.70947797059248));
#548=CARTESIAN_POINT('',(-59.0000008791685,5.46139135040288,3.91895579962393));
#549=CARTESIAN_POINT('Origin',(-59.0000008791685,2.86139135040288,3.91895579962393));
#550=CARTESIAN_POINT('',(-60.2000008791685,2.86139135040288,3.91895579962393));
#551=CARTESIAN_POINT('',(-59.0000008791685,2.86139135040288,3.91895579962393));
#552=CARTESIAN_POINT('Origin',(-59.0000008791685,2.86139135040288,9.50000014156103));
#553=CARTESIAN_POINT('',(-59.0000008791685,26.8613913504029,-9.49999978765845));
#554=CARTESIAN_POINT('',(-59.0000008791685,2.86139135040288,-9.49999978765845));
#555=CARTESIAN_POINT('',(-59.0000008791685,26.8613913504029,9.50000014156103));
#556=CARTESIAN_POINT('',(-59.0000008791685,26.8613913504029,4.75000015925616));
#557=CARTESIAN_POINT('',(-59.0000008791685,2.86139135040288,9.50000014156103));
#558=CARTESIAN_POINT('Origin',(-29.2500004451722,26.8613913504029,1.76951289176941E-7));
#559=CARTESIAN_POINT('',(0.499999988824129,26.8613913504029,-9.49999978765845));
#560=CARTESIAN_POINT('',(0.499999988824129,26.8613913504029,9.50000014156103));
#561=CARTESIAN_POINT('',(0.499999988824129,26.8613913504029,-4.74999980535358));
#562=CARTESIAN_POINT('',(-14.375000228174,26.8613913504029,9.50000014156103));
#563=CARTESIAN_POINT('',(-44.1250006621704,26.8613913504029,-9.49999978765845));
#564=CARTESIAN_POINT('Origin',(-29.2500004451722,28.3613913504029,1.76951289176941E-7));
#565=CARTESIAN_POINT('',(-60.2000008791685,28.3613913504029,-10.6999997876585));
#566=CARTESIAN_POINT('',(-13.775000228174,28.3613913504029,-10.6999997876585));
#567=CARTESIAN_POINT('',(-60.2000008791685,28.3613913504029,10.700000141561));
#568=CARTESIAN_POINT('',(-60.2000008791685,28.3613913504029,-5.34999980535358));
#569=CARTESIAN_POINT('',(-44.7250006621704,28.3613913504029,10.700000141561));
#570=CARTESIAN_POINT('Origin',(0.499999988824129,2.86139135040288,-9.49999978765845));
#571=CARTESIAN_POINT('',(0.499999988824129,2.86139135040288,9.50000014156103));
#572=CARTESIAN_POINT('',(0.499999988824129,2.86139135040288,-9.49999978765845));
#573=CARTESIAN_POINT('Origin',(-59.0000008791685,2.86139135040288,-9.49999978765845));
#574=CARTESIAN_POINT('Origin',(0.499999988824129,2.86139135040288,9.50000014156103));
#575=CARTESIAN_POINT('Origin',(-60.2000008791685,2.86139135040288,10.700000141561));
#576=CARTESIAN_POINT('',(-60.2000008791685,2.86139135040288,10.700000141561));
#577=CARTESIAN_POINT('Origin',(-60.2000008791685,2.86139135040288,-10.6999997876585));
#578=CARTESIAN_POINT('',(-60.2000008791685,2.86139135040288,-10.6999997876585));
#579=CARTESIAN_POINT('Origin',(1.69999998882413,2.86139135040288,-10.6999997876585));
#580=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.01),#584,
'DISTANCE_ACCURACY_VALUE',
'Maximum model space distance between geometric entities at asserted c
onnectivities');
#581=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.01),#584,
'DISTANCE_ACCURACY_VALUE',
'Maximum model space distance between geometric entities at asserted c
onnectivities');
#582=(
GEOMETRIC_REPRESENTATION_CONTEXT(3)
GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#580))
GLOBAL_UNIT_ASSIGNED_CONTEXT((#584,#586,#587))
REPRESENTATION_CONTEXT('','3D')
);
#583=(
GEOMETRIC_REPRESENTATION_CONTEXT(3)
GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#581))
GLOBAL_UNIT_ASSIGNED_CONTEXT((#584,#586,#587))
REPRESENTATION_CONTEXT('','3D')
);
#584=(
LENGTH_UNIT()
NAMED_UNIT(*)
SI_UNIT(.MILLI.,.METRE.)
);
#585=(
LENGTH_UNIT()
NAMED_UNIT(*)
SI_UNIT($,.METRE.)
);
#586=(
NAMED_UNIT(*)
PLANE_ANGLE_UNIT()
SI_UNIT($,.RADIAN.)
);
#587=(
NAMED_UNIT(*)
SI_UNIT($,.STERADIAN.)
SOLID_ANGLE_UNIT()
);
#588=SHAPE_DEFINITION_REPRESENTATION(#589,#590);
#589=PRODUCT_DEFINITION_SHAPE('',$,#592);
#590=SHAPE_REPRESENTATION('',(#368),#582);
#591=PRODUCT_DEFINITION_CONTEXT('part definition',#596,'design');
#592=PRODUCT_DEFINITION('Base','Base',#593,#591);
#593=PRODUCT_DEFINITION_FORMATION('',$,#598);
#594=PRODUCT_RELATED_PRODUCT_CATEGORY('Base','Base',(#598));
#595=APPLICATION_PROTOCOL_DEFINITION('international standard',
'automotive_design',2009,#596);
#596=APPLICATION_CONTEXT(
'Core Data for Automotive Mechanical Design Process');
#597=PRODUCT_CONTEXT('part definition',#596,'mechanical');
#598=PRODUCT('Base','Base',$,(#597));
#599=PRESENTATION_STYLE_ASSIGNMENT((#600));
#600=SURFACE_STYLE_USAGE(.BOTH.,#601);
#601=SURFACE_SIDE_STYLE('',(#602));
#602=SURFACE_STYLE_FILL_AREA(#603);
#603=FILL_AREA_STYLE('Steel - Satin',(#604));
#604=FILL_AREA_STYLE_COLOUR('Steel - Satin',#605);
#605=COLOUR_RGB('Steel - Satin',0.627450980392157,0.627450980392157,0.627450980392157);
ENDSEC;
END-ISO-10303-21;

3450
3D/Lid.step Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,15 +1,20 @@
menu "espScope Configuration"
config LED_BUILTIN
int "LED IO Pin"
default 15
help
LED IO pin
config ESP_WIFI_SSID
string "WiFi SSID"
default "myssid"
help
SSID (network name) to connect to.
Default SSID (network name) to connect to. You can change this onece connected via the web interface.
config ESP_WIFI_PASSWORD
string "WiFi Password"
default "mypassword"
help
WiFi password.
Default SSID password. You can change this onece connected via the web interface.
endmenu

View File

@@ -111,13 +111,14 @@
direction: rtl;
}
#resetBtn {
#resetBtn, #powerOff {
background: #222;
color: #e66;
border: 1px solid;
font-size: 0.8rem;
height: 4em;
width: 6em;
vertical-align: middle;
}
</style>
</head>
@@ -168,7 +169,10 @@
<input type="number" id="testHz" value="100" min="1" max="10000">
</div>
</div>
<div>
<button id="resetBtn">Reset</button>
<button id="powerOff">Power off</button>
</div>
</form>
</div>

View File

@@ -452,6 +452,9 @@ document.getElementById('resetBtn').addEventListener('click', () => {
localStorage.clear();
window.location.reload();
});
document.getElementById('powerOff').addEventListener('click', () => {
navigator.sendBeacon("/poweroff");
});
setParams();
connect();

View File

@@ -1,3 +1,9 @@
#include <inttypes.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include "cJSON.h"
#include "driver/gpio.h"
#include "driver/ledc.h"
@@ -5,17 +11,13 @@
#include "esp_event.h"
#include "esp_http_server.h"
#include "esp_log.h"
#include "esp_sleep.h"
#include "esp_system.h"
#include "esp_wifi.h"
#include "freertos/FreeRTOS.h"
#include "freertos/event_groups.h"
#include "freertos/task.h"
#include "nvs_flash.h"
#include <inttypes.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>
// Tag for logging
static const char* TAG = "ESP-SCOPE";
@@ -65,7 +67,6 @@ static httpd_handle_t s_server = NULL;
static adc_continuous_handle_t adc_handle = NULL;
// Single client support for simplicity, or use a list for multiple
static int s_ws_client_fd = -1;
@@ -110,8 +111,6 @@ static void adc_read_task(void *arg) {
uint8_t result[ADC_READ_LEN] = {0};
memset(result, 0xcc, ADC_READ_LEN);
// ADC Init (Moved from app_main)
// TODO: Make this configurable or find a good default pin.
// For ESP32C6 ADC1 Channel 0 is usually GPIO 0. Let's use Channel 0 for now.
@@ -157,7 +156,6 @@ static void adc_read_task(void *arg) {
if (ret == ESP_OK) {
// ESP_LOGI(TAG, "ret is %x, ret_num is %"PRIu32" bytes", ret, ret_num);
// OPTIMIZED BATCH SENDING
// We have `ret_num` bytes of data in `result`.
// It contains `adc_digi_output_data_t` structs (4 bytes each).
@@ -166,7 +164,6 @@ static void adc_read_task(void *arg) {
// So we have 1/2 the size.
if (s_ws_client_fd != -1) {
// Allocate a small temp buffer on stack or static to avoid malloc in loop
// ret_num is up to ADC_READ_LEN (1024). 1024 / 4 = 256 samples.
// 256 * 2 bytes = 512 bytes output. Stack safe.
@@ -185,8 +182,7 @@ static void adc_read_task(void *arg) {
.fragmented = false,
.type = HTTPD_WS_TYPE_BINARY,
.payload = (uint8_t*)out_buf,
.len = out_idx * sizeof(uint16_t)
};
.len = out_idx * sizeof(uint16_t)};
// Non-blocking send (best effort)
esp_err_t ret_ws = httpd_ws_send_frame_async(s_server, s_ws_client_fd, &ws_frame);
@@ -213,11 +209,8 @@ static void adc_read_task(void *arg) {
}
}
static void continuous_adc_init(adc_channel_t* channel, uint8_t channel_num,
adc_continuous_handle_t* out_handle) {
uint32_t frame_size = get_optimal_buffer_size(s_sample_rate);
ESP_LOGI(TAG, "Dynamic Buffer Size: %lu bytes", frame_size);
@@ -275,16 +268,14 @@ static void start_test_signal(uint32_t hz) {
.duty_resolution = LEDC_TIMER_14_BIT,
.timer_num = LEDC_TIMER_0,
.freq_hz = hz,
.clk_cfg = LEDC_AUTO_CLK
};
.clk_cfg = LEDC_AUTO_CLK};
ledc_channel_config_t ledc_channel = {
.gpio_num = 1, // GPIO data pin 1
.speed_mode = LEDC_LOW_SPEED_MODE,
.channel = LEDC_CHANNEL_0,
.timer_sel = LEDC_TIMER_0,
.duty = 1 << (ledc_timer.duty_resolution - 1), // 512, // 50% duty cycle (1024 / 2 for 10-bit resolution)
.hpoint = 0
};
.hpoint = 0};
// Initialize the PWM
ledc_timer_config(&ledc_timer);
@@ -295,6 +286,17 @@ static void start_test_signal(uint32_t hz) {
ledc_inited = true;
}
static void show_status_led() {
#ifdef CONFIG_LED_BUILTIN
while (true) {
vTaskDelay(pdMS_TO_TICKS(100));
gpio_set_level(CONFIG_LED_BUILTIN, 1);
vTaskDelay(pdMS_TO_TICKS(s_ws_client_fd == -1 ? 900 : 200));
gpio_set_level(CONFIG_LED_BUILTIN, 0);
}
#endif
}
void app_main(void) {
// Initialize NVS
esp_err_t ret = nvs_flash_init();
@@ -305,17 +307,27 @@ void app_main(void) {
}
ESP_ERROR_CHECK(ret);
#ifdef CONFIG_LED_BUILTIN
gpio_config_t led_io_conf = {
.pin_bit_mask = (1ULL << CONFIG_LED_BUILTIN),
.mode = GPIO_MODE_OUTPUT,
.pull_up_en = GPIO_PULLUP_DISABLE,
.pull_down_en = GPIO_PULLDOWN_DISABLE,
.intr_type = GPIO_INTR_DISABLE};
gpio_config(&led_io_conf);
gpio_set_level(CONFIG_LED_BUILTIN, 0);
#endif
ESP_LOGI(TAG, "ESP_WIFI_MODE_STA");
/* Board-specific WiFi init (if any) */
// Seeed XIAO ESP32C6: Configure GPIO 3 and GPIO 14 as outputs
gpio_config_t io_conf = {
gpio_config_t board_io_conf = {
.pin_bit_mask = (1ULL << 3) | (1ULL << 14),
.mode = GPIO_MODE_OUTPUT,
.pull_up_en = GPIO_PULLUP_DISABLE,
.pull_down_en = GPIO_PULLDOWN_DISABLE,
.intr_type = GPIO_INTR_DISABLE
};
gpio_config(&io_conf);
.intr_type = GPIO_INTR_DISABLE};
gpio_config(&board_io_conf);
// Set GPIO 3 and GPIO 14 to low
gpio_set_level(3, 0);
@@ -323,10 +335,7 @@ void app_main(void) {
/* end board-specific WiFi init (if any) */
wifi_init_sta();
start_test_signal(100);
xTaskCreate(adc_read_task, "adc_read_task", 8192 + ADC_READ_LEN, NULL, 5, NULL);
// Wait for WiFi connection
@@ -337,6 +346,7 @@ void app_main(void) {
if (bits & WIFI_CONNECTED_BIT) {
ESP_LOGI(TAG, "connected to ap SSID:%s", ESP_WIFI_SSID);
start_webserver();
show_status_led();
} else if (bits & WIFI_FAIL_BIT) {
ESP_LOGI(TAG, "Failed to connect to SSID:%s", ESP_WIFI_SSID);
} else {
@@ -401,8 +411,6 @@ static void wifi_init_sta(void) {
ESP_LOGI(TAG, "wifi_init_sta finished.");
}
/*
* WebSocket Handler
*/
@@ -507,8 +515,6 @@ static const httpd_uri_t uri_params = {.uri = "/params",
.handler = params_handler,
.user_ctx = NULL};
/* Handler for serving index.html */
static esp_err_t index_handler(httpd_req_t* req) {
httpd_resp_set_type(req, "text/html");
@@ -537,6 +543,19 @@ static esp_err_t index_js_handler(httpd_req_t *req) {
static const httpd_uri_t uri_index_js = {
.uri = "/index.js", .method = HTTP_GET, .handler = index_js_handler, .user_ctx = NULL};
static esp_err_t power_handler(httpd_req_t* req) {
#ifdef CONFIG_LED_BUILTIN
gpio_set_level(CONFIG_LED_BUILTIN, 0);
#endif
esp_sleep_enable_timer_wakeup(30L * 24L * 60L * 60L * 1000000ULL); // One month
esp_deep_sleep_start();
return ESP_OK;
}
static const httpd_uri_t uri_power = {
.uri = "/poweroff", .method = HTTP_POST, .handler = power_handler, .user_ctx = NULL};
static void start_webserver(void) {
httpd_config_t config = HTTPD_DEFAULT_CONFIG();
config.lru_purge_enable = true;
@@ -548,9 +567,7 @@ static void start_webserver(void) {
httpd_register_uri_handler(s_server, &uri_index_js);
httpd_register_uri_handler(s_server, &uri_ws);
httpd_register_uri_handler(s_server, &uri_params);
httpd_register_uri_handler(s_server, &uri_power);
} else {
ESP_LOGI(TAG, "Error starting server!");
}