找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 24246|回復(fù): 20
收起左側(cè)

Arduino學(xué)習(xí)16-連接nRF24L01無線收發(fā)模塊

  [復(fù)制鏈接]
ID:114115 發(fā)表于 2016-4-18 03:33 | 顯示全部樓層 |閱讀模式
nRF24L01是一款工作在 2.4~2.5GHz 世界通用ISM頻段的單片無線收發(fā)器芯片,輸出功率、頻道選擇和協(xié)議的設(shè)置可以通過SPI接口進行設(shè)置。有極低的電流消耗,當(dāng)工作在發(fā)射模式下發(fā)射功率為-6dBm時電流消耗為9.0mA,接收模式時為12.3mA。掉電模式和待機模式下電流消耗更低。
nRF24L01參考數(shù)據(jù):供電電壓:1.9 V~3.6V;最大發(fā)射功率:0 dBm;最大數(shù)據(jù)傳輸率:2000 kbps;發(fā)射模式下電流消耗(0dBm時):11.3 mA;接收模式下電流消耗(2000kbps):12.3 mA;接收模式數(shù)據(jù)傳輸率為1000kbps下的靈敏度:-85 dBm;掉電模式下電流消耗:900 nA。

淘寶上面有兩種nRF24L01模塊,一種是單純的nRF24L01模塊,號稱傳輸距離250m的,幾塊錢就有交易;另外一種是NRF24L01+PA+LNA模塊,包含放大,號稱可以傳輸1000m,價格幾十塊。實際距離視地形和障礙物而定,是否夠遠只能通過試用確定。

下面用廉價的第一種單純nRF24L01模塊做示例:


002403fnur6ied3fhhm07f.jpg

一、nRF24L01硬件連接:
此模塊是使用SPI方式連接,在標(biāo)準(zhǔn)SPI口基礎(chǔ)增加CE和CSN引腳:
nRF24L01 Arduino UNO
VCC <-> 3.3V
GND <-> GND
CE <-> D9
CSN <-> D10
MOSI<-> D11
MISO<-> D12
SCK <-> D13
IRQ <-> 不接

還有就是nRF24L01屬于對傳模塊。每塊芯片既是發(fā)射器,也是接收器。所以一般來說,要使用兩塊nRF24L01+兩塊Arduino才能進行測試。

二、應(yīng)用例子
實驗1:

將Sender機A0的AD轉(zhuǎn)換值無線發(fā)送到Receiver機

原理圖:

Sender機(A0端與電源兩端接一個電位器,阻值隨意,一般1k~100k均可):
002408brxurzdzuyguwgsd.png
005956uj724ii077id1x2r.jpg
Receiver機:
002408jjjjkwjzrg2wrg74.png
005956se1vdyz1g0qrgq2e.jpg
代碼:

首先需要安裝Mirf庫,可以在http://playground.arduino.cc/InterfacingWithHardware/Nrf24L01下載或者本文附件下載。

