Я использовал следующую библиотеку для связи между двумя пико, и она сработала:
https://github.com/AndyRids/pico-nrf24/ Tree/main
Мне удалось запустить nrf24l01 между двумя модулями esp32.
Но мне не удалось установить связь между pico и esp32 через nrf24l01.
Я использую esp32 c3 Devkit m1.
Заранее благодарим за помощь.
Esp32 main.cpp
Код: Выделить всё
#include "nRF24L01.h"
#include
RF24 radio(8, 7, 5000000); // CE CSN
uint8_t weight = 5;
const byte address[5] = {0x37, 0x37, 0x37, 0x37, 0x37};
void setup() {
Serial.begin(115200);
delay(2000);
if (!radio.begin()) {
Serial.println(F("Radio hardware not responding!"));
}
radio.setChannel(50);
radio.setDataRate(RF24_1MBPS);
radio.setPALevel(RF24_PA_MAX);
radio.enableDynamicPayloads();
radio.setPayloadSize(1);
radio.enableAckPayload();
radio.enableDynamicAck();
radio.setRetries(3, 10);
radio.setAddressWidth(5);
radio.openReadingPipe(0, address);
radio.startListening();
}
uint32_t sendTimer = 0;
void loop() {
if (radio.available()) {
radio.read(&weight, 1);
Serial.println(weight);
}
}
Код: Выделить всё
int main() {
stdio_init_all();
pin_manager_t my_pins = {.sck = 2, .copi = 3, .cipo = 4, .csn = 5, .ce = 6};
nrf_manager_t my_config = {.channel = 50,
.address_width = AW_5_BYTES,
.dyn_payloads = DYNPD_ENABLE,
.data_rate = RF_DR_1MBPS,
.power = RF_PWR_NEG_12DBM,
.retr_count = ARC_10RT,
.retr_delay = ARD_500US};
uint32_t my_baudrate = 5000000;
nrf_client_t my_nrf;
nrf_driver_create_client(&my_nrf);
my_nrf.configure(&my_pins, my_baudrate);
my_nrf.initialise(&my_config);
my_nrf.payload_size(ALL_DATA_PIPES, 1);
my_nrf.standby_mode();
uint8_t payload_zero = 123;
fn_status_t success = 0;
uint64_t time_sent = 0; // time packet was sent
uint64_t time_reply = 0; // response time after packet sent
while (1) {
my_nrf.tx_destination((uint8_t[]){0x37, 0x37, 0x37, 0x37, 0x37});
time_sent = to_us_since_boot(get_absolute_time()); // time sent
success = my_nrf.send_packet(&payload_zero, sizeof(payload_zero));
time_reply = to_us_since_boot(get_absolute_time()); // response time
if (success) {
printf("\nPacket sent:- Response: %lluμS | Payload: %d\n",
time_reply - time_sent, payload_zero);
} else {
printf("\nPacket not sent:- Receiver not available.\n");
}
sleep_ms(3000);
}
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... ns-problem