Arduino und nRF24L01

Eigentlich sollte mein erster Artikel hier im Blog die Vorstellung meiner selbstgeschrieben Bibliothek zum Bau eines kleinen Sensoren-Netzwerkes auf Basis der nRF24L01 Funktransmitter und dem Arduino werden. Dabei wollte ich die Grundlagen zum Anschließen der Hardware einfach nur etwas tiefer erläutern. Draus geworden ist jetzt allerdings eine komplette kleine Einführung zum Thema Arduino und nRF24L01. Meinen eigentlichen Artikel über das Sensoren-Netzwerk, werde ich aber in einem gesonderten Post nachreichen. Jetzt aber erstmal viel Spass beim Kennenlernen der nRF24L01-Welt.

Mein kleiner Liebling

Zum Einsatz kommen die beliebten nRF24L01 Chips, die auf 2,4 GHz senden und empfangen. Die kleinen Racker bieten sehr viele integrierte Funktionen sodass man sich als Entwickler wenig Gedanken über die Basiskommunikation machen muss. Das heist, die Themen Adressierung, Senden und Empfangen sind bereits im Chip integriert und man steuert diese nur über den SPI Bus an.

Aber zunächst einige Fakten zu den Funkchips. Wie schon gesagt, senden diese auf 2,4 GHz. Man kann bis zu 128 Kanäle wählen, um etwaige Funkkollisionen mit anderen Netzen zu vermeiden. Miteinander kommunizierende Chips müssen natürlich auf dem selben Kanal funken. Jedem Chip kann eine 40 Bit Adresse zugewiesen werden. Beim Absetzen eines Funkpaketes sorgen die Chips untereinander alleine dafür, dass die Übertragung erfolgreich ist. D.h. sie senden ein Funkpaket so oft neu, bis die Gegenstelle den erfolgreichen Empfang mit einem Acknowlegde bestätigt. Natürlich lassen sich diese ganzen Helferfunktionen auch deaktivieren sodass der Chip sozusagen direkt gesteuert werden kann. Das werden wir allerdings nicht tun und konzentrieren uns auf das Wesentliche.

Erhältlich sind die Chips in zwei Versionen. Einmal die ’normalen‘ nRF24L01 mit integrierter Antenne und die etwas größeren Varianten mit einer SMA Antenne für eine bessere Sende- und Empfangsleistung. Welche unterschiedlichen Reichweiten zwischen beiden Versionen erzielt werden, kann ich im Augenblick noch nicht sagen. Ich weiß jedoch, dass die günstige Version mit integrierter Antenne eine für mich völlig ausreichende Reichweite bietet. Völlig ausreichend heißt bei mir das erfolgreiche Funken innerhalb eines Hauses über 4 Etagen (vom Keller bis in den 3. Stock). Gehe ich mit einem Chip aber in den Garten und lasse den anderen im 3. Stock stehen, sieht es leider etwas schlechter aus und die Kommunikation funktioniert nur noch sporadisch bis gar nicht mehr. Deshalb habe ich mir zusätzlich noch die SMA Version bestellt Und werde diese bald testen.

nRF24L01 Plus mit SMA Antenne
nRF24L01 Plus mit SMA Antenne
nRF24L01 mit integrierter Antenne
nRF24L01 mit integrierter Antenne

Voraussetzungen und Teileliste

Was brauchen wir, um unser Kommunikationsprojekt zu bauen. Zunächst einmal setze ich voraus, dass du bereits etwas Erfahrung mit dem Arduino hast. Du solltest bereits erfolgreich deine ersten kleinen Projekte, wie die blinkende Lampe oder das Einlesen eines Schalters erstellt haben und etwas gefestigt mit dem Umgang der Programmiersprache für den Arduino nämlich C/C++ sein. Sollte das nicht der Fall sein, empfehle ich dir die Anfänger-Tutorials auf http://arduino.cc.