Sender機:
  1.     /*
  2.     nRF24L01 Arduino發(fā)送端
  3.      
  4.     Ansifa
  5.     2015/3/7
  6.      
  7.     引腳接法:
  8.     nRF24L01   Arduino UNO
  9.     VCC        <->        3.3V
  10.     GND        <->        GND
  11.     CE        <->        D9
  12.     CSN        <->        D10
  13.     MOSI<->        D11
  14.     MISO<->        D12
  15.     SCK        <->        D13
  16.     IRQ        <->        不接
  17.     */
  18.      
  19.     #include
  20.     #include
  21.     #include
  22.     #include
  23.     void setup()
  24.     {
  25.         Serial.begin(9600);
  26.      
  27.         Mirf.cePin = 9;                //設(shè)置CE引腳為D9
  28.         Mirf.csnPin = 10;        //設(shè)置CE引腳為D10
  29.         Mirf.spi = &MirfHardwareSpi;
  30.         Mirf.init();  //初始化nRF24L01               
  31.      
  32.             //設(shè)置接收標(biāo)識符"Sen01"
  33.         Mirf.setRADDR((byte *)"Sen01");
  34.         //設(shè)置一次收發(fā)的字節(jié)數(shù),這里發(fā)一個整數(shù),寫sizeof(unsigned int),實際等于2字節(jié)
  35.         Mirf.payload = sizeof(unsigned int);
  36.         //發(fā)送通道,可以填0~128,收發(fā)必須一致。
  37.         Mirf.channel = 3;
  38.         Mirf.config();
  39.      
  40.             //注意一個Arduino寫Sender.ino,另一個寫Receiver.ino。
  41.             //這里標(biāo)識寫入了Sender.ino
  42.         Serial.println("I'm Sender...");
  43.     }
  44.     unsigned int adata = 0;
  45.     void loop()
  46.     {
  47.             //讀取A0值到adata
  48.         adata = analogRead(A0);
  49.      
  50.         //由于nRF24L01只能以byte單字節(jié)數(shù)組形式發(fā)送Mirf.payload個數(shù)據(jù),
  51.         //所以必須將所有需要傳輸?shù)臄?shù)據(jù)拆成byte。
  52.         //下面定義byte數(shù)組,存放待發(fā)數(shù)據(jù),因為Mirf.payload = sizeof(unsigned int);
  53.         //實際下面等于byte data[2];
  54.         byte data[Mirf.payload];
  55.      
  56.         //adata是unsigned int雙字節(jié)數(shù)據(jù),必須拆開。
  57.         //將adata高低八位拆分:
  58.         data[0] = adata & 0xFF;                //低八位給data[0],
  59.         data[1] = adata >> 8;                //高八位給data[1]。
  60.      
  61.         //設(shè)置向"serv1"發(fā)送數(shù)據(jù)
  62.         Mirf.setTADDR((byte *)"Rec01");
  63.         Mirf.send(data);
  64.         //while死循環(huán)等待發(fā)送完畢,才能進行下一步操作。
  65.         while(Mirf.isSending()) {}
  66.         delay(20);
  67.     }
復(fù)制代碼

Receiver機:
  1.     /*
  2.     nRF24L01 Arduino Receiver接收端
  3.      
  4.     Ansifa
  5.     2015/3/7
  6.      
  7.     引腳接法:
  8.     nRF24L01   Arduino UNO
  9.     VCC <-> 3.3V
  10.     GND <-> GND
  11.     CE  <-> D9
  12.     CSN <-> D10
  13.     MOSI<-> D11
  14.     MISO<-> D12
  15.     SCK <-> D13
  16.     IRQ <-> 不接
  17.     */
  18.      
  19.     #include
  20.     #include
  21.     #include
  22.     #include
  23.      
  24.         //定義一個變量adata存儲最終結(jié)果,oldadata存儲舊結(jié)果,防止相同結(jié)果刷屏。
  25.         unsigned int adata = 0, oldadata = 0;
  26.      
  27.     void setup()
  28.     {
  29.         Serial.begin(9600);
  30.      
  31.         //---------初始化部分,不可隨時修改---------
  32.         Mirf.cePin = 9;     //設(shè)置CE引腳為D9
  33.         Mirf.csnPin = 10;   //設(shè)置CE引腳為D10
  34.         Mirf.spi = &MirfHardwareSpi;
  35.         Mirf.init();  //初始化nRF24L01
  36.      
  37.         //---------配置部分,可以隨時修改---------
  38.         //設(shè)置接收標(biāo)識符"Rev01"
  39.         Mirf.setRADDR((byte *)"Rec01");
  40.         //設(shè)置一次收發(fā)的字節(jié)數(shù),這里發(fā)一個整數(shù),
  41.         //寫sizeof(unsigned int),實際等于2字節(jié)
  42.         Mirf.payload = sizeof(unsigned int);
  43.         //發(fā)送通道,可以填0~128,收發(fā)必須一致。
  44.         Mirf.channel = 3;
  45.         Mirf.config();
  46.      
  47.         //注意一個Arduino寫Sender.ino,另一個寫Receiver.ino。
  48.         //這里用來辨別寫入了Receiver.ino程序
  49.         Serial.println("I'm Receiver...");
  50.     }
  51.      
  52.     void loop()
  53.     {
  54.         //定義一個暫存數(shù)組,大小為Mirf.payload。
  55.         byte data[Mirf.payload];
  56.         if(Mirf.dataReady())    //等待接收數(shù)據(jù)準(zhǔn)備好
  57.         {
  58.             Mirf.getData(data);    //接收數(shù)據(jù)到data數(shù)組
  59.             //data[1]<左移8位與data[0]并,重組數(shù)據(jù)。
  60.             adata = (unsigned int)((data[1] << 8) | data[0]);
  61.      
  62.             //與上一次結(jié)果比較,避免相同結(jié)果刷屏,降低串口流量
  63.             if(adata != oldadata)
  64.             {
  65.                 oldadata = adata; //本次結(jié)果作為歷史結(jié)果。
  66.                 //Serial.print輸出數(shù)據(jù)
  67.                 Serial.print("A0=");
  68.                 Serial.println(adata);
  69.                 //也可以輸出雙字節(jié)數(shù)據(jù)
  70.                 //Serial.write(data[1]);
  71.                 //Serial.write(data[0]);
  72.             }
  73.      
  74.         }
  75.     }
