banner left Boxtec Banner
Platzhalter BoxtecProdukteForumShopKontaktPlaygroundn/aJobs
 

Funknetzwerke mit nRF24L01+ Modulen

nRF24L01 Module erfreuen sich zunehmender Popularität vor allem wegen dem geringen Preis und der einfachen Anbindung über SPI an Mikrokontroller Plattformen. Dieser Artikel soll eine kurze Einführung in die Verwendung der Module und eine Übersicht über die zurzeit vorhandenen Bibliotheken geben.

nRF24L01+ Hardware

Die Module verwenden zur Kommunikation mit einem Mikrokontroller das SPI Protokoll.

Anschlussbelegung nRF24L01+

Pin Belegung nRF24L01+ Beachte, dass die nRF24L01+ Module zwar mit 5V Pegeln arbeiten können, aber als Betriebsspannung VCC unbedingt 3.3V erwarten. Für den Anschluss an ein Arduino Board sollte wie folgt verbunden werden, wobei die CE und CSN Pins auch an anderen Pins betrieben werden können, die restlichen jedoch nicht.

nRF24L01+ Pin Name Arduino Pin
1 GND GND
2 VCC 3.3V
3 CE D9 (oder anderer)
4 CSN D10 (oder anderer)
5 SCK D11
6 MOSI D13
7 MISO D12
8 IRQ n/c

Verfügbare Libraries für nRF24L01+

Libraries für Punkt-zu-Punkt Kommunikation

Die RF24 von Maniacbug bietet einen schnellen Einstieg für erste Versuche und auch als Basis für robuste Punkt-zu-Punkt Netzwerke. Auch wenn die Library nicht mehr weiterbetreut wird ist sie für erste Schritte der RadioHead Library die sie ersetzt vorzuziehen.

Die RadioHead Packet Radio library for embedded microprocessors von AirSpayce ersetzt die RF24 und bietet ein gut organisiertes Schichtensystem mit Treiber Klassen als Abstraktion für die unterstützten Funkmodule und Manager Klassen welche z.B. Routing oder Mesh Dienstleistungen bereitstellen.

Libraries für (Mesh-)Netzwerke

Die RF24Network baut auf der RF24 Library auf und bietet ein manuell organisiertes Mesh, welches sehr zuverlässig arbeitet. Da sich das Mesh nicht selbst organisiert ist eine sorgfältige Planung nötig. Auch diese Library wird gleich wie die RF24 nicht mehr weiterentwickelt und wurde durch die RadioHead Library ersetzt.

Die RadioHead Packet Radio library for embedded microprocessors von AirSpayce bietet verschiedene Formen von Netzwerken als Manager Klassen an, darunter auch ein selbstorganisierendes Mesh.

Erste Schritte mit dem nRF24L01+

Einfache Punkt-zu-Punkt Verbindung zum Test

Für einen ersten Verbindungs- und Funktionstest empfehlen wir Dir die RF24 Library von Maniacbug zu installieren und den Getting Started Sketch aus den Beispielen auf zwei Arduino Boards mit angeschlossenen nRF24L01+ Modulen zu installieren. Wenn Du nun auf einem der beiden Boards im Serial Monitor “T” eingibst sollten sich die beiden Arduino Boards über die Funkverbindung anpingen und so eine erfolgreiche Verbindung testen.

Erst wenn dieser Test erfolgreich und zuverlässig läuft solltest Du mit komplexeren Setups weiterfahren.

Das erste Mesh Netzwerk

Wenn Du mehr als zwei Module und zwei Mikrokontroller Boards hast kannst Du ein selbstorganisierendes Netzwerk (Mesh) aufbauen. Der Vorteil eines Mesh Netzwerks liegt darin, dass nicht jeder Knoten mit jedem anderen Knoten direkt Verbindung aufbauen können muss. Wenn zwei Knoten nicht direkt miteinander kommunizieren können, werden die Nachrichten über dazwischenliegende Knoten weitervermittelt bis sie am Zielknoten ankommen.

In folgendem Beispiel erhält ein Server periodisch von zwei Sensor Knoten die interne Temperatur und Spannung des Mikrokontrollers übermittelt. Installiere den Server Sketch auf einem Board und den Sensor Sketch auf min. 2 weiteren Boards. Stelle sicher, dass Du bei jedem Sensor Board eine andere ID verwendest.

// Server Sketch
// To be done...
// Sensor Sketch
// To be done...

Tuning und Einstellungen

Die nRF24L01+ Module verfügen über verschiedene Einstellungsmöglichkeiten wie Senderstärke, Frequenz und Datengeschwindigkeit. So hilft es z.B. oft den Kanal zu wechseln, wenn Probleme mit der Datenübertragung bestehen weil u.U. die verwendete Frequenz schon von anderen Teilnehmern im 2.4GHz Band genutzt/saturiert wird.

Ebenso kann ein Reduzieren der Geschwindigkeit die Reichweite erhöhen, zur Verfügung stehen 250kbps, 1Mbps und 2Mbps.

Bei nur wenigen Metern Abstand zwischen den Modulen ist es sinnvoll die Sendeleistung zu verringern, dadurch wird die Kommunikation stabiler und der Stromverbrauch geringer.

Die Einstellungen bei der RadioHead Library mit der Methode setRF() der NRF24 Treiber Klasse vorgenommen werden:

RH_NRF24 radio(9,10);
void setup() {
  radio.init();
  radio.setChannel(90);
  radio.setRF(RH_NRF24::DataRate250kbps, RH_NRF24::TransmitPower0dBm);
  /* possible values 
      DataRate2Mbps, DataRate1Mbps
      TransmitPowerm6dBm, TransmitPowerm12dBm, TransmitPowerm18dBm */
}

Bei der RF24 Library werden die Einstellungen wie folgt vorgenommen:

RF24 radio(2,3);
void setup() {
  radio.begin();
  radio.setDataRate(RF24_250KBPS); // possible values RF24_2MBPS, RF24_1MBPS
  radio.setPALevel(RF24_PA_MIN); // possible values RF24_PA_HIGH, RF24_PA_LOW
  network.begin(/*channel*/ 90, /*node address*/ this_node);
}    

Tips

Ethernet Shields und nRF24L01+ Modul

Der SPI Bus kann problemlos von mehreren Slaves genutzt werden, leider hat aber das Arduino Ethernet Shield mit dem Wiz5100 Chip ein Problem damit den Bus wieder freizugeben. Dies stört bei normalen Anwendungen nicht, jedoch wenn ein weiterer Slave wie das nRF24L01+ kommunizieren möchte schon.

Ethernet Shields und Module die auf dem ENC28J60 basieren haben dieses Problem nicht. Es ist einfach darauf zu achten, dass der Chip Select (CS) Pin für das nRF24L01+ Module so gewählt wird, dass er nicht mit dem des verwendeten Ethernet Shields kollidiert.

Probleme beim Senden

Wenn beim Senden Probleme auftreten liegt dies oft an einer instabilen 3.3V Spannungsquelle. Am einfachsten ist natürlich eine separate und stabile Spannungsquelle, aber man kann sich auch mit einem 0.1uF - 10uF grossen Kondensator über GND und VCC und möglichst nahe am Modul zu helfen versuchen.

Referenzen

 
wireless/nrf24.txt · Last modified: 2014/08/03 22:17 by boxtec
 
 

zum Seitenanfang

Letzte Aktualisierung: © boxtec internet appliances · the better security products