版本协议

Public Domain

专业版
#第九届立创电赛#盛思锐温湿度检测仪

创建时间:3个月前

189 2

描述

<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>

文档

BOM

暂无

附件

附件名 下载
QQ视频20240721052152.mp4
ser_code.zip

成员

评论(0)

  • 表情
    emoji
    小嘉工作篇
    小嘉日常篇
  • 图片
成功
工程所有者当前已关闭评论
goToTop
svg-battery svg-battery-wifi svg-books svg-more svg-paste svg-pencil svg-plant svg-ruler svg-share svg-user svg-logo-cn svg-double-arrow