我有一个新的 Raspberry Pi 3 B+ 型号。我还买了几个nrf24l01+模块。
我通过以下连接将 nrf24l01+ 模块之一连接到我的 RPi:
RPi | nrf24l01+
-------|----------
3.3 | VCC
GND | GND
GPIO8 | CSN
GPIO17 | CE
GPIO10 | MOSI
GPIO09 | MISO
GPIO11 | SCK
我从这里下载了 RPi 的 BLavery 库:https : //github.com/BLavery/lib_nrf24。然后我将文件移动lib_nrf24.py
到我的工作目录中~/projects/helloworld/lib_nrf24.py
。
然后我创建了一个名为的文件~/projects/helloworld/receiver.py
并放置了以下代码:
import RPi.GPIO as GPIO
from lib_nrf24 import NRF24
import time
import spidev
GPIO.setmode(GPIO.BCM)
pipes = [[0xE8, 0xE8, 0xF0, 0xF0, 0xE1],[0xF0, 0xF0, 0xF0, 0xF0, 0xE1]]
radio = NRF24(GPIO, spidev.SpiDev())
radio.begin(0,17)
radio.setPayloadSize(32)
radio.setChannel(0x76)
radio.setDataRate(NRF24.BR_1MBPS)
radio.setPALevel(NRF24.PA_MIN)
radio.setAutoAck(True)
radio.enableDynamicPayloads()
radio.enableAckPayload()
radio.openReadingPipe(1,pipes[1])
radio.printDetails()
radio.startListening()
当我运行命令时python3 ~/projects/helloworld/receiver.py
,我得到以下输出:
STATUS = 0x03 RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=1 TX_FULL=1
RX_ADDR_P0-1 =
0xfdfdfdfdfd 0xfefefefefc
RX_ADDR_P2-5 =
0xf8
0xf9
0xf9
0xf9
TX_ADDR =
0xfdfdfdfdfd
RX_PW_P0-6 =
0x00
0x0c
0x00
0x00
0x00
0x00
EN_AA =
0x0f
EN_RXADDR =
0x00
RF_CH =
0x1f
RF_SETUP =
0x00
CONFIG =
0x03
DYNPD/FEATURE =
0x03
0x01
Data Rate = 1MBPS
Model = nRF24L01
CRC Length = Disabled
PA Power = PA_MIN
我的问题是为什么输出显示RX_ADDR_P0-1 = 0xfdfdfdfdfd 0xfefefefefc
,当我写[0xF0, 0xF0, 0xF0, 0xF0, 0xE1]
的,为什么不输出显示 RF_CH = 0x1f
,当我写radio.setChannel(0x76)
?
我注意到 BLavery 在我的 RPi 3 B+ 发布前几个月停止支持 lib_nrf24 库。这和我的问题有关系吗?是否有另一种实用的方法可以将 nrf24l01 模块与我的 RPi 3 B+ 一起使用?
注意:这是我对为什么 RPi 3 B + 没有从使用 nrf24l01 模块传输的 arduino 接收任何有效负载的调查的一部分。我有两个 arduino 可以用 nrf24l01 互相交谈。所以我的下一步是让 arduino 到 RPi 工作。