Die benötigte Hardware setzt sich aus folgenden Komponenten zusammen:

  • Arduino UNO R3 oder alternativ ein Arduino Mega 2560. Letzterer wird vor allem später interessant, wenn wir weitere Funktionen wie Sensoren bauen wollen. Der UNO hat dann schlichtweg zu wenig Speicher und produziert Fehler.
  • Einen zweiten Arduino als Kommunikationspartner. Ich empfehle hier einen Arduino Nano oder Micro. Ein Nano hat eine integrierte USB Schnittstelle, sodass die Tests hier etwas angenehmer sind. Ein Micro hingegen wird für den produktiven Einsatz interessant, vor allem wenn wenig Platz vorhanden ist oder er mit Batterie betrieben werden soll.
  • Für den Anfang noch nicht wichtig, aber später ein Muss, das Ethernetshield für den Arduino UNO/Mega. Dieses wird dann benötigt, wenn wir unser Funknetz an das LAN anbinden wollen.
  • Nicht zuletzt brauchen wir zwei nRF24L01 Funktransmitter. Diese gibt es günstig bei Amazon oder Ebay. Ich empfehle gleich drei oder fünf zu bestellen. Es kann schon mal sein, dass man einen mit einer falschen Spannung versorgt und sich dieser dann ins Jenseits verabschiedet und da ist es immer gut, noch einen auf Reserve zu haben, um nervige Unterbrechungen zu vermeiden.
  • Wichtig sind auch zwei 10 yF Elektrolytkondensatoren kurz Elkos. Diese benötigen wir als Spannungsstabilitatoren für die Funktransmitter. Ein Fehlen der Elkos hat bei mir jedenfalls zu enormen Kommunikationsproblemen geführt.
  • Außerdem solltest du eine Standardausrüstung zum Basteln mit dem Arduino haben. Dazu zählen Steckbrett,  Female-Female und Male-Female Steckberbindungen.

Bastelstunde

Jetzt geht es ans Eingemachte. Wir bauen uns zunächst den Master zusammen. Hierfür verbinden wir den Arduino UNO mit dem nRF24L01 Chip. Achte bitte unbedingt darauf, dass du den VCC Pin am Chip mit dem 3,3 V Pin vom Arduino verbindest. Eine 5 V Spannung kann den Transmitter zerstören und du brauchst direkt einen Neuen. Solltest du sehr günstige nRF Chips gekauft haben, haben diese oft keine Pin-Beschriftung. Nutze einfach die unten stehende Pin-Übersicht.

nRF24L01 Pin-Belegung
nRF24L01 Pin-Belegung
Anschlussbild nRF24L01 an ArduinoUNO mit Elko
Anschlussbild nRF24L01 an ArduinoUNO mit Elko

Verbinde bitte auch den Elko mit dem VCC und GND Pin des Transmitters. Ich habe das immer so gemacht, dass ich die Pins vom Elko mit in die Buchse zwischen Transmitterpin und Steckverbinder geklemmt habe. Hier muss du auch auf die Polung achten. Der längere Draht am Elko ist meist der Plus-Pol und muss an VCC des Transmitters.

Die Pins des Elko können mit in die Buchse der Steckverbinder geklemmt werden.
Die Pins des Elko können mit in die Buchse der Steckverbinder geklemmt werden.

Das war es auch schon mit dem Master. Kommen wir zum ersten Slave. Hierfür nehme ich der Einfacheit halber einen Arduino Nano. Dieser hat bereits eine 3,3 V Stromversorgung für den nRF Chip integriert. Wenn du einen Micro benutzen möchtest solltest du parallel einen 3,3 V Spannungsregler, z.B. einen LD1117V33, verwenden oder gleich die 3,3 V Variante des Micro kaufen.

