На Raspberry Pi не принимаются данные от Arduino по NRF24
Имею Arduino Uno и Raspberry Pi 3. К ним подключены модули NRF24L01+, разумеется по протоколу SPI. Raspberry Pi 3 в роли приемника, Arduino Uno в роли передатчика.
Но по какой то неведомой для меня причине на Raspberry Pi я получаю не то, что передаю.
Передаю, как понятно из кода набор из 4 значений, а получаю вот что:
Received: [252, 252, 252, 252]
Received: [252, 252, 252, 252]
Может быть кто то заводил NRF24 на Raspberry? Куда копать?
Код Arduino UNO(передатчика)
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
//nRF24 set the pin 9 to CE and 10 to CSN/SS
// Cables are:
// SS -> 10
// MOSI -> 11
// MISO -> 12
// SCK -> 13
//for nrf24 debug
int serial_putc( char c, FILE * )
{
Serial.write( c );
return c;
}
void printf_begin(void)
{
fdevopen( &serial_putc, 0 );
}
RF24 radio(9,10);
const uint64_t pipe = 0xE0E0F1F1E0LL;
void setup(void) {
Serial.begin(9600); //Debug
printf_begin();
//nRF24 configurations
radio.begin();
radio.setChannel(0x70);
radio.setCRCLength(RF24_CRC_16);
radio.setAutoAck(1);
radio.setRetries(15,15);
radio.setDataRate(RF24_2MBPS);
radio.openWritingPipe(pipe);
radio.startListening();
radio.printDetails(); //for Debugging
}
void loop() {
int SendPayload[4] ;
SendPayload[0] = 2;
SendPayload[1] = 3;
SendPayload[2] = 4;
SendPayload[3] = 5;
radio.stopListening();
bool ok = radio.write(&SendPayload,sizeof(SendPayload));
Serial.println(ok);
radio.startListening();
delay(1000);
}
Код на Raspberry Pi(приемника)
#!/usr/bin/python
# -----------------------------------
# NRF24 RPi- pin
# 1 GND GND
# 2 3.3v 1 3.3v
# 3 CE 22 GPIO25
# 4 CSN 24 CE0_0
# 5 SCK 23 SCLK_0
# 6 MOSI 19 MOSI_0
# 7 MISO 21 MISO_0
# 8 N/C
# -----------------------------------
from nrf24 import NRF24
import time
from time import gmtime, strftime
import RPi.GPIO as GPIO
pipes = [[0xE0, 0xE0, 0xF1, 0xF1, 0xE0], [0xE0, 0xF1, 0xF1, 0xF0, 0xE0]]
radio = NRF24()
radio.begin(0, 0,25,18)
radio.setRetries(15,15)
radio.setPayloadSize(4)
radio.setChannel(0x70)
radio.setDataRate(NRF24.BR_2MBPS)
radio.setPALevel(NRF24.PA_MIN)
radio.setAutoAck(True)
radio.enableDynamicPayloads()
radio.enableAckPayload()
radio.openWritingPipe(pipes[0])
radio.openReadingPipe(0, pipes[0])
radio.startListening()
radio.stopListening()
radio.printDetails()
radio.startListening()
radio.printDetails()
while(1):
receivedMessage = []
pipe = [0]
try:
while not radio.available(pipe, True):
time.sleep(1000/1000000.0)
radio.read(receivedMessage, radio.getDynamicPayloadSize())
print("Received: {}".format(receivedMessage))
out = ''.join(chr(i) for i in receivedMessage)
print("Received: {}".format(out))
except:
print("SPI Error")
time.sleep(1)