基于nRF24L01的无线温湿度测试系统
,其接收地址(RX_ADDR_P0)与接收端地址(TX_ADDR)相同;
3)设置PRIM_RX为低、CE为高,启动发射模块,CE高电平持续时间最小为10μs;
4)nRF24L01 ShockBurst发送模式:无线系统上电、启动内部16 MHz时钟、无线发送数据打包、高速发送数据;
5)数据发送完后,立即进入接收模式。如果在有效应答时间范围内收到应答信号,则认为数据成功发送到了接收端,此时状态寄存器的TX_DS位置高并把数据从TX_FIFO中清除掉;如果在设定时间范围内没有接收到应答信号,则重新发送数据,如果自动重发计数器溢出,则状态寄存器的MAX_RT位置高,不清除TX_FIFO中的数据。当MAX_RT或TX_DS为高电平时IRQ引脚产生中断,IRQ中断通过写状态寄存器来复位。如果重发次数在达到设定的最大重发次数时还没有收到应答信号的话,在MAX_RX中断清除之前不会重发数据包,数据包丢失计数器(PLOS_CNT)在每次产生MAX_RT中断后加一;
6)如果CE置低,则系统进入待机模式I,如果不设置CE为低,则系统会发送TX_FIFO寄存器中下一包数据,如果TX_FIFO寄存器为空且CE为高则系统进入待机模式II;
7)如果系统在待机模式Ⅱ,当CE置低后系统立即进入待机模式I。
nRF24L01的发送模式的程序流程图如图4所示。
3.2 无线接收模式流程
1)MCU将nRF24L01的CE引脚置低,使其进入待机模式I,并对其寄存器进行配置;
2)将PWR_UP、PRIM_RX、CE引脚置高,使nRF24L01进入接收模式;
3)130μs后nRF24L01开始检测空中信息;
4)接收到有效的数据包后(地址匹配、CRC校验正确),将数据存储在RX_FIFO中,同时RX_DR位置高,并产生中断;
5)发送确认信号;
6)MCU设置CE脚为低,使nRF24L01进入待机模式I;
7)MCU通过SPI口以合适的速率将数据读出。
nRF24L01的接收模式的程序流程图如图5所示。
4 结论
文中设计了一种低功耗、高可靠性的温湿度测试系统。经测试本系统在空旷环境下可靠通信距离达到220 m,可以满足实际测试需要。
- nRF24L01钢丝绳无损检测(01-09)
- 基于CY7C68013A的无线多路温度采集系统设计与开发(10-29)
- 基于MSP430的婴儿睡眠监护系统(10-22)
- 基于nRF24L01+与Arduino的超声波测距系统设计(10-18)
- 嵌入式系统的存储测试技术及无线传输应用(02-11)
- 基于无线传输机理的轮胎监测系统的研究(06-26)