Um den Funktransmitter am Nano anzuschließen, empfiehlt es sich, den Nano auf ein Steckbrett zu stecken und die Pins mit Female-Male Kabel zu verbinden. Denke auch hier wieder an den 10 yF Elko zwischen VCC und GND Pin, um Empfangsprobleme zu vermeiden. Unten findest du erneut eine Grafik mit der Übersicht der Pin-Verbindungen.

Anschlussbild nRF24L01 an Arduino Nano mit Elko
Anschlussbild nRF24L01 an Arduino Nano mit Elko

Umgebung einrichten

Nadem wir nun unsere Hardware vorbereitet haben, kommen wir zur Programmierung unserer Arduinos. Hierfür müssen wir glücklicherweise nicht von Grund auf neu anfangen. Es gibt nämlich schon einige Profies, die sich die Arbeit gemacht haben und eine Bibliothek für die Ansteuerung des nRF24L01 erstellt haben und dann noch freundlicherweise der Menschheit zur Verfügung stellen. Hier wurde ich zu Beginn etwas verwirrt. Es gibt nämlich viele solcher Biliotheken, im Programmieren-Volksmund auf Library genannt. Und wenn man nach diesen sucht und sie ausprobieren möchte, kommt es oft vor, dass ein Beispielprogramm nicht richtig funktioniert, einfach weil man das Beispielprogramm einer anderen Library benutzt hat. Das übersieht man beim ersten Hinsehen gerne mal. Und die große Anzahl an Forks (Abwandlungen) macht die Welt zusätzlich um einiges mehr unübersichtlicher.

Für unser erstes Beispiel nehmen wir die Bibliothek RF24 vom Entwickler TMRh20. Dieser hat die für mich beste Library geschrieben. Sie ist ein Fork der Basisbibliothek von maniacbug mit einigen Verbesserungen versehen. Sie wird auch noch aktiv gepflegt und wird ebenfalls in vielen weiteren Projekten desselben Entwicklers verwendet. Wen es interessiert: Audiostreaming oder IP-Basierte Netzwerke sind nur zwei Beispiele. Allerdings nutze ich nur die Basis-Library und habe alles andere selbst programmiert. Denn die weiterführenden Libraries vom Entwickler ermöglichen es zwar routingfähige Netze aufzubauen. Jedoch muss der Ersteller die Adressen der Netze fest einprogrammieren, was mir persönlich nicht gefällt. Und Routing bzw. IP basierte Netze benötige ich auch nicht, da ich a) nicht für jedes Gerät eine IP-Adresse in meinem Netzwerk haben möchte und b) meine Netzwerke räumlich so begrenzt sind, dass die Verbindung von einem Slave zum Master faktisch immer gegeben ist.

Um zu starten, gehe einfach auf https://github.com/TMRh20/RF24 und lade dir die aktuelle Version der Library herunter. Rechts auf der Seite, neben der Dateiliste, kannst du das komplette Projekt als ZIP Datei herunterladen.

Gehe nun in den Ordner für Libraries deiner Arduino Entwicklungsumgebung. Dieser befindet sich unter \Meine Dokumente\Arduino\libraries und lege dort einen neuen Ordner z.B. RF24 an. Entpacke nun die ZIP Datei in den neuen Ordner. Die RF24.h und alle anderen Dateien sollten nun direkt im Ordner RF24 liegen.

Folder_RF24_Library
Ordnerstruktur nach Ablage der RF24 Library

Das erste Beispielprogramm

Jetzt ist es Zeit, die Arduino Entwicklungsumgebung zu starten. Wenn du die Bibliothek richtig installiert hast, sollte im Menü Datei > Sketchbook > Libraries das Menü RF24 auftauchen, in dem wiederum viele Beispiele zu sehen sind.

Datei Menü nach erfolgreicher Installation der RF24 Library
Datei Menü nach erfolgreicher Installation der RF24 Library

Klicke auf den Eintrag GettingStarted. Die Umgebung lädt das erste Beispielprojekt aus der Library. Was jetzt folgt, sind ein paar Erläuterungen zum Quellcode.

