1. 说明
最近做四轴的时候使用到了NRF24L01,但是并没有合适的设备来进行测试。所以为了快速测试通信协议,这里使用了基于Arduino框架的ESP32来进行测试。测试的目标是实现两个ESP之间基于NRF24L01的通信,并使用UART输出接收到的信息。为了方便后期的开发,这里我使用了PlatformIO平台来进行环境的配置。 ESP32 使用了两块 ESP32-WROVER-kitc。
NRF24L01使用 2.4 GHz 频段,可以在 250 kbps 到 2 Mbps 的波特率下运行。如果在开放空间和较低波特率下使用,其范围可达 100 米。

2. 接线
首先是NRF24L01的接线,其采用SPI作为通信方式。其中IRQ为可选线,可以不接。两个板子的接线完全相同。
| Nr | NRF24L01 | ESP32 |
|---|---|---|
| 1 | GND | GND |
| 2 | VCC | 3.3V |
| 3 | (CE) | 22 |
| 4 | (CSN) | 21 |
| 5 | (SCK) | 18 |
| 6 | (MOSI) | 23 |
| 7 | (MISO) | 19 |
| 8 | IRQ * | 4* |
∗ * ∗: 中断线是可选的

3. 环境
如上所述,采用PlatformIO作为开发环境,使用Arduino框架。为了能使用NRF24L01,需要添加RF24库。 配置方法如下。

4. 程序
环境配置好之后,就可以下载程序验证了。 程序参考此处, 不同的是更改了CE和CS脚的GPIO口。
4.1 发送者
这部分是发送者代码,主要任务是循环发送数据。我们将代码下载到一个ESP32之后直接将其连接电源就可以了,并不需要查看发送者的输出。
// SimpleTx - the master or the transmitter
#include <Arduino.h>
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define CE_PIN 22
#define CSN_PIN 21
void updateMessage(void);
void send(void);
const byte slaveAddress[5] = {

最低0.47元/天 解锁文章
963





