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

2015-08-03 14:04:41 +08:00
 IanPeverell
两个Arduino Uno板子分别连接两块nRF24L01进行通信,接受和发送信号很不稳定,经常打开串口监视器,无法接收到数据,是板子和nRF24L01没连接好,还是什么原因呢?

另,是用USB hub连电脑的,会不会因为供电问题影响收发呢?
8012 次点击
所在节点    Arduino
5 条回复
agate
2015-08-03 14:14:11 +08:00
我用的是 Mirf 库.
一开始我也是这样收不到信号. 发现至少要在 setup 中打出一次 println 才能收到效果(如果 setup println 的话 loop 的 code 就没作用...) 这个是我实验下来的经验.
IanPeverell
2015-08-03 14:49:11 +08:00
@agate 多谢

不过又出现了一个新的问题,就是我的发送端发送了7个字节的信息,然后接受端显示的却是7个方块,不知道是现实出现了问题还是根本就没接收到信息呢?
agate
2015-08-04 10:25:33 +08:00
你是直接打出byte么? 能贴一下你的code么
IanPeverell
2015-08-04 12:14:57 +08:00
@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
2015-09-25 16:39:55 +08:00
有时候是电源的问题,可以在 nRF24L01 模块的 VCC 和 GND 之间并联一个 1~10µF 的电容。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/210434

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX