IanPeverell
V2EX  ›  Arduino

Arduino+ nRF24L01 通信不稳定怎么解决?

  •  
  •   IanPeverell · Aug 3, 2015 · 11882 views
    This topic created in 3967 days ago, the information mentioned may be changed or developed.
    两个Arduino Uno板子分别连接两块nRF24L01进行通信,接受和发送信号很不稳定,经常打开串口监视器,无法接收到数据,是板子和nRF24L01没连接好,还是什么原因呢?

    另,是用USB hub连电脑的,会不会因为供电问题影响收发呢?
    5 replies    2015-09-25 16:39:55 +08:00
    agate
        1
    agate  
       Aug 3, 2015
    我用的是 Mirf 库.
    一开始我也是这样收不到信号. 发现至少要在 setup 中打出一次 println 才能收到效果(如果 setup println 的话 loop 的 code 就没作用...) 这个是我实验下来的经验.
    IanPeverell
        2
    IanPeverell  
    OP
       Aug 3, 2015
    @agate 多谢

    不过又出现了一个新的问题,就是我的发送端发送了7个字节的信息,然后接受端显示的却是7个方块,不知道是现实出现了问题还是根本就没接收到信息呢?
    agate
        3
    agate  
       Aug 4, 2015
    你是直接打出byte么? 能贴一下你的code么
    IanPeverell
        4
    IanPeverell  
    OP
       Aug 4, 2015
    @agate

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

    void setup()
    {
    Serial.begin(9600);
    Mirf.spi = &MirfHardwareSpi;
    Mirf.init();
    Mirf.setRADDR((byte *)"serv1");
    Mirf.payload = 7;
    Mirf.channel = 3;
    Mirf.config();
    }

    void loop()
    {
    byte data[Mirf.payload];
    if(!Mirf.isSending() && Mirf.dataReady())
    {
    Mirf.getData(data);
    int i;
    String Temp;
    for (i = 0; i < Mirf.payload; i++)
    {
    Temp += char(data[i]);
    }
    Serial.print("Get:");
    Serial.print(Mirf.payload);
    Serial.print(" ");
    Serial.println(Temp);
    }
    }
    blanboom
        5
    blanboom  
       Sep 25, 2015
    有时候是电源的问题,可以在 nRF24L01 模块的 VCC 和 GND 之间并联一个 1~10µF 的电容。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2788 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 12:02 · PVG 20:02 · LAX 05:02 · JFK 08:02
    ♥ Do have faith in what you're doing.