发作品签到
专业版

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

工程标签

1.1k
0
0
0

简介

立创温湿度检测仪训练营项目,使用STM32+盛思锐温湿度传感器完成温度和湿度采集。Sensirion是一家世界知名的传感器解决方案开发商和制造商,成立于1998年,总部位于瑞士。

简介:立创温湿度检测仪训练营项目,使用STM32+盛思锐温湿度传感器完成温度和湿度采集。Sensirion是一家世界知名的传感器解决方案开发商和制造商,成立于1998年,总部位于瑞士。

开源协议

GPL 3.0

创建时间:2024-07-05 12:27:05更新时间:2024-07-26 07:52:22

描述

 1、项目介绍


使用盛思锐温湿度传感器+STM32G030K6T6,完成温度和湿度的实时采集。

感谢嘉立创提供免费的训练营活动!

感谢盛思锐出品的优秀温湿度传感器!

为你们点赞!

 

*2、项目属性


项目整体难度不大,嘉立创工程师带领大家从零开始,手把手完成整个项目,非常适合新手学习,我一个电子小白都能完成,相信我你也一样可以的。

 

3、开源协议


GPL3.0

 

4、硬件部分


(1)电路原理图

 

 

(2)PCB布线图

 

 

(3)3D模型图

 

 

(4)盛思锐温湿度传感器模块

 

    桌面温湿度仪上使用盛思锐公司出品的SHT40温湿度传感器模块用于检测温湿度,

 

SHT40采用IIC进行通信,查看SHT40的数据手册可知,0x44是IIC地址;当地址最低位是0,表示读数据,最低位是1,表示写数据;当发送0xFD指令时,代表高精度测量温湿度;

通过对数据进行公式计算可以得出温湿度;

 

(5)磁珠

    磁珠在抗干扰方面具有重要作用。它主要用于抑制高频信号和消除传输线结构中的RF噪声,从而减少电磁干扰(EMI)。磁珠允许直流信号通过,但能有效滤除交流信号,特别是射频RF能量。此外,磁珠还具有吸收静电脉冲的能力,有助于保护电路免受意外电气冲击。所以,在电源部分,加了一个谱罗德生产的贴片磁珠,对电路进行保护。

 

5、软件部分


见附件 ,软件分为两个版本,一个是常亮版本,用于调试使用;另一个是低功耗模式,可以用于实际使用的场景下,按一下按钮以后,会交替显示几次温湿度,然后进入休眠,减少电量消耗。

 

(1)数码管+三态移位寄存器

       数码管是一种半导体发光器件,其基本单元是发光二极管,也称 LED 数码管。数码管按段数可分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元,就是多的那个小数点(DP),这个小数点可以更精确的表示数码管想要显示的内容,如图所示:

        按显示多少个发光二极管(8)可分为 1 位、 2 位、 3 位、 4 位、 5 位、 6 位、7 位等数码管。

        按连接方式可分为共阳极数码管和共阴极数码管。

        共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极 COM 接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。

        共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极 COM 接到地线 GND ,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。     

 

       数码管显示工作方式有两种:静态显示方式和动态显示方式。

        静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高,比如使用4个静态数码管,那么就需要32个IO来控制。


        动态显示的特点是将所有数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人感觉各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。

 

      本系统通过两个共阴极3位数码管来显示温度和湿度数据,考虑到引脚数量,这里加入3个移位寄存器SN74HC595PWR来驱动共阴极数码管;

 

共阴段码:

段码 字符 段码 字符 段码 字符 段码 字符
0x3f 0 0x6d 5 0x77 A 0x71 F
0x06 1 0x7d 6 0x7c B 0x00 无显示
0x5b 2 0x07 7 0x39 C    
0x4f 3 0x7f 8 0x5e D    
0x66 4 0x6f 9 0x79 E    

       

        SN74HC595驱动时序相对简单,首先输入高电平或低电平到SER引脚中,随后产生一个SCLK的上升沿,将数据发送出去,这里是8位数据移位寄存器,所以循环8次,最后一个RCLK的上升沿将数据锁存住,保持不变,直到下一次发送;

        这里模拟一下发送时序;首先待发送的数据是0xFE(1111 1110),此时先发送最高位,也就是0xFE&0x80,判断高低电平;随后数据被送入QA;然后继续,发送次高位,也就是(0xFE<<1)&0x80,判断高低电平,随后之前的数据被挤到QB,这个数据移位到QA。依次类推...

 

(2)I2C

IIC是一种两线式双向同步串行总线协议,双向的意思是指通信双方均可发送与接受数据;同步是指通信双方具有相同的时钟脉冲(SCL线)。

在IIC中把设备分为主设备与从设备,一般来说,谁控制时钟线谁就是主设备;

IIC设备均有一个器件地址,在多个设备通信时,根据器件地址来进行辨别;

IIC是半双工通信,同一时间内仅支持单向通信(只有一根数据线);