復(fù)制代碼

實驗2:

將上述的數(shù)據(jù)繪圖表。

修改一下輸出格式,然后用現(xiàn)成的串口圖表軟件顯示出來。

原理圖:
與實驗1一樣。
代碼:
發(fā)射端代碼與原來一樣。
接收端新代碼:
  1.     /*
  2.     nRF24L01 Arduino Receiver接收端
  3.     圖表輸出版本
  4.      
  5.     Ansifa
  6.     2015/3/7
  7.      
  8.     引腳接法:
  9.     nRF24L01   Arduino UNO
  10.     VCC <-> 3.3V
  11.     GND <-> GND
  12.     CE  <-> D9
  13.     CSN <-> D10
  14.     MOSI<-> D11
  15.     MISO<-> D12
  16.     SCK <-> D13
  17.     IRQ <-> 不接
  18.     */
  19.      
  20.     #include
  21.     #include
  22.     #include
  23.     #include
  24.      
  25.     //定義一個變量adata存儲最終結(jié)果。
  26.     unsigned int adata = 0;
  27.      
  28.     void setup()
  29.     {
  30.         Serial.begin(9600);
  31.      
  32.         //---------初始化部分,不可隨時修改---------
  33.         Mirf.cePin = 9;     //設(shè)置CE引腳為D9
  34.         Mirf.csnPin = 10;   //設(shè)置CE引腳為D10
  35.         Mirf.spi = &MirfHardwareSpi;
  36.         Mirf.init();  //初始化nRF24L01
  37.      
  38.         //---------配置部分,可以隨時修改---------
  39.         //設(shè)置接收標(biāo)識符"Rev01"
  40.         Mirf.setRADDR((byte *)"Rec01");
  41.         //設(shè)置一次收發(fā)的字節(jié)數(shù),這里發(fā)一個整數(shù),
  42.         //寫sizeof(unsigned int),實際等于2字節(jié)
  43.         Mirf.payload = sizeof(unsigned int);
  44.         //發(fā)送通道,可以填0~128,收發(fā)必須一致。
  45.         Mirf.channel = 3;
  46.         Mirf.config();
  47.      
  48.         //注意一個Arduino寫Sender.ino,另一個寫Receiver.ino。
  49.         //這里用來辨別寫入了Receiver.ino程序
  50.         Serial.println("I'm Receiver...");
  51.     }
  52.      
  53.     void loop()
  54.     {
  55.         //定義一個暫存數(shù)組,大小為Mirf.payload。
  56.         byte data[Mirf.payload];
  57.         if(Mirf.dataReady())    //等待接收數(shù)據(jù)準(zhǔn)備好
  58.         {
  59.             Mirf.getData(data);    //接收數(shù)據(jù)到data數(shù)組
  60.             //data[1]<左移8位與data[0]并,重組數(shù)據(jù)。
  61.             adata = (unsigned int)((data[1] << 8) | data[0]);
  62.      
  63.             //輸出雙字節(jié)數(shù)據(jù)
  64.             Serial.write(data[0]);
  65.             Serial.write(data[1]);
  66.         }
  67.     }