Der Sketch ist so ausgelegt, dass er auf beiden Arduinos installiert wird. Man muss dem Programm nur sagen, welcher der beiden Arduinos der erste und welcher der zweite ist. Und das passiert auch gleich in Zeile 13.

/*
* Getting Started example sketch for nRF24L01+ radios
* This is a very basic example of how to send data from one node to another
* Updated: Dec 2014 by TMRh20
*/

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

/****************** User Config ***************************/
/***      Set this radio as radio number 0 or 1         ***/
bool radioNumber = 0;

/* Hardware configuration: Set up nRF24L01 radio on SPI bus plus pins 7 & 8 */
RF24 radio(7,8);
/**********************************************************/

Wenn du radioNumber auf 0 setzt und das Programm dann auf den Arduino UNO schreibst, musst du den Wert auf 1 ändern bevor du das Programm auf den Arduino Nano schreibst. Merke dir also am besten. Der UNO bekommt immer die 0. Der Nano bekommt immer die 1.

In Zeile 16 des Codes wird das Objekt für den nRF Chip erstellt. Dabei werden auch die Parameter übergeben, an welchen Pins wir CE und CSN angeschlossen haben. Hier müssen wir anstatt 7,8 die Werte 6,7 eintragen. Der fertige Code für unseren Arduino UNO sieht dann wie folgt aus:

/*
* Getting Started example sketch for nRF24L01+ radios
* This is a very basic example of how to send data from one node to another
* Updated: Dec 2014 by TMRh20
*/

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

/****************** User Config ***************************/
/***      Set this radio as radio number 0 or 1         ***/
bool radioNumber = 0;

/* Hardware configuration: Set up nRF24L01 radio on SPI bus plus pins 7 & 8 */
RF24 radio(6,7);
/**********************************************************/

Den Rest des Quellcodes können wir unverändert lassen. Verbinde jetzt den Arduino UNO per USB mit dem PC und wähle im Menü Werkzeuge > Platine > Arduino UNO aus. Setzte außerdem noch den korrekten Port unter Werkzeuge > Port > COM X (Arduino UNO) [Das X steht für deinen Port]. Jetzt kompiliere und lade den Sketch hoch. Öffne nun den Seriellen Monitor unter Werkzeuge > Serieller Monitor und stelle dort die richtige Baudrate ein. In unseren Fall ist das 115200. Wenn du das gemacht hast, sollte der Serielle Monitor etwas so aussehen:

Serieller Monitor auf dem UNO nach dem erfolgreichen Start des Sketches.
Serieller Monitor auf dem UNO nach dem erfolgreichen Start des Sketches.

Im Terminal steht, dass wir T eingeben sollen, um die Übertragung zu starten. Gesagt, getan. Gebe oben ein T ein und drücke Enter. Der UNO beginnt nun zu senden und wir erhalten lauter Meldungen über fehlgeschlagene Übetragungen.

Serieller Monitor auf dem UNO mit Fehlermeldungen
Serieller Monitor auf dem UNO mit Fehlermeldungen

Der UNO bekommt keine Antwort, was ja klar ist, denn wir haben den Kommunikationspartner, der die Nachrichten empfangen und Antwort geben soll, noch nicht eingerichtet. Aber das tun wir jetzt. Zuvor gebe im Terminal aber noch ein R ein und drücke Enter. Das versetzt den UNO wieder in den Empfangs-Modus.

Schließe nun das Terminal und verbinde den Arduino Nano per USB mit deinem PC. Im Quellcode änderst du noch die Zeile 13 und setzt radioNumber = 1. Damit ist unser Quellcode bereit für den Nano. Ändere noch unter Werkzeuge > Platine den Wetrt auf Arduino Nano und passe den COM Port ebenfalls an. Compiliere und lade den Sketch jetzt auf den Arduino Nano und öffner erneut das Terminal. Wieder sagt uns das Terminal, dass wir T eingeben sollen, um die Übertragung zu starten. Also gib T ein und bestätige mit Enter. Der Nano fängt nun an zu senden. Wenn du alles richtig gemacht hast, sollte er nun eine Antwort erhalten und das Terminal in etwas so ausschauen:

