查看: 25328|回复: 239

Arduino MEGA 与UNO 通过nRF24L模块通讯

  [复制链接]
  • TA的每日心情
    奋斗
    2019-3-22 20:44
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    发表于 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

  • TA的每日心情
    开心
    2020-2-5 19:57
  • 签到天数: 72 天

    [LV.6]常住居民II

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

    2018-11-13 03:18
  • 签到天数: 36 天

    [LV.5]常住居民I

    发表于 2018-10-5 03:31 | 显示全部楼层
    看看隐藏的文件
  • TA的每日心情
    无聊
    2019-1-24 11:37
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2018-10-5 09:52 | 显示全部楼层
    可以可以可以可以
  • TA的每日心情
    郁闷
    2020-10-9 20:42
  • 签到天数: 75 天

    [LV.6]常住居民II

    发表于 2018-10-17 13:50 | 显示全部楼层
    谢谢楼主分享,正在学习这个nrf24l01
  • TA的每日心情
    郁闷
    2018-11-27 19:12
  • 签到天数: 13 天

    [LV.3]偶尔看看II

    发表于 2018-10-18 20:59 | 显示全部楼层
    正在学习nrf,感想分享
  • TA的每日心情
    擦汗
    2019-7-28 12:29
  • 签到天数: 25 天

    [LV.4]偶尔看看III

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

    本版积分规则

    热门推荐

    【Arduino】168种传感器系列实验(170)---L293D四路电机驱动板
    【Arduino】168种传感器系
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    OLED 128*64自制可达10000000个选项的菜单(已更新)
    OLED 128*64自制可达10000
    OLED 128*64自制可达10000000个选项的菜单 温馨提示: 建议占个楼再食用本帖子
    ntc测温度不稳定,温度乱飘
    ntc测温度不稳定,温度乱
    arduino刚刚开机的时候是24度 然后就慢慢升到了26度过了一会又飘到22度了。想了好久也
    Arduino mini pro 的 D0(IO 0) 在哪儿?
    Arduino mini pro 的 D0(
    Arduino mini pro 的 D0 在哪儿?????我找不到求大神指导一下? GPS模块VCC------
    blinker 温度无法存储数据,附调试信息
    blinker 温度无法存储数据
    600008] message: /heartbeat?deviceName=ACC2534CLMGA6R6OI7KJAC0U&key=a9135b780e41
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表