Arduino Nano +nrf24l01 + Raspberry Pi B+

  • Servus alle
    Ich beschäftige mich eine Weile mit den nrf24l01+.
    Die Kommunikation zwischen 2 arduino nano funktioniert wunderbar.
    Jetzt wollte ich zwischen einem Arduino Nano und dem Pi B+ einer verbindung aufbauen.
    Der nrf24l01+ wird auch am Pi erkannt nur werden keine Daten Empfangen vom Nano.
    Vor gegangen bin ich nach:
    http://et92.de/2014/08/kommuni…rf24l01-und-rf24-library/


    Weis jemand wo der Fehler sein könnte?


  • Hi tuxerli,
    poste doch bitte mal den Source ... in dem sketch war, wenn ich mich recht erinnere, ein Fehler.
    Da musste ich auch zuerst einmal zwischen ping und pong hin und herschalten, bevor das dann lief.
    Das hatte was mit den geöffneten pipes zu tun ...


    cu,
    -ds-

  • Es ist dieser gettingstart aus dem NF24 paket für Arduino


  • Hi,


    Es ist dieser gettingstart aus dem NF24 paket für Arduino


    ja genau, und zwar war das im setup() ...


    Code
    ...
    void setup(void)
    {
      //
      // Print preamble
      //
    ...
      // Open 'our' pipe for writing
      // Open the 'other' pipe for reading, in position #1 (we can have up to 5 pipes open for reading)


    Folgende Zeilen auskommentieren oder löschen:

    Code
    //  //if ( role == role_ping_out )
    //  {
    //    //radio.openWritingPipe(pipes[0]);
    //    radio.openReadingPipe(1,pipes[1]);
    //  }
    //  //else
    //  {
    //    //radio.openWritingPipe(pipes[1]);
    //    //radio.openReadingPipe(1,pipes[0]);
    //  }


    und dafür diese drei Zeilen einfügen:

    Code
    role = role_pong_back;
      radio.openWritingPipe(pipes[1]);
      radio.openReadingPipe(1,pipes[0]);


    cu,
    -ds-

  • Hast Du die pipes angepasst, damit sie übereinstimmen?
    GPIO setup korrekt?


    Probier vielleicht mal diesen Code:


    auf dem Raspi aus ... :s

  • leider keinen erfolg
    was mich jetzt aber stutzig macht:


    da müsste doch bei mir da mit dem B+ rein ???


    aber wenn ich das ändere kommt:


    Code
    test.cpp:18:12: error: ‘RPI_BPLUS_GPIO_J8_15’ was not declared in this scope
    test.cpp:18:33: error: ‘RPI_BPLUS_GPIO_J8_24’ was not declared in this scope
  • Hi,
    kommt drauf an, was da bei Dir stehen muss ...
    Wie ist das Ganze verschaltet? Pinsel das doch vielleicht kurz mal mit Fritzing o.ä. auf.
    So einen Fehler zu finden finde ich immer ziemlich doof ... ist so ein bisschen stochern im Nebel ... ich hab' mir nicht umsonst damals den Testdaten-Generator gestrickt ;) ...


    cu,
    -ds-

  • der nano ist so geschaltet.



    der PI B+ so wie auf dem Bild.
    Zusätzlich habe ich aber noch 433 MHZ empfänger und sender am Pi.



    [hr]
    Das gleiche Ergebniss auf einen normalen Pi B

    Edited once, last by tuxerli ().


  • ...
    Das gleiche Ergebniss auf einen normalen Pi B


    Okääh ... :s
    Nun, der RPi ist bei Dir genau so verdrahtet wie auch bei mir.
    Kannst Du zunächst mal beim normalen B bleiben? Ich denke, das macht die Sache einfacher.
    Bei der vorliegenden Verkabelung brauchst Du folgende setup-Zeile für den B:

    Code
    // Setup for GPIO 22 CE and CE0 CSN with SPI Speed @ 8Mhz
    RF24 radio(RPI_V2_GPIO_P1_22, BCM2835_SPI_CS0, BCM2835_SPI_SPEED_8MHZ);


    Hast Du zudem überprüft, ob die pipes im Programm für den Raspi und dem sketch für den Arduino identisch sind? Ich hatte das so abgeändert:
    Raspi:

    Code
    // Radio pipe addresses for the 2 nodes to communicate.
    //const uint8_t pipes[][6] = {"1Node","2Node"};
    //const uint64_t pipes[2] = { 0xABCDABCD71LL, 0x544d52687CLL };
    const uint64_t pipes[2] = { 
      0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };


    und auf dem Arduino:

    Code
    // Radio pipe addresses for the 2 nodes to communicate.
    const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };


    Zudem: überprüf vielleicht noch mal, ob die Änderung mit der default_role im setup() ebenfalls in beiden Programmen gemacht werden muss.
    Hintergrund ist: im fehlerhaften sketch wird zwar
    role_e role = role_pong_back;
    gesetzt, aber nur eine pipe - und zwar zum Lesen - aufgemacht:

    Code
    radio.openReadingPipe(1,pipes[1]);


    Darüber kann er nicht senden (pong back).


    Und schliesslich: poste doch bitte noch die Ausgabe ( vom RPi und vom Arduino ) vom

    Code
    radio.printDetails()

    - Aufruf.



    ...
    Zusätzlich habe ich aber noch 433 MHZ empfänger und sender am Pi.
    ...


    will heissen?


    Naja ... und dann schau mer amoi weida ...
    cu,
    -ds-

  • Ich mache erst mal mein Projekt fertig von meiner Haussteuerung ohne die temperatur anzeige. dann habe ich den normalen Pi frei.
    ich melde mich dann noch mal bei dir.

  • Hallo,
    Ich bin auch gerade mit dem 2.4Ghz empfänger dran.
    Hab zwar das Modul noch nicht erhalten jedoch besitze ich den Raspberry B+ rev.2
    Und den Arduino Nano.
    Gibt es dazu schon erfolge?

    Ready when you are :bravo2:

    Edited once, last by schnibli ().

  • Kurzer Stand:


    NAch dem ich einen Fehler im deinen Testscript was du oben hattest ausgemerzt hatte funzt jetzt das Empfangen auf dem Pi B.
    Sobalt mein T-Chopper für den B+ da ist werde ich das ganze noch mal auf dem B+ versuchen.


    was mich jetzt gerade beschäftigt ist: wie empfange ich die Daten meines DS18s20.
    aber das werde ich jetzt noch rausfinden.


  • Ich bekomme balde eine meise heut


    habe ein Tut gefunden welches genau das beschreibt was ich benötige:


    http://redlegoman.blogspot.de/…-clone-with-rf24-and.html


    jetzt meckert er:



    der Code:



    Was will er in Zeile:
    done = radio.read(receivePayload, len);

  • Ich bin gerade nach diesem Tut dran den NRF auf dem Pi zu installieren:
    link


    Nun habe ich hier:

    Code
    git clone https://github.com/stanleyseow/RF24.git


    folgendes Problem:

    Code
    sudo git clone https://github.com/stanleyseow/RF24.git
    git: 'clone https://github.com/stanleyseow/RF24.git' is not a git command. See 'git --help'.


    Kann mir jemand helfen? Raspberry pi b+


    Interessant nach dem 2 Reboot hat es Funktioniert xD

    Ready when you are :bravo2:

    Edited once, last by schnibli ().

  • Auf anraten von DS gehts mal hier weiter.
    Das Problem:
    Ich versuche einen Code zumlaufen zubringen, der Daten von einem Arduino Nano zu einem Raspi sendet.
    der ino code der auf meinem Nano läuft:




    der Code für den PI:



    Code
    g++ -Wall -Ofast -mfpu=vfp -mfloat-abi=hard -march=armv6zk -mtune=arm1176jzf-s -L../librf24/  -lrf24 test.cpp -o pi_rf24ping_rx


    aus irgendeinem grund schmeisst er immer:
    error: void value not ignored as it ought to be
    es betrifft die Zeile: done = radio.read(receivePayload, len);

    Edited once, last by tuxerli ().

  • Ja schön, jetzt haben wir wiede die Allgemeinheit im Boot ...


    ...
    aus irgendeinem grund schmeisst er immer:
    error: void value not ignored as it ought to be
    es betrifft die Zeile: done = radio.read(receivePayload, len);


    Na jetzt kommt das aus -> diesem <- Beitrag wieder zum Tragen.
    Der read() hat keinen Rückgabe-Wert. Um festzustellen ob alle Zeichen gelesen sind, müsstest Du so was:

    Code
    ...
    char buf[128];
    
    
    while( radio.available() )
    {
      radio.read( (char*) buf, sizeof(buf) );
    ....
    }


    probieren.


    cu,
    -ds-

  • Damit alle auf dem gleichen stand sind die mit machen wollen:


    habe mir das rf24_v0.tar paket von DS runter geladen und es auf dem Pi entpackt.


    Das Makefile erweitert um das Program was gerade verändert/entwickelt wird.


    aktueller Code bringt einen Speicherzugriffsfehler:



    [hr]
    OT:
    ds wenn ich das done entferne aus dem Orginalcode sieht es so aus:


    Edited once, last by tuxerli ().