
STM32嵌入式系统在许多控制领域有着广泛的应用。STM32是一款基于Cortex-M3内核的微控器,该控制器在性能和成本以及低功率操作和硬实时控制方面设定了新的标准。
尽管市场上已有多种温湿度采集系统,但具有低功耗且自带数据记录功能的采集器较少,并且费用较高。本文中采用STM32F103RET6设计了温湿度采集系统。该系统工作时间长约30天,低功耗模式采用了停止模式实现,温湿度传感器使用SHTIO温湿度传感器。结合实际使用环境,采集周期为5分钟。采用18650锂电池供电,具有SD卡存储功能,且能实现USB全速通信和串口通信。
1、温湿度采集器设计 1.1、硬件设计
采集器的结构框架如图l所示,主要有供电模块,USB全速通信模块,STM32芯片,SD卡存储模块,温湿度传感器,串口通信模块,JTAG调试模块组成。

图1 系统硬件组成
考虑体积因素,系统采用18650充电锂电池供电,单节2400mah电池充满电后可以工作2个月左右时间。
STM32以合秦公司的HT7333降压模块供电。通过RTC实时时钟控制,每5分钟唤醒一次,进行数据采集。以自定义的通信协议通过SHT10温湿度传感器获取数据。采集到的温湿度数据以16进制形式写入SD卡。SD卡中的数据可以经由串口通信模块和USB全速通信模块导出,也可以直接由SD卡读出。
1.2、SHT10温湿度传感器通信时序
SHT10温湿度传感器的通信时序如图2所示。

图2 SHT10时序图
传感器以不小于1V/ms的上电速率供电后,首先进入11ms的休眠状态,在此期间不允许对传感器发送任何指令。当准备传输数据时,需用一组“启动时序”完成数据传输的初始化。该启动时序为:当SCK时钟为高电平时,DATA翻转为低电平,紧接着SCK变为低电平,随后在SCK时钟高电平时,DATA翻转为高电平。后续命令包含三个地址位和五个命令位。传感器接收到命令后,会在第8个SCK下降沿后将DATA下拉为低电平(ACK位)。在第9个SCK下降沿后,释放DATA,将其恢复为高电平。
其5位的命令集如表1所示。
表1 SHT10命令集

在“启动时序”发送温湿度测量的命令(00000101表示相对湿度,00000011表示温度)后,控制器等待测量结束。过程大约为20/80/320ms,分别对应8/12/14bits测量。采集网传感器通过下拉DATA至低电平并进入空闲模式表示测量结束。控制器在再次出发SCK前必须等待“数据备妥”信号读取数据。温湿度数据可以先被存储,这样控制器可以继续指向其他任务,在需要时再读出数据。
接着传输2个字节的测量数据和1个字节的CRC奇偶校验。传感器下拉DATA为低电平,以确认每个字节。所有数据从MSB开,右值有效。收到CRC确认位之后,表示通讯结束。若不使用CRC-8校验,过保持ACK高电平终止通讯。测量和通讯完成后,传感器进入休眠模式。
1.3、通讯接口配置
温湿度传感器与STM32的GPIOBPIN6和GPIOBPIN7连接,其中PIN6为时钟通讯端口,PIN7为数据通讯端口。STM32的PIN6脚为传输速度50MHz的推挽输出,PIN7脚为传输速度50MHz的推挽输入输出模式(接受数据时为输入,发送应答指令时为输出)。
“启动时序”通过写SHT10的SCK和DATA实现。先将PIN7脚配置为推挽输出,速率为50MHz,然后通过拉低SCK时钟,拉高SCK,拉低DATA,拉低SCK,拉高SCK,拉高DATA,拉低SCK的顺序进行操作,操作之间设置一段延迟。在“启动时序”完成后,通过写0x03和0x05来实现发送命令,进行温度测量和湿度测量。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-55330-1.html
生化产品
生虫也不可信
12海里以内是进入领土
一周不重样