NRF24L01无线射频模块引脚图_使用教程_应用特点
NRF24L01是现代应用的合法射频通信器之一,它是比较便宜的一款,并且具有出色的功能。单个模块以2.4GHz频率进行通信,这使其合法。它可以通过单个模块发送和接收数据。收发并不是其唯一的能力,它可以同时与总共6个其它相同的NRF24L01模块进行通信。
NRF24L01设备与Arduino应用程序接口,涵盖各种远程控制应用。该无线模块采用SPI通信协议,提供10Mbps数据速率和125个地址范围,使其成为最可靠的RF模块。RF模块使用GFSK模块来收发数据。
引脚配置
NRF24L01中没有任何特殊引脚,它提供的用于通信的所有引脚都存在于所有微控制器和电路板中。该设备将通过这些引脚与外部微控制器/Arduino连接进行操作。它由8个引脚组成。所有可用的引脚是:
- VCC引脚:模块的电源引脚为VCC,与电源相连。
- GND引脚:NRF24L01与另一个微控制器一起运行,并且需要一个公共接地才能与其一起运行。GND引脚将解决公共接地地的要求。
- CE引脚:CE是使能引脚,激活模块的发送/接收。仅当其自身处于高状态时,它才会激活设备。
- CSN引脚:该引脚用于激活微控制器的数据监听和处理。为了保持微控制器和模块之间的数据通信,它应该为高电平。
- SCK引脚:这个是NRF24L01中SPI通信的时钟脉冲引脚。数据将根据SCK引脚上的时钟脉冲在模块和微控制器之间移动。
- MOSI引脚:通过SPI引脚从微控制器发送的数据将由NRF24L01在MOSI引脚接收。
- MISO引脚:使用SPI引脚从NRF24L01发送的指令将由微控制器的MISO引脚接收。
- IRQ中断引脚:IRQ是一个中断引脚,每当SPI引脚有新数据可用时,它就会生成事件。它有助于向发射器发送反馈。
功能特性
- 工作频率为2.4GHz,这使得它在几乎每个国家都是合法的。
- 单个模块可以充当发射器或接收器。
- 内置天线可以将数据发送最远100米。
- 一个模块NRF24L01一次最多可以与6个其它模块通信。
- 需要3.3伏工作电压,但电压只能扩展到3.6伏,否则不会花费太多时间来加热和燃烧。
- 该器件内置一个16MHz振荡器。
- NRF24L01的传输速度为256kbps至2Mbps。
- 该设备具有125个通道范围,具有在单个位置操作125个不同网络的功能。
- 信道频率从2400MHz到2525MHz。
使用方法
NRF24L01可与所有微控制器和智能板一起使用,但要使用它,应了解一些引脚和数据信息。要使用该模块,请将其与另一个具有SPI协议的微控制器连接。首先,为设备提供电源输入,然后根据给定电路连接其SPI引脚。
连接后请记住NRF24L01有两种操作方式。第一个是发射器,第二个是接收器。要作为发送器和接收器进行通信,微控制器应该事先要知道。在现代应用中,Arduino是唯一支持NRF24L01通信最高效通信的设备。
与Arduino接口
互联网上有很多关于NRF24L01的工作和研究,可以帮助在许多应用中使用它,但Arduino中有这个模块的基础,每个开发人员都应该了解。NRF24L01的基本操作是发送器和接收器,在Arduino中,两者都可以通过以下方法实现。以下是Arduino UNO的电路:
用作发射器示例
当NRF24L01充当发送器时,它只能在单个通道上将数据发送到另一个模块。要将其用作发射器,Arduino中的程序应该知道。上传程序后,无需编程就无法更改发射器和接收器之间的模式。要将其用作发射器,应上传以下代码:
#include <nRF24L01.h> #include <RF24.h> #include <SPI.h> RF24 radio(3, 2); void setup() { radio.begin(); radio.openWritingPipe(10101); radio.stopListening(); } void loop() { const char data[] = "DATA"; radio.write(&data, sizeof(data)); delay(2000); }
上述代码详细解释如下:
Arduino与NRF24L01之间的通信依赖于以下库:
#include <nRF24L01.h> #include <RF24.h> #include <SPI.h>
我们知道,每个Arduino板都有一个特定的SPI引脚MISO、MOSI和SCK。因此,Arduino不必告知它们,但CSN和CE引脚需要初始化。NRF24L01库有一个内置函数来获取CSN和CE的PIN,即:
RF24 radio(3, 2);
数字3代表CE引脚,2代表CSN引脚。两者均可根据任意数字引脚进行更改。本文是根据上面给出的电路。之后,模块必须使用以下命令进行初始化:
radio.begin();
该地址可以用5位来定义,用于与接收器进行通信的设备。任何5位数字都可以使用。
radio.openWritingPipe(10101);
之后模块应该知道它的模式。它要么充当接收器,要么充当发射器。以下命令将使NRF24L01成为发送器。
radio.stopListening();
然后该设备就可以用作发射器。唯一已知要初始化的是发送数据。请始终记住,由于模块限制,一次只能发送32字节的数据。以下命令将有助于定义:
const char data[] = "DATA"; radio.write(&data, sizeof(data));
传输数据可以在程序的设置或循环中定义。
作为接收器示例
以上是关于传输方法的内容,但是接收器方法与发送器没有什么不同。在发射机中,只有三个指令会发生变化。
- 地址通道,在发射机中不可用
- 模块作为接收器的初始化
- 数据接收及校验方法
以下是接收器的以下代码:
#include <nRF24L01.h> #include <RF24.h> #include <SPI.h> RF24 radio(3, 2); void setup() { radio.begin(); radio.openReadingPipe(0,00001); radio.startListening(); } void loop() { if (radio.available()) { char data[32] = {0}; radio.read(&data, sizeof(data)); } }
上述代码详细解释如下:
正如你所注意到的,接收器与发射器只有三个部分不同。
第一部分是地址部分:
radio.openReadingPipe(0,10101);
在地址部分,现在有两个部分。第二部分是地址部分,定义传输设备的地址。第一部分“0”定义通道。正如我们上面提到的,该模块一次提供6个通道进行通信,编程的第一部分将帮助构建多个通道。
第二部分是模块作为发送器的初始化。要将模块初始化为发射器,请初始化以下命令:
radio.startListening();
第三个是数据接收。
if (radio.available())
它将有助于了解传入的数据
radio.read( data, size );
它将有助于读取数据。
应用示例
NRF24L01有很多应用程序可用,但制作网格是NRF24L01的最佳功能之一,这使得它与其它模块不同。要将其用作网格,总共应提供3-7个模块。按照给定的图像进行操作。
然后应使用以下指令来初始化接收端的不同通道。
radio.openReadingPipe(0, ADDRESS); radio.openReadingPipe(1, ADDRESS); radio.openReadingPipe(2, ADDRESS); radio.openReadingPipe(3, ADDRESS); radio.openReadingPipe(4, ADDRESS); radio.openReadingPipe(5, ADDRESS);
由于接收器无法区分设备,因此开发人员始终牢记发射器之间的数据不应该相同。
封装设计参数
主要应用
- 在创建小型网状网络时,NRF24L01是使用的最佳选择。
- 开发和商业领域的远程控制应用与NRF24L01完美配合。
- 大多数家庭物联网应用都具有此无线模块,但仅限于小规模。
总结
NRF24L01是一款低功耗2.4GHz无线射频通信模块,它是一种非常流行的无线通信模块,广泛应用于物联网、遥控器、无线传感器网络等领域。该模块采用了高度集成的射频芯片,能够实现可靠的点对点和多点通信。它支持2.4GHz的ISM频段,具有多个可选的通信通道和多达6个数据通道,使其在拥挤的无线环境中表现出色。
NRF24L01模块具有低功耗特性,能够在低电压和低功耗条件下运行,这使得其非常适合用于电池供电的应用,延长设备的使用寿命。此外,NRF24L01模块还支持硬件自动应答和自动重传,以确保通信的可靠性。它还具有低延迟和快速的启动时间,适用于需要快速响应的实时通信应用。
总的来说,NRF24L01是一款功能强大、性能稳定、低功耗的2.4GHz无线通信模块,广泛应用于物联网和其它无线通信领域。需要注意的是,NRF24L01有自己的一套协议,属于无线射频模块,所以它不是蓝牙也不是WiFi。