描述
<div>
<h3 style="line-height:1.8">* 1、项目功能介绍</h3>
<hr>
<p style="line-height:1.8"><span style="color:#95a5a6"><span style="font-size:14px">这个盛思锐温湿度检测仪虽然简单, 但是非常有用, 盛思锐的温湿度.传感器高精度并且小巧, 方便生活中使用.</span></span></p>
<p style="line-height:1.8"> </p>
<h3 style="line-height:1.8">*2、硬件部分</h3>
<hr>
<p style="line-height:1.8">早期设计的时候, 盛思锐SHT40温湿度传感器老师原理图设计的插件模块. 但是有一段时间就缺货, 就考虑买单独的芯片自己焊接. </p>
<p style="line-height:1.8">但其他部分都是和老师的设计一样的. 一方面为了方便学习, 有更多的时间很精力学习这些新的知识. 另外一方面, 这个设计也是比较简单实用的. </p>
<p style="line-height:1.8">等我熟悉学会相关知识之后, 在将来的使用或者活动中, 会尽量采用自己单独的设计. </p>
<p style="line-height:1.8">硬件设计方面, 这个项目采用了 盛思锐SHT40温湿度传感器, 通过I2C方式读取温湿度数据. 通过位移寄存器控制数码管的显示.</p>
<p style="line-height:1.8">因为位移寄存器, 每次发送的数据. 都会存储,并和之前收到的数据位一起向后移位, 以此来控制某个引脚的电平高低. 想要显示某个数字.</p>
<p style="line-height:1.8">只需按一定顺序发送这个数字对应的位. </p>
<p style="line-height:1.8">这个项目没有采用直接插usb等外部供电的方式, 采用了干电池(也可以用锂电池替换), 但功耗就比较高. 所以采用休眠的机制. 尚未加入人体识别等开关. </p>
<p style="line-height:1.8">仅仅采用 通常休眠用按钮唤醒的方式降低功耗. </p>
<p style="line-height:1.8">说到硬件方面, 我虽然之前已经复刻过几个开源广场的项目了. 但还是没有一把过. 踩了很多坑. </p>
<p style="line-height:1.8">1) 踩坑1: 因为缺货的问题, 比如硬件选型这个问题就会出问题. 如果因为缺货, 使用了替代件, 一定要考虑引脚是否一样, 封装是否一样.</p>
<p style="line-height:1.8">这次, 因为传感器插件模块没货. 采用了焊接芯片的方式, 这个是事先想到的. 原理图和PCB都有修改. 但是电池盒没想到也缺货. 后面使用了替代件后. </p>
<p style="line-height:1.8">没考虑到尺寸居然比较大, 不能很好的适配板子大小. 引脚孔位不匹配. 所以采用了飞线. 加了个针搭桥焊接了一下. 勉强能用. </p>
<p style="line-height:1.8">2) 踩坑2: 外壳虽然设计了. 还得改, 但是遇到EDA有bug无法导出. 所以暂时不制作外壳实物了. 问了EDA的工程师说近期会修正. </p>
<p style="line-height:1.8">3) 踩坑3: 焊接黏连, 数码管虚焊等等问题. 排查了很久. 建议大家 先用万能表测一下电路. 如果有短路什么的别上电! 否则烧了就得买芯片了</p>
<p style="line-height:1.8">下面是实物图</p>
<p style="line-height:1.8"><img src="//image.lceda.cn/oshwhub/43735eef2e024b948caba2d4abc43408.jpg" alt="" width="1280" height="1707"></p>
<p style="line-height:1.8"><img src="//image.lceda.cn/oshwhub/fb43b7a02f93412ab38a65642f479119.jpg" alt="" width="1280" height="1707"></p>
<p style="line-height:1.8"><img src="//image.lceda.cn/oshwhub/5c9dfa71fa3f4e9c8043b03691931218.jpg" alt="" width="1280" height="1707"></p>
<p style="line-height:1.8"><img src="//image.lceda.cn/oshwhub/04f255041c9541e0a04e61639c22c1fb.jpg" alt="" width="1440" height="1920"></p>
<h3 style="line-height:1.8">*3、软件部分</h3>
<hr>
<p style="line-height:1.8">因为硬件设计方面, 采用了和老师基本一样的原理图. 并以此为契机, 学习了一下. STM32这个专用工具的使用, 以及数码管显示等内容. </p>
<p style="line-height:1.8">据说STM32CubeMX这种方式已经现在芯片开发最流行的方式之一,只需工具配置一下. 即可加入定时器初始化, GPIO配置, 中断句柄等功能代码. </p>
<p style="line-height:1.8">避免了重复繁杂的基础工作, 并且还能避免很多手误失误. 但是坏处是, 让新手学到的东西变少了, 对底层细节懂的更少了. </p>
<p style="line-height:1.8">软件方面, 初始就关闭数码管显示</p>
<p style="line-height:1.8"> SN74HC595_Send_Data(SN_DIG,0xFF);<br> SN74HC595_Send_Data(SN_LED1,0x00);<br> SN74HC595_Send_Data(SN_LED2,0x00);</p>
<p style="line-height:1.8">然后暂停滴答定时器, 因为定时器初始化后, 滴答定时器会很快唤醒mcu</p>
<p style="line-height:1.8">接着进入睡眠模式. 这里以WFI进入的睡眠模式任何中断均可将MCU唤醒. 实际用的按键唤醒.</p>
<p style="line-height:1.8">睡眠功能不能写错, 搞错不方便刷固件. 要按键唤醒后立马写入才行. (或者直接用刷机工具PWLink上位机软件刷入)</p>
<p style="line-height:1.8"> HAL_SuspendTick();<br> HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI);</p>
<p style="line-height:1.8">测试的例子做了稍微修改了一下, 改成常亮, 效果比较好. 但过程中也遇到一点困难, 比如定时器回调里不能等待.</p>
<p style="line-height:1.8">比如数码管消影, 数码管亮度不够, 数码管闪烁等问题. 参考老师的代码修改, 都基本得到解决.</p>
</div>
评论(0)