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

前言

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

本文将实现2块Arduino板子之间的无线通信,并控制led的亮灭。

一、NRF24L01无线通信模块图示

1.引脚图


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

正面图如下:

图片来自某宝。(注意在购买时别搞错了,这个跟esp01模块长的很像)

二、参考接线

1.Nano与NRF模块:

Nano NRF模块
3.3v VCC
GND GND
8 CSN
7 CE
11 MOSI
13 SCK
12 MISO
置空 IRQ

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

2.NRF模块与Arduino Uno:

Uno NRF模块
3.3v VCC
GND GND
8 CSN
7 CE
11 MOSI
13 SCK
12 MISO
置空 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的分享

Arduino使用NRF24L01模块进行无线通信相关推荐

  1. 开源自制6通道航模遥控器,Arduino Pro Mini NRF24L01模块

    前言 前段时间跟着LOLI大神的教程制作了LOLI三代控,效果很好.但是,由于LOLI三代控的接收机带有数据回传功能,也就是接收机的无线模块也承担了发射数据功能,所以接收机也要使用带有功率放大芯片的N ...

  2. 【STM32CubeMX】NRF24L01模块实现“1对1“及“1对多“无线通信

      大家好,我是小政.本篇文章我将针对NRF24L01模块实现"1对1"及"1对多"无线通信的STM32CubeMX配置过程进行详细的讲解,让准备学习HAL库的 ...

  3. raspberrypi 与 arduino 使用 nRF24L01+ 通信 -- raspberry pi为发送端

    nRF24L01+ 通过gpio与树梅派链接,按着网上能找到的所有方法基本上都不顺利,从Python方案到c方案都不行,尝试了很长时间,终于成功,基本上,每个人都会碰到各种各样的问题. arduino ...

  4. Arduino连接nRF24L01无线收发模块

    Arduino连接nRF24L01无线收发模块 nRF24L01是一款工作在 2.4~2.5GHz 世界通用ISM频段的单片无线收发器芯片,输出功率.频道选择和协议的设置可以通过SPI接口进行设置.有 ...

  5. Arduino+2.4G模块做航模遥控器

    Arduino+2.4G模块做航模遥控器 萌新第一次发文,多多关照~ 玩航模估计有七八年了,玩arduino和各类单片机也有一两年啦,今年回家以后因为疫情被困在家里回不去,就寻思着用arduino做个 ...

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

    51驱动NRF24L01通信,NRF24L01与TTL转NRF24L01模块通信 NRF24L01 一.简介 二.引脚功能描述 程序设计 一.对 24L01 的程序编程的基本思路如下: 二.Tx 与 ...

  7. NRF24L01模块多发一收通信(STM32)

    NRF24L01模块多发一收通信(STM32) 目录 NRF24L01模块多发一收通信(STM32) 前言 一.解决思路 二.实验过程 1.设备ID号定义 2.数据打包发送 3.数据接收拆解 总结 前 ...

  8. arduino的nrf24L01收发通信

    最近弄了两个nrf24l01的模块,想试试之后往智能家居上用,正好之前有一个小车用来验证导航算法的,还有一个小四轴的控制手柄,所以萌生了结合三者弄个遥控车玩一玩.小四轴基于STC15系列主控,51架构 ...

  9. 快速上手Arduino -- 打印超声波模块测距信息到OLED屏幕上

    文章目录 快速上手Arduino -- 打印超声波模块测距信息到OLED屏幕上 实现效果: 模块说明: 引脚接线方法: 程序源码 附录 快速上手Arduino – 打印超声波模块测距信息到OLED屏幕 ...

  10. Arduino使用RFID模块来储存卡信息实现智能门锁(MF RC522)

    使用RFID模块实现门禁的功能 Arduino的RFID模块的使用(MF RC522) 文章目录 使用RFID模块实现门禁的功能 Arduino的RFID模块的使用(MF RC522) 前言 一.RF ...

最新文章

  1. php 分页参数丢失,THINKPHP3.2搜索分页丢失参数,实现保留搜索条件解决办法
  2. Nginx实用指南V1 (连载之四:流行CMS博客rewrite写法)
  3. 再见 Xshell!这个开源的终端工具更酷炫!
  4. 循环队列解决约瑟夫问题
  5. [Swift]LeetCode382. 链表随机节点 | Linked List Random Node
  6. 程控电源测试微安电流模式_无缝隙源和负载的切换:双向程控电源的一大门槛...
  7. 视频数据训练太慢?试试UT-AustinFAIR提出的多重网格训练,加速4.5倍,还能提点!...
  8. 【英语学习】【English L06】U08 News L6 News like to read
  9. python数据字典排序_Python自动处理数据字典(Python是3.6版本)
  10. ubuntu16.04安装pycharm,并设置快捷启动方式
  11. java tmp 目录_Tmp目录丢失引发Java进程异常
  12. FPGA Verilog 编写的 可调时 数字钟
  13. CTF必备取证神器(volatility、PTF、取证大师、Magnet AXIOM)
  14. kali linux无线驱动安装,Kali Linux安装 WIFI无线网卡驱动 教程
  15. Pickers应用程序
  16. java 建造者模式的实际应用场景
  17. ajax中返回sucess里使用this.$message()
  18. CAS:1818880-26-0,4-Arm PEG-AC,四臂-聚乙二醇-丙烯酸酯试剂供应
  19. 浙江不老仙妻,教去皱
  20. 我也玩单片机:流水灯

热门文章

  1. 10个办法让设计小白迅速get海报设计要点!
  2. python 答题助手_MillionHerosHelper-超级答题助手
  3. 发动机冒黑烟_发动机冒黑烟是什么原因 发动机冒黑烟怎么解决
  4. python爬虫简历项目怎么写_爬虫项目咋写,爬取什么样的数据可以作为项目写在简历上?...
  5. Keepalived双主热备,实现nginx集群
  6. linux 有dll文件吗,linux上可以运行dll吗
  7. 三次样条曲线拟合算法c语言,关于三次样条曲线拟合法
  8. 大漠插件最新版本7.2031
  9. duet设置_一秒把平板变 PC 电脑的扩展屏幕:TwomonUSB Duet Display 对比评测
  10. Android上使用OkHttp来实现断点下载(续传)