復(fù)制代碼

上位機:
直接用現(xiàn)成軟件比如這個串口獵人。
配置如圖。依照圖片順序配置成截圖一樣即可。
005151jb3nkjq3ftj35ljt.png
005151q5av6aw615hbq5yw.png
014011p3s3fcczply353sk.png
005152wthchpqeqbtcbmcp.png

特意測試了一下可以,這個說是+7dB的,比wifi的+5dB高一點,感覺會比wifi好一些。

下面是PDF版本文章與源代碼:

Arduino連接NRF24L01無線收發(fā)模塊.zip (3.25 MB, 下載次數(shù): 177)

評分

參與人數(shù) 4黑幣 +12 收起 理由
midrich + 5 絕世好帖!
lionel + 5 回帖助人的獎勵!
savantor + 1 先贊一個!我弄nrf弄了好久
spps + 1 很給力!

查看全部評分

回復(fù)

使用道具 舉報

ID:114115 發(fā)表于 2016-4-18 03:41 | 顯示全部樓層
問題解答:
樓主你好,我想請教下,如果一次發(fā)送多個傳感器的數(shù)據(jù)該怎么改呢?我試著改了一下你的程序,但是只能接收到第一個傳感器的數(shù)據(jù),第二個傳感器的數(shù)據(jù)一直不對,能幫我看下嗎?謝謝了
發(fā)送端程序
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
void setup()
{
    Serial.begin(9600);

    Mirf.cePin = 8;                //設(shè)置CE引腳為D9
    Mirf.csnPin = 7;        //設(shè)置CE引腳為D10
    Mirf.spi = &MirfHardwareSpi;
    Mirf.init();  //初始化nRF24L01               

        //設(shè)置接收標(biāo)識符"Sen01"
    Mirf.setRADDR((byte *)"Sen01");
    Mirf.payload = sizeof(unsigned int);
    Mirf.channel = 3;
    Mirf.config();

        //注意一個Arduino寫Sender.ino,另一個寫Receiver.ino。
        //這里標(biāo)識寫入了Sender.ino
    Serial.println("I'm Sender...");
}
unsigned int adata = 0;
unsigned int bdata = 0;
void loop()
{
        //讀取A0值到adata
    adata = analogRead(A0);
    bdata = analogRead(A1);

    //由于nRF24L01只能以byte單字節(jié)數(shù)組形式發(fā)送Mirf.payload個數(shù)據(jù),
    //所以必須將所有需要傳輸?shù)臄?shù)據(jù)拆成byte。
    //下面定義byte數(shù)組,存放待發(fā)數(shù)據(jù),因為Mirf.payload = sizeof(unsigned int);
    //實際下面等于byte data[2];
    byte data[Mirf.payload];

    //adata是unsigned int雙字節(jié)數(shù)據(jù),必須拆開。
    //將adata高低八位拆分:
    data[0] = adata & 0xFF;                //低八位給data[0],
    data[1] = adata >> 8;    //高八位給data[1]。
  data[2] = bdata & 0xFF;                //低八位給data[0],
    data[3] = bdata >> 8;
    //設(shè)置向"serv1"發(fā)送數(shù)據(jù)
    Mirf.setTADDR((byte *)"Rec01");
    Mirf.send(data);
    //while死循環(huán)等待發(fā)送完畢,才能進行下一步操作。
    while(Mirf.isSending()) {}
    Serial.println(adata);
    Serial.print("*****");
    Serial.println(bdata,DEC);
    delay(3000);
}

接收端程序:

#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>

    //定義一個變量adata存儲最終結(jié)果,oldadata存儲舊結(jié)果,防止相同結(jié)果刷屏。
    unsigned int adata = 0, bdata = 0;

