创客联盟网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

开思网在线3D打印服务
查看: 21470|回复: 0
打印 上一主题 下一主题

轻轻松松搞定NRF24L01+无线模块

[复制链接]
跳转到指定楼层
楼主
发表于 2013-8-1 19:32:18 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

马上注册(开思网用户可以直接登录),结交更多创客好友,享用更多功能,让你轻松玩转创客社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

NRF24L01+是一款市面上相对比较便宜的无线模块,它克服了蓝牙的短距离和1对N,N对N的传输局限。传输距离比蓝牙大,但是编程上就稍微比较复杂。
参数:
  • 2.4GHz 全球开放ISM 频段,最大0dBm 发射功率,免许可证使用
  • 支持六路通道的数据接收
  • 低工作电压:1.9~3.6V低电压工作(所以是不能接到5V,否则会烧坏模块
  • 高速率:2Mbps
  • 采用硬件SPI口连接或用单片机I/O口进行模拟。

引脚说明:



做这个实验,要有两块Arduino和两块NRF24L01+!
每一块NRF模块分别对应接板子的
/*
* 管脚接线
* 硬件 SPI:
* MISO -> 12
* MOSI -> 11
* SCK -> 13
*
* Configurable:
* CE -> 8
* CSN -> 7
*
*电源:
* VCC -> 3.3V(3V3)  **切记不要接错,接到5V,会烧坏芯片**
* GND -> GND(-)
*/

切记要对照着接,线比较多,很容易接错,我第一次也是接了很多次才正确。接完线记得检查下!

NRF24L01+其实arduino中也有库,只不过需要自己添加一下。

把文件夹Mirf拷贝到arduino软件libraries路径
重启arduino软件,就可以在File》examples中找到Mirf的程序。
测试程序:
NRF_TO_SEND_Serial    为无线模块接收串口发来的数据通过无线发送出去。给红色小熊板子下载
NRF_TO_RECEIVE_Serial 为无线接收到数据后向串口打印回来收到的数据,给白色小熊板子下载


红色小熊程序:
[mw_shl_code=applescript,true]/*
* 管脚接线
* 硬件 SPI:
* MISO -> 12
* MOSI -> 11
* SCK -> 13
*
* Configurable:
* CE -> 8
* CSN -> 7
*
*电源:
* VCC -> 3.3V(3V3)  **切记不要接错,接到5V,会烧坏芯片**
* GND -> GND(-)
*/
#include "SPI.h"      //24L01库文件
#include "Mirf.h"
#include "nRF24L01.h"
#include "MirfHardwareSpiDriver.h"

char aaa;


void setup(){
  Serial.begin(9600);
  /* 可以用下面的语句改变 CE / CSN 接口:
   *
   * Mirf.csnPin = 9;
   * Mirf.cePin = 7;
   */
  /*
  Mirf.cePin = 7;
   Mirf.csnPin = 8;
   */
  Mirf.spi = &MirfHardwareSpi;  //加载24L01  SPI
  Mirf.init();                                 //开始
  Mirf.setTADDR((byte *)"serv1");//发送到"接收地址"
  Mirf.payload = sizeof(char);           
  Mirf.config();   
}
void loop(){

  while(Serial.available()>0)
  {
    aaa=Serial.read();       // 读串口数据
    Mirf.send((byte *)&aaa);  //把数据通过无线发送

    while(Mirf.isSending())  //  等待发送完毕
    {
    }
  }              
}  [/mw_shl_code]

白色小熊程序:[mw_shl_code=applescript,true]/*
* 管脚接线
* 硬件 SPI:
* MISO -> 12
* MOSI -> 11
* SCK -> 13
*
* Configurable:
* CE -> 8
* CSN -> 7
*
*电源:
* VCC -> 3.3V(3V3)  **切记不要接错,接到5V,会烧坏芯片**
* GND -> GND(-)
*/

#include "SPI.h"                              //24L01库文件
#include "Mirf.h"
#include "nRF24L01.h"
#include "MirfHardwareSpiDriver.h"

char data;
char aaa;


void setup(){   
  Serial.begin(9600);
  /* 可以用下面的语句改变 CE / CSN 接口:
   *
   * Mirf.csnPin = 9;
   * Mirf.cePin = 7;
   */
  /*
  Mirf.cePin = 7;
   Mirf.csnPin = 8;
   */
  Mirf.spi = &MirfHardwareSpi;          //加载24L01  SPI
  Mirf.init();
  Mirf.setRADDR((byte *)"serv1"); //接收地址" "
  Mirf.payload = sizeof(char);            //数据类型()
  Mirf.config();
}

void loop(){

  if(Mirf.dataReady())
  {                          //如果接收到数据则执行
    Mirf.getData((byte *)&data);   //接收数据
    aaa=data;
    Mirf.rxFifoEmpty();   //清理24L01援存
    Serial.print(aaa);  // 串口显示接收到的数据

  }
} [/mw_shl_code]

下载完我们打开我们提供给大家的“串口调试小助手V1.3”

分别打开串口!记得要选对串口!如下图所示,红色小熊作为发射(COM35),白色板子作为接收(COM33),发送什么数据,那边就会接收到什么数据


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|创客联盟网  

GMT+8, 2024-5-26 05:51 , Processed in 0.018175 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

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