专业版
#第九届立创电赛#基于盛思锐SHT40的桌面低功耗温湿度检测仪

创建时间:3个月前

458 3

描述

<h3 style="line-height:1.8"> 1、项目介绍</h3> <hr> <p style="line-height:1.8">使用盛思锐温湿度传感器+STM32G030K6T6,完成温度和湿度的实时采集。</p> <p style="line-height:1.8">感谢嘉立创提供免费的训练营活动!</p> <p style="line-height:1.8">感谢盛思锐出品的优秀温湿度传感器!</p> <p style="line-height:1.8">为你们点赞!</p> <p style="line-height:1.8"> </p> <h3 style="line-height:1.8">*2、项目属性</h3> <hr> <p style="line-height:1.8"><span style="color:#000000;font-size:14px">项目整体难度不大,嘉立创工程师带领大家从零开始,手把手完成整个项目,非常适合新手学习,我一个电子小白都能完成,相信我你也一样可以的。</span></p> <p style="line-height:1.8"> </p> <h3 style="line-height:1.8">3、开源协议</h3> <hr> <p style="line-height:1.8">GPL3.0</p> <p style="line-height:1.8"> </p> <h3 style="line-height:1.8">4、硬件部分</h3> <hr> <p style="line-height:1.8">(1)电路原理图</p> <p style="line-height:1.8"> </p> <p style="line-height:1.8"><img src="//image.lceda.cn/oshwhub/3557af5e80fc4c1fa7a81a77c6e1889f.png" alt="" width="1170" height="825"></p> <p style="line-height:1.8"> </p> <p style="line-height:1.8">(2)PCB布线图</p> <p style="line-height:1.8"> </p> <p style="line-height:1.8"><img src="//image.lceda.cn/oshwhub/c9a746a9c0ca47f8a6e8913d9bf4e011.png" alt="" width="1026" height="640"></p> <p> </p> <p>(3)3D模型图</p> <p> </p> <h3 style="line-height:1.8;text-align:center"><img src="//image.lceda.cn/oshwhub/ab6db81b665349dda2f0675792058402.png" alt="" width="884" height="521"></h3> <p style="line-height:1.8"> </p> <p style="line-height:1.8">(4)盛思锐温湿度传感器模块</p> <p style="line-height:1.8"> </p> <div> <p><span>    桌面温湿度仪上使用盛思锐公司出品的SHT40温湿度传感器模块用于检测温湿度,</span></p> <p id="ua82507aa"></p> </div> <p style="line-height:1.8"><img src="//image.lceda.cn/oshwhub/c261025301f9444e9b2485858a5e2949.png"></p> <p style="line-height:1.8"> </p> <p><span>SHT40采用IIC进行通信,</span>查看<a href="https://atta.szlcsc.com/upload/public/pdf/source/20211021/851BA36A5CA574D725310F52CADA4510.pdf" target="_blank">SHT40的数据手册</a><span>可知,0x44是IIC地址;当地址最低位是0,表示读数据,最低位是1,表示写数据;</span>当发送0xFD指令时,代表高精度测量温湿度;</p> <p><img src="//image.lceda.cn/oshwhub/5ec0cd3945f64301a080aa3d9744b03e.png"></p> <p><img src="//image.lceda.cn/oshwhub/dd52e82e2b554605bf50049e421d04c3.png"></p> <p><img style="display:block;margin-left:auto;margin-right:auto" src="//image.lceda.cn/oshwhub/f2b5190871d64ebd96a484c888f2184c.png"></p> <p>通过对数据进行公式计算可以得出温湿度;</p> <p><img style="display:block;margin-left:auto;margin-right:auto" src="//image.lceda.cn/oshwhub/0e80e0038f2c4d63a2515e1beda2c9a6.png"></p> <p> </p> <p style="line-height:1.8">(5)磁珠</p> <p style="line-height:1.8">    磁珠在抗干扰方面具有重要作用。它主要用于抑制高频信号和消除传输线结构中的RF噪声,从而减少电磁干扰(EMI)。磁珠允许直流信号通过,但能有效滤除交流信号,特别是射频RF能量。此外,磁珠还具有吸收静电脉冲的能力,有助于保护电路免受意外电气冲击。所以,在电源部分,加了一个谱罗德生产的贴片磁珠,对电路进行保护。</p> <p style="line-height:1.8;text-align:center"><img src="//image.lceda.cn/oshwhub/63513f68e167421fa2f2095ef45ff398.png"></p> <p style="line-height:1.8"><img src="//image.lceda.cn/oshwhub/36886b2c6c7c4779b260e480d76893f3.png"></p> <p style="line-height:1.8"> </p> <h3 style="line-height:1.8">5、软件部分</h3> <hr> <p style="line-height:1.8">见附件 ,软件分为两个版本,一个是常亮版本,用于调试使用;另一个是低功耗模式,可以用于实际使用的场景下,按一下按钮以后,会交替显示几次温湿度,然后进入休眠,减少电量消耗。</p> <p style="line-height:1.8"> </p> <p style="line-height:1.8">(1)数码管+三态移位寄存器</p> <div> <p>       数码管是一种半导体发光器件,其基本单元是发光二极管,也称 LED 数码管。数码管按段数可分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元,就是多的那个小数点(DP),这个小数点可以更精确的表示数码管想要显示的内容,如图所示:</p> <p style="text-align:center"><img src="//image.lceda.cn/oshwhub/de169eadc5a242ba99d4f5bed073a4c0.png"></p> <p>        按显示多少个发光二极管(8)可分为 1 位、 2 位、 3 位、 4 位、 5 位、 6 位、7 位等数码管。</p> <p style="text-align:center"><img src="//image.lceda.cn/oshwhub/0a432e7b0717435da2e56bc199041a88.png"></p> <p>        按连接方式可分为共阳极数码管和共阴极数码管。</p> <p>        <strong>共阳数码管</strong>是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极 COM 接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。</p> <p>        <strong>共阴数码管</strong>是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极 COM 接到地线 GND ,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。<span>     </span></p> <p style="text-align:center"><span><img src="//image.lceda.cn/oshwhub/e4310152bf3f401dbff86596d51d7cc7.png"></span></p> <p style="text-align:center"> </p> <p style="text-align:left"><span>       数码管显示工作方式有两种:<strong>静态显示方式和动态显示</strong>方式。</span></p> <p style="text-align:left"><span>        静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高,比如使用4个静态数码管,那么就需要32个IO来控制。</span></p> <p style="text-align:left"><span><br>        动态显示的特点是将所有数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人感觉各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。</span></p> <p style="text-align:center"> </p> <p><span>      本系统通过两个共阴极3位数码管来显示温度和湿度数据,考虑到引脚数量,这里加入3个移位寄存器SN74HC595PWR来驱动共阴极数码管;</span></p> <p><span><img src="//image.lceda.cn/oshwhub/c04f05a6273f44b68d613f92f6e44d13.png"></span></p> <p style="text-align:center"> <img src="//image.lceda.cn/oshwhub/6b51b945fb2d4543a7693faf582322c5.png"></p> <p>共阴段码:</p> <div> <table> <tr> <td style="text-align:center">段码</td> <td>字符</td> <td>段码</td> <td>字符</td> <td>段码</td> <td>字符</td> <td>段码</td> <td>字符</td> </tr> <tr> <td>0x3f</td> <td>0</td> <td>0x6d</td> <td>5</td> <td>0x77</td> <td>A</td> <td>0x71</td> <td>F</td> </tr> <tr> <td>0x06</td> <td>1</td> <td>0x7d</td> <td>6</td> <td>0x7c</td> <td>B</td> <td>0x00</td> <td>无显示</td> </tr> <tr> <td>0x5b</td> <td>2</td> <td>0x07</td> <td>7</td> <td>0x39</td> <td>C</td> <td> </td> <td> </td> </tr> <tr> <td>0x4f</td> <td>3</td> <td>0x7f</td> <td>8</td> <td>0x5e</td> <td>D</td> <td> </td> <td> </td> </tr> <tr> <td>0x66</td> <td>4</td> <td>0x6f</td> <td>9</td> <td>0x79</td> <td>E</td> <td> </td> <td> </td> </tr> </table> </div> </div> <div> <p id="u816407a2"><span>        </span></p> <p><span>        SN74HC595驱动时序相对简单,首先输入高电平或低电平到SER引脚中,随后产生一个SCLK的上升沿,将数据发送出去,这里是8位数据移位寄存器,所以循环8次,最后一个RCLK的上升沿将数据锁存住,保持不变,直到下一次发送;</span></p> <p id="ud8625ed8"><span>        这里模拟一下发送时序;首先待发送的数据是0xFE(1111 1110),</span><span>此时先发送最高位,也就是0xFE&0x80,判断高低电平;随后数据被送入QA;</span><span>然后继续,发送次高位,也就是(0xFE<<1)&0x80,判断高低电平,随后之前的数据被挤到QB,这个数据移位到QA。</span><span>依次类推...</span></p> </div> <p style="line-height:1.8;text-align:center"><img src="//image.lceda.cn/oshwhub/9cae107f99a5471a87a925b63edb0ede.png"></p> <div> </div> <p style="line-height:1.8">(2)I2C</p> <div> <p id="uec30c564"><span>IIC是一种两线式双向同步串行总线协议,双向的意思是指通信双方均可发送与接受数据;同步是指通信双方具有相同的时钟脉冲(SCL线)。</span></p> <p id="u46615239"><span>在IIC中把设备分为主设备与从设备,一般来说,谁控制时钟线谁就是主设备;</span></p> <p id="u13d4f639"><span>IIC设备均有一个器件地址,在多个设备通信时,根据器件地址来进行辨别;</span></p> <p id="u873b7b3a"><span>IIC是半双工通信,同一时间内仅支持单向通信(只有一根数据线);</span></p> <p id="ue23c6a1c"><span>单片机的IIC引脚通常设置为开漏输出,通过外部的上拉电阻来输出高电平,这样做的好处是防止多个设备通信时,信号混乱。</span></p> <p id="ubc3f08d2"><span>在整个IIC通信过程中,主要包含以下几个过程;</span></p> <ul> <li id="u8c6dc0df"><span>主机开始时序;</span></li> <li id="u021084e3"><span>主机发送地址时序;</span></li> <li id="uca9395b3"><span>主机等待从机应答时序;</span></li> <li id="u816d6856"><span>主机发送读/写数据时序;</span></li> <li id="ue3aabf3a"><span>主机等待从机应答时序;</span></li> <li id="u7f1d0ceb"><span>停止时序;</span></li> </ul> </div> <p style="line-height:1.8">(3)电压采集</p> <p style="line-height:1.8">(4)盛思锐温湿度传感器模块</p> <p style="line-height:1.8"> </p> <h3 style="line-height:1.8">6、打怪经过</h3> <hr> <p style="line-height:1.8">第一次搞铁板烧贴片,第一次用STM32CubeMX,第一次用I2C,第一次用盛思锐的温湿度传感器,折腾的过程痛并快乐着,但是结果是美丽的,<strong>生命的意义不就在于不断挑战自己,突破自己吗?</strong></p> <p style="line-height:1.8"> </p> <p style="line-height:1.8">(1)第一次尝试焊接贴片器件,使用粗针头放置锡膏过多,导致连锡非常严重。以后每个焊点少量使用锡膏即可。铁板烧焊接器件一定要先焊接引脚多的,不容易焊的,电容、电阻、LED往后放,他们反而容易处理。</p> <p style="line-height:1.8"> </p> <p style="line-height:1.8">(2)连锡的处理方法:抹上适量的助焊剂,然后使用刀头甩出来;使用吸锡带,加热的情况下吸走多余的锡;补上点锡,用电烙铁向外拖,带走多余的锡膏,相关教程:https://www.bilibili.com/video/BV1Xa411u7mg</p> <p style="line-height:1.8"> </p> <p style="line-height:1.8">(3)在下载程序的时候,出现能够识别下载器,但是无法通讯的问题,提示错误:<strong>SWD/JTAG Communication Failure连接失败,</strong>检查发现VDD与3V网络未连接,导致无法给MCU供电,L1到R3飞线连接后,下载正常。</p> <p style="line-height:1.8"> </p> <p style="text-align:center"><img src="//image.lceda.cn/oshwhub/29594edfc3264ac2bb136fe478a2944b.png"><img src="//image.lceda.cn/oshwhub/cbfb9869f502424ca6c5fbf8d65d432d.png"></p> <p style="text-align:center"><img src="//image.lceda.cn/oshwhub/cf762484bf214364a8ff7d3b8d9a0cd6.png"></p> <p style="text-align:center"> </p> <p style="line-height:1.8">(4)STM32CubeMX编程方式非常简单省力,对新手友好,可以多使用,拖拖拽拽就能写程序,不用记那么多让人头疼的东西多好啊。</p> <p style="line-height:1.8"> </p> <p style="line-height:1.8">(5)Keil安装MCU对应软件包速度很慢,可以自己下载以后,手动安装,下载地址<a href="https://www.keil.arm.com/devices/" target="_blank"><u>https://www.keil.arm.com/devices/</u></a> 首先搜索对应的型号,比如STM32F103C8,</p> <p style="line-height:1.8"> </p> <p style="line-height:1.8"><img src="//image.lceda.cn/oshwhub/cb6cf0a9289c448697e9f114add2a826.png"></p> <p> </p> <p>搜索以后点击对应的MCU连接,进入详细页面,点击红框内的内容,进入下载界面</p> <p> </p> <p><img src="//image.lceda.cn/oshwhub/a313e5f855e643d7bb723f984bf2c0ce.png"></p> <p><img src="//image.lceda.cn/oshwhub/2277f7bda2814480b95fcd70ac90f9bd.png"></p> <p> </p> <p>(6)使用沁恒下载器下载的时候,需要打开沁恒的下载器工具WCH-LinkUtility.exe,切换模式到WCH-LinkDAP-WVINUSB,先点“get”获取支持的模式列表,然后选中WCH-LinkDAP-WVINUSB点“set”。设置完毕以后,记得关闭WCH-LinkUtility.exe,防止占用下载器导致keil连接失败。</p> <p> </p> <p style="text-align:center"><img src="//image.lceda.cn/oshwhub/15a010cb1ff74617b9b0928ba7f9149a.png"></p> <p style="text-align:center"> </p> <p><strong>K</strong><strong>eil中使用方法:</strong></p> <p> </p> <ul> <li>打开魔法棒(Options for Target )。</li> <li> </li> </ul> <p style="text-align:center"><img src="//image.lceda.cn/oshwhub/03d8ee4cf3d9433e9d3d917d391e8e85.png"></p> <p> </p> <ul> <li>点击Debug,选择使用CMSIS-DAP Debugger。</li> </ul> <p style="text-align:center"> </p> <p style="text-align:center"><img src="//image.lceda.cn/oshwhub/d152aa1ac71d44c8991a2f6968e0c7b5.png"></p> <p style="text-align:center"> </p> <ul> <li>点击Settings,如果左侧能识别序列号,右侧可以识别sw设备,就可以正常使用了。</li> </ul> <p> </p> <p style="text-align:center"><img src="//image.lceda.cn/oshwhub/98a984828d364720b35a9c82ff69a340.png"></p> <p> 选中“Reset and Run”下载程序后自动重新运行,否则需要你手动断电再上电</p> <p style="text-align:center"><img src="//image.lceda.cn/oshwhub/d3ae5e8b081645d69266e803e89fcc53.png" width="616" height="459"></p> <p>(7)焊接LED没有注意正反,导致其中一个反接了,电路不通,写入程序后无法正常执行,修改以后点灯成功。</p> <p> </p> <p style="text-align:center"><img src="//image.lceda.cn/oshwhub/f0e3f791b07f415e94264ec2114f68f3.png"></p> <p style="text-align:center"> </p> <p style="text-align:left">(8)数码管显示不正常问题的处理:三个595,其中第一个连锡没处理好,在测试程序的时候,遇到问题:</p> <ul> <li>第一个显示不正常,显示不全</li> <li>第二个数码管三段显示相同的数字正常,如果让三段显示不同的数字就会出现999</li> </ul> <p>      处理好连锡以后,2个数码管都正常了</p> <p> </p> <p style="text-align:center"><img src="//image.lceda.cn/oshwhub/07af3f3aea98418fb9ed6a6c3a432608.png"></p> <p style="text-align:center"> </p> <p>(9)i2c问题处理:只要启用i2c,数码管就失效,有人建议使用软件i2c,尝试使用软件模拟i2c功能,发现问题依然存在</p> <p>          <strong>个人排查思路:</strong></p> <ul> <li>软件方面:基本可以确定软件没问题,使用官方代码存在相同问题,如果要进一步排查,可以用别的stm单片机测试一下i2c功能,并读取温湿度模块的值;</li> <li>检查i2c功能的两个IO口p8和p9是否存在短接的情况,可能直接短接,也可能是温湿度模块底座引脚短接;(<strong>发现问题出在这里,温湿度模块底座有两个连锡短接</strong>)</li> <li>写入程序,运行i2c功能后,用万用表测量引脚输出,看是否正常</li> </ul> <p> </p> <p style="text-align:center"><img src="//image.lceda.cn/oshwhub/009b17aa88a844e09d323a0cb02b6019.png"></p> <p style="text-align:center"> </p> <p>清除连锡以后,重新写入程序,显示正常</p> <p> </p> <p style="text-align:center"><img src="//image.lceda.cn/oshwhub/26d5d225b6ce4c6aba4b869c5ca0d44c.png"></p> <p style="text-align:center"> </p> <p style="text-align:left">(10)下载成功一次以后,再下载失败问题</p> <p>写入官方程序以后,再一次烧写程序,会遇到弹窗三连,这个问题是因为程序为了省电,让系统进入了低功耗模式,这时候按一下板子上的按键激活程序或者重新上电,就可以写入了。<span style="color:#2dc26b"><strong>这个问题群里的朋友们遇到的比较多,希望后面的人复刻的时候注意一下。</strong></span></p> <p style="text-align:center"> </p> <p style="text-align:center"><img src="//image.lceda.cn/oshwhub/3742850e231a469390fda1cb8f72b4f8.png"><img src="//image.lceda.cn/oshwhub/34245b354f93439bb68134aa7a4a35fc.png"></p> <p style="text-align:center"><img src="//image.lceda.cn/oshwhub/093f42d0e4b146f4973acff1969a23ca.png"></p> <p style="text-align:left"> </p> <p style="text-align:center"><span style="color:#e03e2d"><strong>历经九九八十一难,终于成功修得正果!</strong></span></p> <h3 style="line-height:1.8">7、BOM清单</h3> <hr> <p style="line-height:1.8">见附件 </p>

文档

BOM

暂无

附件

附件名 下载
桌面温湿度检测仪BOM(1).xlsx
桌面温湿度检测仪程序(自动休眠版).7z
桌面温湿度检测仪程序(常亮版).zip
fe97b12142f409d7eae267f3d46090b2.mp4

成员

评论(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