void setup()
{
    Serial.begin(9600);

    //---------初始化部分,不可隨時修改---------
    Mirf.cePin = 8;     //設(shè)置CE引腳為D9
    Mirf.csnPin = 7;   //設(shè)置CE引腳為D10
    Mirf.spi = &MirfHardwareSpi;
    Mirf.init();  //初始化nRF24L01

    //---------配置部分,可以隨時修改---------
    //設(shè)置接收標(biāo)識符"Rev01"
    Mirf.setRADDR((byte *)"Rec01");
    //設(shè)置一次收發(fā)的字節(jié)數(shù),這里發(fā)一個整數(shù),
    //寫sizeof(unsigned int),實際等于2字節(jié)
    Mirf.payload = sizeof(unsigned int);
    //發(fā)送通道,可以填0~128,收發(fā)必須一致。
    Mirf.channel = 3;
    Mirf.config();

    //注意一個Arduino寫Sender.ino,另一個寫Receiver.ino。
    //這里用來辨別寫入了Receiver.ino程序
    Serial.println("I'm Receiver...");
}

void loop()
{
    //定義一個暫存數(shù)組,大小為Mirf.payload。
    byte data[Mirf.payload];
    if(Mirf.dataReady())    //等待接收數(shù)據(jù)準(zhǔn)備好
    {
        Mirf.getData(data);    //接收數(shù)據(jù)到data數(shù)組
        //data[1]<左移8位與data[0]并,重組數(shù)據(jù)。
        adata = (unsigned int)((data[1] << 8) | data[0]);
  bdata = (unsigned int)((data[3] << 8) | data[2]);



          Serial.println(adata);
    Serial.print("*****");
    Serial.println(bdata,DEC);
    }
}

求指教,十分感謝!

-----------------------------------------------

答:
你在可以這樣修改:

發(fā)送端程序
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
void setup()
{
    Serial.begin(9600);

    Mirf.cePin = 8;                //設(shè)置CE引腳為D9
    Mirf.csnPin = 7;        //設(shè)置CE引腳為D10
    Mirf.spi = &MirfHardwareSpi;
    Mirf.init();  //初始化nRF24L01               

        //設(shè)置接收標(biāo)識符"Sen01"
    Mirf.setRADDR((byte *)"Sen01");
    Mirf.payload = sizeof(unsigned int);//在這把2 修改成4
    Mirf.channel = 3;
    Mirf.config();

        //注意一個Arduino寫Sender.ino,另一個寫Receiver.ino。
        //這里標(biāo)識寫入了Sender.ino
    Serial.println("I'm Sender...");
}
unsigned int adata = 0,bdata = 0;

void loop()
{
        //讀取A0值到adata
    adata = analogRead(A0);
    bdata = analogRead(A1);

    //由于nRF24L01只能以byte單字節(jié)數(shù)組形式發(fā)送Mirf.payload個數(shù)據(jù),
    //所以必須將所有需要傳輸?shù)臄?shù)據(jù)拆成byte。
    //下面定義byte數(shù)組,存放待發(fā)數(shù)據(jù),因為Mirf.payload = sizeof(unsigned int);
    //實際下面等于byte data[2];
    byte data[Mirf.payload];

    //adata是unsigned int雙字節(jié)數(shù)據(jù),必須拆開。
    //將adata高低八位拆分:
    data[0] = adata & 0xFF;                //低八位給data[0],
    data[1] = adata >> 8;    //高八位給data[1]。
    data[2] = bdata & 0xFF;                //低八位給data[0],
    data[3] = bdata >> 8;
    //設(shè)置向"serv1"發(fā)送數(shù)據(jù)
    Mirf.setTADDR((byte *)"Rec01");
    Mirf.send(data);
    //while死循環(huán)等待發(fā)送完畢,才能進行下一步操作。
    while(Mirf.isSending()) {}
    Serial.println(adata);
    Serial.print("*****");
    Serial.println(bdata,DEC);
    delay(3000);
}

接收端程序:

#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>

    //定義一個變量adata存儲最終結(jié)果,oldadata存儲舊結(jié)果,防止相同結(jié)果刷屏。
    unsigned int adata = 0, bdata = 0;

