首先确保NRF24L01模块正确连接。然后,使用以下代码设置和发送数据:
在Arduino Uno上:
#include
#include
#include
RF24 radio(9, 10); // 连接CE和CSN引脚
const byte address[6] = "00001";
void setup() {
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(address);
radio.setPALevel(RF24_PA_MAX);
radio.stopListening();
}
void loop() {
const char text[] = "Hello World";
radio.write(&text, sizeof(text));
Serial.println("Sent message: Hello World");
delay(1000);
}
在Raspberry Pi 4上:
import RPi.GPIO as GPIO
from lib_nrf24 import NRF24
pipes = [[0xe7, 0xe7, 0xe7, 0xe7, 0xe7], [0xc2, 0xc2, 0xc2, 0xc2, 0xc2]]
radio = NRF24(GPIO.BOARD, 10, 8) # 连接CE和CSN引脚
radio.begin(0, 0)
radio.setPayloadSize(8)
radio.setChannel(0x76)
radio.setDataRate(NRF24.BR_1MBPS)
radio.setPALevel(NRF24.PA_MAX)
radio.setAutoAck(True)
radio.enableDynamicPayloads()
radio.enableAckPayload()
radio.openReadingPipe(1, pipes[1])
radio.printDetails()
radio.startListening()
while True:
while not radio.available(0):
pass
receivedMessage = []
radio.read(receivedMessage, radio.getDynamicPayloadSize())
print("Received message: {}".format(receivedMessage))
print("Translating our receivedMessage into unicode characters...")
string = ""
for n in receivedMessage:
if (n >= 32 and n <= 126):
string += chr(n)
print("Our received message decodes to: {}".format(string))
请注意,这些代码适用于单向通信。如果您需要双向通信,请在Arduino Uno上设置和打开另一个管道,并在Raspberry Pi 4上处理接收到的数据并回复。