单片机的IIC引脚通常设置为开漏输出,通过外部的上拉电阻来输出高电平,这样做的好处是防止多个设备通信时,信号混乱。

在整个IIC通信过程中,主要包含以下几个过程;

  • 主机开始时序;
  • 主机发送地址时序;
  • 主机等待从机应答时序;
  • 主机发送读/写数据时序;
  • 主机等待从机应答时序;
  • 停止时序;

(3)电压采集

(4)盛思锐温湿度传感器模块

 

6、打怪经过


第一次搞铁板烧贴片,第一次用STM32CubeMX,第一次用I2C,第一次用盛思锐的温湿度传感器,折腾的过程痛并快乐着,但是结果是美丽的,生命的意义不就在于不断挑战自己,突破自己吗?

 

(1)第一次尝试焊接贴片器件,使用粗针头放置锡膏过多,导致连锡非常严重。以后每个焊点少量使用锡膏即可。铁板烧焊接器件一定要先焊接引脚多的,不容易焊的,电容、电阻、LED往后放,他们反而容易处理。

 

(2)连锡的处理方法:抹上适量的助焊剂,然后使用刀头甩出来;使用吸锡带,加热的情况下吸走多余的锡;补上点锡,用电烙铁向外拖,带走多余的锡膏,相关教程:https://www.bilibili.com/video/BV1Xa411u7mg

 

(3)在下载程序的时候,出现能够识别下载器,但是无法通讯的问题,提示错误:SWD/JTAG Communication Failure连接失败,检查发现VDD与3V网络未连接,导致无法给MCU供电,L1到R3飞线连接后,下载正常。

 

 

(4)STM32CubeMX编程方式非常简单省力,对新手友好,可以多使用,拖拖拽拽就能写程序,不用记那么多让人头疼的东西多好啊。

 

(5)Keil安装MCU对应软件包速度很慢,可以自己下载以后,手动安装,下载地址https://www.keil.arm.com/devices/ 首先搜索对应的型号,比如STM32F103C8,

 

 

搜索以后点击对应的MCU连接,进入详细页面,点击红框内的内容,进入下载界面

 

 

(6)使用沁恒下载器下载的时候,需要打开沁恒的下载器工具WCH-LinkUtility.exe,切换模式到WCH-LinkDAP-WVINUSB,先点“get”获取支持的模式列表,然后选中WCH-LinkDAP-WVINUSB点“set”。设置完毕以后,记得关闭WCH-LinkUtility.exe,防止占用下载器导致keil连接失败。

 

 

Keil中使用方法:

 

  • 打开魔法棒(Options for Target )。
  •  

 

  • 点击Debug,选择使用CMSIS-DAP Debugger。

 

 

  • 点击Settings,如果左侧能识别序列号,右侧可以识别sw设备,就可以正常使用了。

 

 选中“Reset and Run”下载程序后自动重新运行,否则需要你手动断电再上电

(7)焊接LED没有注意正反,导致其中一个反接了,电路不通,写入程序后无法正常执行,修改以后点灯成功。

 

 

(8)数码管显示不正常问题的处理:三个595,其中第一个连锡没处理好,在测试程序的时候,遇到问题:

  • 第一个显示不正常,显示不全
  • 第二个数码管三段显示相同的数字正常,如果让三段显示不同的数字就会出现999

      处理好连锡以后,2个数码管都正常了

 

 

(9)i2c问题处理:只要启用i2c,数码管就失效,有人建议使用软件i2c,尝试使用软件模拟i2c功能,发现问题依然存在

          个人排查思路:

  • 软件方面:基本可以确定软件没问题,使用官方代码存在相同问题,如果要进一步排查,可以用别的stm单片机测试一下i2c功能,并读取温湿度模块的值;
  • 检查i2c功能的两个IO口p8和p9是否存在短接的情况,可能直接短接,也可能是温湿度模块底座引脚短接;(发现问题出在这里,温湿度模块底座有两个连锡短接
  • 写入程序,运行i2c功能后,用万用表测量引脚输出,看是否正常

 

 

清除连锡以后,重新写入程序,显示正常

 

 

(10)下载成功一次以后,再下载失败问题

写入官方程序以后,再一次烧写程序,会遇到弹窗三连,这个问题是因为程序为了省电,让系统进入了低功耗模式,这时候按一下板子上的按键激活程序或者重新上电,就可以写入了。这个问题群里的朋友们遇到的比较多,希望后面的人复刻的时候注意一下。

 

 

历经九九八十一难,终于成功修得正果!

7、BOM清单


见附件 

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
桌面温湿度检测仪BOM(1).xlsx
2
2
桌面温湿度检测仪程序(自动休眠版).7z
16
3
桌面温湿度检测仪程序(常亮版).zip
39
4
fe97b12142f409d7eae267f3d46090b2.mp4
1
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航