我正在尝试使用nrf24l01网络接收器从我的Raspberry Pi中检索传感器数据. 我是从Arduino nano板发送的.这是我的Arduino的设置: STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0RX_ADDR_P0-1 = 0xcccccc3c
我是从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
我的Raspberry Pi通过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); });
我想知道我做错了什么.硬件还可以,设置看起来不错,您怎么看?
谢谢
通常要找出NRF的问题,你应该从基础开始:>尝试更简单的NRF配置来测试它是否正常工作,尤其是没有CRC字节等.
>尝试使用无动态有效载荷,并在两端尝试固定有效载荷大小.
>自动确认也可能是一个问题(请注意,启用auto-ack时,不能禁用CRC,因为它用于确保此模式下的传输确认).
>确保两端的CRC长度匹配.在您的Arduino示例中,无论Raspberry是否配置了radio.crcBytes(1),您都有CRC长度= 16位.
>不要依赖默认值,始终在两端提供相同的完整配置.
这些步骤可以大大减少定位问题的时间,尤其是在使用不同的库和平台时.