Zur Werkzeugleiste springen
Nano RF perspektivisch

Last Updated on 29. Oktober 2020 by sfambach

Der RF Nano ist ein Replik des Arduino Nano zusätzlich verfügt er noch über einen NRF24L01 Bautstein. Was ihm die RF Komminkation ermöglicht.

Fakten

Das Board sieht wie ein gewöhnlicher Nano aus, wenn da nicht die aufgedampfte Antenne(unten) und ein Micro USB Anschluss anstatt des Mini-USB Anschlusses wären.

Pinbelegung Nano RF
Pin Belegung Nano RF (Quelle: vom Hersteller siehe Links unten)

Vergleich mit dem Standard

Die Pinbelegung habe ich mit dem Standard verglichen, diese ist bei mir gleich. (Bitte nochmal überprüfen, da andere Imitate abweichende Pin Belegungen haben könnten).

Pin Vergleich Standard zu Nano RF

NRF Verbindungen

Die Pin-Informationen sind dem Schaltplan des Herstellers entnommen.

ACHTUNG: Die Pins für CE und CSN sind, im Gegenteil zu den meisten Beispielen im Netz, vertauscht.

BeschreibungPin
CE10
CSN9
SCK13
MOSI4
MISO5

Anwendungsbereiche

  • Ferngesteuerung
  • Sensor Knoten
  • Alles was mit einander kommunizieren muss.

Ansichten

Programmierung

Bibliotheken

Vom Hersteller benutzte Bibliothek

Meine bewährte Bibliothek hat beim ersten Test nicht funktioneirt, weshab ich erstmal die des Herstellers ausprobiert habe. So konnte ich den Fehler in meinem Programm finden.

https://github.com/joewalnes/arduino-play/tree/master/lib/Mirf

https://github.com/tmrh20/RF24/

Standard RF Bibliothek

Hier die Standard-Bibliothek die ich schon in anderen Projekten verwendet habe.

https://github.com/tmrh20/RF24/

Testprogramme

Programm des Herstellers

Für den ersten Test verwende ich die Programme des Herstellers. Der Quellcode ist auf Github über den folgenden Link verfügbar:

https://github.com/emakefun/emakefun-nano-plus

Ich habe 2 gleiche Nanos erworben und den einen als Empfänger und den anderen als Sender programmiert. Die Ausgabe ist im folgenden Bild zu sehen.

Konsolenausgabe: links Sender, rechts Empfänger.

Test mit RF Bibliothek

Hier mein Testprogramm mit der RF Bibliothk. Die Biliotheksdateien habe ich einfach ins Projekt kopiert. Hier der Code:

Link zum Github Verzeichnis:

https://github.com/sfambach/arduino/tree/master/variants/NanoRF/RFTest

Konsolenausgabe: links Empfänger, rechts Sender.

Fernbedienungs Test

Ich habe schon ein paar Tests mit NRF Chips gemacht. Unteranderem war ein habe ich SunFounder Fernbedieungen mal in Betrieb genommen. Diese verwende ich in diesem hier als Basis. Die Software ist gleich zu der im gelinkten Projekt, jedoch habe ich für den Empfänger (der auf dem Nano RF ist) den CS auf Pin 10 und den CSN auf Pin 9 eingestellt.

Link zum Vorgänger Projekt

Von Github kann der aktuelle Quellcode geladen werden:

https://github.com/sfambach/arduino/tree/master/variants/NanoRF/SFRemoteTest

Bei Receiver wie oben beschrieben (CE und CSN Pin sind bereits getauscht) auf den Nano RF spielen. Den Transmitter, so wie er ist auf die Fernbedienung spielen.

So sieht die Konsolenausgabe auf dem Empfänger aus.

Probleme

Erste Kommunikation mit RF24 schlug fehl

Der CE und der CSN Pin sind in Gegensatz zu meinen anderen Projekten vertauscht. CE ist auf Pin 10 und CSN ist auf Pin 9.

Nano wird von Windows nicht erkannt

Evtl. mal einen CH340 Usb Treiber installieren.