Serieller Monitor auf dem Nano mit erfolgreichen Übertragungen
Serieller Monitor auf dem Nano mit erfolgreichen Übertragungen

Bei mir schlägt das Senden ab und zu trotzdem Fehl. Ich habe herausgefunden, dass dies wahrscheinlich ein kleines Timing-Problem ist. Daher habe ich nach der Zeile 111 ( radio.stopListening(); ) noch ein delay(50); eingebaut. Das sorgt dafür, dass der Empänger der Nachricht kurz wartet, bevor er seine Antwort zurück an den Sender schickt. Ich glaube nämlich, dass der Empfänger manchmal schneller antwortet als der Sender in den Empfangsmodus gehen kann. Bei mir sorgt das delay jedenfalls für eine deutlich stabilere Kommunikation.

Voila! Damit haben wir unseren ersten großen Milenstein geschafft. Unsere Arduinos reden miteinander und das per Funk. Na das ist doch schon mal was, oder?

Ich hoffe der erste Teil hat dir soweit gefallen. Im nächsten Teil möchte ich gerne meine selbstgeschriebene Library vorstellen und zeigen, wie man mit ihr diverse Sensoren bauen kann. Die Werte der Sensoren werden auf dem Master abgespeichert und können dann per LAN angefragt werden.

Solltest du Fragen oder Anregungen haben, kannst du gerne Kommentare hinterlassen.

Bernd

