查看: 30445|回复: 254

Arduino MEGA 与UNO 通过nRF24L模块通讯

  [复制链接]

该用户从未签到

发表于 2018-10-3 18:27 | 显示全部楼层 |阅读模式
本帖最后由 createskyblue 于 2020-3-28 14:31 编辑

1.jpg


一开始测试时手头上只有论坛给的一块mega以及自己的一块仿制UNO,结果是nRF24L无法使用

前些天在发现外国网友也有反馈mega使用nRF24L不正常的情况,浏览了国外帖子后总结出如下方案:

nRF24L介绍
nRF24L01是由NORDIC生产的工作在2.4GHz~2.5GHz的ISM 频段的单片无线收发器芯片。无线收发器包括:频率发生器、增强型“SchockBurst”模式控制器、功率放大器、晶体振荡器、调制器和解调器。

输出功率频道选择和协议的设置可以通过SPI 接口进行设置。几乎可以连接到各种单片机芯片,并完成无线数据传送工作。
极低的电流消耗:当工作在发射模式下发射功率为0dBm 时电流消耗为11.3mA ,接收模式时为12.3mA,掉电模式和待机模式下电流消耗更低。
用途:

● 无线鼠标 键盘 游戏机操纵杆
● 无线门禁
● 无线数据通讯
● 安防系统
● 遥控装置
● 遥感勘测
● 智能运动设备
● 工业传感器
● 玩具
优势:
◆ 小体积,QFN20 4x4mm封装
◆ 宽电压工作范围,1.9V~3.6V,输入引脚可承受5V电压输入
◆ 工作温度范围,-40℃~+80℃
◆ 工作频率范围,2.400GHz~2.525GHz
◆ 发射功率可选择为0dBm、-6dBm、-12dBm和-18dBm
◆ 数据传输速率支持1Mbps、2Mbps
◆ 低功耗设计,接收时工作电流12.3mA,0dBm功率发射时11.3mA,掉电模式时仅为900nA
◆ 126个通讯通道,6个数据通道,满足多点通讯和调频需要
◆ 增强型“ShockBurst”工作模式,硬件的CRC校验和点对多点的地址控制
◆ 数据包每次可传输1~32Byte的数据
◆ 4线SPI通讯端口,通讯速率最高可达8Mbps,适合与各种MCU连接,编程简单
◆ 可通过软件设置工作频率、通讯地址、传输速率和数据包长度
◆ MCU可通过IRQ引脚块判断是否完成数据接收和数据发送



0.png
2.jpg
3.jpg
电路接线假若UNO对MEGA采用下面接线,假若是UNO对UNO只用参考UNO接线 但是程序都不用改

NRF24L01               
ARDUINO MEGA    ARDUINO UNO      
VCC                       3.3V                       3.3V                       
GND                      GND                      GND                     
CSN                       8                            8                           
CE                          7                            7                           
SCK                        52                          13                          
MOSI                     51                          11                          
MISO                     50                          12                          



4.jpg

代码
所需要的文件 为了防止帖子沉下去且让更多人找到路,需要回复一下才能得到文件
游客,如果您要查看本帖隐藏内容请回复

发送端

[mw_shl_code=cpp,true]#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(7, 8); // CE, CSN 的引脚
const byte address[6] = "20181";  //设置标识码
void setup() {
  radio.begin();
  radio.openWritingPipe(address);
  radio.setPALevel(RF24_PA_MIN);
  radio.stopListening();
}
void loop() {
  unsigned long Rtime = millis()/1000;
  radio.write(&Rtime,sizeof(Rtime));
}[/mw_shl_code]


接收端
[mw_shl_code=cpp,true]#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(7, 8); // CE, CSN
const byte address[6] = "20181";
void setup() {
  Serial.begin(115200);
  radio.begin();
  radio.openReadingPipe(0, address);
  radio.setPALevel(RF24_PA_MIN);
  radio.startListening();
}
void loop() {
  if (radio.available()) {
    unsigned long Rtime;
    radio.read(&Rtime, sizeof(Rtime));
    Serial.println(Rtime);
  }
}[/mw_shl_code]
进阶阅读:
https://www.arduino.cn/thread-86275-1-1.html

该用户从未签到

发表于 2018-10-4 19:51 | 显示全部楼层
谢谢分享了~这么好的帖子怎么能叫 0 回复呢。

该用户从未签到

发表于 2018-10-5 03:31 | 显示全部楼层
看看隐藏的文件

该用户从未签到

发表于 2018-10-5 09:52 | 显示全部楼层
可以可以可以可以

该用户从未签到

发表于 2018-10-17 13:50 | 显示全部楼层
谢谢楼主分享,正在学习这个nrf24l01

该用户从未签到

发表于 2018-10-18 20:59 | 显示全部楼层
正在学习nrf,感想分享

该用户从未签到

发表于 2018-10-19 16:13 | 显示全部楼层
6666666、、、、、
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

arduino pid麦克纳姆轮小车程序详解
arduino pid麦克纳姆轮小
之前发过几个帖子,大家可以参考,但经过多次尝试,整套系统升级了,优化了很多地方目录:
【原创】全球最小口袋3D打印机mini one直播教程贴
【原创】全球最小口袋3D打
最近闲得蛋疼,没事搞个掌上3D打印机,先放效果图吧。 搞了半天,终于能正常打印,
这个库文件要怎么下载
这个库文件要怎么下载
新手求助大佬,跪谢
请问arduino怎么和耳机座连接
请问arduino怎么和耳机座
用的是uno r3
设备一个都没有但显示独立设备已使用2个
设备一个都没有但显示独立
我的点灯APP账号里怎么显示独立设备已经使用了2个,但我设备一个没有啊,接入也是0,

让社区更精彩

  • 反馈建议:service_media@36kr.com
  • 工作时间:周一到周五 10:00-19:00
400-995-3636

官方微信

Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   

快速回复 返回顶部 返回列表