Ich brauch mal eure Hilfe.
Ich versuche einen +nRF24L01 unter Python3 zum laufen zu kriegen. Aber es funktioniert irgendwie nicht.
Ich habe mittlerweile so viele Libraries probiert, das ich schon gar nicht mehr sagen kann von wo ich es nun installiert habe.
Die Hardware habe ich mit einem Arduino getestet, die läuft.
Hier ist mein Testscript:
Code: Alles auswählen
import RPi.GPIO as GPIO
from libs.lib_nrf24 import NRF24
import time
import spidev
from time import gmtime, strftime
pipes = [[0xf0, 0xf0, 0xf0, 0xf0, 0xe1], [0xf0, 0xf0, 0xf0, 0xf0, 0xd2]]
gpio_pin = 22
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
print(spidev.SpiDev())
radio = NRF24(GPIO, spidev.SpiDev())
radio.begin(0, gpio_pin)
radio.enableDynamicPayloads()
radio.setRetries(15, 15)
radio.setPayloadSize(32)
radio.setChannel(20)
radio.setDataRate(NRF24.BR_250KBPS)
radio.setPALevel(NRF24.PA_LOW)
radio.setCRCLength(NRF24.CRC_8)
radio.setAutoAck(1)
radio.openWritingPipe(pipes[1])
radio.openReadingPipe(1, pipes[0])
radio.enableAckPayload()
radio.printDetails()
radio.stopListening()
print("Payload size: " + str(radio.getPayloadSize()))
buf = bytes("4|1|255|255|255|255|127|0|0|0", "UTF-8")
# send a packet to receiver
radio.write(buf)
# did it return with a payload?
pipe = [0]
radio.startListening()
timeout_counter = 0
timeout = False
while not radio.available(pipe):
time.sleep(10000 / 1000000.0)
if timeout_counter == 100:
timout = True
break
else:
timeout_counter += 1
if timeout == True:
print("timeout")
else:
recv_buffer = []
radio.read(recv_buffer, radio.getDynamicPayloadSize())
recv = ""
for c in recv_buffer:
recv += chr(c)
print(recv)
Die Hardware scheint er zu erkennen, aber wie man ziemlich gut sieht werden die Einstellungen des 'radio' nicht übernommen. Zum Beispiel an der Data Rate oder PA Power erkennt man es gut. Ich konnte aber nicht rausfinden warum es nicht übernommen wird. Es gibt auch keine Fehlermeldung oder sonst irgendwas.pi@RPI2:~/bob2 $ sudo python3 test8.py
STATUS = 0x03 RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=1 TX_FULL=1
RX_ADDR_P0-1 = 0xfefefefefe 0xfefefefefc
RX_ADDR_P2-5 =
0xf8
0xf9
0xf9
0xf9
TX_ADDR =
0xfefefefefe
RX_PW_P0-6 =
0x0c
0x0c
0x00
0x00
0x00
0x00
EN_AA = 0x0f
EN_RXADDR = 0x00
RF_CH = 0x07
RF_SETUP = 0x03
CONFIG = 0x03
DYNPD/FEATURE =
0x03
0x01
Data Rate = 1MBPS
Model = nRF24L01
CRC Length = Disabled
PA Power = PA_LOW
Hat zufällig jemand das gute Stück bei sich unter Python3 am laufen? Oder hat eine Idee was es sein könnte?
Es ist an einem RPi2 mit Raspbian Strech Lite.
Danke schon mal und beste Grüße
HeAdLeSs