NRF24L01+ empfängt keine Daten

Hallo,
ich bin noch recht neu im Thema Arduino und probiere aktuell, die Position eines Potis über 2 NRF24L01+ Module zu übertragen. Dafür nutze ich 2 Arduino Micro und die Mirf Library.

Ich habe bei Google durchaus vieles gefunden und alles Mögliche ausprobiert, allerdings funktioniert das bei mir nicht. Das Senden scheint zu klappen, aber das Empfangen haut noch nicht so ganz hin.

Verkabelt ist das Ganze wie folgt:

Sender:

Empfänger:

Und die Codes auf den Arduinos sehen wie folgt aus:

Sender:

#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
  
int rate;

void setup() {
  
  Serial.begin(9600);
  
  Mirf.spi = &MirfHardwareSpi;
  Mirf.init();
  Mirf.setRADDR( (byte *)"clie1" );
  Mirf.payload = sizeof( rate );
  Mirf.config();

}
  
void loop() {
  
  rate = analogRead( A0 );
  
  Mirf.setTADDR( (byte *)"serv1" );
  Mirf.send((byte *) &rate);
  
  while( Mirf.isSending() ) {

    Serial.println( rate );
    
  }
  
}

Emfänger:

#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
  
int rate;
  
void setup() {
  
  Serial.begin(9600);
  
  Mirf.spi = &MirfHardwareSpi;
  Mirf.init();
  Mirf.setRADDR((byte *)"serv1");
  Mirf.payload = sizeof(rate);
  Mirf.config();

}
  
void loop() {
  
  while( !Mirf.dataReady() ) {}

  Mirf.getData( (byte *) &rate );
    
  Serial.println( "Empfangen" );
  Serial.println( rate );
  delay( 1000 );
 
}

Dir fehlt mit Sicherheit ein Kondensator direkt am Modul. 100 bis 1000µF sind angemessen.

Leider: Die Lib ist mir fremd, das Board auch....

Hallo, sorry, aber ich hasse diese fritzing-Bildchen. Da kann man ja genau gar nichts erkennen. Noch nicht mal ob und wo welche Spannungsversorgung angeschlossen ist. Zumindest beim Empfänger scheint an den entsprechenden Pins nichts angeschlossen zu sein.

Gruß Peter

combie: Dir fehlt mit Sicherheit ein Kondensator direkt am Modul. 100 bis 1000µF sind angemessen

Du meinst sicher die Geschichte den direkt zwischen GND und VCC am Modul zu löten oder?

peter_de: Hallo, sorry, aber ich hasse diese fritzing-Bildchen. Da kann man ja genau gar nichts erkennen. Noch nicht mal ob und wo welche Spannungsversorgung angeschlossen ist. Zumindest beim Empfänger scheint an den entsprechenden Pins nichts angeschlossen zu sein.

Gruß Peter

Hallo Peter, als Spannungsversorgung nutze ich 6 x AA Batterien à 1,5V, sodass ich auf 9V komme.

Und an welche Pins sind dies 9V angeschlossen? Welche Spannung haben die NRF24L01+ Module ?

Die 9V sind beim Micro an VIN angeschlossen und die Funkmodule jeweils an 3V3, da diese mit 3,3V laufen.

Ich verwende die Mirf Library nicht und kann deshalb auch nichts dazu sagen.

maniacbug/RF24 habe ich Im Einsatz und keine Probleme damit. Diese Library ist sehr gut dokumentiert und bringt viele Beispiele mit.

So ich habe mich jetzt mal an der RF24 Library versucht, allerdings funktioniert das auf merkwürdige Art und Weise nicht.

Mein Code für den Sender sieht jetzt wie folgt aus:

// RF24 Bibliothek einbinden

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

// Pipe erstellen (LL = LongLong)

const uint64_t pipe = 0xE8E8F0F0E1LL;

// Radio erzeugen

RF24 radio( 9, 10 );

// int zum uebertragen

int test;

void setup() {

  test = 1;

  Serial.begin( 9600 );
  radio.begin();

  radio.openWritingPipe( pipe );
  
}

void loop() {

  if ( radio.available() ) {

    radio.write( &test, sizeof( test ) );
    Serial.println( test );
  
    delay( 1000 );
    
  } else {

    Serial.println( "Radio not available" );
    
  }
  
}

Und der für den Empfänger folgendermaßen:

// Bibliothek einbinden

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

// Pipe erzeugen (LL = LongLong)

const uint64_t pipe = 0xE8E8F0F0E1LL;

// Radio erzeugen

RF24 radio( 9, 10 );

int test;

void setup() {

  Serial.begin( 9600 );

  radio.begin();
  radio.openReadingPipe( 1, pipe );
  radio.startListening();
  
}

void loop() {

  if ( radio.available() ) {

    radio.read( &test, 10 );
    Serial.println( test );
    
  } else {

    Serial.println( "Radio not available" );
    
  }
  
}

Beim Sender ist das Merkwürdige, dass wenn ich radio.write nutze, auf dem seriellen Monitor gar nichts zu passieren scheint. Der Empfänger zeigt auch nichts an.

Ich bin auch noch mal die Verkabelung der NRF24L01+ Module durchgegangen, da scheint alles richtig zu sein.