Arduino使用NRF24L01模块进行无线通信

article/2025/9/21 0:42:45

Arduino使用NRF24L01模块进行无线通信

前言

​ 其实CSDN有很多关于这个无线模块的使用,包括Arduino的使用例程,但是实际自己跟着做一遍的时候还是发现了有些小问题,于是记录一下方便以后做其他有意思的小项目。(Arduino的库文件在文章末尾)

本文将实现2块Arduino板子之间的无线通信,并控制led的亮灭。
在这里插入图片描述

一、NRF24L01无线通信模块图示

1.引脚图

在这里插入图片描述
这是该模块的背面引脚图,仅供参考。注意,有些并没有标明具体的引脚,但是顺序基本上是一致的。

正面图如下:
在这里插入图片描述
图片来自某宝。(注意在购买时别搞错了,这个跟esp01模块长的很像)

二、参考接线

1.Nano与NRF模块:

NanoNRF模块
3.3vVCC
GNDGND
8CSN
7CE
11MOSI
13SCK
12MISO
置空IRQ

注意NRF模块的VCC引脚电压一般是1.9v-3.6v,接5v很有可能会烧坏模块。

2.NRF模块与Arduino Uno:

UnoNRF模块
3.3vVCC
GNDGND
8CSN
7CE
11MOSI
13SCK
12MISO
置空IRQ

注:led的正极接Uno的3号引脚,负极接GND。

三、发送端程序(Arduino Nano)

