Table of ContentsFunknetzwerke mit nRF24L01+ ModulennRF24L01 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+ HardwareDie Module verwenden zur Kommunikation mit einem Mikrokontroller das SPI Protokoll. Anschlussbelegung 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.
Verfügbare Libraries für nRF24L01+Libraries für Punkt-zu-Punkt KommunikationDie 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-)NetzwerkeDie 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 TestFü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 NetzwerkWenn 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 EinstellungenDie 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); } TipsEthernet Shields und nRF24L01+ ModulDer 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 SendenWenn 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
|
||||||||||||||||||||||||||||
Letzte Aktualisierung: © boxtec internet appliances · the better security products |