描述
<p><p style="line-height: 1.8;">注:<em> 为必填项</p>
<p style="line-height: 1.8;"><strong><span style="color: #0093e6;">请在报名阶段填写 ↓</span></strong></p>
<p style="line-height: 1.8;"> </p>
<h3 style="line-height: 1.8;"></em> 1、项目功能介绍</h3>
<hr />
<p style="line-height: 1.8;">在平时生活中查看天气预报是每个人都会做的一件事,但是天气预报中无法精确的知道自己所处位置的一个温度和湿度的一个情况,所以在结合日常生活需求后,又发现只读取温湿度太过于单调,于是想要添加时间。但是实际过程中发现数码管不够用,而且数码管的功耗更高,所以采取0.96寸的OLED作为显示器。同时增加了一个人体感应模块用于检测人体靠近唤醒,避免机械按键的一个损耗。综上,该项目主要实现了一个具有时间显示和睡眠功能的桌面温湿度计。</p>
<p style="line-height: 1.8;"> </p>
<h3 style="line-height: 1.8;"><em>2、项目属性</h3>
<hr />
<p style="line-height: 1.8;"> </p>
<p style="line-height: 1.8;"><span style="color: #95a5a6;">该项目首次公开,从想法到设计完全由本人完成,该项目未在其他比赛中获奖,未参与学校的答辩。</span></p>
<p style="line-height: 1.8;"> </p>
<h3 style="line-height: 1.8;"></em> 3、开源协议</h3>
<hr />
<p style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">GPL3.0</span></p>
<p style="line-height: 1.8;"> </p>
<p> </p>
<p style="line-height: 1.8;"> </p>
<p style="line-height: 1.8;"><strong><span style="color: #0093e6;">请在竞赛阶段填写 ↓</span></strong></p>
<p style="line-height: 1.8;"> </p>
<h3 style="line-height: 1.8;">*4、硬件部分</h3>
<hr />
<p style="line-height: 1.8;"> </p>
<h3 style="line-height: 1.8;">实现原理:</h3>
<h4>1.OLED显示部分</h4>
<p>由于本次采用的是软件IIC,所以在STM32cube里面没有对IIC进行配置的步骤。</p>
<p><img src="//image.lceda.cn/oshwhub/c30068b5af354f62b57725cab67d6097.png" /></p>
<p><img src="//image.lceda.cn/oshwhub/271d920f0da7481091cab5ef4f0bb23b.png" /></p>
<p>在代码中我们修改引脚配置为我们预先设定的引脚。</p>
<h4 style="line-height: 1.8;">2.唤醒与睡眠</h4>
<p>我们在做STM32的睡眠的时候,发现睡眠模式可以通过中断和事件唤醒,滴答定时器也是属于中断的一种,所以在控制单片机进入休眠的时候,我们还要做的一件事就是关闭滴答定时器,又因为我们利用的是定时器去做显示器亮屏时间的记录,所以在进入休眠的时候还要把定时器给关闭计时。具体的操作方法如下:配置定时器,编写回调函数和睡眠函数,写好唤醒函数。</p>
<p><img src="//image.lceda.cn/oshwhub/4948f1b6c55c473580d0482047210ad6.png" /></p>
<p>通过这个配置,定时器的中断周期为1MS,亮屏时间为10s后睡眠。代码如下:</p>
<p><img src="//image.lceda.cn/oshwhub/1f30979791944c038275e5e8770af6c6.png" /></p>
<p>这里执行了清屏两次,是为了清除睡眠后屏幕的残余显示。</p>
<p>唤醒部分如下:这里我们做了两个唤醒中断,按键配置为下降沿触发,人体感应配置为上升沿触发。</p>
<p><img src="//image.lceda.cn/oshwhub/dce0858154744a13851f12d39d02cb57.png" /></p>
<h4>3.时间显示</h4>
<p>时间这里采用的是DS1302去进行计时,在PCB设计的时候习惯性的给该芯片上的晶振加上了电容,但是后面焊接发现,不接也没什么事。</p>
<p><img src="//image.lceda.cn/oshwhub/ef5c07ac9323459a87f23b7dd8fff2db.png" /></p>
<p>软件部分如下:</p>
<p><img src="//image.lceda.cn/oshwhub/fea14a60c00a4d108e980f1523e76d75.png" /></p>
<p>主要是要将芯片引脚正确修改就行,如果想要进行设置时间的话,就必须要用到十进制和十六进制的一个转换,不然的话在OLED上显示会出现错误。</p>
<p><img src="//image.lceda.cn/oshwhub/662b171288294cde872e5790e67c1386.png" /></p>
<h4>4.温湿度</h4>
<p>这个部分算是比较重要的一个部分,采用的是盛思瑞的SHT30温湿度模块,这里硬件部分是直接购买的模块。</p>
<p style="line-height: 1.8;"> </p>
<p style="line-height: 1.8;"> </p>
<h3 style="line-height: 1.8;"><em>5、软件部分</h3>
<hr />
<p style="line-height: 1.8;"> </p>
<p style="line-height: 1.8;">本项目的整体代码是在STM32cube上生成的。整体的一个硬件实现思路是:</p>
<p style="line-height: 1.8;">1.先点灯,确定自己的电路大体上设置是没有问题的</p>
<p style="line-height: 1.8;">2.通过移植修改OLED代码,让OLED显示,后续调试参数均在OLED上显示</p>
<p style="line-height: 1.8;">3.编写温湿度传感器相关代码,这里特别要检查IIC的时序,如果出现读取不到的情况,检查时序和初始化</p>
<p style="line-height: 1.8;">4.编写时钟相关代码</p>
<p style="line-height: 1.8;">5.编写睡眠和唤醒相关代码</p>
<p style="line-height: 1.8;">6.整体测试流畅度,功能完整性</p>
<p style="line-height: 1.8;">这个是软件里的一个引脚配置,推荐是一步一步来,避免出现错误难以查找。</p>
<p style="line-height: 1.8;"><img src="//image.lceda.cn/oshwhub/3451876b529d444fa85f079ee8d381e5.png" /></p>
<p style="line-height: 1.8;"> </p>
<p style="line-height: 1.8;"> </p>
<h3 style="line-height: 1.8;"></em>6、BOM清单</h3>
<hr />
<p style="line-height: 1.8;"> </p>
<p style="line-height: 1.8;"> </p>
<h3 style="line-height: 1.8;"><em>7、大赛LOGO验证</h3>
<hr />
<p style="line-height: 1.8;"><img src="//image.lceda.cn/oshwhub/6565930aa68b4ac3b9cc3181f1dbeac6.jpg" alt="" width="1291" height="829" /></p>
<p style="line-height: 1.8;"> </p>
<p style="line-height: 1.8;"> </p>
<h3 style="line-height: 1.8;"></em> 8、演示您的项目并录制成视频上传</h3>
<hr />
<p style="line-height: 1.8;"> </p>
<p style="line-height: 1.8;"><span style="font-size: 14px;"><a href="/posts/de460543d4cf4dacb5f0326612455578" target="_blank" rel="noreferrer noopener">前往查看更多详情 ></a></span></p>
<p style="line-height: 1.8;"> </p></p>
评论(0)