如果能让两个或多个Arduino开发板彼此之间无线通信,就可以产生很多的应用,例如远程监控传感器数据、控制机器人、家庭自动化等。对于经济实惠但可靠的RF解决方案,没有比Nordic Semiconductor公司的nRF24L01+收发器模块做得更好的了。
nRF24L01+模块通常可以在网上以不到2美元的价格获得,使其成为您能找到的最实惠的数据通信方式之一。并且这些模块尺寸非常小,允许您将无线连接集成到几乎任何项目中。
硬件概述 无线电频率 nRF24L01+模块设计用于在全球ISM频段2.4 GHz下运行,并使用GFSK调制进行数据传输。数据传输速率是可配置的,可以是250kbps、1Mbps和2Mbps。
2.4 GHz频段是国际上为无需许可的低功率设备保留的工业、科学和医疗 (ISM) 频段之一。诸如无绳电话、蓝牙设备、近场通信 (NFC) 设备和无线计算机网络 (WiFi) 等设备都使用ISM频率。
电源 该模块的工作电压范围为1.9至3.6V,但好消息是逻辑引脚可承受 5V 电压,因此您可以放心地将其与您最喜欢的 3.3V 或 5V 微控制器一起使用。
该模块支持可编程输出功率,即 0 dBm、-6 dBm、-12 dBm 或 -18 dBm。在 0 dBm 时,模块在传输期间仅消耗 12 mA,低于单个LED灯的消耗。另外它在待机模式下消耗 26 µA,在断电模式下消耗 900 nA。这就是为什么它是低功耗应用的首选无线设备。
SPI接口 nRF24L01+ 通过 4 针 SPI(串行外设接口)进行通信,最大数据速率为 10Mbps。频率通道(125 个可选通道)、输出功率(0 dBm、-6 dBm、-12 dBm 或 -18 dBm)和数据速率(250kbps、1Mbps 或 2Mbps)等所有参数都可以通过 SPI 接口进行配置。
SPI 总线使用主从的概念。在我们的大多数项目中,Arduino 是主机,nRF24L01+ 模块是从机。
与 I2C 总线不同,SPI 总线的从机数量有限。这就是为什么您可以在一个Arduino 上使用最多两个 SPI 从设备,即两个 nRF24L01+ 模块。
技术规格 以下是完整的规格: ● 频率范围:2.4 GHz ISM 频段 ● 最大空中数据速率:2 Mb/s ● 调制格式:GFSK ● 最大输出功率: 0 dBm ● 工作电源电压:1.9 V 至 3.6 V ● 最大工作电流:13.5mA ● 电流(待机模式):26µA ● 逻辑输入:5V 容限 ● 通信范围: 800+ m
nRF24L01+ 模块与nRF24L01+ PA/LNA模块 市场上有多种基于 nRF24L01+ 芯片的模块。以下是两个最受欢迎的版本。
第一个版本使用板载天线,允许更紧凑的分支版本。然而,更小的天线也意味着更短的传输范围。
使用此版本,您将能够在100米的距离内进行通信。当然,那是在户外的空旷地方。它的范围在房子内变得有点弱。
第二个版本带有一个 SMA 连接器和一个鸭形天线,但这不是唯一的区别。它带有一个特殊的RFX2401C范围扩展芯片,集成了PA、LNA和收发切换电路。该芯片帮助模块实现更大的传输范围,可达 1000 米。
除了这个区别,两个模块都是兼容的。这意味着,如果您使用其中一个构建项目,您可以简单地拔下它并使用另一个,而无需对系统进行任何更改。
什么是PA和LNA? PA代表功率放大器。它只会放大从 nRF24L01+ 芯片传输的信号强度。而LNA代表低噪声放大器,其功能是从天线获取极弱的信号(通常低于微伏或 -100 dBm)并将其放大到更有用的电平(通常约为 0.5 至 1 V)。
接收路径的低噪声放大器 (LNA) 和发射路径的功率放大器 (PA) 通过双工器连接到天线,将两个信号隔离,防止相对强大的 PA 输出使敏感的 LNA 输入过载。
nRF24L01+ 模块如何工作? nRF24L01+ 模块在称为信道的特定频率上发送和接收数据。要让两个或多个模块相互通信,它们必须在同一信道上。该信道可以是 2.4 GHz ISM 频段中的任何频率,或者更准确地说,它可以在 2.400 到 2.525 GHz(2400 到 2525 MHz)之间。
每个信道占用不到 1MHz 的带宽。这为我们提供了 125 个可能的信道,间隔为 1MHz。
这意味着 nRF24L01+ 可以使用 125 个不同的信道,允许您在一个地方创建一个由 125 个独立工作的调制解调器组成的网络。
该信道在250kbps和1Mbps空中数据速率下占用小于 1MHz 的带宽。然而,在 2 Mbps 的空中数据速率下,需要 2MHz 的带宽(大于 RF 通道频率设置的分辨率)。因此,在 2 Mbps 模式下,您应该在两个信道之间保持 2MHz 的间隙,以确保信道不重叠并减少串扰。
您选择的信道的频率根据以下公式确定: 频率(选定)= 2400 + CH(选定)
例如,如果您选择 108 作为您的数据传输通道,则您的通道的 RF 通道频率将为 2508 MHz (2400 + 108)。
nRF24L01+ 多接收器网络 nRF24L01+ 具有称为 Multiceiver 的功能。它是Multiple Transmitter Single Receiver的缩写。
在多接收机网络中,每个RF通道在逻辑上分为6个并行数据通道,称为数据管道。换言之,数据管道是单个物理射频通道中的六个逻辑通道之一。每个数据管道都有自己唯一的地址,称为数据管道地址。一次只能有一个数据管道接收一个数据包。
多接收机网络可以描述如下。
要了解多服务器网络,请想象主接收器充当集线器接收器,同时从 6 个不同的发送器节点收集信息。集线器接收器可以随时停止收听并充当发送器。
增强型 ShockBurst 协议 nRF24L01+ 使用称为增强型 ShockBurst 的数据包结构。这个简单的数据包结构分为 5 个不同的字段,如下所示。
最初的Shockburst 结构只包括Preamble、Address、Payload 和Cyclic Redundancy Check (CRC) 字段。增强型 Shockburst 使用新引入的数据包控制字段 (PCF) 为更高级的通信带来了更多功能。
这种新结构之所以很棒,有几个原因。 ● 首先,它允许带有有效载荷长度说明符的可变长度有效载荷,这意味着有效载荷可以在 1 到 32 字节之间变化。 ● 其次,它为每个发送的数据包分配一个数据包 ID,这允许接收设备确定消息是新消息还是已重传。 ● 最后,也是最重要的一点,每条消息都可以请求接收者在收到消息后发送确认。
nRF24L01+ 自动数据包处理 让我们讨论三个场景,以更好地了解两个nRF24L01+模块如何相互交互。
● 带有确认的事务 这是一个主动情景的例子。在这里,发送器通过向接收器发送数据包来启动通信。一旦数据包被发送,它会等待大约 130 µs 以接收确认数据包(ACK 数据包)。当接收器接收到数据包时,它会向发送器发送 ACK 数据包。当发送方收到 ACK 数据包时,事务结束。
● 丢失数据包的事务 这是由于传输的数据包丢失而需要重新传输的被动示例。数据包发送完毕后,发送方等待接收 ACK 数据包。
如果发送器在自动重传延迟 (ARD) 时间内没有收到它,它会重传数据包。当接收方接收到重传的数据包时,它会发送 ACK 数据包,从而终止事务。
● 确认丢失的事务 这又是一个负面情况,其中由于ACK数据包丢失而需要重新传输。这里即使接收者自己在第一次尝试中已经收到了数据包,但由于ACK数据包丢失,发送者认为接收者没有收到数据包。
因此,在 Auto-Retransmit-Delay 超时后,发送器重新传输数据包。现在,当接收方收到与之前相同ID的数据包时,它会丢弃它并再次发送ACK数据包。当发送方收到ACK数据包时,事务结束。
整个数据包处理由 nRF24L01+ 芯片自动完成,无需微控制器参与。 |