//发射端程序
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>RF24 radio(7,8);// CE,CSNconst byte address[6] = "00001";//指定一个地址,可以是自定义的其他地址,但要与接收端地址保持一致void setup()
{Serial.begin(9600);//设置波特率Serial.println("请输入你要发送的数据:");//提示字符radio.begin();radio.openWritingPipe(address);radio.setPALevel(RF24_PA_MIN);radio.stopListening();//发送端,这里我设置为只发,实际是可以互传的
}void loop()
{const char text1[] = "OOO";//要发送的内容const char text2[] = "CCC";radio.write(&text1,sizeof(text1));delay(1000);radio.write(&text2,sizeof(text2));delay(1000);}

四、接收端程序(Arduino Uno)

//接收端程序
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>RF24 radio(7,8);// CE,CSNint led = 3; //3号引脚接ledconst byte address[6] = "00001";//与发送端的地址保持一致void setup()
{pinMode(led,OUTPUT);Serial.begin(9600);radio.begin();radio.openReadingPipe(0,address);radio.setPALevel(RF24_PA_MIN);radio.startListening();//开始监听,只进行接收
}void loop()
{if(radio.available()){char text[32] = "";radio.read(&text,sizeof(text));Serial.println(text);//可以打开串口查看发送过来的数据是否正确if(text[1]=='O')//我这里只判断一个字符digitalWrite(led, HIGH);if(text[1]=='C')digitalWrite(led, LOW);}
}

五、实际效果测试

下面是效果图,led每隔1秒闪烁一次。
在这里插入图片描述
由于没加天线,这个无线通信模块的透射性不是很强,当有障碍物阻挡的时候通信距离比较短,如果是在比较空旷的环境下通信距离至少有20米。

六、遇到的问题

实际在做的时候遇到了很多问题,但是每个人说的原因都不一样。

问题1:程序和接线都没问题了,但是接收不到信息
参考解答:
①有的人说可以在NRF模块的VCC和GND之间接一个1uf的电容,因为有些Arduino板子的滤波做的不好。(这个方案我没试过)
②用电脑的USB口或者一个充电宝给Arduino供电。(这是我采用的方案,一开始我用的是9v电池,但是发现Arduino板子不稳定,换成充电宝才稳定发送和接收)
③可能是使用的库有问题,需要把相关的库文件放在Arduino的安装目录下。
在这里插入图片描述
注意:造成没正确通信的原因可能是多重的,可以自己多摸索一下。

问题2:能通信,但是接收到的信息不对
参考解答:
①有些人说是CSN引脚要接7号,CE引脚要接8号。但我实践证明,按我的这种方式进行接线是没问题的。(我是CSN接8号引脚,CE接7号引脚)

问题3:不同的Arduino板子通信引脚是否不一样?
参考解答:
不一样。Arduino mega和 Arduino Uno的通信引脚就不一样。
在这里插入图片描述

参考链接

1.https://howtomechatronics.com/tutorials/arduino/arduino-wireless-communication-nrf24l01-tutorial/
2.https://www.bilibili.com/video/BV1Db41187Pj?spm_id_from=333.1007.top_right_bar_window_history.content.click

3.我使用的Arduino的相关库文件百度网盘链接如下:
链接:https://pan.baidu.com/s/1D1qXRaMpss7f5-e3e6ykOg?pwd=wnu9
提取码:wnu9
–来自百度网盘超级会员V5的分享


http://chatgpt.dhexx.cn/article/2XbWbVBT.shtml

相关文章

nRF24L01--2.4G无线通信模块(1)(51单片机和51单片机通信)

作者&#xff1a;李剀 出处&#xff1a;https://www.cnblogs.com/kevin-nancy/ 或者 https://blog.csdn.net/Kevin_8_Lee/article/details/95667604 欢迎转载&#xff0c;但也请保留上面这段声明。谢谢&#xff01;&#xff08;上面两个都是我的博客&#xff0c;只是在不同平台…

STM32控制NRF24L01无线模块进行通信

一.NRF2401无线模块 1.模块介绍 功能介绍 (1)2.4Ghz 全球开放ISM 频段免许可证使 2) 最高工作速率2Mbps&#xff0c;高效GFSK调制&#xff0c;抗干扰能力强&#xff0c;特别适合工业控制场合 (3)126 频道&#xff0c;满足多点通信和跳频通信需要 (4) 内置硬件CRC 检错和点对…

NRF24L012.4G模块

文章目录 datasheet1. 相关案例&#xff1a;2. nRF24L01通信的常识1. 发送模式。1.5 补充spi一点知识1. SPI读写时序2. 工作模式2.1 收发模式Enhanced ShockBurstTM收发模式Enhanced ShockBurstTM发送流程&#xff1a;Enhanced ShockBurstTM接收流程&#xff1a; 3. SPI指令 3.…

STM32驱动NRF24L01无线模块

目录 一、模块简介二、工作模式三、主要命令四、配置寄存器五、状态寄存器六、接收模式七、发送模式八、STM32使用NRF24L01模块 一、模块简介 NRF24L01是NORDIC公司生产的一款无线通信芯片&#xff0c;采用FSK调制&#xff0c;内部集成NORDIC自己的Enhanced Short Burst 协议&…

nRF24L01无线模块笔记

nRF24L01模块 官网链接: https://www.nordicsemi.com/Products/nRF24-series 常见的无线收发模块, 工作在2.4GHz频段, 适合近距离遥控和数据传输. nRF24L01是一个能兼顾距离和数据速率的无线模块, 在空旷环境下&#xff0c;2M速率15米, 1M速率30米, 250K速率能达到50米. 和蓝牙…

NRF24L01+模块:一对一双向通信,成功!

查找了很多资料&#xff0c;好多都是复制粘贴转发&#xff0c;或者安装英文手册直译的&#xff08;比如我自己上篇笔记&#xff0c;&#xff0c;&#xff09;&#xff0c;看完还是一脸懵逼&#xff0c;没几个可行的&#xff0c;推荐几个比较实在的资料&#xff1a;手册我也不是…

NRF24L01 无线通信模块使用方法

原文出处&#xff1a;http://blog.csdn.net/mc_hust/article/details/39473913 昨天登录百度账号&#xff0c;无意间发现漏看了好多朋友的私信&#xff0c;其中不少是找我探讨关于NRF2401模块的。从12年到14年的信件都有&#xff08;平时很少注意系统提示信息。。。&#xff0…

STM32 + 无线通信模块 NRF24L01 数据收发

NRF24L01的模块资料&#xff0c;网上已很详尽了&#xff0c;在这不再重复描述知识点了。 这篇文章的目的&#xff0c;旨在把主要知识点胶接起来&#xff0c;梳理成一套完整的步骤&#xff0c;使器件快速上手汇入工作使用。 将按操作顺序&#xff0c;拆分成7个步骤&#xff0c;…

NRF24L01 无线模块

NRF24L01 简介 NRF24L01 可以实现点对点或者是1&#xff08;收&#xff09;对6&#xff08;发&#xff09;的无线通信。NRF24L01 采样SPI通信&#xff0c;很方便连接MCU NRF24L01 无线模块&#xff0c;采用的芯片是 NRF24L01&#xff0c;该芯片的主要特点如下&#xff1a; 1&a…

NRF2401模块

一、模块介绍 (1) 2.4Ghz 全球开放 ISM 频段免许可证使用 (2) 最高工作速率 2Mbps&#xff0c;高效 GFSK 调制&#xff0c;抗干扰能力强&#xff0c;特别适合工业控制场合 (3) 126 频道&#xff0c;满足多点通信和跳频通信需要 (4) 内置硬件 CRC 检错和点对多点通信地址控制…

Nrf24l01无线模块

Nrf24l01无线模块 一&#xff0c;模块介绍 二&#xff0c;接口电路&#xff0c; 模块连接注意点&#xff1a; (1) VCC 脚接电压范围为 1.9V~3.6V 之间&#xff0c;不能在这个区间之外&#xff0c;超 过 3.6V 将会烧毁模块。推荐电压 3.3V 左右。 (2) 除电源 VCC 和接地端&…

51驱动NRF24L01通信,NRF24L01与TTL转NRF24L01模块通信

51驱动NRF24L01通信&#xff0c;NRF24L01与TTL转NRF24L01模块通信 NRF24L01一、简介二、引脚功能描述 程序设计一、对 24L01 的程序编程的基本思路如下&#xff1a;二、Tx 与 Rx 的配置过程1、Tx 模式初始化过程&#xff1a;2、Rx 模式初始化过程&#xff1a; 三、基本程序函数…

详解NRF24L01无线收发模块

近日有粉丝朋友留言&#xff0c;希望介绍一下nRF24L01这款无线收发芯片&#xff0c;正巧前不久的电赛有些涉及&#xff0c;因此将自己的一些经验写在这里&#xff0c;希望能有所收获。 前面我们介绍过单片机的几种通信协议&#xff0c;并且初步了解如何操作寄存器进而控制芯片的…

nRF24L01芯片(模块)介绍

nRF24L01芯片&#xff08;模块&#xff09;简介 nRF24L01是由NORDIC生产的工作在2.4GHz~2.5GHz的ISM 频段的单片无线收发器芯片。无线收发器包括&#xff1a;频率发生器、增强型“SchockBurst”模式控制器、功率放大器、晶体振荡器、调制器和解调器。 输出功率频道选择和协议的…

2.4G通信

文章目录 2.4G无线通信实验一、模块简介二、Enhanced ShockBurstTM模式介绍三. 编程1.初始化IO口2.Enhanced ShockBurstTM发送流程3.Enhanced ShockBurstTM发送模式初始化4.Enhanced ShockBurstTM接收流程5.Enhanced ShockBurstTM接收模式初始化6.读函数7.写函数8.主函数 总结 …

无线收发模块——NRF24L01

1、什么是nRF24L01 nRF24L01是由NORDIC生产的工作在2.4GHz~2.5GHz的ISM 频段的单片无线收发器芯片。有着极低的电流消耗。 nRF24L01与5V单片机的连接通过SPI接口进行通讯&#xff0c;输出功率频道选择和协议的设置可以通过SPI 接口进行设置&#xff0c;几乎可以连接到各种单片…

分布式集群脑裂问题

Zookeeper集群"脑裂"问题 - 运维总结 在分布式集群的脑裂问题中&#xff0c;zookeeper脑裂是一个经典的例子。 在zookeeper集群中&#xff0c;有一个leader和多个follower&#xff08;observer不参与选举&#xff0c;可以忽略&#xff09;&#xff0c;leader通过周…

分布式脑裂问题

"脑裂"定义 脑裂(split-brain)就是“大脑分裂”&#xff0c;也就是本来一个“大脑”被拆分了两个或多个“大脑”&#xff0c;我们都知道&#xff0c;如果一个人有多个大脑&#xff0c;并且相互独立的话&#xff0c;那么会导致人体“手舞足蹈”&#xff0c;“不听使唤…

Redis常见问题——脑裂问题

文章目录 背景一、脑裂问题产生二、选举完成三、总结四、解决方法 背景 脑裂问题&#xff1a;有三台服务器一台主服务器&#xff0c;两台从服务器&#xff0c;还有一个哨兵&#xff08;哨兵就相当于一个代码段&#xff0c;不参与实际业务&#xff09; 一、脑裂问题产生 解释一…

Redis脑裂现象

Redis脑裂现象 什么是Redis的脑裂现象 当Redis主从集群环境出现两个主节点为客户端提供服务&#xff0c;这时客户端请求命令可能会发生数据丢失的情况。 脑裂出现的场景 场景一 主从哨兵集群中如果当发生主从集群切换时&#xff0c;那么一定是超过预设quorum数量的哨兵和主…