引言
日常生活中,温度和湿度是两个很重要的物理参数,它不但与人们的身体健康密切联系,而且与科学研究、园林技术、仓库管理、机房管理等方面都息息相关。随着电子科技的发展,人们对环境温湿度监控的要求也越来越高。传统的温湿度检测技术都是采用有线传输装置,不但布线麻烦,而且消耗大量的人力物力,在实际应用中有很大的局限性。
本文设计了一种无线温湿度检测系统方案,其主控制器采用STM32,无线收发模块芯片选用nRF24L01P,传感器选用功耗低、响应快、稳定性强的数字温湿度传感器AM2303。
1、系统设计框图
图1系统发送端结构框图
该系统是一个“多对一”系统[2],即由若干个无线发送模块和一个无线接收模块组成。系统发送端组成框图如图1所示。在发送端,STM32控制AM2303的温湿度数据采集并利用nRF24L01P实现数据的无线发送。系统接收端组成框图如图2所示。在接收端,STM32控制nRF24L01P实现多组数据的无线接收功能,并通过串口将接收到的数据传递给上位机,上位机对数据进行处理、分析以及实时显示。
图2系统接收端结构框图
2、系统硬件设计
系统硬件设计由STM32单片机主控电路、无线收发电路、温湿度数据采集电路、报警电路、电源电路等构成,主要完成温湿度数据的实时采集、传输、显示等功能。
2.1、STM32单片机控制电路
系统采用ST公司生产的STM32F103RBT6作为控制核心,STM32F103RBT6是ST公司基于ARM最新Cortex-M3架构内核的32位处理器产品,其处理速度可达72MHz,内置128KB的Flash、20KB的SRAM、12位的A/D、4个16位定时器、3路USART通信口和2个SPI接口等丰富的片内资源,完全满足本检测系统对数据采集、处理、传输等应用的要求。STM32F103RBT6作为系统的主控制器,通过SPI1接口控制nRF24L01P芯片实现数据的无线收发功能,并将接收到的数据进行相应的转换处理后通过RS-232串口总线与上位机进行通信。
2.2、无线收发电路
系统中无线收发功能主要利用nRF24L01P芯片来实现,nRF24L01P是一款工作在2.4~2.5GHz的ISM频段的无线单片收发芯片,工作电压为2.0~3.6V,电流消耗极低。该芯片有126个通信通道,6个数据通道,能够满足多点通信和调频需要,支持250KB/s、1,2Mb/s数据传输速率。系统中还用到了功率放大芯片和低噪声放大器芯片,使无线模块的最大发射功率达到20dBm,并同时将接收灵敏度提升10dBm,使得无线通信距离超过nRF24L01P自身的10倍以上。
STM32单片机与nRF24L01P无线收发模块之间利用同步串行口SPI进行双向通信,nRF24L01P的SPI总线有SCK(SPI时钟)、MISO(主入从出)、MOSI(主出从入)、CSN(SPI使能)[3]。STM32通过配置寄存器CONFIG使nRF24L01P分别处于发射模式和接收模式,IRQ是中断标志位。STM32与nRF24L01P的连接电路如图3所示。
图3 nRF24L01P电路图
2.3、温湿度数据采集电路
系统中温湿度的数据采集利用AM2303数字传感器来完成。AM2303是一款出厂已含有校准数字信号输出的温湿度复合传感器,主要特性有:温度分辨率为0.1℃,准确度为±0.2℃;湿度分辨率为0.1%RH,精度为±2%RH;供电电压为3.5~5.5V等。其优点有自动化校准、超小体积、极低功耗、采用标准单总线接口、信号传输距离可达20m以上等。
温湿度数据采集电路主要由STM32单片机PA3引脚与AM2303传感器的SDA引脚相连接,通过标准的单总线通信方式控制传感器进行数据采集,设计电路如图4所示。
图4 传感器连接电路图
2.4、报警电路
报警电路采用有源蜂鸣器进行设计,设计电路如图5所示,当单片机的PB1引脚输出低电平时,蜂鸣器鸣叫,否则蜂鸣器停止。
图5 报警电路图
2.5、电源电路
STM32单片机是一款低功耗单片机,其供电电压为3.3V,nRF24L01P芯片供电电压为2.0~3.6V,AM2303工作电压为3.5~5.5V。系统中采用9V干电池通过电压转换芯片AMS1117-5和AMS1117-3.3给系统供电。
3、系统软件设计
该系统以单片机为控制核心,完成对系统数据的采集及无线传输[7]。系统软件设计由下位机软件和上位机软件两部分组成。下位机包括主程序和多个子程序。子程序包括单片机控制传感器实现温湿度数据采集、SPI1控制nRF24L01P无线收发数据、数据报警处理等。上位机则采用NI公司的LabVIEW作为开发平台。
3.1、系统发送端软件设计
由于系统是一个“多对一”系统,有多个发送端,在发送端正常工作之前,需要对每个发送端进行初始化。当传感器上电初始化之后,MCU向传感器发送一次起始信号,传感器读取起始信号后工作模式由原来的休眠模式切换到高速模式,并向MCU发送响应信号;随后MCU读取传感器从SDA引脚输出的40b数据,并对40b数据进行校验,若校验正确,则将数据传送给无线收发模块,此时通过配置无线收发模块芯片的寄存器,使其工作模式配置为发送模式,将数据发送出去,若校验错误,则说明本次读取的数据不正确,放弃数据,重新初始化传感器。图6为系统发送端软件设计框图。
图6 发 送端软件设计流程图
3.2、系统接收端软件设计
系统只需设计一个接收端,系统接收端的STM32单片机通过配置无线收发模块芯片的寄存器,设置其工作模式为接收模式,使其一直工作在接收状态,STM32单片机将接收到的数据处理后,跟系统设置的温湿度报警值进行对比,并进行相应的处理。同时,STM32单片机的液晶能实时显示接收到的各个发送端的温湿度数据。图7为系统接收端软件设计框图。
图7 接收端软件设计流程图
3.3、LabVIEW上位机软件设计
系统上位机部分采用LabVIEW作为开发平台,上位机通过串口实现与STM32单片机的通信。单片机将采集到的温湿度数据通过串口传输给上位机[9],上位机进行识别、处理后显示相应的结果。与编程复杂、入门较难的VB和VC++相比,基于LabVIEW的温湿度检测系统界面清晰、使用灵活、工作效率高,还具有良好的功能扩展性,能够满足本系统的设计要求。图8为LabVIEW温湿度检测系统上位机设计界面,该系统可以同时显示4个不同发送端的环境温湿度数据情况。
图8 LABVIEW温湿度检测系统界面
4、实验数据
试验中采用温湿度计和本文提出的无线温湿度检测系统测量方法分别对温度和湿度进行测量对比[10],表1和表2分别为每隔30min采用温湿度计和本系统测量方法测得的某室外温湿度值,以及两者的相对误差和绝对误差。
从表1和表2测量数据可以看出最大相对误差为4.2%,系统相对误差大小均在±5%以内。本系统经过实际检测,在平旷的地方,当无线模块的传输速率在2Mb/s时,传输距离可达100M,当传输速率更小时,传输距离可达500M甚至最远,且数据误码率非常小。证实本系统具有良好的稳定性和可靠性。
5、结束语
本文采用STM32单片机作为主控制器,nRF24L01P实现数据的无线收发功能,并通过Lab-VIEW上位机界面实时显示数据,设计出了多对一的无线温湿度检测系统。经过实际论证,该系统稳定性高,抗干扰能力强。将数据发送端控制在一定的数量范围之内时,系统的稳定性会更好,相对误差会更小,能够有效地运用在各种温湿度环境检测中。