
#第九届立创电赛#温湿度检测仪
简介
基于合宇AIR001主控、盛思锐SHT40传感器模块的温湿度检测仪。
简介:基于合宇AIR001主控、盛思锐SHT40传感器模块的温湿度检测仪。开源协议
:CC BY 4.0
描述
1、项目介绍
本项目为嘉立创桌面温湿度仪训练营参训项目,是一款掌心级桌面迷你温湿度检测仪。其采用盛思锐SHT40作为温湿度传感器,具有体积小、精度高、速度快等特点。在充分学习理解参训项目的情况下,只保留盛思锐SHT40传感器模块,做了如下改动:
1、更换主控为价格低廉但资源满足使用的合宇AIR001。
2、对主频稳定性能没有要求,因而移除外部晶振。
3、更换所有贴片阻容为0603的封装以减小体积。
4、更换其他功能一致但价格更为低廉的元器件(如移位寄存器、数码管等)。
此外本项目还添加了双数码管同时显示,传感器模块失联检测,无操作进入低功耗模式等功能。
2、硬件部分
电源供应
供电主要由两节5号1.5V干电池构成,先在供电输入出处添加1个MOS管起到防反接的作用,然后在各个IC供电引脚处添加电容使其电源更加平稳。
数据采集
温湿度传感器模块由1块4针1.27毫米排母与主控I2C引脚相连,并根据时序要求添加上拉电阻。
数据输出
在数据采集到之后,数据经由3个移位寄存器连接至2个3位数码管的段选和位选引脚,控制每位数码管各个段的通断进行显示。
状态控制
使用两颗LED分别用于判断检测器是否运行以及移位寄存器是否正常。
并添加1个按键用于启动温湿度采样和低功耗模式唤醒。
3、软件部分
核心流程
系统采用Keil5编写,并使用合宇官方提供的外设库控制片上外设,主要程序逻辑如下:
程序启动时会初始化所有外设并然后配置系统时钟,接着初始化LED、按键和I2C的GPIO及功能复用。
当准备工作完成就绪后,就可以启动温湿度传感器进行数据采集,并通过移位寄存器控制数码管显示。数据采集时会对温湿度传感器进行超时检测,若超过指定的响应时间则会如视频2所显示特定标识。
最后经过10秒的等待,程序会进入低功耗模式以节省电量。
数据采集
根据SHT40数据手册,可得其I2C地址为0x44,主控向传感器发送0xFD采集指令后便可返回6个字节数据。
其中第0和第1个为温度数据,第3和第4个为湿度数据,然后根据给定公式计算实际结果。
数据输出
采样数据通过移位寄存器输出至数码管,先查看数码管接口定义:
数码管由8个位输入端连接到3个公共连接端,输入端进行数码管的段选控制,公共端进行位选控制。
由于控制端口高达8*3*2=48个,若全部连接至主控的GPIO口就过于浪费IO资源,所以就需要移位寄存器进行存储转发,来看移位寄存器:
移位寄存器通过两个时钟控制端分提供数据移位和输出的时钟信号,每8个时钟周期可通过数据传输端获得1个字节数据,并由8个端口按位同时输出。
主控提供时钟控制信号和数据传输信号连接至3个移位寄存器,移位寄存器输出端口连接至2个数码管,这里就需要对数据进行编码:
以顺时针高位优先对数码管的每个段进行编码,数字要显示的段就为1,反之则为0。为提供一定的视觉效果,将绕数码管四周的跑马灯一并进行编码。
按原项目设计,2个数码管分别显示数据的观感并不是太好,由于两个数码管的位选择可以同时控制,所以让两个数码管同时输出同一位的数据,既提升了显示效果,也减少了等待时间。
然后就可以将采集而来的数据通过移位寄存器对数码管进行显示控制了:
低功耗模式
若在10秒内未对其进行操作,则会关闭所有外设时钟,进入低功耗模式。当检测到按键输入时会触发中断进行系统复位,便可重新开始进行采样输出。
设计图

BOM


评论