Der Raspberry Pi hat von Haus aus Wi-Fi und Bluetooth an Bord. Da braucht man keine zusätzliche Möglichkeit zur Datenübertragung mehr – oder doch?
Ziel dieses Projekts ist es, einen Raspberry Pi 3 über Funk mit einem Raspberry Pi 4 zu verbinden. Den Verbindungsaufbau übernehmen zwei preiswerte nRF24L01-Funkmodule [1] für das 2,4-GHz-Band. Als Programmiersprache für die Beispielprogramme kommt Python zum Einsatz. Die zur Ansteuerung der Module verwendete Bibliothek sowie alle Beispielprogramme sind in dieser Sprache verfügbar.
Das Modul
Das 15 x 29 Millimeter kleine nRF24L01-Modul (Abbildung 1) bietet die Möglichkeit, Daten mit einer Geschwindigkeit von bis zu 2 Mbit/s zu übertragen. Dabei lassen sich Punkt-zu-Punkt-Verbindungen oder verschiedene Netzwerkstrukturen aufbauen. Das Modul unterstützt bis zu 125 RF-Kanäle und bringt eine integrierte Antenne mit. Es benötigt eine Versorgungsspannung von 3,3 Volt, die maximale Stromaufnahme beträgt bei voller Sendeleistung 11,3 Milliampere. Der Kostenpunkt liegt je nach Stückzahl bei rund 2,50 Euro pro Modul.

Abbildung 1: Das preiswerte nRF24L01-Funkmodul überträgt Daten im 2,4-GHz-Band mit bis zu 2 Mbit/s. Quelle: AZ-Delivery
Damit haben Sie im Schnelldurchlauf die wichtigsten technischen Daten des Moduls kennengelernt. Für mehr Informationen konsultieren Sie bitte das Datenblatt zum nRF24L01 [2]. Es erläutert auf 64 Seiten detailliert alle Funktionen des Moduls und lässt keine Fragen offen.
Die Datenübertragung zwischen dem Raspberry Pi und dem Modul erfolgt über die SPI-Schnittstelle. Der Anschluss erfolgt über einen 8-poligen Pfostenstecker, der sich nicht auf einem Breadboard montieren lässt. Daher verwendet unser Versuchsaufbau die guten alten Dupont-Leitungen [3] aka Jumper-Kabel, um die Verbindung zwischen dem Funkmodul und dem Mini-Rechner herzustellen.
Bibliothek
Bibliotheken ersparen beim Programmieren für ein Projekt viel Arbeit. Für die verwendeten 2,4-GHz-Funkmodule gibt es solche Libraries, die wir einfach verwenden können, ohne uns allzu sehr mit den Details der eingesetzten Hardware auseinandersetzen zu müssen. Allerdings schadet es nie, einige Kleinigkeiten zum technischen Umfeld parat zu haben.
Das 2,4-GHz-Band zählt zu den sogenannten ISM-Bändern (Industrial, Scientific, Medical), also zu den Frequenzbereichen, die sich lizenzfrei und in der Regel ohne gesonderte Genehmigung nutzen lassen. Es kommt für viele verschiedene Funkübertragungstechniken zum Einsatz. Zu den bekanntesten Anwendungsgebieten zählen WLANs, Bluetooth sowie die Fernsteuerung im Modellbau. Wenn sich derart viele Anwendungen auf einem beschränkten Frequenzband tummeln, dann kommt es zwangsläufig zu Störungen bei der Übertragung.
Das 2,4-GHz-Band ist in verschiedene Kanäle aufgeteilt, die sich zur Übertragung verwenden lassen. Beim hier verwendeten nRF24L01-Modul stehen 125 Kanäle zur Auswahl. Dabei können Sie in Sachen Übertragungsgeschwindigkeit zwischen Datenraten von 250 kbit/s (RF24_250KBPS), 1 Mbit/s (RF24_1MBPS) und 2 Mbit/s (RF24_2MBPS) auswählen. In den Klammern steht die entsprechende Bezeichnung für den Aufruf über die Bibliothek.
Den Quellcode der hier eingesetzten Bibliothek für den nRF24L01 finden Sie auf Github [4]. Wir verwenden sie für unser Projekt mit einem Wrapper für Python. Die zugehörige Dokumentation [5] finden Sie ebenfalls im Internet.
Das RasPi-Setup
Wie eingangs bereits erläutert, kommen für das Projekt je ein Raspberry Pi 3 und 4 zum Einsatz. Da der Aufbau keine grafische Oberfläche erfordert, spielen Sie mit dem RPi Imager Raspberry Pi OS Lite auf zwei SD-Karten und booten davon die Mini-Rechner Pi.
Zum Aktualisieren der Systeme und zum Aufspielen der nötigen Software dienen die Kommandos aus Listing 1. Da die Python-Umgebung auf dem Raspberry Pi vom Betriebssystem gemanagt wird, müssen Sie für das Projekt eine eigene Python-Umgebung anlegen. Sie benötigt nach jedem Reboot eine erneute Aktivierung. Bitte beachten Sie, dass Sie alle Schritte auf beiden RasPis ausführen müssen.
Listing 1
Kommandos auf der Konsole
$ sudo apt update $ sudo apt upgrade $ sudo apt install python3-dev python3-pip ### Python-Umgebung anlegen $ python -m venv ./rf24 ### Python-Umgebung aktivieren $ source ./rf24/bin/activate $ python -m pip install pyrf24
Die Tabelle “Verbindungen” führt auf, über welche Pins Sie das nRF24L01-Modul an die SPI-Schnittstelle eines Raspberry Pi anschließen müssen. Da die Modulplatinen nicht beschriftet sind, zeigt Abbildung 2 die entsprechende Pin-Belegung. Die IRQ-Leitung des nRF24L01-Moduls benötigen Sie für das hier vorgestellte Setup nicht zwingend, sie kommt lediglich bei Interrupt-gesteuerten Konfigurationen zum Zug. In Abbildung 3 sehen Sie den kompletten Versuchsaufbau.






