在搜索了一些资料后,我把我的工作分成了两部分。第一部分是时间的获取,第二部分是灯光的控制。模块的组网方式是分别与串口的端和端连接,通过串口通信发送指令来控制和实现组网。通过了解,我发现芯片内部的时钟可以实现时间的自走功能。
0效果不多说了& # xf0c我们来看看最后的效果& xff 08;从左到右是小时、分钟和秒。当时忘记设计中间-_ -↓的冒号了。xff1a
油漆过的PCB & xff0c;请朋友帮忙画solidworks打印的框架& xff0c;然后买螺丝组装。
1简介有一天,在逛一个宝藏的时候,突然发现了一个准发光钟& xf 0c;当时觉得还挺好看的& xf0c;但是看到价格我立马就不以为然了& xff 08;这里有两个价格。所以我有了自己动手的想法。现在我在网上搜了一下准辉光钟的工作原理& xff1a;
准发光时钟使用光线在丙烯酸板上的划痕处折射光线:让划痕处的光线更亮:配置随时间变化的光线& xff0c;达到类似发光铃铛的效果。
搜索了一些信息后xff0c我把我的工作分成两部分。第一部分是时间的获取& xf0c;第二部分是灯光的控制。下面介绍这两大模块的实现方法。
#美人鱼-svg-SV6m6fmWAxVjU1jh。label { font -系列:trebuchet ms,verdana,arialfont -家族:var(--美人鱼-font -家族);填充:# 333;颜色:# 333 } #美人鱼-svg-SV6m6fmWAxVjU1jh。标签文字{ fill:# 333 } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH。节点rect,# mermaid -SVG -sv6m 6 fmwaxvju 1 JH。节点圈,# mermaid -SVG -sv6m 6 fmwaxvju 1 JH。节点椭圆,# mermaid -SVG -SV 6m 6 fmwaxvju 1 JH。节点多边形,# mermaid -SVG -SV 6m 6 fmwaxvju 1 JH。节点路径{ fill:# ECE CFF;冲程:# 9370dbstroke -width:1px } #美人鱼-svg-SV6m6fmWAxVjU1jh。节点。label { text -align:center;fill:# 333 } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH . node . clickable { cursor:pointer } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH。arrow head path { fill:# 333 } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH。边缘路径。路径{ stroke:# 333;stroke -width:1.5 px } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH . flow chart -link { stroke:# 333;fill:none } #美人鱼-svg-SV6m6fmWAxVjU1jh。edge label { background -color:# e8e8e 8;text -align:center } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH。edge label rect { opacity:0.9 } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH。edge label span { color:# 333 } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH。群集矩形{ fill:# ffffde;笔画:# aa3stroke -width:1px } #美人鱼-svg-SV6m6fmWAxVjU1jh。集群文本{ fill:# 333 } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH div . mermaid tooltip { position:absolute;text-align:居中;max -宽度:200px填充:2pxfont -家族:投石机ms,verdana,arialfont -家族:var(--美人鱼-font -家族);font -size:12px;背景:# ffffde边框:1px纯色# aa3边框-半径:2px指针-事件:无;Z-指数:100 } #美人鱼-svg-SV6m6fmWAxVjU1jh。演员{ stroke:# CCF;fill:# ECE CFF } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH text . actor > tspan { fill:# 000;stroke:none } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH . actor -line { stroke:grey } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH . message line 0 { stroke -width:1.5;stroke-dasharray:无;stroke:# 333 } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH . message line 1 { stroke -width:1.5;stroke-dasharray:2,2;stroke:# 333 } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH #箭头路径{ fill:# 333;笔画:# 333 } #美人鱼-svg-SV6m6fmWAxVjU1jh。sequence number { fill:# fff } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH # sequence number { fill:# 333 } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH #十字头路径{ fill:# 333;笔画:# 333 } #美人鱼-svg-SV6m6fmWAxVjU1jh。message text { fill:# 333;笔画:# 333 } #美人鱼-svg-SV6m6fmWAxVjU1jh。label box { stroke:# CCF;填充:# ECECFF } #美人鱼-svg-SV6m6fmWAxVjU1jh。labelText,# mermaid -SVG -sv6m 6 fmwaxvju 1 JH。label text > t span { fill:# 000;stroke:none } #美人鱼-svg-SV6m6fmWAxVjU1jh。loopText,# mermaid -SVG -SV 6m 6 fmwaxvju 1 JH。loop text > tspan { fill:# 000;stroke:none } #美人鱼-svg-SV6m6fmWAxVjU1jh。loop line { stroke -width:2px;stroke-dasharray:2,2;笔画:# ccf填充:# ccf } #美人鱼-svg-SV6m6fmWAxVjU1jh。注{笔画:# aa3fill:# fff 5 ad } #美人鱼-svg-SV6m6fmWAxVjU1jh。noteText,# mermaid -SVG -sv6m 6 fmwaxvju 1 JH。note text > tspan { fill:# 000;stroke:none } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH . activation 0 { fill:# f4f 4 f 4;stroke:# 666 } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH . activation 1 { fill:# f4f 4 f 4;stroke:# 666 } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH . activation 2 { fill:# f4f 4 f 4;stroke:# 666 } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH . mermaid -main -font { font -family:"投石机ms ",verdana,arialfont -family:var(--美人鱼-font -family)} #美人鱼-svg-SV6m6fmWAxVjU1jh。section{stroke:无;opacity:0.2 } # mermaid -SVG -SV 6 M6 fmwaxvju 1 JH . section 0 { fill:rgba(102,102,255,0.49)} # mermaid -SV 6 M6 fmwaxvju 1 JH . section 2 { fill:# fff 400 } # mermaid -SVG -SV 6 M6 fmwaxvju 1 JH . section 1,# mermaid -SVG -SV 6 M6 fmwaxvju 1 JH不透明度:0.2 } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH . section title 0 { fill:# 333 } # mermaid -SV 6m 6 fmwaxvju 1 JH . section title 1 { fill:# 333 } # mermaid -SV 6 fmwaxvju 1 JH . section title 2 { fill:# 333 } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH . section title 3 { fill:# fill。sectionTitle{text-anchor:开始;font -size:11px;text -height:14px;font -家族:投石机ms,verdana,arialfont -family:var(--美人鱼-font -family)} #美人鱼-svg-SV6m6fmWAxVjU1jh。网格。勾选{ stroke:# d3d 3d 3;不透明度:0.8;shape -渲染:crispEdges } #美人鱼-svg-SV6m6fmWAxVjU1jh。网格。tick text { font -family:trebuchet ms,verdana,arialfont -family:var(--美人鱼-font -family)} #美人鱼-svg-SV6m6fmWAxVjU1jh。网格路径{ stroke -width:0 } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH。今日{填充:无;笔画:红色;stroke -width:2px } #美人鱼-svg-SV6m6fmWAxVjU1jh。task { stroke -width:2 } #美人鱼-svg-SV6m6fmWAxVjU1jh。taskText { text -anchor:middle;font -家族:投石机ms,verdana,arialfont -family:var(--美人鱼-font -family)} #美人鱼-svg-SV6m6fmWAxVjU1jh。taskText:not([font -size]){ font -size:11px } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH。taskTextOutsideRight { fill:# 000;text-anchor:开始;font -size:11px;font -家族:投石机ms,verdana,arialfont -family:var(--美人鱼-font -family)} #美人鱼-svg-SV6m6fmWAxVjU1jh。taskTextOutsideLeft { fill:# 000;text -anchor:end;font -size:11px } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH . task . clickable { cursor:pointer } # mermaid -SV G-SV 6m 6 fmwaxvju 1 JH . task text . clickable { cursor:pointer;填充:#003163!重要;font -weight:bold } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH . tasktextoutsideleft . clickable { cursor:pointer;填充:#003163!重要;font -weight:bold } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH . tasktextoutsiderright . clickable { cursor:pointer;填充:#003163!重要;font -weight:bold } # mermaid -SVG -SV 6 M6 fmwaxvju 1 JH . task text 0、# mermaid -SV G-SV 6 M6 fmwaxvju 1 JH . task text 1、# mermaid -SV 6 M6 fmwaxvju 1 JH . task text 2、# mermaid -SV G-SV 6 fmwaxvju 1 JH . task text 3 { fill:# fff } # mermaid -SV G-SV 6 M6 fmwaxvju 1stroke:# 534 FBC } # mermaid -SV G-SV 6m 6 fmwaxvju 1 JH . tasktextoutside 0,# mermaid -SV 6m 6 fmwaxvju 1 JH . tasktextoutside 2 { fill:# 000 } # mermaid -SV G-SV 6 fmwaxvju 1 JH . tasktextoutside 1,# mermaid -SV G-SV 6m 6 fmwaxvju 1 JH { fill:# 000。stroke:# 534 FBC } # mermaid -SV G-SV 6m 6 fmwaxvju 1 JH . active text 0,# mermaid -SV G-SV 6m 6 fmwaxvju 1 JH . active text 1,# mermaid -SV G-SV 6m 6 fmwaxvju 1 JH . active text 2,# mermaid -SV G-SV 6m 6 fmwaxvju 1 JH . active text 3 { fill:# 000!重要} # mermaid -SV G-SV 6m 6 fmwaxvju 1 JH . done 0,# mermaid -SV 6m 6 fmwaxvju 1 JH . done 1,# mermaid -SV G-SV 6m 6 fmwaxvju 1 JH . done 2,# mermaid -SV G-SV 6m 6 fmwaxvju 1 JH . done 3 {笔画:灰色;填充:# d3d3d3stroke -width:2 } # mermaid -SV G-SV 6m 6 fmwaxvju 1 JH . done text 0,# mermaid -SV G-SV 6m 6 fmwaxvju 1 JH . done text 1,# mermaid -SV 6m 6 fmwaxvju 1 JH . done text 2,# mermaid -SV G-SV 6m 6 fmwaxvju 1 JH . done text 3 { fill:# 000!重要} # mermaid -SV G-SV 6m 6 fmwaxvju 1 JH . crit 0、# mermaid -SV 6m 6 fmwaxvju 1 JH . crit 1、# mermaid -SV G-SV 6m 6 fmwaxvju 1 JH . crit 2、# mermaid -SV G-SV 6m 6 fmwaxvju 1 JH . crit 3 { stroke:# f88;填充:红色;stroke -width:2 } # mermaid -SV G-SV 6m 6 fmwaxvju 1 JH . active crit 0,# mermaid -SV G-SV 6m 6 fmwaxvju 1 JH . active crit 1,# mermaid -SV 6m 6 fmwaxvju 1 JH . active crit 2,# mermaid -SV G-SV 6m 6 fmwaxvju 1 JH . active crit 3 { stroke:# f88;填充:# bfc 7 ff;stroke -width:2 } # mermaid -SV G-SV 6m 6 fmwaxvju 1 JH . donecrit 0,# mermaid -SV G-SV 6m 6 fmwaxvju 1 JH . donecrit 1,# mermaid -SV 6m 6 fmwaxvju 1 JH . donecrit 2,# mermaid -SV G-SV 6m 6 fmwaxvju 1 JH . donecrit 3 { stroke:# f88;填充:# d3d3d3stroke -宽度:2;光标:指针;shape -渲染:crispEdges } #美人鱼-svg-SV6m6fmWAxVjU1jh。里程碑{ transform:rotate(45 deg)scale(0.8,0.8)} # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH。milestone text { font -style:italic } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH . donecrittext 0,# mermaid -SV 6m 6 fmwaxvju 1 JH . donecrittext 1,# mermaid -SV 6 fmwaxvju 1 JH . donecrittext 2,# mermaid -SV -SV 6m 6 fmwaxvju 1 JH . donecrittext 3 { fill:# 000!重要} # mermaid -SV G-SV 6m 6 fmwaxvju 1 JH . activecrittext 0、# mermaid -SV 6m 6 fmwaxvju 1 JH . activecrittext 1、# mermaid -SV G-SV 6m 6 fmwaxvju 1 JH . activecrittext 2、# mermaid -SV G-SV 6m 6 fmwaxvju 1 JH . activecrittext 3 { fill:# 000!重要} #美人鱼-svg-SV6m6fmWAxVjU1jh。titleText{text-anchor:中间;font -大小:18px填充:# 000;font -家族:投石机ms,verdana,arialfont -family:var(--美人鱼-font -family)} #美人鱼-SVG -SV 6m 6 fmwaxvju 1 JH g . class group text { fill:# 9370 db;笔画:无;font -家族:投石机ms,verdana,arialfont -家族:var(--美人鱼-font -家族);font -size:10px } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH g . class group text。title { font -weight:bolder } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH g . clickable { cursor:pointer } # mermaid -SV G-SV 6m 6 fmwaxvju 1 JH g . class group rect { fill:# eccff;stroke:# 9370 db } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH g . class group line { stroke:# 9370 db;stroke -width:1 } #美人鱼-svg-SV6m6fmWAxVjU1jh。classLabel。方框{笔画:无;stroke -宽度:0;填充:# ECECFF不透明度:0.5 } #美人鱼-svg-SV6m6fmWAxVjU1jh。classLabel。标签{ fill:# 9370 db;font -size:10px } #美人鱼-svg-SV6m6fmWAxVjU1jh。关系{ stroke:# 9370 db;stroke -宽度:1;fill:none } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH . dashed -line { stroke -dash array:3 } # mermaid -SV G-SV 6m 6 fmwaxvju 1 JH # composition start { fill:# 9370 db;冲程:# 9370dbstroke -width:1 } #美人鱼-SVG -SV 6m 6 fmwaxvju 1 JH # composition nd { fill:# 9370 db;冲程:# 9370dbstroke -width:1 } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH # aggregation start { fill:# ECE CFF;冲程:# 9370dbstroke -width:1 } # mermaid -SVG -sv6m 6 fmwaxvju 1 JH # aggregation nd { fill:# ECE CFF;冲程:# 9370dbstroke -width:1 } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH # dependency start { fill:# 9370 db;冲程:# 9370dbstroke -width:1 } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH # dependency end { fill:# 9370 db;冲程:# 9370dbstroke -width:1 } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH # extension start { fill:# 9370 db;冲程:# 9370dbstroke -width:1 } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH # extension end { fill:# 9370 db;冲程:# 9370dbstroke -width:1 } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH . commit -id,# mermaid -SV 6m 6 fmwaxvju 1 JH . commit -msg,# mermaid -SVG -SV 6m 6 fmwaxvju 1 JH . branch -label { fill:light grey;颜色:浅灰色;font -家族:投石机ms,verdana,arialfont -family:var(--美人鱼-font -family)} #美人鱼-svg-SV6m6fmWAxVjU1jh。pie title text { text -anchor:middle;font -size:25px;填充:# 000;font -家族:投石机ms,verdana,arialfont -family:var(--美人鱼-font -family)} #美人鱼-svg-SV6m6fmWAxVjU1jh。slice { font -家族:投石机ms,verdana,arialfont -family:var(--美人鱼-font -family)} #美人鱼-SVG -SV 6m 6 fmwaxvju 1 JH g . stategroup text { fill:# 9370 db;笔画:无;font -size:10px;font -家族:投石机ms,verdana,arialfont -family:var(--美人鱼-font -family)} #美人鱼-SVG -SV 6m 6 fmwaxvju 1 JH g . stategroup text { fill:# 9370 db;填充:# 333;笔画:无;font -size:10px } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH g . state diagram -cluster . cluster -标签文本{ fill:# 333 } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH g . state group . state -title { font -weight:bolder;fill:# 000 } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH g . state group rect { fill:# ECE CFF;stroke:# 9370 db } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH g . state group line { stroke:# 9370 db;stroke -width:1 } #美人鱼-svg-SV6m6fmWAxVjU1jh。过渡{ stroke:# 9370 db;stroke -宽度:1;fill:none } #美人鱼-svg-SV6m6fmWAxVjU1jh。stateGroup。composit{fill:白色;border -bottom:1px } #美人鱼-svg-SV6m6fmWAxVjU1jh。state group . alt -composit { fill:# e0e0e 0;border -bottom:1px } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH . state -note { stroke:# aa3;fill:# fff 5 ad } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH . state -备注文字{ fill:black;笔画:无;font -size:10px } #美人鱼-svg-SV6m6fmWAxVjU1jh。国家标签。方框{笔画:无;stroke -宽度:0;填充:# ECECFF不透明度:0.7 } #美人鱼-svg-SV6m6fmWAxVjU1jh。edge label text { fill:# 333 } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH。状态标签文本{ fill:# 000;font -size:10px;font-weight:粗体;font -家族:投石机ms,verdana,arialfont -family:var(--美人鱼-font -family)} #美人鱼-svg-SV6m6fmWAxVjU1jh。节点circle . state -start { fill:black;笔画:黑色} #美人鱼-svg-SV6m6fmWAxVjU1jh。节点circle.state-end{fill:黑色;笔画:白色;stroke -width:1.5 } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH # state diagram -barbEnd { fill:# 9370 db } # mermaid -SV 6m 6 fmwaxvju 1 JH . state diagram -cluster rect { fill:# eccff;冲程:# 9370dbstroke -width:1px } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH . statediagram -cluster rect . outer { rx:5px;ry:5px } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH . state diagram -state。分频器{ stroke:# 9370 db } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH . statediagram -state . title -state { rx:5px;ry:5px } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH . state diagram -cluster . state diagram -cluster。inner { fill:white } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH . statediagram -cluster . statediagram -cluster -alt。inner { fill:# e0e0e 0 } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH . statediagram -cluster。内部{ rx:0;ry:0 } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH . statediagram -state rect . basic { rx:5px;ry:5px } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH . statediagram -state rect . divider { stroke -dash array:10,10;fill:# efefef } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH . note -edge { stroke -dash array:5 } # mermaid -SV 6m 6 fmwaxvju 1 JH . statediagram -note rect { fill:# fff 5 ad;笔画:# aa3stroke -宽度:1pxrx:0;ry:0 }:root { --mermaid -font -family:《投石机ms》,verdana,arial--mermaid -font -family:" Comic Sans MS "," Comic Sans ",草书} # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH . error -icon { fill:# 522 } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH . error -text { fill:# 522;stroke:# 522 } # mermaid -SVG -SV 6 M6 fmwaxvju 1 JH . edge -thickness -normal { stroke -width:2px } # mermaid -SV 6 M6 fmwaxvju 1 JH . edge -thickness -thickness -thickness { stroke -width:3.5 px } # mermaid -SV 6 M6 fmwaxvju 1 JH . edge -pattern -solid { stroke -dash array:0 } # mermaidmarker { fill:# 333 } # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH . marker . cross { stroke:# 333 }:root { --mermaid -font -family:《投石机ms》,verdana,arial} # mermaid -SVG -SV 6m 6 fmwaxvju 1 JH { color:rgba(0,0,0,0.75);字体:;}准辉光时钟时间采集灯光控制2 STM32F4 & # 43ESP8266获取网络时间我在之前的项目中一直使用STM 32 \ff0c;熟悉一下& # xff0c所以这次还是用STM32做主控板。获取时间的大致思路是利用ESP8266WIFI模块的联网功能:上电后,ESP8266可以由MCU控制连接到网络并发送相应的API请求:获取当前时间;然后将当前时间分配给RTC时钟:实现自走功能。
2.1 ESP8266的联网和API要求。首先简单介绍一下esp 8266模块xff0c安全官网上有这个模块的详细介绍& # xf0c在这里放一个链接& # xff1a安全性:该模块在其用户文档中描述如下:
ESP8266是一款超低功耗UART-WiFi透明传输模块:拥有业界极具竞争力的封装尺寸和超低能耗技术& xf0c;专为移动设备和物联网应用而设计& # xf0c将用户的物理设备连接到Wi-Fi无线网络& xf0c;进行互联网或局域网通信实现联网功能。
该模块具有独立控制能力:可以作为主芯片使用& xf0c;它还可以用作其他控制器的联网芯片。使主控制器具有联网功能。该模块的组网方式是其RXD和TXD分别连接到串口的TX端和RX端。通过串行通信发送AT命令控制ESP8266实现联网。STA,AP,相关模块的& # 43AP模式和AT指令集可以参考以下链接:ESP8266 AT指令集:Https://blog.csdn.net/qq_45104817/article/details/105834987模块教程& # xff1a在https://blog.csdn.net/mbs520/article/details/109572070,的这个项目中,STM32上的USART6向8266发送以下AT指令来实现联网功能:
1.设置工作模式xff1a
在& # 43;CWMODE & # 611 //设置模式xff0c1sta模式:奴隶。2.重启:重启可以保证模式转换成功。
在& # 43;Rst。网络:(这里有个小问题& xf0c;也就是我在学校连接校园网,需要通过用户认证& xf0c;但是单纯使用这个命令是无法联网成功的。网上说可以通过串口发送响应来完成认证请求头& xf0c;但是后来我通过笔记本连上网然后打开热点解决了)# xff1a
在& # 43;CWJAP & # 61“name”、“password”//name是你要连接的WIFI的名称& # xff0c您的WIFI密码4的密码。设置连接模式。TCP/IP只能通过将连接模式设置为单向连接来启用。
在& # 43;CIPMUX & # 61Tcp/IP是一种网络通信协议:可以理解,在设备连接到目标网络之后。只有通过这种双方都懂的独特语言,才能实现数据通信& xf0c;请参考:详细介绍。5.连接到目标站点的https://zhuanlan.zhihu.com/p/33889997.步骤4建立单向连接:现在可以让TCP连接到API站点来获取数据了。
在& # 43;CIPSTART & # 61“TCP”、“quan.suning.com”,80 //协议形式;IP或网址;端口号& # 08;只需指定一个未被占用的地址。Quan.suning.com是我们想在这里使用的API。连接到网络后:您可以通过发送一个标准的请求头来获取当前时间。6.开启透明传输,开启透明传输模式;准备发送标题。
在& # 43;CIPMODE & # 611.发送标题& # xff0c接收数据
res & # 61esp8266 _ send _ data(" GET HTTP/1.1/r/nHost:quan . Suning . com/r/n/r/n ",50);返回的数据如下:
receive:HTTP/1.1 200 ok date:2021年10月16日星期六10:31:07 GMT content -Type:text/html;字符集& # 61;ut F-8 content -Length:62 connection:keep -alive server:styxset -Cookie:trade LDC & # 61;NJGX过期& # 61;周六,16-oct -21 22:31:07 gmtstrict -transport -Security:max -age & # 61;300 cache -控制:no-缓存,no-存储,max -年龄& # 61;0,S-maxage & # 61;0 access -control -allow -Credentials:true x-Ser:BC98 _ dx-lt-yd-Jiang su -Zhen Jiang -3-cache -16,BC 204 _ lt-山西-太原-6-cache-4x-cache:从BC 204 _ lt-山西-太原-6-cache4(白山)的未命中{"systime2": "2021-10-16 18通过观察发现,我们只需要提取“sysTime2”后面的时间\所以我们需要一些算法来提取时间。我的想法是先通过字符串查找函数str str \ff0c找到“sysTime2”的指针;。然后根据时、分、秒相对指针的偏移量提取数据xff0c这里我把我的代码放在下面。当然,你也可以设置一个更高效的算法xff1a
#define HOURS_ADD_DRES 22 //小时距data_pt指针的偏移量是22char * data _ pt & # 61NULL而(!data _ pt){ RES & # 61;esp8266 _ send _ data(" GET HTTP/1.1/r/nHost:quan . Suning . com/r/n/r/n ",50);data _ pt & # 61strstr((const char *) res,(const char *)" systime 2 ");//查找systime2} printf("获取时间成功!"/r/n ");//如果找到了& # xff0cData_pt不为空;退出循环:成功获取时间int k & # 610;充电时间[10];char * hour _ string//string int用于存储时间的小时、秒、分钟& # 61;0;小时_字符串& # 61;data _ pt & # 43小时_添加_ DRES;//hour_string指针指向-分-秒的小时的第一位;精确锁定(i & # 610;IWS 281 x _ showNum(RTC _ TimeTypeInitStructure。RTC_Seconds%10,5,1);之前0 & # 61;flags0}if(flags1!=before 1){ ws 281 x _ showNum(RTC _ TimeTypeInitStructure。RTC_Seconds/10,4,0);之前1 & # 61;标志1;}if(flagm0!=before m0){ ws 281 x _ showNum(RTC _ TimeTypeInitStructure。RTC_Minutes%10,3,1);之前& # 61flagm0}if(flagm1!=before m1){ ws 281 x _ showNum(RTC _ TimeTypeInitStructure。RTC_Minutes/10,2,0);之前& # 61flagm1}if(flagh0!=before h0){ ws 281 x _ showNum(RTC _ TimeTypeInitStructure。RTC_Hours%10,1,1);在& # 61flagh0}if(flagh1!=之前h1){ ws 281 x _ showNum(RTC _ TimeTypeInitStructure。RTC_Hours/10,0,0);在& # 61flagh1}灯光控制模块将在下一篇文章中详细介绍\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\" ff001;谢谢大家的支持& # xff01
评论前必须登录!
注册