文号
t59748
阅读
4585
回复
1
收藏
1
关于NRF24L01无线模块的小小研究,基于arduino
2013/08/16
IP:美国
Nrf24l01模块是非常小巧的2.4ghz无线传输模块 通过arduino可以很方便的控制 做一些简单的diy制作
要用到电脑的串口的哦。。。。
首先是发送端  这里是电脑输入数据给arduino 经过芯片转换以后发送给接收端 以字符格式发送与接收
代码如下


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

char words;


void setup(){
Serial.begin(9600);
  Mirf.spi = &MirfHardwareSpi;  //加载24L01  SPI
  Mirf.init();                                 //开始
   Mirf.setTADDR((byte *)"serv1");//发送到"接收地址"
  Mirf.payload = sizeof(char);          
   Mirf.config();  
}
void loop(){

while(Serial.available()>0)
{words=Serial.read();    
      Mirf.send((byte *)&words);  

     while(Mirf.isSending())
     { }
}              
}





然后是接收端 这里是通过电脑的串口显示arduino接收到的字符数据
代码如下
#include "SPI.h"                              //24L01库文件
#include "Mirf.h"
#include "nRF24L01.h"
#include "MirfHardwareSpiDriver.h"

char data;
char words';


void setup(){  
  Serial.begin(9600);
  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);   //接收数据
    words=data;
      Mirf.rxFifoEmpty();   //清理24L01援存??
      Serial.print(words);  //显示X向 1至1024

}}





注意  请使用同种规格的arduino通信 比如UNO和UNO之间 2560和2560之间 否则 可能会出现一些不希望出现的情况 具体什么的 好奇的同学可以试一试哦。。。。
164_40657_4b0e5a78edc1157.jpg


164_40657_996a66ccd3ea7b4.jpg








164_40657_882ec2168c6f96c.jpg
164_40657_8a7c79b813e7b1f.jpg


164_40657_f63a01446b1be87.jpg
164_40657_868c3e7f1e02726.jpg
attachment icon 新建文件夹.rar 12.50KB RAR 34次下载
1
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的