APP下载

基于nRF24L01的无线温湿度采集报警器系统设计

2022-11-16杨寅坤陈丽琼

无线互联科技 2022年3期
关键词:接收端寄存器温湿度

杨寅坤,陈丽琼

(湖南科技学院 智能制造学院,湖南 永州 425199)

0 引言

温湿度采集系统对大家而言都不陌生,被广泛应用于工业和农业的生产。通过传感器将现场的温度和湿度等不确定因素实时准确直观地反馈给科研工作者,让科研工作者做出更合适的调整。另外,伴随着技术的发展与进步,数据采集在人们的生活中随处可见,而这些数据采集大部分是利用无线通信进行的[1]。

1 总体方案设计

1.1 系统设计概述

此次设计采用了工作于2.4 GHz频段nRF24L01射频芯片。该芯片相对满足工业控制的背景,内置硬件CRC检错,其中的频道数可以达到126个,能够完全满足多点通信。nRF24L01射频芯片还有很多其他优点,比如能够有效屏蔽环境的特殊干扰,采用的调制是高效的GFSK,是专门为工业上的控制环境设置的,还内置了点对点通信地址控制。该系统具有两个最大的特点,一是满足基本要求,在通信上能够相对稳定,保证通信质量;二是在软件设计上模块及模块之间的关系相对简单[2]。为了满足以上设计的要求,笔者选择89C52RC作为整个系统的核心控制芯片。该报警器系统分为交付和接管两个部分,在交付部分,设计温湿度采集的芯片是DHT11,这种芯片是一种实时采集方式,传输无线数据主要是通过nRF24L01进行;在接管部分,需要在接管端的数码管上进行数据读取并做出正确的显示。

1.2 主控芯片说明

STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统,可编程Flash存储器。STC89C52都是ISP的,在线用串口编程,只需要接三四根线即可。而AT89S52需要取下编程器,在操作上比较麻烦。STC有很多集成的其他功能,内带EEPROM,可以断电后保存资料。比如温度告警的上下限,当然也可以不用这些功能,而AT则没有。AT若要实现断点保存就得另外扩展存储器[3],比如24C02。带ADC的STC可以直接连接模拟的温度探头,AT还要外置ADC。因此本系统选用STC89C52为主控芯片[4]。

2 发送端电路设计

2.1 无线模块电路设计

51单片机的I/O口输出为5 V,而nRF24L01的电源输入为1.9~3.6 V,如果直接接入单片机的电源会烧坏模块,因而要对单片机的电源接口进行压降,这里笔者选用3V降压。要用nRF24L01进行通信首先要清楚它的发送和接收流程。笔者在使用nRF24L01的时候有一个头文件,是关于nRF24L01的寄存器定义和相关函数的编写,只需要按照它的发送和接收流程调用相关函数配置寄存器即可。

程序中通过读取寄存器STATUS,FIFO来判断发射部分的状态,如果发射成功,则寄存器的数值就会发生改变。同理,在接收端,也读取了寄存器CD的值。如果接收端收到载波,则寄存器的值就会变成1,如果没有检测到任何载波信号,那么寄存器的值就为0。通过检测寄存器的状态就可以判断两个模块是否正常工作。例如,如果发射端的两个寄存器的值正常改变,那么说明发生端是正常工作的。接收端如果CD的值始终为0,那么说明接收端的模块出现问题,就这样可以缩小排错的范围。正常情况下,如果发射和接收都正常,通过函数nRF24L01_RxPacket(RxBuf)就可以读取接收端缓冲区的值,这个数组值的大小与发送的数值大小一样。

2.2 传感器电路设计

DHT11传感器用于湿度和温度测量。用1602做显示,单总线控制的器件,基本上没有指令,只有一个启动信号,然后连续读出40bit的数据。随后加上了防死循环的检测,元器件的精度是温度±2 ℃,湿度±5%,精度相对不高,但是应用于当前系统已足够。元件测出温度值与18B20相比大约差1 ℃,考虑到18B20的误差,基本上精度在其所标示的±2 ℃内。湿度与家用电子湿度计比较,基本一致。

程序思路:与红外解码基本相似,需要主机发送一个启动信号,然后等待器件响应后,连续读出40位数据,每位数据以低电平50 us开头,然后维持高电平26~28 us或70 us以区分数据0或1,以读取高电平发生后第38 us电平高低来判断。数据以高位在前低位在后分别读取,最后一个为校验数据,作为相应的校验后显示数值。这里设计的关注点主要集中在以下几个方面。

元器件整个读取操作需要一次完成,时间约需要4 ms,加上启动指令最少18 ms,则一次操作需要约22 ms。虽然不长,但在一些场合应用中,需要分时分步执行一些固定程序时,比如数码管动态扫描显示,则在读取过程中要么造成数据丢失,要么显示屏闪动。据资料显示该元器件内部集成8位MCU处理数据,如果增加指令,除启动指令外还增加一个读数据指令,并调整指令长度。比如以主机拉低500 us则视为启动指令,以300 us视为读数据指令,这样在发起启动指令后,元件内部完成数据转换,然后等待外部读数据指令。每一个读指令则输出一个8位数据,这样处理后,有利于在程序中分步读取数据,每次读取1字节数据最多不超过500 us。则在动态显示中采用分步读取,不会影响动态扫描。

2.3 报警电路设计

本系统是一个报警器系统,所以笔者设计了温湿度不在设置范围内时应当发出报警的声音。通过报警,让用户及时发现不适宜的温湿度,从而做出合适的判断和相应的操作。该报警设备主要的电路是由蜂鸣器组成。

3 单片机软件设计

3.1 发送部分软件设计

第一步,本系统需要进行初始化操作,该操作主要包括两个方面,分别是DHT11和nRF24L01无线模块。从DHT11读取温湿度数据,然后交付端通过无线传输将数据进行传输,最后接管端接收到数据以后,需要在液晶显示模块上显示出来。

3.2 温湿度传感DHT11

对DHT11进行操作,首先通过调用void COM(void)函数对DHT11进行复位,然后调用void RH(void)向DHT11发送一条ROM指令,只有按照这样的操作步骤才能实现预定的设计。

4 结语

在单片机应用领域,数据采集被广泛应用于工农业生产,本设计就是一个典型案例。本设计通过一种直接数字输入式的温湿度传感芯片DHT11实现对非电信号的采集。基于DHT11数字温湿度传感器的实时监控系统确实具有精度高、抗干扰能力强等特点。另外,本设计使用nRF24L01无线传输模块完成了无线传输的过程。通过无线传输模块可以省去有线带来的布线麻烦,能够实现多点动态采集。

猜你喜欢

接收端寄存器温湿度
基于扰动观察法的光通信接收端优化策略
温湿度控制器在回收砂冷却系统中的应用
顶管接收端脱壳及混凝土浇筑关键技术
一种设置在密闭结构中的无线电能传输系统
基于多接收线圈的无线电能传输系统优化研究
Lite寄存器模型的设计与实现
基于DSP的多路温湿度监测系统
基于温湿度控制的天气预测装置
分簇结构向量寄存器分配策略研究*
蒸发冷却温湿度独立控制空调系统的应用