描述
<p><div class="document">
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">* 1、项目功能介绍</h3>
<hr class="horizontal-splitline normal-bold-2" />
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;"> <span style="color: #000000;">本产品是一款桌面简约温湿度计,非常的小巧,可以灵活的作为摆件,解决了当代年轻人手机温湿度不准确的苦恼,可以更方便准确的获取到当前温湿度数据,进行补水和其他操作;此外,这款产品默认是测量温湿度,但预留了2个串口,一个做烧录口、一个可插蓝牙4.0模块。连接后,通过指令可以使用拓展功能:</span></span></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #000000; font-size: 14px;"> 1.呼吸灯速度调节,可以发送指令打开呼吸灯,并且调节其速度,让自己可以跟着呼吸灯的节奏获得内心的平静</span></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #000000; font-size: 14px;"> 2.定时器功能,最高可定时1小时,让自己在工作或者学校、玩耍时有一个小督导,让自己更好把握住时间</span></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #000000; font-size: 14px;"> 3.时间显示,可以发送一个初始时间,屏幕会根据当前时间进行累加和显示,当一个炫酷的屏幕时钟来用</span></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #000000; font-size: 14px;"> 4.模式切换,通过指令可以在以上模式来回切换,包括温湿度模式。切换时,原模式数据不会丢失,还可以单独启动和挂起定时和时间,非常的方便和贴心</span></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #000000; font-size: 14px;">总结:这是一个结合低功耗、多功能、高颜值、高灵活的温湿度测量仪</span></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><em>2、项目属性</h3>
<hr class="horizontal-splitline normal-bold-2" />
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> 此项目是首次公开,之前并未在其他比赛或平台展示过,是基于立创训练营要求做出的puls版本。添加了定时、时显、呼吸灯等功能。本产品的特点是拓展功能丰富,且价格低廉:如果不用蓝牙模块的话大头就是主控芯片STC8A8K64D4、温湿度模块、0.96寸OLED屏幕,加上一些插件和电池约 <span style="font-size: 14pt;"><strong><span style="color: #e03e2d;">35</span> </strong></span>元。可以说是一个物美价廉,颜值在线的小摆件了</p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"></em> 3、开源协议</h3>
<hr class="horizontal-splitline normal-bold-2" />
<p>GPL3.0</p>
<p>1、你可以免费使用、复制、修改、分发受保护程序,但分发时一定要提供源码。</p>
<p>2、你可以收费。比如可以针对目标码、源码的分发收费,可以针对软件的维修保养(主要是提供技术支持,以下简称“维保”)收费;但不能收许可费、版税、专利许可费、授权费这类费用。</p>
<p>3、GPL程序的所有贡献者,自动免费提供了专利许可,承诺不会告人侵犯专利权(前提是你遵守了GPL)。</p>
<p>4、GPL程序允许别人破解。如果是用在消费类硬件上,要允许人修改并安装程序。</p>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><em>4、硬件部分</h3>
<hr class="horizontal-splitline normal-bold-2" />
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">产品MCU使用STC8A8K64D4;电源部分使用两节5号电池进行供电,也可通过烧录卡连接电脑进行供电和同通信;温湿度模块使用盛锐思品牌;显示使用0.96OLED屏幕;还有蓝牙4.0模块进行通信</p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"></em>5、软件部分</h3>
<hr class="horizontal-splitline normal-bold-2" />
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> 1. 软件设计,我将各个功能和外设全都分成不同的源文件和头文件,提高代码的内聚性,降低耦合性</p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> 2. 使用 IIC 和OLED屏幕以及盛锐思温湿度传感器进行通信,这里用的是软件模拟,大家也可以更改为硬件通信</p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> 3. 使用了PWM加中断的方案来设计呼吸灯功能,并且使用定时器加中断来实现不同模式的非阻塞延时</p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> 4. 针对拓展功能,我用了很多标志位来进行功能的开启和中断,由于功能的延时是非阻塞延时,利用中断计数主程序轮询来实现</p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> 具体的细节可以查看附件里面的源码来查看,因为有很多资料都可以学习这些知识,所以我就不从原理开始介绍,我展示一下产品的工作模式和流程,以及通信协议</p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8; text-align: center;"><img src="//image.lceda.cn/oshwhub/4c81e177991f4ab7907fdcc620288533.png" /></p>
<h2 style="text-align: center;"><strong>接口通信协议标准</strong></h2>
<table style="width: 96.4075%; height: 581px;">
<tbody>
<tr style="height: 47.5938px;">
<td style="width: 69.9489%; height: 47.5938px;" colspan="2" width="483">
<p style="text-align: justify;">编写</p>
<p style="text-align: justify;"> </p>
</td>
<td style="width: 29.9219%; height: 47.5938px;" colspan="2" width="207">
<p style="text-align: left;"> </p>
</td>
</tr>
<tr style="height: 47.5938px;">
<td style="width: 69.9489%; height: 47.5938px;" colspan="2" width="483">
<p>版本</p>
</td>
<td style="width: 29.9219%; height: 47.5938px;" colspan="2" width="207">
<p>V1.0.0.0</p>
</td>
</tr>
<tr style="height: 47.5938px;">
<td style="width: 69.9489%; height: 47.5938px;" colspan="2" width="483">
<p>日期</p>
</td>
<td style="width: 29.9219%; height: 47.5938px;" colspan="2" width="207">
<p>2024-07-28</p>
</td>
</tr>
<tr style="height: 47.5938px;">
<td style="width: 69.9489%; height: 47.5938px;" colspan="2" width="483">
<p>审核</p>
</td>
<td style="width: 29.9219%; height: 47.5938px;" colspan="2" width="207">
<p> </p>
</td>
</tr>
<tr style="height: 47.5938px;">
<td style="width: 99.8708%; height: 47.5938px;" colspan="4" width="691">
<p><strong><a name="_Toc471571769"></a>修改记录</strong></p>
</td>
</tr>
<tr style="height: 47.5938px;">
<td style="width: 15.0922%; height: 47.5938px;" width="105">
<p>日期</p>
</td>
<td style="width: 54.8568%; height: 47.5938px;" width="378">
<p>修改内容</p>
</td>
<td style="width: 15.3546%; height: 47.5938px;" width="106">
<p>版本记录</p>
</td>
<td style="width: 14.5672%; height: 47.5938px;" width="101">
<p>修改人</p>
</td>
</tr>
<tr style="height: 47.5938px;">
<td style="width: 15.0922%; height: 47.5938px;" width="105">
<p>2024-07-28</p>
</td>
<td style="width: 54.8568%; height: 47.5938px;" width="378">
<p>创建文档</p>
</td>
<td style="width: 15.3546%; height: 47.5938px;" width="106">
<p>V1.0.0.0</p>
</td>
<td style="width: 14.5672%; height: 47.5938px;" width="101">
<p>魏十一</p>
</td>
</tr>
<tr style="height: 47.5938px;">
<td style="width: 15.0922%; height: 47.5938px;" width="105">
<p> </p>
</td>
<td style="width: 54.8568%; height: 47.5938px;" width="378">
<p> </p>
</td>
<td style="width: 15.3546%; height: 47.5938px;" width="106">
<p> </p>
</td>
<td style="width: 14.5672%; height: 47.5938px;" width="101">
<p> </p>
</td>
</tr>
<tr style="height: 47.5938px;">
<td style="width: 15.0922%; height: 47.5938px;" width="105">
<p> </p>
</td>
<td style="width: 54.8568%; height: 47.5938px;" width="378">
<p> </p>
</td>
<td style="width: 15.3546%; height: 47.5938px;" width="106">
<p> </p>
</td>
<td style="width: 14.5672%; height: 47.5938px;" width="101">
<p> </p>
</td>
</tr>
<tr style="height: 47.5938px;">
<td style="width: 15.0922%; height: 47.5938px;" width="105">
<p> </p>
</td>
<td style="width: 54.8568%; height: 47.5938px;" width="378">
<p> </p>
</td>
<td style="width: 15.3546%; height: 47.5938px;" width="106">
<p> </p>
</td>
<td style="width: 14.5672%; height: 47.5938px;" width="101"> </td>
</tr>
</tbody>
</table>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </h3>
<p style="text-align: center;">目录</p>
<p style="text-align: center;"><a href="#_Toc471571768"><u>接口通信协议标准</u> </a></p>
<p style="text-align: center;"><a href="#_Toc471571769"><u>修改记录</u> </a></p>
<p style="text-align: center;"><a href="#_Toc471571770"><u>基础配置</u> </a></p>
<p style="text-align: center;"><a href="#_Toc471571771"><u>通信机制</u> </a></p>
<p style="text-align: center;"><a href="#_Toc471571772"><u>主机查询方式</u> </a></p>
<p style="text-align: center;"><a href="#_Toc471571773"><u>终端上传数据帧方式</u> </a></p>
<p style="text-align: center;"><a href="#_Toc471571774"><u>数据帧格式</u> </a></p>
<p style="text-align: center;"><a href="#_Toc471571775"><u>帧格式图</u> </a></p>
<p style="text-align: center;"><a href="#_Toc471571776"><u>格式说明</u> </a></p>
<p style="text-align: center;"><a href="#_Toc471571777"><u>指令定义</u> </a></p>
<p style="text-align: center;"><a href="#_Toc471571778"><u>主机</u><u>——></u><u>终端</u> </a></p>
<p style="text-align: center;"><a href="#_Toc471571779"><u>终端——</u><u>></u><u>主机</u> </a></p>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </h3>
<h2><strong>基础配置</strong></h2>
<p>通信接口: 串口</p>
<p>波特率:9600</p>
<p>停止位:1位</p>
<p>数据位:8位</p>
<p>校验位:0位</p>
<p> </p>
<h2><strong>通信机制</strong></h2>
<h3>主机查询方式</h3>
<p>主机按照一定的时间间隔向终端发送数据帧,终端接收到数据帧后返回应答帧,终端不主动上传数据,若主机在规定时间内未接受到规定的数据帧的应答数据帧,则重发数据帧直到终端返回应答数据帧。</p>
<h4>正常通信时序</h4>
<p><img src="//image.lceda.cn/oshwhub/c7c03248fed546c9a21bca0d7775f87d.png" /></p>
<p> </p>
<h4>异常通信时序</h4>
<p> </p>
<p> </p>
<p><img src="//image.lceda.cn/oshwhub/0d21017afba74d0ea543a7c8c0f68583.png" /></p>
<p> </p>
<p> </p>
<p> </p>
<h2><strong>数据帧格式</strong></h2>
<h3>帧格式图</h3>
<p><img src="//image.lceda.cn/oshwhub/f5ac5e14af3f47dda90b862b46a58e53.png" /></p>
<p> </p>
<h3>格式说明</h3>
<table style="border-collapse: collapse; margin-left: auto; margin-right: auto;">
<tbody>
<tr>
<td width="188">
<p>名称</p>
</td>
<td width="212">
<p>定义</p>
</td>
<td width="141">
<p>长度</p>
</td>
<td width="148">
<p>备注</p>
</td>
</tr>
<tr>
<td width="188">
<p>head(帧头)</p>
</td>
<td width="212">
<p>固定为0xAA</p>
</td>
<td width="141">
<p>1 Bety</p>
</td>
<td width="148">
<p> </p>
</td>
</tr>
<tr>
<td width="188">
<p>length(长度)</p>
</td>
<td width="212">
<p>CMD +Data 的长度</p>
</td>
<td width="141">
<p>1 Bety</p>
</td>
<td width="148">
<p> </p>
</td>
</tr>
<tr>
<td width="188">
<p>CMD(命令)</p>
</td>
<td width="212">
<p>表明数据帧的类型</p>
</td>
<td width="141">
<p>1 Bety</p>
</td>
<td width="148">
<p> </p>
</td>
</tr>
<tr>
<td width="188">
<p>Data<a href="%E6%95%B0%E6%8D%AE" target="_blank">N</a></p>
</td>
<td width="212">
<p>此帧数据区。</p>
</td>
<td width="141">
<p>N Bety(N<200B)</p>
</td>
<td width="148">
<p>数据区长度可以为0</p>
</td>
</tr>
<tr>
<td width="188">
<p>End(帧尾)</p>
</td>
<td width="212">
<p>固定为0xDD</p>
</td>
<td width="141">
<p>1 Bety</p>
</td>
<td width="148">
<p> </p>
</td>
</tr>
</tbody>
</table>
<p>备注:多字节数据低位在前。</p>
<p> </p>
<p> </p>
<h2><strong>指令定义</strong></h2>
<h2><strong>主机</strong><strong>(手机蓝牙模块/串口助手)</strong><strong>——</strong><strong>></strong><strong>天知掌中宝</strong></h2>
<h4>40、设置呼吸灯速度</h4>
<table style="border-collapse: collapse; margin-left: auto; margin-right: auto;">
<tbody>
<tr>
<td width="172">
<p>length</p>
</td>
<td width="172">
<p>CMD</p>
</td>
<td width="172">
<p>Data</p>
</td>
</tr>
<tr>
<td width="172">
<p>0x02</p>
</td>
<td width="172">
<p>0x40</p>
</td>
<td width="172">
<p>具体见定义</p>
</td>
</tr>
<tr>
<td width="172">
<p>参数数据区</p>
</td>
<td width="172">
<p>功能</p>
</td>
<td width="172">
<p>参考值</p>
</td>
</tr>
<tr>
<td width="172">
<p>Data [0]</p>
</td>
<td width="172">
<p>加速度或者减速带</p>
</td>
<td width="172">
<p>1:加一格 2:减一格</p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<h4>41、设置定时模式</h4>
<table style="border-collapse: collapse; margin-left: auto; margin-right: auto;">
<tbody>
<tr>
<td width="172">
<p>length</p>
</td>
<td width="172">
<p>CMD</p>
</td>
<td width="172">
<p>Data</p>
</td>
</tr>
<tr>
<td width="172">
<p>0x03</p>
</td>
<td width="172">
<p>0x41</p>
</td>
<td width="172">
<p>具体见定义</p>
</td>
</tr>
<tr>
<td width="172">
<p>参数数据区</p>
</td>
<td width="172">
<p>功能</p>
</td>
<td width="172">
<p>参考值</p>
</td>
</tr>
<tr>
<td width="172">
<p>Data [0]</p>
</td>
<td width="172">
<p>定时的分钟数量</p>
</td>
<td width="172">
<p>0 - 59</p>
</td>
</tr>
<tr>
<td width="172">
<p>Data [1]</p>
</td>
<td width="172">
<p>定时的秒钟数量</p>
</td>
<td width="172">
<p>0 - 59</p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<h4>42、显示时间</h4>
<table style="border-collapse: collapse; margin-left: auto; margin-right: auto;">
<tbody>
<tr>
<td width="181">
<p>length</p>
</td>
<td width="172">
<p>CMD</p>
</td>
<td width="172">
<p>Data</p>
</td>
</tr>
<tr>
<td width="181">
<p>0x04</p>
</td>
<td width="172">
<p>0x42</p>
</td>
<td width="172">
<p>具体见定义</p>
</td>
</tr>
<tr>
<td width="181">
<p>参数数据区</p>
</td>
<td width="172">
<p>功能</p>
</td>
<td width="172">
<p>参考值</p>
</td>
</tr>
<tr>
<td width="181">
<p>Data [0]</p>
</td>
<td width="172">
<p>当前时钟</p>
</td>
<td width="172">
<p>0 - 23</p>
</td>
</tr>
<tr>
<td width="181">
<p>Data [1]</p>
</td>
<td width="172">
<p>当前分钟</p>
</td>
<td width="172">
<p>0 - 59</p>
</td>
</tr>
<tr>
<td width="181">
<p>Data [2]</p>
</td>
<td width="172">
<p>当前秒钟</p>
</td>
<td width="172">
<p>0 - 59</p>
</td>
</tr>
</tbody>
</table>
<p><strong> </strong></p>
<h4>43、切换其它模式(保留当前数据)</h4>
<table style="border-collapse: collapse; margin-left: auto; margin-right: auto;">
<tbody>
<tr>
<td width="181">
<p>length</p>
</td>
<td width="172">
<p>CMD</p>
</td>
<td width="172">
<p>Data</p>
</td>
</tr>
<tr>
<td width="181">
<p>0x02</p>
</td>
<td width="172">
<p>0x43</p>
</td>
<td width="172">
<p>无</p>
</td>
</tr>
<tr>
<td width="181">
<p>参数数据区</p>
</td>
<td width="172">
<p>功能</p>
</td>
<td width="172">
<p>参考值</p>
</td>
</tr>
<tr>
<td width="181">
<p>Data [0]</p>
</td>
<td width="172">
<p>1 温湿度检测</p>
<p>2 定时模式</p>
<p>3 时间显示</p>
<p>4 暂停/恢复定时</p>
<p>5 暂停/恢复时显</p>
</td>
<td width="172">
<p>1 - 5</p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<p>再附上指令模版,让让更容易理解和上手</p>
<p>不同模式调试指令(<span style="color: #e03e2d;"><strong>注意,所有指令都是16进制形式进行发送</strong></span>)</p>
<p>模式40 设置呼吸灯速度 加1<br /> AA 02 40 01 DD</p>
<p>模式40 设置呼吸灯速度 减1<br /> AA 02 40 02 DD</p>
<p> </p>
<p>模式41 设置定时模式(1分钟)<br /> AA 03 41 01 03 DD</p>
<p> </p>
<p>模式42显示时间 (11:00:00)<br /> AA 04 42 0B 00 00 DD</p>
<p> </p>
<p>模式43 切换其他模式 (温度)<br /> AA 02 43 01 DD</p>
<p>模式43 切换其他模式 (定时)<br /> AA 02 43 02 DD</p>
<p>模式43 切换其他模式 (时间)<br /> AA 02 43 03 DD</p>
<p>模式43 暂停/恢复定时 <br /> AA 02 43 04 DD</p>
<p>模式43 暂停/恢复时显<br /> AA 02 43 05 DD</p>
<p> </p>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><em>6、大赛LOGO验证</h3>
<hr class="horizontal-splitline normal-bold-2" />
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> 以下是实物图</p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><img style="display: block; margin-left: auto; margin-right: auto;" src="//image.lceda.cn/oshwhub/f82c5b6db95b4093a4e5bc700fec1580.jpg" alt="" width="687" height="917" /></p>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"></em> 7、演示您的项目并录制成视频上传</h3>
<hr class="horizontal-splitline normal-bold-2" />
<p style="line-height: 1.8;"> 这里有复刻程序的烧录流程,因为本产品主控芯片是stc的,所以用stc的烧录软件进行烧录。视频链接在此</p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">【复刻天知掌中宝-烧录流程】 <a href="https://www.bilibili.com/video/BV1VQv4e2EJY/?share_source=copy_web&amp;vd_source=a6dfbeeca506f30e1619198ea57e0e2b</p" target="_blank">https://www.bilibili.com/video/BV1VQv4e2EJY/?share_source=copy_web&amp;vd_source=a6dfbeeca506f30e1619198ea57e0e2b</p</a>>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="font-size: 14px;"><a href="/posts/de460543d4cf4dacb5f0326612455578" target="_blank" rel="noopener">前往查看更多详情 ></a></span></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p>
</div></p>
评论(1)