void setup()
{
    Serial.begin(9600);

    //---------初始化部分,不可隨時修改---------
    Mirf.cePin = 8;     //設(shè)置CE引腳為D9
    Mirf.csnPin = 7;   //設(shè)置CE引腳為D10
    Mirf.spi = &MirfHardwareSpi;
    Mirf.init();  //初始化nRF24L01

    //---------配置部分,可以隨時修改---------
    //設(shè)置接收標(biāo)識符"Rev01"
    Mirf.setRADDR((byte *)"Rec01");
    //設(shè)置一次收發(fā)的字節(jié)數(shù),這里發(fā)一個整數(shù),
    //寫sizeof(unsigned int),實際等于2字節(jié)
    Mirf.payload = sizeof(unsigned int);//在這把2 修改成4
    //發(fā)送通道,可以填0~128,收發(fā)必須一致。
    Mirf.channel = 3;
    Mirf.config();

    //注意一個Arduino寫Sender.ino,另一個寫Receiver.ino。
    //這里用來辨別寫入了Receiver.ino程序
    Serial.println("I'm Receiver...");
}

void loop()
{
    //定義一個暫存數(shù)組,大小為Mirf.payload。
    byte data[Mirf.payload];
    if(Mirf.dataReady())    //等待接收數(shù)據(jù)準(zhǔn)備好
    {
        Mirf.getData(data);    //接收數(shù)據(jù)到data數(shù)組
        //data[1]<左移8位與data[0]并,重組數(shù)據(jù)。
        adata = (unsigned int)((data[1] << 8) | data[0]);
        bdata = (unsigned int)((data[3] << 8) | data[2]);
   
      
            
          Serial.println(adata);
    Serial.print("*****");
    Serial.println(bdata,DEC);
    }
}

回復(fù)

使用道具 舉報

ID:156727 發(fā)表于 2016-12-22 01:11 來自觸屏版 | 顯示全部樓層
教程真的不錯。
回復(fù)

使用道具 舉報

ID:156727 發(fā)表于 2016-12-22 01:13 來自觸屏版 | 顯示全部樓層
相當(dāng)不錯的教程
回復(fù)

使用道具 舉報

ID:165849 發(fā)表于 2017-2-22 01:05 | 顯示全部樓層
1) 終于成功測試成功。  不過網(wǎng)上的MIRF 庫有多個版本的,我用上老的版本·
https://github.com/aaronds/arduino-nrf24l01

2)  設(shè)置CE CSN引腳也很方便可以用以下指令
Mirf.cePin = 9;   
Mirf.csnPin = 10

3) 范例開始的這段漏了  
#include
#include
#include
#include ,  
后來查了一下應(yīng)該是
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
回復(fù)

使用道具 舉報

ID:189188 發(fā)表于 2017-4-13 14:42 | 顯示全部樓層
參照了您的寫法,一對一成功了,請問一對多如何改寫
回復(fù)

使用道具 舉報

ID:190306 發(fā)表于 2017-4-17 09:06 | 顯示全部樓層
很不錯的教程,學(xué)習(xí)了
回復(fù)

使用道具 舉報

ID:190397 發(fā)表于 2017-4-17 13:00 | 顯示全部樓層
有一對多的代碼嗎?
回復(fù)

使用道具 舉報