41 Gedanken zu „Arduino und nRF24L01“

  1. Hallo Bernd, hallo Community,

    danke für den tollen Beitrag. Für meinen Anwendungsfall möchte ich, dass ein Master (vllt. ein Arduino Mega) mit 5 bis 7 Slaves (Arduino Nanos) kommuniziert. Kann ich da an alle Controller den nRF24L01 Chip dranbasteln?

    Grüße
    Alexej

  2. Hallo endlich mal einer der es super beschrieben hat
    Es wird mir eine grosse Hilfe sein hab das bis jetzt auch so meine kommunikations probleme siehe min.50cm Abstand und kondensator zur Stabilisierung
    Besten dank

  3. Hallo,
    der serielle Monitor liefert mir immer nur
    „radio hardware is not responding!!“ hat jemand eine Idee hierzu?
    Ein Elko habe ich schon eingelötet

    1. hallo hatte auch das problem
      bei mir war der fehler das die pinbelegung seiten verkehrt war, habe den fehler gemacht das ich die platine von der rückseite betrachtet hatte.
      danach lief alles wie geschmiert 😉

  4. Hallo Bernd,
    danke für dein Tutorial, damit habe ich meine NRF’s sofort an den Start bekommen. Ich möchte nun mit 6 Schaltern 6 LED’s Ein und Aus schalten, hast Du einen Denkansatz wie ich das anfangen muss?
    Danke und schönen 2. Weihnachtstag

  5. Ein weihnachtliches Hallo,
    zunächst einmal ein herzliches Dankeschön für diese gute Einführung. Nun möchte ich gerne von einem Master 2 Clients ansprechen. Wie wird das gesteuert?
    Ich habe dazu den BME280_Client und den UniversalSensorMaster genommen. Gebe ich zur Unterscheidung der beiden Clients die Mac-Adresse der Clients mit? Wo?
    Schon jetzt Danke für die Hilfe
    Martin

  6. Hallo Bernd.
    Auch von meiner Seite möchte ich Dir ein herzliches Dankeschön sagen, für Deine Bemühungen. Deine Anleitung hat mir sehr geholfen, den richtigen Weg mit den nrf24 Modulen zu finden .
    Da ich noch recht neu in der Arduino Welt bin und englisch nicht so gut kann, ist es echt schwierig für mich, verständliche Anleitungen im Netz zum Modul zu finden.

    Vielen lieben Dank

    Steven

  7. Sehr guter Artikel.
    Hat alles wie beschrieben funktioniert.
    Die Sendeleistung ist wirklich sehr gut.
    In meiner Wohnung (90m²) funktioniert die Übertragung sogar durch mehrere geschlossene Türen :).
    Danke dafür!
    Kann man irgendwie die Signalstärke ermitteln?

    Grüße, Michael

  8. Hallo Bernd,
    ich habe schon ein paar Jährchen mehr auf dem Buckel als Du, aber habe jetzt Zeit zum Bastel. Ich möchte z.B. LEDs mit dem Handy und Arduino Uno o.Ä. schalten. Dazu habe ich als Funkmodul einen NRF24L01 und nicht ein HC-05-Bluetooth-Modul, wie es in Beispielen verwendet wird. Wie kann ich den NRF24L01 mit dem Handy ansteuern?
    Vielen Dank für Deine Antwort
    Arduinofrosch

  9. Servus

    Ich bin absoluter Neuling und bräuchte Hilfe in Sachen Programmierung.
    Ich möchete mit Hilfe einen Arduino nano 3 Siganle an einen weitern Arduino nano senden
    Es soll ein Blnklich an einem Fahzeug abgeriffen und auf einen Anhänger übertragen werden so das beide Fahrzeugteile des Zuges gleichzeitig blinken aber eben kabellos. Das Signal 1 und 2 sind für die Blinker links und rechts. Das dritte sigal ist für das Bremslicht.
    Gibt es da schon entwürfe oer wie stelle ich das am Besten an.

    Danke schon mal für die Hilfe!

  10. Meinst du wirklich 10nF „Elektrolyt“-Kondensatoren (Elkos)? Ich finde solch kleine Elkos im ganzen Internet nicht. 10nF Kondensatoren sind entweder Folien- oder Keramik-Kondensatoren. Meinst du etwa 10 uF = 10000 nF?

    1. Hallo Carsten,
      ich meine einen yF oder uF also Mikrofarad. Das habe ich oben im Text falsch stehen gehabt. Hab es korrigiert. Danke dir für den Hinweis!

  11. Hei 🙂

    danke für die super Erklärung.
    Kann mir nun noch wer sagen, wie ich zum Beispiel das Signal eines Tasters von einem Board zum anderen bekomme?

    Zur kurzen Erklärung: ich möchte eine Baumaschine steuern.
    Dazu brauche ich nur 5 Relais die dann über eine Fernbedienung gezogen werden sollen.

  12. Hallo Bernd,

    mein Sohn und ich probieren uns jetzt schon seit einer Weile an Funkstrecken zwischen zwei Arduinos und wir sind an den 433MHz-Modulen schier verzweifelt. Aber nach Deiner super Anleitung hatten wir heute auf Anhieb ein Erfolgserlebnis! Vor allem der Tip mit dem delay ist spitze. Es gibt nun auch auf Entfernungen bis 400m kaum mehr Fehler. Einfach super.
    Ohne Leute wie Dich würden Leute wie ich schnell die Freude am Basteln verlieren. Vielen Dank!
    Gruß, Alex

    1. Hey Alex,
      herzlichen Dank für deine Worte. Es freut mich, wenn ich euch helfen konnte. Solche Leute wie du ermutigen mich/uns auch immer wieder dazu, weiter zu machen!
      PS: 400m sind schon eine ganz schöne Strecke!
      Gruß Bernd

  13. Betr.: nRF24..
    „Denke auch hier wieder an den 10 nF Elko zwischen VCC und GND Pin, um Empfangsprobleme zu vermeiden.“
    Sollte wohl 10uF heißen.

    M.f.G
    Richard Grothe

  14. Hallo Bernd
    ich bin Neuling auf dem Gebiet und befassemich erstz seit kurzem mit den Arduinos. Vielen Dank deshalb auch für deine sehr guten Tips.
    Ich habe auch zeitweise Probleme mit dem senden und würde gerne das mit dem delay (50) ausprobieren.
    Die Zeile 111 ist durch die fehlende Nummerierung relativ. Könntest du genau angeben wo du das delay (50) eingegeben hast.
    Vielen Dank
    Gerd

  15. Ich bekomme mit meinem Setup leider keine Kommunikation hin. Benutze einen Duemilanove und eine NodeMCU. Da habe ich D6 und D7 (12,13) als CE und CSN verwendet. Ich tue mit mit der Fehlersuche sehr schwer, man sieht ja nicht mal, ob so ein RF24 Transmitter überhaupt irgendetwas tut.

      1. Das freut mich. Habe hier trotzdem nochmal geschaut. Verwende aktuell einen WeMos D1 Mini für ein Projekt. Dort sind die Pins MOSI=D7, MISO=D6 und SCK=D5. Man muss bei diesen WeMos und NodeMCU Boards aber aufpassen. Hatte schon ein Platine, die komplett falsch beschriftet war. Da fällt einem die Fehlersuche wirklich ungemein schwer.

  16. Hallo Bernd, vielen dank für das sehr gute Tutorial. Gerade wegen der Verwendung von Mega und Uno hatte ich gehofft, das Thema reißen zu können. Leider gelingt es mir absolut nicht, den NRF mit dem Mega 2560 r3 zum Laufen zu bekommen. Das scheint ein weit verbreitetes Problem zu sein. Mit 2 Nanos geht es ganz problemlos. Ich habe die SPI-Kommunikation im Verdacht, da hier die Pins anders belegt sind. Ich habe echt schon alle möglichen Variationen getestet, den 10µF Elko zusätzlich mit einem Keramik ergänzt, separates Netztweil 3,3 V verwendet …
    Bereits verwendete Bibliotheken: RF24, RF24 Master, Mirf.
    Ich habe den Mega dafür eigentlich bereits abgeschrieben. Aber vielleicht hat ja noch jemand eine Idee?
    Gruß Ingo

    1. Hallo Ingo,
      sorry für die späte Antwort. Die SPI Pins vom Mega sind die Pins 50 bis 52. Da bin ich Anfangs auch drüber gestolpert. MISO=50, MOSI=51 und SCK=52. Die beiden Pins CE=6 und CSN=7 kannst du belassen, diese sind ja individuell. Nur die SPI Pins sind von Board zu Board unterschiedlich.
      Gruß Marcel

  17. Hallo,

    was kann man den mit der Bibliothek RF24 alles machen. Verstehe es noch nicht so richtig welche Sensoren man da bauen kann. Ich habe mir einige Sensoren von Mysensors gebaut die ich mit einem Serial Gateway in meine Haussteuerung OpenHAB eingebunden habe. Kann man mit der RF24 Bibliothek mit dem Sensoren von Mysensors sprechen. ich verwende ja auch die gleichen Funktransmitter.

    Gruss Michael

  18. Hallo,
    für meine Bachelorarbeit werde ich vorraussichtlich ebenfalls den nRF24L01 einmal mit einem Arduino und einmal mit einem Raspberry verbinden.
    Welche Kondensatoren waren denn nun richtig? Der folgende Link
    https://www.conrad.de/de/elektrolyt-kondensator-radial-bedrahtet-15-mm-10-f-25-vdc-20-x-h-4-mm-x-5-mm-yageo-s5025m0010b1f-0405-1-st-445591.html?sc.ref=Product%20Details mit 10 µF
    oder die 20 Elko Panasonic FC 10uF 50V 105°C Low impedance Kondensator radial 852477 von dem Link von Gunthard?
    Gruß Maren

    1. Hallo Maren,
      das beiden Kondensatoren haben im Grunde dieselben Eigenschaften. 50V und 10yF bzw. 10uF (y=u). Hier würde ich einfach die Günstigeren nehmen. Mit einem RasperryPi müsste ich das auch nochmal ausprobieren. Wäre schön, wenn du uns etwas über deine Erfahrung mit dem Raspi erzählen könntest!

    2. Kleiner Nachtrag.
      Dein Link verweist auf einen 25V 10yF Kondensator. Der sollte genau so funktionieren wie die anderen Beiden. Es kommen ja nur 3.3V zu Einsatz!

    1. Hallo Gunthard,
      im Grunde ist es egal, der Kondensator lädt sich ja nur mit der Spannung auf, die anliegt. In unserem Fall also 3.3V. Nur sollte er nicht für all zu große Spannungen ausgelgt sein. Schau mal bei Conrad, da gibt es 20V oder 50V Elkos mit 0.1yF (100nF).
      Z.B. https://www.conrad.de/de/elektrolyt-kondensator-radial-bedrahtet-15-mm-01-f-50-v-20-x-h-4-mm-x-5-mm-yageo-s5050m0r10b1f-0405-1-st-445670.html. Es funktionieren aber auch kleine Keramik-Kondensatoren.

  19. Hallo Micha,
    der Elko muss ein 10mikroF Kondensator sein.
    Da hast du cih wohl verschrieben.
    Auf dem Bild ist ein Elko abgebildet.
    Viele Grüße
    Thomas

  20. Auch von mir ein Dankeschön für die schöne Beschreibung.

    Der kleine nRF24L01 funktioniertbei mir auch tadelos.
    Wie sieht es eigentlich mit dem nRF24L01 Plus mit SMA Antenne. Ich habe mir davon 4 Stück aus China bestellt. Funktioniert hat kein einziger. Die Module wurden über separate 3.3V betrieben und haben nur 10-20mA gezogen. Des weiteren habe ich mir dann noch 2 Module über ebay bestellt. Die haben auch nur 20mA gezogen. Anders als die aus China, haben die aber über eine kurze Distanz gesendet, wenn man den Finger an die Platine gehalten hat. Da funktioniert offensichtlich die Endstufe nicht.

    Vielleicht hat ja schon jemand irgendwo ein funktionierendes Leistungsmodul von irgendwo her bekommen. Für einen Tip wäre ich da dankbar.

    1. Hey Felix, wie Thomas schon geschrieben hat, musst du einen 10yF Elko zwischen Plus und Minus Pol an das Modul hängen. Eine extra Stromversorgung brauchst du eigentlich nicht, die vom Arduino reicht völlig aus. Im Grunde solltest du ein normales nRF24L01 Modul mit einem Plus Modul 1zu1 austauschen können, ohne etwas an der Schaltung ändern zu müssen.
      Ich habe hier aber noch einen Beitrag gesehen, der auf neuerdings erhältliche Fake Module hinweist: http://forum.mysensors.org/topic/1153/we-are-mostly-using-fake-nrf24l01-s-but-worse-fakes-are-emerging/2
      Vielleicht hast du ja so eines erwischt. Ich habe meine Module alle bei ebay gekauft und sie funktionieren sehr gut. Die Druckempfindlichkeit deutet außerdem auf einrn Platinenbruch oder nicht korrekt verbundene Pins hin. Letzteres solltest du unbedingt nochmal prüfen, das hat mich teilweise auch viel Zeit und Nerven gekostet.

      1. Hallo Bernd, danke für die Tips. Bei den beiden Modulen die nur über kurze Distanz gesendet haben, scheint es tatsächlich ein Verbindungsproblem auf der Platine zu sein. Eines sendet jetzt dauerhaft und das andere gar nicht mehr. Die Chinavarianten sind nach wie vor tot. Die schicke ich nächste Woche zurück.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert