NRF24L01 Python 覆盆子库
NRF24L01 Python Library for Raspberry
我尝试使用此库在 Raspberry Pi 3 上为 NRF24L01 编写测试函数:https://github.com/jpbarraca/pynrf24
我需要从该代码在运行时在列表和写入模式之间切换。不幸的是,由于库的原因,我遇到了错误。
谁能告诉我如何解决它们?或者至少给我一些其他可以正常工作的库?
Raspberry 上的 SPI 已启用
因为它是问题 (https://github.com/jpbarraca/pynrf24/issues/38) :我也尝试过 set begin(0,0... 但结果是:
Traceback (most recent call last): File "TestNRF.py", line 8, in
radio.begin(0, 0, "P8_23", "P8_24") # Set CE and IRQ pins File "/home/pi/Commander/NRF24L01/nrf24.py", line 232, in begin
GPIO.setup(self.ce_pin, GPIO.OUT)
ValueError: Channel must be an integer or list/tuple of integers
我也试过了:https://github.com/BLavery/lib_nrf24
但我找不到从哪里可以得到模块 virtGPIO
from NRF24L01.nrf24 import NRF24
import time
import struct
pipes = [[0xe7, 0xe7, 0xe7, 0xe7, 0xe7], [0xc2, 0xc2, 0xc2, 0xc2, 0xc2]]
radio = NRF24()
radio.begin(1, 0, "P8_23", "P8_24") # Set CE and IRQ pins
radio.setRetries(15, 15)
radio.setPayloadSize(5)
radio.setChannel(0x60)
radio.setDataRate(NRF24.BR_250KBPS)
radio.setPALevel(NRF24.PA_MAX)
def writeMode():
radio.stopListening()
radio.openWritingPipe(pipes[1])
radio.openReadingPipe(1, pipes[0])
# radio.startListening()
# radio.stopListening()
def listenMode():
radio.openWritingPipe(pipes[0])
radio.openReadingPipe(1, pipes[1])
# radio.startListening()
# radio.stopListening()
radio.startListening()
i = 0
while True:
listenMode()
print("Listen Mode")
recv_buffer = []
pipe = [0]
if radio.available(pipe, True):
radio.read(recv_buffer)
values = struct.unpack_from('HBBB',recv_buffer)
print(values)
else:
writeMode()
print("Write Mode")
msg = struct.pack('HBBB', 3000, 243, 234, 254)
radio.write(msg)
time.sleep(0.2)
i = +1
if i == 4:
exit()
Error: Traceback (most recent call last): File "TestNRF.py", line 8,
in
radio.begin(1, 0, "P8_23", "P8_24") # Set CE and IRQ pins File "/home/pi/Commander/NRF24L01/nrf24.py", line 213, in begin
self.spidev.open(major, minor)
FileNotFoundError: [Errno 2] No such file or directory
对于像我这样的未来傻瓜(因为我不认为有任何更大的白痴)
Raspberry Pi 3 B+ 只有 SPI0 这意味着那条线 :
radio.begin(1, 0, "P8_23", "P8_24")
必须改为:
radio.begin(0, 0, "P8_23", "P8_24")
还记得为CE和IRQ设置引脚(例如):
radio.begin(0, 0, 23, 24)
好照片:
Raspberry 3 B+ pinout
我通过在 raspy-config 中启用 SPI 接口解决了我的 pi 4b 中的这个问题。
我尝试使用此库在 Raspberry Pi 3 上为 NRF24L01 编写测试函数:https://github.com/jpbarraca/pynrf24
我需要从该代码在运行时在列表和写入模式之间切换。不幸的是,由于库的原因,我遇到了错误。
谁能告诉我如何解决它们?或者至少给我一些其他可以正常工作的库?
Raspberry 上的 SPI 已启用 因为它是问题 (https://github.com/jpbarraca/pynrf24/issues/38) :我也尝试过 set begin(0,0... 但结果是:
Traceback (most recent call last): File "TestNRF.py", line 8, in
radio.begin(0, 0, "P8_23", "P8_24") # Set CE and IRQ pins File "/home/pi/Commander/NRF24L01/nrf24.py", line 232, in begin GPIO.setup(self.ce_pin, GPIO.OUT)
ValueError: Channel must be an integer or list/tuple of integers
我也试过了:https://github.com/BLavery/lib_nrf24 但我找不到从哪里可以得到模块 virtGPIO
from NRF24L01.nrf24 import NRF24
import time
import struct
pipes = [[0xe7, 0xe7, 0xe7, 0xe7, 0xe7], [0xc2, 0xc2, 0xc2, 0xc2, 0xc2]]
radio = NRF24()
radio.begin(1, 0, "P8_23", "P8_24") # Set CE and IRQ pins
radio.setRetries(15, 15)
radio.setPayloadSize(5)
radio.setChannel(0x60)
radio.setDataRate(NRF24.BR_250KBPS)
radio.setPALevel(NRF24.PA_MAX)
def writeMode():
radio.stopListening()
radio.openWritingPipe(pipes[1])
radio.openReadingPipe(1, pipes[0])
# radio.startListening()
# radio.stopListening()
def listenMode():
radio.openWritingPipe(pipes[0])
radio.openReadingPipe(1, pipes[1])
# radio.startListening()
# radio.stopListening()
radio.startListening()
i = 0
while True:
listenMode()
print("Listen Mode")
recv_buffer = []
pipe = [0]
if radio.available(pipe, True):
radio.read(recv_buffer)
values = struct.unpack_from('HBBB',recv_buffer)
print(values)
else:
writeMode()
print("Write Mode")
msg = struct.pack('HBBB', 3000, 243, 234, 254)
radio.write(msg)
time.sleep(0.2)
i = +1
if i == 4:
exit()
Error: Traceback (most recent call last): File "TestNRF.py", line 8, in
radio.begin(1, 0, "P8_23", "P8_24") # Set CE and IRQ pins File "/home/pi/Commander/NRF24L01/nrf24.py", line 213, in begin self.spidev.open(major, minor)
FileNotFoundError: [Errno 2] No such file or directory
对于像我这样的未来傻瓜(因为我不认为有任何更大的白痴) Raspberry Pi 3 B+ 只有 SPI0 这意味着那条线 :
radio.begin(1, 0, "P8_23", "P8_24")
必须改为:
radio.begin(0, 0, "P8_23", "P8_24")
还记得为CE和IRQ设置引脚(例如):
radio.begin(0, 0, 23, 24)
好照片: Raspberry 3 B+ pinout
我通过在 raspy-config 中启用 SPI 接口解决了我的 pi 4b 中的这个问题。