https://github.com/emakefun/emakefun-nano-plus/tree/master/RF-Nano/CH340_Driver

Nahe stehende Empfänger verbinden sich nicht

Rachid beschreibt (siehe unten in den Kommetaren), dass er Probleme bei nahe beieinander stehenden Sender und Empfängern hat und die Initialisierung schief läuft. Bei ihm hat geholfen dei Power hoch zu setzten. Bei den diskreten nRF Modulen kann dies zu Problemen mit der Spannungsversorgung führen.

 radio.setPALevel(RF24_PA_LOW);   // set power 
// tauschen durch
radio.setPALevel(RF24_PA_MAX); 

Kanal setzten

Jens beschreibt (siehe unten in den Kommetaren), dass es von Vorteil sein kann den Kanal manuell zu setzen. Dieser wird in der begin Methode der RF lib zwar 76 gesetzt zur Fehlerbehebung kann dies jedoch eine Lösung sein. Diesen in Sender/Empfänger gemeinsam auf einen einen anderen Wert zu setzen.

void setup(){
  ...
  radio.setPALevel(RF24_PA_LOW); 
  radio.setChannel(99); // Kanal setzen
  ...
}

Fazit

Ich bin begeistert, ein Nano mit einem RF Chip, alles was man benötigt um Fergesteuerte bots zu bauen. Hier kann man sich das Verdrahten sparen. Über die Stabilität und das Verhalten im Einsatz kann ich noch nichts berichten. Der erste Test war hierfür zu simpel.

Verwandte Beiträge

Quellen

https://github.com/emakefun/emakefun-nano-plus

https://github.com/tmrh20/RF24/

https://github.com/emakefun/emakefun-nano-plus/tree/master/RF-Nano/CH340_Driver

Von sfambach

7 Gedanken zu „RF Nano“
  1. HI Stefan,
    danke für die Infos. Ich denke, dass bei dem Beispiel mit der RF-Bibliothek noch der Kanal gesetzt werden soltle, bspw. nach der Sendestärke:

    radio.setPALevel(RF24_PA_LOW); // set power
    radio.setChannel(99); // NEU
    ,,,

    Viele Grüße,
    Jens

    1. Hallo Jens,
      danke für deinen Vorschlag. Der Kanal wird in der begin Methode der RF Biliothek auf 76 gesetzt. Ich habe es dennoch ausdokumentiert mit in den Code aufgenommen um evtl. Probleme zu beheben.
      Gruß aus Hessen
      Stefan

      1. Hallo Stefan,
        habe mich gefreut, dass du gleich geantwortet hast. Ich hatte Probleme, wahrscheinlich weil ich Sender und Empfänger unabhängig genutzt habe. Allerdings hatte ich auch die RF24-Library über den Arduino-Bibliotheksmanager eingebunden.
        Viele Grüße,
        Jens

  2. Guten Tag,

    ich habe eigentlich alles verfolgt wie beschrieben. CE und CSN Pins sind auch korrekt. Verdrahtung ist soweit auch sauber. Leider steht meine Ausgabe immer bei „SPI settings
    init rf“ und das wars. Wo könnte mein Problem liegen?

    Vielen Dank.

    1. Hallo Rachid, ich kenne deinen genauen Testaufbau leider nicht. Zum Beispiel was deine Gegenstelle ist. Aber die RF Module, gerade die neueren, sind sehr kritisch was die Versorgungsspannung an geht. Wenn das eine Option ist, mal den Nano mit einer externen Spannungsquelle verbinden.
      Auch kann man mit den Einstellungen spielen. Evtl nochmal pin cs und csn Pin rücktauschen.
      Gruß
      Stefan

      1. Hallo Stefan,
        vielen Dank für die schnelle Antwort.
        Ich habe jetzt PA_LOW mit PA_MAX getauscht und dann hats funktioniert. Manchmal zu langsam und manchmal genau. Aber ich denke nur weil Empfänger und Sender zu nah stehen.
        Vielen Dank.
        VG,
        Rachid

Schreibe einen Kommentar

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