查看: 19516|回复: 215

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-5-5 09:19
  • 签到天数: 73 天

    [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、、、、、
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    5分钟带你快速了解新一代开发板:M5STACK
    5分钟带你快速了解新一代
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    创客火首发无人机编队套装,开启不一样的人工智能教育
    创客火首发无人机编队套装
    2017年国务院发布《新一代人工智能发展规划》,提出要广泛开展人工智能科普活动,在中
    Arduino如何输出ASCii 的控制字符串ENQ为05H
    Arduino如何输出ASCii 的
    程序段 void loop() { Serial.print("ENQ1234"); } Arduino会转换成ASCii码发送
    点阵时钟 验证报错 求大神帮个忙
    点阵时钟 验证报错 求大神
    智慧食堂,让吃饭有着不一样的体验!
    智慧食堂,让吃饭有着不一
    以后凭脸吃饭啦!不在乎颜值、不管是谁,小编告诉你:只要“脸”就可以! “吃饭5分
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表