Go Down

Topic: NRF24L01 Problem (Read 1 time) previous topic - next topic

DennisD

Halle Zusammen
ich bin seit ein paar tagen Besitzer von 2 NRF24L01 Einheiten nun wollte ich damit herum probieren doch leider finde ich weder ein tutorial wo ich mich einarbeiten könnte noch eine Librarie die bei mir geht.
Zur Verwendung : ich habe 2 Arduino nano und ein Arduino uno
der eine Arduino soll mit Tastern versehen die inputs abfragen und zu dem anderen senden dieser soll dann seine ausgänge einfach 1 zu 1 wiedergeben.
Hat einer von euch bereits Erfahrung mit diesen NRF24L01 oder kennt jemand etwas was mir hier weiter helfen könnte diesen Projekt umzusetzen

vielen dank schonmal =)

Marcus W

Ist zwar nicht direkt Arduino, lässt sich mit ein bisschen mühe allerdings problemlos übernehmen - und ist der erste Link in Google wenn man nach NRF24L01 sucht ;)

http://www.mikrocontroller.net/articles/NRF24L01_Tutorial

DennisD

Hallo
leider bin ich noch ein Neuling und kann erlich gesagt mit dem was auf der seite erklärt wird nichts anfangen  :(

jurs


ich bin seit ein paar tagen Besitzer von 2 NRF24L01 Einheiten nun wollte ich damit herum probieren doch leider finde ich weder ein tutorial wo ich mich einarbeiten könnte noch eine Librarie die bei mir geht.


Im Playground wird auf eine Library verwiesen, die eine Untermenge der Funktionen des NRF24L01 unterstützt:
http://playground.arduino.cc/InterfacingWithHardware/Nrf24L01

Was ist denn damit?

Bekommst Du die Library nicht installiert?
Funktionieren die Beispiele zur Library nicht?
Möchtest Du spezielle Funktionen des Funkmoduls nutzen, die von der Library nicht unterstützt werden?
Oder funktioniert ein selbstgeschriebener Sketch nicht, der die Library verwendet?

DennisD

ich bekomme diese schon installier ich kann sie auch öffnen aber beim kompilieren kommt immer fehlermeldungen

ping_server.cpp: In function 'void setup()':
ping_server.pde:-1: error: 'Mirf' was not declared in this scope
ping_server.pde:-1: error: 'MirfHardwareSpi' was not declared in this scope
ping_server.cpp: In function 'void loop()':
ping_server.pde:-1: error: 'Mirf' was not declared in this scope
ping_server.pde:-1: error: 'data' was not declared in this scope

jurs


ich bekomme diese schon installier ich kann sie auch öffnen aber beim kompilieren kommt immer fehlermeldungen


Nein, offenbar bekommst Du die Library nicht einwandfrei installiert, sonst würde es diese Fehlermeldungen nicht geben.

Ich habe mir selbst gerade mal die Mirf-Library installiert, die Beispiele zur Library lassen sich (getestet mit Arduino 1.0.3) einwandfrei kompilieren.

Dann beschreibe doch mal:
- Welches Betriebssystem in welcher Betriebssystemversion verwendest Du?
- Welche Arduino-Version verwendest Du?
- Welches Arduino-Board hast Du unter "Tools - Board" eingestellt?
- Hast Du bereits irgendwelche anderen Fremd-Libraries erfolgreich installiert?
- Hast Du diejenige Library, in der zuletzt vor 9 Monaten die Datei "Mirf.h" angepaßt wurde?
  (Erstellungsdatum der Datei Mirf.h wäre 24. Mai 2012)
- In welchem Pfad auf Deinem Rechner befindet sich denn jetzt die Datei "Mirf.cpp" oder "Mirf.h"?


DennisD

Also nach dem Herunterladen entpacken und den ordner in den ordner liberies verschiben.
so habe ich es bereits mit ca 10 anderen gemacht wie IR; I2C etc liberies
eingestellt ist das uno welches ich auch dafür nutzen möchte

Eisebaer

hi,

hast Du den ordner, der direkt in der zip ist, in den ordner libraries gestellt? oder den unterordner Mirf?
zweiteres wäre richtig.

gruß stefan
nimm abblockkondensatoren!  100nF.  glaub mir, nimm abblockkondensatoren!

DennisD

Danke
ja dies war Mein fehler nun läst es sich kompilieren .

könntet ihr mir noch vielleicht kurz sagen welche variabele beim server gesendet wird ( also die die ich für mich abändern muss )
Gruß Dutta

jurs


ja dies war Mein fehler nun läst es sich kompilieren .


Soviel also dazu, dass eine Library bei Dir angeblich nicht "geht".
Die Library "geht" also doch.


könntet ihr mir noch vielleicht kurz sagen welche variabele beim server gesendet wird ( also die die ich für mich abändern muss )


Bevor Du das Gespann aus "ping_client" und "ping_server" nicht in zum Laufen bekommen hast, so daß der Client seinen gesendeten Zeitstempel auch vom Server einwandfrei zurückbekommt, würde ich an den übertragenen Daten der Beispielprogramme erstmal gar nichts ändern.

Ansonsten entnehme ich dem Quelltext, dass Server und Client die Größe der Datenpakete als "Payload" fest vereinbaren müssen, und zwar bei Client und Server auf dieselbe Payload-Größe, im Beispiel also 4 Bytes:
Mirf.payload = sizeof(unsigned long);

Wie groß die Payload-Paketgröße maximal sein darf und auf welchen Wert Du das für Deine Zwecke ändern kannst, müßtest Du den Kommentaren im Library-Quellcode bzw. dem Datenblatt des Sendechips entnehmen.

Und dann kannst Du wahlweise Bytes senden oder Bytes empfangen.
Codezeilen als Beispiel wie es geht, sind in den "ping_client" und "ping_server" (und anderen) Beispielprogrammen enthalten, an denen kannst Du Dich orientieren.

DennisD

ok dankeschön für die info nun habe ich noch ein grundsetzlichere frage mit den anschlüssen
Was ist der IRQ? benötige ich diesen und wen ja wie muss ich diesen anschließen?

jurs


Was ist der IRQ? benötige ich diesen und wen ja wie muss ich diesen anschließen?


IRQ Interrupt-Anschluß.
Der Funkchip kann Interrupts auslösen, die Du dann mit der Software in Interrupt-Behandlungsroutinen verarbeiten kannst.

Aber wie heißt es so schön: IRQ is Unused by most software
Und was nicht gebraucht wird, braucht auch nicht angeschlossen zu werden.

Es gibt aber auch ein Beispiel zur Library, das IRQ verwendet: ping_server_interrupt
Da wird der Arduino als Ping-Server in einen Schlafmodus versetzt, in dem er gar nichts mehr macht und daher auch gar nicht abfragt, ob Daten empfangen wurden. In dem Modus braucht er besonders wenig Strom, was für batteriebetriebene Geräte wichtig ist. Und wenn das Funkmodul Daten empfangen hat, verpaßt es dem Arduino über die IRQ-Leitung einen Elektroschock, damit er wieder aufwacht und weiter arbeitet, z.B. die empfangenen Daten weiter verarbeitet. Die Nutzung von IRQ  fällt also mehr unter "optionale erweiterte Features" als das man es zur Datenkommunikation mit diesen Modulen zwingend benötigt.



Go Up