ID:189188 發(fā)表于 2017-4-18 09:40 | 顯示全部樓層
這個是別人寫的多通道發(fā)送端程序,更改地址,但是只有03號地址才能用為啥?
  1. /*
  2.     nRF24L01 Arduino Receiver接收端
  3.     圖表輸出版本
  4.      
  5.     Ansifa
  6.     2015/3/7
  7.      
  8.     引腳接法:
  9.     nRF24L01   Arduino UNO
  10.     VCC <-> 3.3V
  11.     GND <-> GND
  12.     CE  <-> D9
  13.     CSN <-> D10
  14.     MOSI<-> D11
  15.     MISO<-> D12
  16.     SCK <-> D13
  17.     IRQ <-> 不接
  18.     */
  19. #include"Multiple.h"

  20. Multiple nrf(9,10,13,11,12);//構(gòu)建函數(shù),參數(shù)分別為CE,CSN,CLK,MOSI,MISO

  21. uint8_t tx_addr[] = { 0x03, 0xFF, 0xFF, 0xFF, 0xFF};//發(fā)送地址
  22. uint8_t tx_data[32]={3,0,2,5,8};//發(fā)送的數(shù)據(jù),32位
  23. //uint8_t channel;//接收通道
  24. //uint8_t tmp;

  25. void setup() {
  26.   nrf.send_mode(tx_addr);//設(shè)置為發(fā)送模式,參數(shù)為發(fā)送地址
  27. }

  28. void loop() {
  29.    
  30.   tx_data[2]++;
  31.   nrf.send(tx_addr,tx_data);//發(fā)送數(shù)據(jù),參數(shù):發(fā)送地址,數(shù)據(jù)
  32.   delay(1000);

  33. }
復(fù)制代碼
回復(fù)

使用道具 舉報

ID:191906 發(fā)表于 2017-5-17 00:53 | 顯示全部樓層
支持一個,我用RF24丟包好嚴重,不懂是什么問題
回復(fù)

使用道具 舉報

ID:198286 發(fā)表于 2017-5-28 19:33 | 顯示全部樓層
丟包多數(shù)是信號強度不夠,你看設(shè)置有問題沒,簡單辦法可以試試降低速率,如果可以就是這樣的問題
回復(fù)

使用道具 舉報

ID:55085 發(fā)表于 2017-8-1 22:52 | 顯示全部樓層
不小心重復(fù)了下載,怎么又扣分哪。。。。。。

評分

參與人數(shù) 1黑幣 +80 收起 理由
admin + 80 補償

查看全部評分

回復(fù)

使用道具 舉報

ID:55085 發(fā)表于 2017-8-1 22:53 | 顯示全部樓層
我下載了再次,扣了我再次5分。。。。。≡┩靼。。。。。。。。。
回復(fù)

使用道具 舉報

ID:238632 發(fā)表于 2017-10-11 16:52 | 顯示全部樓層
請問下怎樣實現(xiàn)兩個邊發(fā)送 邊接收
回復(fù)

使用道具 舉報

ID:221153 發(fā)表于 2017-12-15 23:18 | 顯示全部樓層
用的庫里帶的事例,一直這樣
Beginning ...
Finished sending
Timeout on response from server!
Finished sending
Timeout on response from server!
Finished sending
Timeout on response from server!
Finished sending
Timeout on response from server!
Finished sending
Timeout on response from server!
Finished sending
回復(fù)

使用道具 舉報

ID:221153 發(fā)表于 2017-12-15 23:28 | 顯示全部樓層
I'm Receiver...
沒有然后了
回復(fù)

使用道具 舉報

ID:380141 發(fā)表于 2018-8-27 10:10 | 顯示全部樓層
我也點“后退”結(jié)果造成重復(fù)下載被重復(fù)扣了5分。。
回復(fù)

使用道具 舉報

ID:442524 發(fā)表于 2018-12-9 10:35 | 顯示全部樓層
學(xué)習(xí)一下           
回復(fù)

使用道具 舉報

ID:442524 發(fā)表于 2018-12-27 09:03 | 顯示全部樓層
下載一個看看
回復(fù)

使用道具 舉報

ID:329997 發(fā)表于 2019-1-19 20:05 | 顯示全部樓層
樓主您好!我今天也碰巧搞這個模塊,不過好像存在些問題,接線沒有問題。C:\Users\Administrator\DesktopC:\Users\Administrator\Desktop
回復(fù)

使用道具 舉報

ID:594522 發(fā)表于 2019-8-3 11:11 | 顯示全部樓層
gdgzwqz 發(fā)表于 2017-8-1 22:53
我下載了再次,扣了我再次5分。。。。!冤枉。。。。。。。。!

下載好的能不能分享一下
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表