Skocz do zawartości

Pomocna odpowiedź

Napisano (edytowany)

Cześć wszystkim,

Mam problem z modułem nrf24l01. Próbowałem już 4 modułów (z anteną PCB i tą dokręcaną). Wgrywałem też takie proste kody typu nadaje i odbiera „Hello World”, mam kondensator przy module, próbowałem też różnych mikrokontrolerów (Nano, Uno, Esp32). Nic nie pomogło i moduł dalej nie działa.

Z góry dzięki za pomoc 🙂

Edytowano przez MikLuk
  • Lubię! 1

Programów testowałem sporo ale przykładowy zamieszczę.

Nadajnik: 

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

RF24 radio(9, 10); // CE, CSN
const byte address[6] = "00001";

void setup() {
  Serial.begin(9600);
  radio.begin();
  radio.setPALevel(RF24_PA_LOW);
  radio.setChannel(108);
  radio.setDataRate(RF24_1MBPS);
  radio.openWritingPipe(address);
  radio.stopListening();
}

void loop() {
  const char text[] = "Hello NRF";
  radio.write(&text, sizeof(text));
  Serial.println("Wysłano: Hello NRF");
  delay(1000);
}

 

Odbiornik:

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

RF24 radio(9, 10); // CE, CSN
const byte address[6] = "00001";

void setup() {
  Serial.begin(9600);
  radio.begin();
  radio.setPALevel(RF24_PA_LOW);
  radio.setChannel(108);
  radio.setDataRate(RF24_1MBPS);
  radio.openReadingPipe(0, address);
  radio.startListening();
}

void loop() {
  if (radio.available()) {
    char text[32] = "";
    radio.read(&text, sizeof(text));
    Serial.print("Odebrano: ");
    Serial.println(text);
  }
}

Połączenie:

nrf24l01 - Arduino

GND -> GND

3.3V -> 3.3V

CE -> D9

CSN -> D10

SCK -> D13

MISO -> D12

MOSI -> D11

IRQ - niepodłączone

Wgrałem taki kod:

Nadajnik;

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

RF24 radio(9, 10); // CE, CSN
const byte address[6] = "00001";

void setup() {
  Serial.begin(9600);
  if (!radio.begin()) {
    Serial.println("❌ Błąd: nie można zainicjować modułu nRF24L01");
    while (1); // Zatrzymaj program
  }

  radio.setPALevel(RF24_PA_LOW);
  radio.setChannel(108);
  radio.setDataRate(RF24_1MBPS);
  radio.openWritingPipe(address);
  radio.stopListening();

  Serial.println("✅ Nadajnik gotowy");
  radio.printDetails(); // Diagnostyka
}

void loop() {
  const char text[] = "Wiadomość testowa";
  bool ok = radio.write(&text, sizeof(text));

  if (ok) {
    Serial.println("✅ Wiadomość wysłana");
  } else {
    Serial.println("❌ Błąd: nie udało się wysłać wiadomości");
  }

  delay(1000);
}

Komunikat:

image.thumb.png.2856572e16936f97ffd43ecf5b9bc38a.png

 

I odbiornik:

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

RF24 radio(9, 10); // CE, CSN
const byte address[6] = "00001";

void setup() {
  Serial.begin(9600);
  if (!radio.begin()) {
    Serial.println("❌ Błąd: nie można zainicjować modułu nRF24L01");
    while (1); // Zatrzymaj program
  }

  radio.setPALevel(RF24_PA_LOW);
  radio.setChannel(108);
  radio.setDataRate(RF24_1MBPS);
  radio.openReadingPipe(1, address);
  radio.startListening();

  Serial.println("✅ Odbiornik gotowy");
  radio.printDetails(); // Diagnostyka
}

void loop() {
  if (radio.available()) {
    char text[32] = "";
    radio.read(&text, sizeof(text));
    Serial.print("📨 Odebrano: ");
    Serial.println(text);
  } else {
    Serial.println("⏳ Oczekiwanie na wiadomość...");
  }

  delay(1000);
}

I komunikat:

image.thumb.png.31c68466f906ae96f162d6e429c07f3a.png

 

z funkcji radio.printDetails() się nic nie wyświetla.

Wklejanie kodów z GPT bez zastanowienia, daleko Cię nie zaprowadzi, chwilę mi zajęło, żeby wyczytać że printDetails potrzebuje biblioeki printf.h Także trochę od siebie a nie pisanie promptów bez namysłu.

W ogóle zalecałbym użycie przykładów dołączonych do biblioteki są dostępne na github, to powinno dać ci odpowiedź czy moduły są sprawne. 

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...