【问题标题】:nrf24l01+ between arduino and raspberry Pi in NodeJSNodeJS 中 arduino 和树莓派之间的 nrf24l01+
【发布时间】:2016-06-22 23:41:12
【问题描述】:

我正在尝试使用 nrf24l01+ 网络接收器从我的 Raspberry Pi 检索传感器数据。

我是从 Arduino nano 板上发送的。这是我的 Arduino 的设置:

STATUS       = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1     = 0xcccccc3ccc 0xcccccc3c3c
RX_ADDR_P2-5     = 0x33 0xce 0x3e 0xe3
TX_ADDR      = 0xcccccccc3c
RX_PW_P0-6   = 0x20 0x20 0x20 0x20 0x20 0x20
EN_AA        = 0x3e
EN_RXADDR    = 0x3f
RF_CH        = 0x5a
RF_SETUP     = 0x07
CONFIG       = 0x0f
DYNPD/FEATURE    = 0x3f 0x04
Data Rate    = 1MBPS
Model        = nRF24L01+
CRC Length   = 16 bits
PA Power     = PA_MAX

我的树莓派通过 GPIO 插入了 nrf24l01+。我使用https://github.com/TMRh20/RF24 上给出的 C++ 示例确保连接正常:

RF24 radio(RPI_BPLUS_GPIO_J8_15,RPI_BPLUS_GPIO_J8_24, BCM2835_SPI_SPEED_8MHZ);

数据正常。现在我想使用 nodeJS 程序来获取这些数据。我正在使用这个库:https://github.com/natevw/node-nrf

代码很简单,但不知何故不起作用(控制台无声):

var spiDev = "/dev/spidev0.0";
var cePin = 15; //RPI_BPLUS_GPIO_J8_15
var irqPin = null;
var channel = 0x5a; //90

var radio = require('nrf').connect(spiDev, cePin, irqPin);

radio
    .channel(channel)
    .dataRate('1Mbps')
    .crcBytes(1)
//  .autoRetransmit({count:15, delay:4000})
    ;

radio.begin(function () {
    var rx = radio.openPipe('rx', 0xcccccccc3c);
    rx.pipe(process.stdout);
});

我想知道我做错了什么。硬件还行,设置也不错,你觉得呢?

谢谢

【问题讨论】:

    标签: node.js networking arduino gpio


    【解决方案1】:

    通常要找出 NRF 有什么问题,你应该从基础开始:

    1. 尝试更简单的 NRF 配置来测试它是否工作,尤其是在 没有 CRC 字节等的情况下。
    2. 尝试不使用动态负载并尝试在两端固定负载大小
    3. 自动确认也可能是一个问题(请注意,当启用自动确认时,CRC 不能被禁用,因为它用于确保在此模式下的传输确认) .
    4. 确保 CRC 长度在两端匹配。在您在 Arduino 上的示例中,您有 CRC Length = 16 bits Raspberry 是否配置了 radio.crcBytes(1)
    5. 不要依赖默认值,始终在两端提供相同的完整配置

    这些步骤可以大大缩短定位问题的时间,尤其是在使用不同的库和平台时。

    【讨论】:

      猜你喜欢
      • 2015-11-26
      • 1970-01-01
      • 2013-02-08
      • 2017-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多