1、分布式粮仓温湿度系统检测设计温湿度是一个非常重要的参数。在工业、医疗、军事和生活等许多地方,都需要用到测温湿装置来监测温湿度。传统直接布线测量不能满足要求,特别是在某些环境恶劣的工业环境和户外环境,通过直接布线测量不现实。因此采用无线传输温湿度信息尤为必要。目前有些设计能够实现无线温湿度监测,但价格过高是其最大的缺点。在实际温湿度控制过程中既要求系统具有稳定性、实时性又需要降低功耗。因此设计一种低功耗的无线温湿度监测系统很有意义。本文提出一种针对无线数据传输问题的解决方案,该方案基于 nRF24L01 来设计无线温湿度采集系统。该系统采用传统单片机ATmega16L 和数字温湿度传感器 AM2
2、301 来构成多点、实时的无线温湿度监测系统。通过简单的无线通信协议,实现可靠性与功耗平衡,该系统能实现对温湿度的监测,是可以实现远程控制的无线温湿度监测系统。该系统利用无线通信技术构建了分布式无线传感器网络,通过传感器节点实现温湿度信息的采集和传输,系统具有组网简单,维护方便,运行费用低等优点,能够实现可靠的无线数据传输。可以应用于大型粮仓温湿度的监测。关键字:ATmega16 AM2301 无线传输 nRF24L01Wireless Temperature and Humidity Monitoring System in BarnShi Jianzhu(College of Engine
3、ering, South China Agricultural University, Guangzhou 510642, China)Abstract:Temperature and humidity is a very important parameter. In many places, such as the industrial, medical, and military, you need the temperature and humidity measurement device to monitor temperature and humidity. Direct wir
4、ing measurement does not meet the requirements, especially in some environments, such as, harsh industrial environments and outdoor environments. Therefore, the wireless transmission of temperature and humidity information is particularly necessary.At present, some devices can be used to monitor wir
5、eless temperature and humidity, but the price is the biggest drawback, the price is too high. The system must be stable, real-time and low power consumption in actual control. Therefore, the design of a low-power consumption wireless temperature and humidity monitoring system makes sense. This paper
6、 presents a solution for wireless data transmission, the program is based on the nRF24L01 to design the monitorint system of wireless temperature and humidity. The system uses the traditional microcontroller ATmega16 and digital temperature and humidity sensor AM2301 to form multi-point, real-time w
7、ireless temperature and humidity monitoring system. Through a simple wireless communication protocols, bring about reliability and power balance. The system is a remote wireless temperature and humidity monitoring system.The system uses wireless communication technology to build a distributed wirele
8、ss sensor networks. The temperature and humidity data acquisition and transmission based on sensor nodes, with a simple network, easy maintenance, low operation cost. The system can be applied to a large granary temperature and humidity monitoring.Key word: ATmega16 AM2301 Wireless Transmission nRF2
9、4l01目 录1 前言 .12 系统方案分析与选择论证 .12.1 系统最终方案 .12.2 系统方案设计 .22.2.1 主控芯片方案 22.2.2 无线通信模块方案 22.2.3 温湿度传感器方案 32.2.4 显示模块方案 33 主要芯片介绍和系统模块硬件设计 .43.1 ATmega16L-8AI 单片机 43.2 nRF24L01 无线模块 53.2.1 nRF24L01 模块电路图 .53.2.2 nRF24L01 模块接口电路 .53.2.3 nRF24L01 模块供电电源 .63.2.4 nRF24L01 模块工作模式 .63.2.5 nRF24L01 模块工作原理 .73.2
10、.6 nRF24L01 配置字 .83.3 数字温湿度传感器 AM2301 83.3.1 AM2301 概述 83.3.2 AM2301 接口及温湿采集电路 93.3.3 AM2301 工作原理 93.4 显示模块 TFT-LCD .104 系统软件设计 .114.1 单片机软件设计 .114.1.1 发送端流程 114.1.2 接收端流程 125 硬件电路 .135.1 硬件制作 .135.2 硬件调试 .145.3 硬件调试结果 .145.3.1 温湿度采集测试 155.3.2 nRF24L01 无线模块测试 .186 结论与展望 .18参考文献 .19附录 .20致谢 .2201 前言粮
11、食是人类赖于生存不可或缺的物质基础,是人类从事各种活动的前提。粮仓粮食的存储是否得当对国家的经济能否正常合理的运行有很大的影响。受限制于以前的经济和科技水平,粮食的存储环境差,管理落后。为此,合理地布置温湿度测量点,以便及时发现粮食的发热点、潮湿点,成为粮库管理的重中之重。随着嵌入式技术,短距离无线通信技术、传感器网络技术等的不断发展,电子设备检测技术可以大大的降低粮仓的管理成本。同时,现代化的粮食仓储系统对粮食的安全性也提出了更高的要求。在粮仓管理过程中,湿度和温度是两个重要的控制指标,直接影响粮食的储存质量。然而,传统的人工测试方法费时费力,效率低,且测试的温度及湿度误差大,随机性大(王明
12、明等,2012);而有线方式的测温湿度系统存在着不稳定性,且布线复杂,线路容易老化,线路故障难以排查,设备重新布局需要重新布置等问题。而无线方式的测温湿度系统不存在以上的这些问题,为此,采用无线实时的温湿度检测系统,对数据进行采集、装载、发送、并由终端对无线采集来的数据进行相应处理,以控制监测设备的运行情况,可大大的减少不必要的线路设备开支(张玉建,2012) 。本设计采用无线传感器网络技术,通过自组无线传感器网络实现一对多的通信,对粮仓内部环境进行监测。由于每一个无线监测节点需长时间工作,对功率消耗十分敏感,为此,本系统采用低功耗无线传输芯片和超低功耗嵌入式处理器,组建实时的无线传感器监测网
13、络,以实现对粮仓温湿度的网络化实时监测和报警。2 系统方案分析与选择论证2.1 系统最终方案发送端:由数字温湿度传感器 AM2301,实时地采集当前的温湿度信息,经ATmega16L 单片机分析处理后,通过模拟 SPI 接口控制无线射频模块 nRF24L01 装载温湿度信息,由无线射频模块 nRF24L01 发射给主机接收端并显示温湿度信息。红外模块可用于监测各监测节点附近有无老鼠,试验中未做出。接收端:由 nRF24L01 无线射频模块接收终端采集过来的数据信息,经模拟 SPI接口发给 ATmega16L 单片机,由 ATmega16L 单片机控制液晶 LCD-TFT 实时显示温湿度信息,并
14、且显示报警温湿度上限值。当温湿度过高或者过低时,TFT 是否报警一行显示是并开始闪烁,蜂鸣器鸣叫,起报警作用,直到温湿度值恢复正常。1ATmega16L(发送端 )DHT11温湿度传感器 红外模块ISP下载模块NRF24L01无线模块LCD-TFT显示模块GSM报警模块 蜂鸣器ATmega128 (接收端)从机结构框图 主机结构框图NRF24L01无线模块图 1 系 统 方 框 图此系统为一对多的无线通信系统,多个从机发送端由传感器本地采集并且通过nRF24L01 无线射频模块发送温湿度信息,一个主机通过 nRF24L01 无线射频模块的多个通道(最多 6 个,nRF24L01 至多可开启 6
15、 个通道接收数据)接收多个终端节点的温湿度信息,实时显示各终端节点温湿度信息,系统方框图如图 1 所示。2.2 系统方案设计2.2.1 主控芯片方案方案一:采用宏晶科技有限公司的 STC90C52Rc 单片机作为主控芯片。此芯片为51 类单片机增强版,价格便宜、易于操作,比较经济实惠。方案二:采用 ATmega16L 作为主控芯片。此芯片是基于增强的 AVR RISC 结构的低功耗 8 位 CMOS 微控制器。由于其先进的指令集以及单时钟周期指令执行时间,ATmega16 的数据吞吐率高达 1 MIPS/MHz,从而可以减缓系统在功耗和处理速度之间的矛盾,且其跟 51 类单片机相比,具有超低功
16、耗和内置晶振等特点。考虑到此系统的复杂度,进行模数转换实现对温湿度的监测所需外围器件较多,监测节点电路板面积小,主控采用贴片封装。从性能和实用性上考虑我们选择方案二。22.2.2 无线通信模块方案方案一:采用 GSM(Global System for Mobile)模块进行通信,GSM 模块需要借助移动卫星或者手机卡,虽然能够远距离传输,但是其成本较大、且需要内置SIM(Subscriber Identity Module)卡,通信过程中需要收费,后期成本较高。方案二:采用 TI(德州仪器)生产的 C2430 无线通信模块,此模块采用 Zigbee总线模式,传输速率可达 250kbps,且内
17、部集成高性能 8051 内核。但是此模块价格较贵,且 Zigbee 协议相对较为复杂,实用性不高。方案三:采用 nRF24L01 无线射频模块进行通信,nRF24L01 是挪威 Nordic 公司推出的单片射频收发芯片,工作于 2.42.5GHz ISM 频段,抗干扰能力强,能耗非常低,满足多点通信和跳频通信需要。当加定向天线后,在无障碍通信情况下能传输上千米的距离,而且价格较便宜,采用 SPI 总线通信模式电路简单,操作方便。综合考虑各方面因素,采用方案三作为本系统的无线通信方案。2.2.3 温湿度传感器方案方案一:AD590 是美国 ANALO G DEV ICES 公司的单片集成两端感温
18、电流源芯片,采用此芯片测量温度。此器件测温精度高、电源电压范围宽,但须差分放大器放大和 A/D 转换,需要元器件多,且价格较贵。采用湿敏电阻测量湿度信息,通过将湿敏电阻的电阻变化量放大并且通过模数转换为相对湿度数值。此方法测相对湿度信息精度较差,也需要较多元器件。方案二:采用广州奥松有限公司生产的 DHT11 温湿度一体的数字传感器。通过单片机等微处理器单总线的电路连接就能实时地采集本地温度和湿度信息。功耗很低。工作电压范围为 3.5V5.5V,可以直接和单片机的 I/O 口相连。方案三:采用广州奥松电子有限公司生产的 AM2301 温湿度一体的数字传感器。它是电阻式感湿元件 DHT11 湿度
19、传感器的升级版,具有高精度,低功耗、抗干扰能力强等优点。其中采集温度的精度为 0.5 ,采集相对湿度的精度为 3%。外围电路C简单,只需在数据口上拉一个 5K 欧电阻,便可直接和 ATmega16L 单片机的 I/O 口相连。使用 DHT11 采用单总线的控制方式。线路简单,编程容易,但是比 AD590 精度低。AD590 还需要其它辅助电路,线路复杂,编程难度大。而 AM2301 外围电路简单,并且精度相比于 DHT11 高。所以,考虑到电路的设计复杂度、系统的精度,功耗,还3有本系统需多点通信,在成本考虑上,选择方案三,即用 AM2301 作为本系统的温湿度传感器。2.2.4 显示模块方案
20、方案一:采用字符液晶 LCD1602 显示信息,LCD1602 是一款比较通用的字符液晶模块,能显示字符和数字等信息,且价格便宜,容易控制。方案二:选择主控为 ST7920 驱动器的带字库的 LCD12864 来显示信息。LCD12864 是一款通用的液晶显示屏,能够显示常用的汉字及 ASCII 码,而且能够绘制图片,描点画线,设计成比较理想的结果,但考虑到监测节点较多,需显示的信息较多,而其最多只能显示四行信息。方案三:采用配置 2.8 寸的 TFT-LCD 即薄膜晶体管液晶显示器。该模块的控制器为 ILI9325,具有 26 万像素, 320240 的分辨率,16 位真彩显示。可以清晰的显
21、示各监测节点的信息,且其可以显示人性化界面,各节点信息以及报警上限温湿度值一目了然。综合以上方案,选择了可显示人性化界面的 TFT-LCD 作为接收端的显示。3 主要芯片介绍和系统模块硬件设计3.1 ATmega16L-8AI 单片机 CSNEKMIOP0124567RQADFVTGXB(/)9L8mega-u+图 2 单片机最小系统4单片机控制模块由 ATmega16L 最小系统组成,包括 ATmega16L-8AI 单片机(芯片内集成晶振电路)和复位电路。单片机复位端低电平有效,系统上电后由 RC 充放电电路实现自动复位,也可短按复位按键 S1 实现手动复位(王卫星,2009) 。单片机最
22、小系统如图 2 所示。ATmega16L 系列单片机管脚如图 2 所示。本设计无线传感器模块控制接口为PB3 PB7 以及 PD2;下载程序采用 ISP 通信,采用 USB ISP 下载器进行程序下载,其接口为 PB5PB7 以及 RST 端口;RXD/P3.0 和 TXD/P3.1 为串口通信端口,RXD 用于读数据, TXD 用于发送数据;监测端:温湿度数据采集端口为 PC0PC7;接收端:TFT 彩屏接口为 PC0PC7 和 PA2PA4。3.2 nRF24L01 无线模块3.2.1 nRF24L01 模块电路图nRF24L01(张玉建,2012;刘靖等,2007)芯片是由 NORDIC
23、 公司生产一款无线通信芯片,采用 FSK 调制方式,内部集成有 NORDIC 自己的 Enhanced Short Burst 协议。可以实现点对点或是 1 对 6 的无线通信。通信速度可以达到 2Mb/s。nRF24L01 无线射频模块的电路图如图 3 所示。 P7.+VCESNKMOI5RQD8X90_ATFLYpnH图 3 nRF24L01 模块电路图3.2.2 nRF24L01 模块接口电路 510uFCLM7923468NRV.ESKIOGD+Q图 4 单片机与无线模块通信及其电 源 转 换 电 路 图nRF24L01 是一款新型单片射频收发器件,工作于 2.4 GHz2.5 GHz
24、 ISM(Industrial Scientific Medical)频段。内置频率合成器、功率放大器、晶体振荡器、调制器等功能模块,并融合了增强型 ShockBurst 技术,其中输出功率和通信频道可通过程序进行配置。nRF24L01 功耗低,在以-6 dBm 的功率发射时,工作电流也只有 9 mA;接收时,工作电流只有 12.3 mA,多种低功率工作模式(掉电模式和空闲模式)使节能设计更方便。表 1 nRF24L01 模 块 引 脚 功 能管 脚 功 能CE 工 作 模 式 , TX 或 者 RX 模 式 选 择CSN SPI 片 选 使 能 , 低 电 平 有 效SCK SPI 时 钟M
25、OSI SPI 数 据 输 入MISO SPI 数 据 输 出IRQ 中 断 输 出VDD 电 源 1.9-3.6V 输 入GND 地nRF24L01 无线射频模块的各引脚功能如表 1 所示。图 4 所示为单片机与无线模块通信及其电源转换电路图,图中 CE(Control Enable)使能控制线,CSN(Channel Sequence Number) 频道序号, MOSI (Master Out Slave In)主机输出从机输入,MISO(Master In Slave Out)主机输入从机输出,SCK(Serial Clock)串行时钟线,6IRQ(Interrupt Request)
26、中断请求位,分别跟 ATmega16L 的 PB3PB7 以及 PD2 端口连接。3.2.3 nRF24L01 模块供电电源此无线射频模块需要的电源为 1.9 V3.6 V,故不能直接用 5V 电源供电,本系统中采用 3.3V 直流电源对无线射频模块供电,5V 电源经 LM1117 芯片进行转换后即得到稳定的直流电源供给 nRF24L01 无线射频模块。3.2.4 nRF24L01 模块工作模式通过配置寄存器可将 nRF241L01 配置为发射、接收、空闲及掉电四种工作模式,如表 2 所示。 在掉电模式下电流损耗最小,同时 nRF24L01 也不工作,但其所有配置寄存器的值仍然保留。3.2.5
27、 nRF24L01 模块工作原理发射数据:先将 nRF24L01 配置为发射模式,再把接收节点地址 TX_ADDR 和有效数据 TX_PLD 按照时序由 SPI 口写入 nRF24L01 缓存区。TX_PLD 必须在 CSN 为低时连续写入,而 TX_ADDR 在发射时写入一次即可,然后置为高电平并保持至少10s,延迟 130s 后发射数据。若自动应答开启,那么 nRF24L01 在发射数据后立即进入接收模式,接收应答信号(自动应答接收地址应该与接收节点地址 TX_ADDR 一致)。如果收到应答,则认为此次通信成功,TX_DS 置高,同时 TX_PLD 从 TX FIFO中清除;若未收到应答,
28、则自动重新发射该数据(自动重发已开启)。若重发次数达到上限,MAX_RT 置高,TX FIFO 中数据保留以便再次重发。 MAX_RT 或 TX_DS 置高时,使 IRQ 变低,产生中断,通知 ATmega16L。最后发射成功时。若 CE 为低,则nRF24L01 进入空闲模式 1;若发送堆栈中有数据且 CE 为高,则进入下一次发射;若发送堆栈中无数据且 CE 为高,则进入空闲模式 2。 表 2 nRF24L01 工 作 模 式 及 配 置工作模式 PWR_UPPRIM_RXCE FIFO 寄存器状态接收模式 1 1 1 数据在 RX FIFO 寄存器中发射模式 1 0 1 数据在 TX FI
29、FO 寄存器中发射模式 1 0 下降沿 停留在发送模式,直至数据发送7完待机模式 1 1 0 0 无数据传输待机模式 2 1 0 1 TX FIFO 为空掉电 0 0 0 无数据传输接收数据:首先将 nRF24L01 配置为接收模式,接着延迟 130s 进入接收状态等待数据的到来。当接收方监测到有效的地址和 CRC 时,就将数据包存储在 RX FIFO数据寄存器中,同时中断标志位 RX_DR 置高,IRQ 变低,产生中断,进入中断服务子程序,通知单片机 ATmega16L 去取数据。若此时自动应答开启,接收方则同时进入发射状态回传应答信号。若自动应答未开启,则不进入发射状态。最后接收成功时,若
30、 CE 变低,则 nRF24L01 进入空闲模式 1。 3.2.6 nRF24L01 配置字SPI 口为同步串行通信接口,最大传输速率为 10 Mb/s,传输时先传送低位字节,再传送高位字节。但针对单个字节而言,要先送高位再送低位。与 SPI 相关的指令共有 8 个,使用时这些控制指令由 nRF24L01 的 MOSI 输入。相应的状态和数据信息是从 MISO 输出给单片机 ATmega16L。 nRF24L0l 所有的配置字都由配置寄存器定义,这些配置寄存器可通过 SPI 口访问。nRF24L01 的配置寄存器共有 25 个,常用的配置寄存器如表 3 所示。表 3 nRF24L01 常 用
31、配 置 寄 存 器地址(H)寄存器名称 功能00 CONFIG 设置 nRF24L01 工作模式01 EN_AA 设置接收通道及自动应答02 EN_RXADDR 使能接收通道地址03 SETUP_AW 设置地址宽度04 SETUP_RETR 设置自动重发数据时间和次数07 STATUS 状态寄存器,用来判定工作状态80A-0F RX_ADDR_P0P5 设置接收通道地址10 TX_ADDR 设置接收节点地址11-16 RX_PW_P0P5 设置接收通道的有效数据宽度3.3 数字温湿度传感器 AM23013.3.1 AM2301 概述AM2301 数字温湿度传感器,别称为 DHT21 温湿度传感
32、器,是电阻式感湿元件DHT11 湿度传感器的升级版, 具有高精度,快响应、抗干扰能力强等优点。其中采集温度的精度为 0.5 ,采集相对湿度的精度为 3%。AM2301 它是一款含有已校C准数字信号输出的温湿度复合传感器,应用专用的数字模块采集技术和温湿度传感技术。传感器包括一个电容式感湿元件和一个 NTC(Negative Temperature Coefficient)测温元件。每个 AM2301 传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在 OTP(One Time Programable)内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,
33、使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离理论上可达 20 米以上,使其成为各类应用场合的最佳选择。(王志宏等, 2011)。3.3.2 AM2301 接口及温湿采集电路表 4 所示为 AM2301 各管脚功能,图 5 所示为 AM2301 温湿度采集电路图。其中Data 数据口连接线长度短于 20 米时用 5K 上拉电阻,大于 20 米时根据实际情况使用合适的上拉电阻。 VD1at2N3GAM0+KRP管脚 名称 功能1 VDD 供电 35.5VDC2 Data 串行数据,单总线3 NC 空脚,请悬空4 GND 地,电源负极表 4 AM2301 各管脚功能图 5 AM230
34、1 接口电路93.3.3 AM2301 工作原理AM2301 的供电电压为 5V。传感器上电后,要等待 1s 以越过不稳定状态在此期间无需发送任何指令。电源引脚(VDD,GND)之间可增加一个 100nF 的电容,用以去耦滤波。AM2301 采用单总线接口,其中 DATA 数据口用于微处理器与 AM2301 之间的通讯和同步,采用单总线数据格式,一次通讯时间 5ms 左右,具体格式如下,当前数据传输为 40bit,高位先出。数据格式:40bit 数据=16bit 湿度数据+16bit 温度数据 +8bit 校验和。当接收 40bit 数据如:0000 0010 1000 1100 0000 0
35、001 0101 1111 1110 1110。其中前 16 位是湿度数据,接下来 16 位是温度数据,最后 8 位数据是温湿度校验和,即湿度高 8 位+ 湿度低 8 位+温度高 8 位+温度低 8 位 =数据的末 8 位=校验和。如:0000 0010+1000 1100+0000 0001+0101 1111=1110 1110。其中湿度=65.2 , 温度=35.1 (当温度低于 0时温度数据的最高位置 1)。用户主机(MCU)发送一次开始信号后,AM2301 从低功耗模式转换到高速模式,等待主机开始信号结束后,AM2301 发送响应信号,送出 40bit 的数据,并触发一次信号采集(注
36、:主机从 AM2301 读取的温湿度数据总是前一次的测量值,如两次测量间隔时间很长,需连续读取两次数据以获得实时的温湿度值)。总线空闲状态为高电平,MCU 把总线拉低等待 AM2301 响应,MCU 把总线拉低必须大于 18 毫秒,保证 AM2301 能检测到起始信号。AM2301 接收到 MCU 的起始信号后,等待 MCU 开始信号结束,然后发送 80s 低电平响应信号。MCU 发送开始信号结束后,延时等待 2040s 后,读取 AM2301 的响应信号,MCU 发送开始信号后,可以切换到输入模式,或者输出高电平均可,总线由上拉电阻拉高。总线为低电平,说明 AM2301 发送响应信号,发送响
37、应信号之后,再把总线拉高80s,准备发送数据,每 1bit 数据都以 50s 低电平时隙开始,高电平时间为 2628s时数据位为 0;高电平时间为 70s 时数据位为 1。如果读取响应信号为高电平,则AM2301 没有响应。当最后 1bit 数据传送完毕后,AM2301 拉低总线 50s,随后总线由上拉电阻拉高进入空闲状态。3.4 显示模块 TFT-LCD10RSWDB10234567CTLEK89F-VNP_OUYI图 6 彩屏 TFT 电路图显示模块采用 TFT-LCD(Thin Film Transistor-Liquid Crystal Display )即薄膜晶体管液晶显示器。TFT
38、-LCD 与无源 TN-LCD、STN-LCD 的简单矩阵不同,它在液晶显示屏的每一个象素上都设置有一个薄膜晶体管(TFT ),可有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,因此大大提高了图像质量。TFT-LCD也被叫做真彩液晶显示器。上配置 2.8 寸的 TFTLCD。该模块的控制器为 ILI9325,具有 26 万像素,320240 的分辨率,16 位真彩显示,自带触摸屏,可以用来作为控制输入。电路图如图 6 所示。4 系统软件设计4.1 单片机软件设计4.1.1 发送端流程初始化无线模块 nRF24L01:单片机控制引脚 CE 为低,使 nRF24L01 进入待机模式
39、。将本机地址(TX_ADDR)通过 SPI 接口写入 nRF24L01,当 CSN 为低时数据被不断写入。将通道 0(或者其他通道)设置为接收模式来接收应答信号,并且允许自动应答,自动重发 10 次,间隔为 500s。其接收地址(RX_ADDR_P0)与接收端地址(TX_ADDR)相同(接收地址长度为 40 位),其接收数据长度设置为 4 个字节,其工作频率设为 2.4GHz(收发保持一致),其发射速率为 1Mb/s。初次读温湿度值:延时 1 秒钟,待 AM2301 上电稳定后,读取一次温湿度数据。因为读一次数据才会触发一次温湿度采集,即在使用数据时先采集一次数据。两次温湿度采集的时间间隔不少
40、于 1 秒,程序设定延时 1.5 秒。11初始化定时器 0:精确控制两次温湿度采集的时间间隔。设置定时器 0 高低位字节初始值,初始化 flag 标志为 0,设置定时器模式寄存器和中断寄存器。装载信息:将节点号信息、温湿度数据信息装载到发送缓冲寄存器中。发送数据:设置 PRIM_RX 为低、CE 为高,启动发射模式, CE 高电平持续时间最小为 10s。设置 nRF24L01 为 ShockBurst 发送模式。判断是否收到应答:数据发送完后,立即进入接收模式。如果在有效应答时间范围内收到应答信号,则认为温湿度信息成功发送到了接收端,此时状态寄存器的TX_DS 位置高并把数据从 TX_FIFO
41、 中清除掉;如果在设定时间范围内没有接收到应答信号,则重新发送数据。自动重发:当发完数据后,如果在有效应答的时间范围内没收到应答信号,且自动重发计数器溢出,则状态寄存器的 MAX_RT 位置高,不清除 TX_FIFO 中的数据。当 MAX_RT 或 TX_DS 为高电平时,引脚产生中断,IRQ 中断通过写状态寄存器来复位。如果重发次数在达到设定的最大重发次数时还没有收到应答信号的话,在MAX_RX 中断清除之前不会重发数据包,数据包丢失计数器(PLOS_CNT)在每次产生MAX_RT 中断后加一。发送端程序流程如图 9 所示。12延 时 1 s读 取 温 湿 度数 据 处 理 及 装 载初 始
42、 化 定 时 器 0定 时 1 s ?进 入 中 断启 动 N R F 2 4 L 0 1初 始 化 N R F 2 4 L 0 1发 送 数 据收 到 应 答 ?自 动 重 发超 重 发 数 ?I R Q 中 断等 待 定 时 中 断开 始结 束是否是否否是图 9 发送端程序流程图4.1.2 接收端流程初始化液晶显示 TFT 和无线模块 nRF24L01:初始化 TFT 为黑屏。本系统的无线模块为 1 对多无线收发,一个主机,多个终端(不超过 6 个),需要配置多个接收通道。单片机控制引脚 CE 为低,使 nRF24L01 进入待机模式。将本机地址 (TX_ADDR)通过SPI 接口写入 n
43、RF24L01,当 CSN 为低时数据被不断写入。各通道接收地址(RX_ADDR_P0- RX_ADDR_P5)与发送端地址(TX_ADDR) 相同( 其中通道 2-5 只需设置低 8 位地址,高 32 位地址与通道 1 相同,无需设置),各通道接收数据长度设置为 4个字节,各通道工作频率设为 2.4GHz(收发保持一致 ),各通道发射速率为 1Mb/s。接收配置:将 PWR_UP、PRIM_RX、CE 引脚置高,使 nRF24L01 进入接收模式;130s 后 nRF24L01 开始检测空中信息。13接 收 配 置初 始 化T F T及N R F 2 4 L 0 1 开 始接 收 到 数 据
44、 ?启 动 N R F 2 4 L 0 1节 点 编 号 检 测 ?显 示 节 点 2温 湿 度显 示 节 点 3温 湿 度显 示 节 点 4温 湿 度是 否 超 过温 湿 度 上 限 值 ?报 警 并 闪 烁结 束绘 制 系 统 界 面预 设 温 湿 度上 限 值 显 示是是否否23 4图 10 接收端程序流程图接收到数据检测:读取状态寄存器,判断是否接收到数据。接收到有效的数据包后(地址匹配、CRC 校验正确),将数据存储在 RX_FIFO 中,同时 RX_DR 位置高,并产生中断。接收到的数据为四个字节,第一字节为终端节点号,第二字节为湿度值,第三字节为温度值,第四字节为数据和校验信息。
45、温湿度上限值检测:将实时采集到的温湿度值与预设的温湿度值进行比较,若超过预设的温湿度值则进行报警并闪烁;若没有超出,则温湿度值正常,并实时刷新显示。接收端程序流程如图 10 所示。5 硬件电路5.1 硬件制作首先是打印电路板,将绘制好的电路板用转印纸打印出来,并裁剪覆铜板,再将打印好的电路板裁剪成合适大小,把印有电路板的一面贴在覆铜板上,对齐好后把覆铜板放入热转印机,放入时保证转印纸没有错位。将热转印机事先预热,温度设定在160200 摄氏度。经过 510 次转印,电路板就很牢固的转印在覆铜板上。接下来是14腐蚀线路板,检查一下电路板是否转印完整,将少数没有转印好的线路用黑色油性笔修补后再进行
46、腐蚀。最后将板打孔,钻孔完后,用细砂纸把覆在线路板上的墨粉打磨掉,用清水把线路板清洗干净。即做成一块印制电路板。5.2 硬件调试通电之前,先用万用表检查线路的正确性,并核对元器件的型号、规格是否符合要求。特别注意电源的正负极以及电源之间是否有短路,并重点检查地址总线、数据总线、控制总线是否存在相互间的短路或其他信号线的短路。在本系统中均进行了仔细的检查。通电后,确认主控芯片没有发烫,再检查各器件引脚的电位,仔细测量各点电位是否正常,尤其注意单片机的插座上的各点电位,若有高压,将有可能损坏单片机仿真器。同样,如果电压过低就没有能力驱动其负载。在断电的情况下,除单片机以外,用仿真插头将所连接电路与
47、单片机仿真器的仿真接口相连,为软件调试做好准备。遇到的问题,如印制电路线不合格,中间有些许短路,造成调试的失败。还有USB 电源供电电压不足的问题,电源电压经过供电给负载,电压下降 0.5V,致使单片机不正常工作。5.3 硬件调试结果首先调试出 TFT-LCD 显示,方便观看其他各项调试结果。调试过程发现虚焊和短路情况,排除此类情况。其次调试温湿度监测电路。调试时不加入无线收发,直接用液晶显示结果,调节好定时器时间后监测正常。再次调试无线收发电路。调试时先调试发送端,发送固定数值,禁用自动应答功能,禁用自动重发功能,通过读状态寄存器,查看发送成功标志是否置位检测是否发送成功。发送成功后,调试接
48、收端,接收端也禁用自动应答功能,直接接收发送端的数据并通过液晶显示出来。调试成功后开启自动应答功能和自动重发功能,自动重发设置为重发 10 次,间隔 150 微秒。实现一对一通信后,调试一对多无线通信。主要是接收和发送节点的地址配置,设置了 6 个发送端的地址,一个接收端的地址,接收端 6 个接收通道地址分别设置为对应的 6 个发送端的地址。调试过程中发现 6 个接收通道中 P0 通道和 P1 通道为 40位地址,P2 P5 通道为 8 位地址,且 P2P5 通道的高 32 位地址与 P1 通道地址一样。发送端若用 P0,P1 通道发送必须将地址设置为 40 位且要与接收端的响应的接收通道15
49、对应(若接收通道为 P2,地址只有 8 位,则发送端用 P0 通道发送,地址应设为接收端的接收通道 P2 的 8 位地址加上接收端的接收通道 P1 的高 32 位地址)。最后整合温湿度监测电路和无线收发电路。将 AM2301 采集过来的温湿度值直接传送给无线发送模块,再由无线接收模块接收温湿度信息,最后由液晶显示温湿度信息。调试过程中发现开机仅能监测一次温湿度信息,不能实时监测。经过几次先后开关发送端和接收端,找出原因是发送之后没有清除发送成功标志。5.3.1 温湿度采集测试实验测试了华南农业大学华山宿舍区 20 栋 104 室内的温湿度数据,通过三个无线监测节点采集的不同的温湿度信息,发送给终端节点显示。其中节点 2 采用 AM2301温湿度传感器,采集温度的精度为 0.5 ,采集相对湿度的精度为 3%,并放置在C笔记本电脑的散热排气扇通风口旁;节点 3 和节点 4 均采用 DHT11 温湿度传感器,采集温度的精度为 2 ,采集相对湿度的精度为 5%,其中节点 3 放置在书桌上,节C点 4 放置在书桌下。5.3.1.1 系统准确性测试 节点编号 温度( C) 相对湿度 (%) 所处地2 34 64 电脑散热器旁3 30 79 书桌上4 29 80 书桌下 图 11