
#第九届立创电赛#温湿度传感器
简介
基于STM32G030K6T6的桌面温湿度检测仪,使用盛思锐温湿度传感器,通过使用2个3位数码管进行显示。
简介:基于STM32G030K6T6的桌面温湿度检测仪,使用盛思锐温湿度传感器,通过使用2个3位数码管进行显示。开源协议
:Public Domain
描述
1、项目功能介绍
桌面温湿度检测仪项目使用STM32G030K6T6芯片作为主控芯片,这款芯片使用的是ArmCortex-M0+内核;最大主频64Mhz。具有32KB的Flash以及8K的SRAM,供电电压在2.0V~3.6V之间。
使用这款芯片可以通过STM32CubeMX软件进行基础代码生成与配置,图形化的方式可以快速上手使用芯片,对新手小白非常友好。
此次的温湿度检测仪可以实现高精度的温湿度检测,检测模块使用的是盛思锐生产的第四代
SHT40温湿度传感器模块,有着高精度,超低功耗的16位相对湿度和温度。
该显示仪可同时显示当前环境的温度和湿度,并且在1s后刷新一次,还有一个通过按键触发中断,并且显示当前的电池电压,显示时间维持1s左右。
2、硬件部分:
2-1整体原理图设计:
2-2主控电路:
主控MCU的供电通过L1的磁珠和C2的电容,达到滤波的目的,使MCU获得干净的电源,主控的外围引脚连接按照产品手册中的引脚定义进行使用,这里需要注意的是有特定功能的引脚要使用其功能,如传感器的接入要使用IIC的功能,就要预留带有IIC功能的引脚。方便后期的引脚使用。
2-3晶振电路:
使用32.768KHz的时钟晶振来给RTC提供计时,可以使温湿度检测仪有计时功能,方便后期的功能拓展。
2-4温湿度传感器电路:
本次项目的核心部件,使用SHT40温湿度传感器模块,SHT40是盛思锐生产的第四代,高精度,超低功耗的16位相对湿度和温度传感器,主要特性参数:相对湿度精度可以达到:±1.5%RH,温度精度可以达到:±0.1℃,平均的工作电流:0.4μA,空闲电流:80nA,工作范围:0-100%RH,-40-125℃,可以满足日常的温湿度测量需求。
SHT40非常小,焊接难度很高,所以这里直接使用的本次大赛专供的SHT40模块,方便使用。
2-5三态输出 8 位移位寄存器电路:
为了点亮多个数码管,这边选用了SN74HC595PWR寄存器来连接数码管进行显示,通过MCU较少的引脚就可以控制多个数码管。
2-6按键电路:
原本的按键是用来唤醒MCU的休眠状态,由于我加入了电源开关,代码中就没设置单片机的休眠模式,该按钮就用作中断显示当前检测仪的电源电压。
2-7测试LED电路:
为了方便后期软件的调试,使用两颗LED来进行软件部分的代码调试使用,两个灯分别连在了移位寄存器和MCU的GPIO上。
2-8数码管电路:
数码管这边使用了两个0.28寸共阴极3位数码管,来分别显示温度和湿度,实际中,由于共阴极数码管缺货,我使用的是共阳极数码管,若是共阴极,则代码中的对应位取反即可。
2-9电池电量测量电路:
使用两个10K电阻对要采集的电源进行分压,以免要测的电源电压过大而烧坏单片机,为了确保测量的精度,使用MCU内部的基准电压作为参考电压。
2-10电池电路:
电池供电部分使用两节5号电池为整体系统供电,为了防止电池反接烧坏IO口,这边使用WST3401来实现防反接保护,并加入了电源开关。
2-11调试接口:
通过外接SWD下载调试接口实现对整体项目的软件的烧录和调试。
3、PCB展示
3-1PCB整体布局走线
3-2 PCB 3D图展示
4、软件部分
4-1软件的前期准备
软件部分使用STM32CubeMX软件生成基础的代码配置,如GPIO口的初始化,IIC初始化,ADC初始化,中断初始化。



4-2代码部分
主函数,循环显示温度和湿度,若按键触发中断后,则显示当前电压值,第二行可显示自定义的字符,显示大概1秒左右,并将中断标志变量置0。
获取温度函数,使用IIC通讯协议,发送读写地址后,获取的值经过公式计算即可得到温湿度的值
ADC获取电压函数,获取要检测的电压的采集值和内部基准电压采集通道的值,换算后即可得到电池的电压。
中断函数,按键触发中断后,将led的状态反转并将中断标志置1。
移位数据寄存器发送数据函数
数码管显示函数
5.最终实物展示
设计图

BOM


评论