Datenaustausch per Funk im SRD-Frequenzband 860 MHz

Transceiver

Mit dem SPI-Funkmodul RFM69 und einem geeigneten Treiber lassen sich Daten abseits von WLAN und Bluetooth zwischen RasPis austauschen. Das einfache und robuste Verfahren eignet sich besonders für die Heimautomation.

Zur drahtlosen Kommunikation zwischen Rechnern stehen typischerweise WLAN und Bluetooth als "Jedermannfunk" bei Datenraten im Mbit/s-Bereich zur Verfügung. Allerdings liegen beide im lizenzfreien ISM-Frequenzband bei 2,4 GHz, das mittlerweile aus allen Nähten platzt, oder – siehe 5-GHz-WLAN – weisen eine vergleichsweise geringe Reichweite in geschlossenen Gebäuden auf.

Damit verbieten sie sich für Anwendungen wie die Heimautomation, bei der es zudem auf einen zuverlässigen, batterieschonenden Betrieb und garantierte Reaktionszeiten ankommt. Das Datenaufkommen andererseits bleibt dabei üblicherweise relativ gering. Für solche Szenarien eignet sich das ebenfalls lizenzfreie europäische SRD-Frequenzband (Short Range Device) von 863 bis 870 MHz besonders gut.

Dieser Artikel stellt ein Kernel-Modul vor, das über den SPI-Bus des RasPi das Transceiver-Modul RFM69(H)CW [1] im Modulationsverfahren GMSK (es ähnelt dem GSM-Mobilfunkstandard) betreibt. Zusammen mit den User-Programmen bietet es per Gerätedatei eine Datenübertragung über einen von 35 wählbaren Kanälen an. Damit bildet es die unterste Ebene eines Funkmodems, das sich wiederum als Basis für eine künftige freie Heimautomatisierungslösung eignet.

Zu den banalsten Anwendungen der Heimautomation zählt der Lichtschalter. Er spielt erst dann seine Vorzüge voll aus, wenn er – von der eigentlichen Elektroinstallation losgelöst und batteriebetrieben – an beliebiger Stelle im Raum an die Wand geklebt als Sensor agiert und per Tastendruck den Willen des Benutzers weitergibt. Das funktioniert nicht ohne Funkanbindung, die bei der Nachrüstung in bestehenden Wohnungen sogar die Rolle des Backbones übernehmen muss.

Andererseits liefert auch der schnellste Finger am Schalter keine hohe Datenrate: Solange eine Reaktion auf die Betätigung innerhalb einer Fünftelsekunde erfolgt, ist der Benutzer zufrieden. Die Höhe der Datenrate schlägt sich jedoch nicht zwangsläufig in einer kurzen Reaktionszeit nieder – vor allem dann nicht, wenn in vielen Wohnungen eines Hauses Funkzellen arbeiten. Dann kommt es vermehrt zu Kollisionen, die Quality of Service (QoS) leidet enorm.

Daraus lassen sich bereits wesentliche Anforderungen an die Gestaltung einer funkbasierten Lösung zusammenfassen: Sie muss sich mit einem ressourcenschonenden Design für einfachste Hardware-Ausstattung und Batteriebetrieb eignen und auch bei starker Bandbelegung die QoS bezüglich Datenrate und Reaktionszeit aufrechterhalten. Zu guter Letzt sollte sie sollte der Norm ETSI EN 300 220-1 [2] genügen und sich damit legal innerhalb ganz Europas betreiben lassen.

Modulationsart und Datenrate

Unter den digitalen Modulationsverfahren für den Funk ist das nicht mehr ganz neue Minimum-Shift-Keying (MSK) nach wie vor sehr beliebt. Es lässt sich sowohl einfach als auch energieeffizient implementieren und zeigt sich gegen Störsender robust. Mit einem Gaußschen Sendefilter zur GMSK gewandelt (wie bei GSM-Mobilfunk und DECT-Telefonie) weist es auch eine hohe spektrale Effizienz auf, also eine relativ zur Funkkanalbandbreite hohe Bitrate. Für das angepeilte Verfahren errechnet sich bei einer Kanalbreite von 200 kHz eine Datenrate von rund 150 kbit/s (siehe Kasten "SRD: Technische Details").

SRD: Technische Details

Für die Aufteilung des Frequenzbereichs fordert die Norm ETSI EN 300 220-1 Modulationsbandbreiten bis 300 kHz bei einem Kanalraster bis zu 100 kHz. Dieser scheinbare Widerspruch löst sich auf, sobald man sich das Band in 70 Kanäle zu 100 kHz aufgeteilt vorstellt und dann für diesen Fall je ein Kanalpaar zu einem Funkkanal zusammenfasst. Daraus resultiert folglich eine Kanalbreite von 200 kHz.

Als maximale Sendeleistung definiert die Norm 25 mW (+14dBm). Geht man nun von einem Bandbreiten-Symboldauer-Produkt BT = 0,5 wie bei DECT aus und bringt das Ganze unter eine spektrale Maske, wie die Norm sie in Kapitel 7.7 zur Verminderung von Nachbarkanalstörungen fordert, resultiert daraus eine Datenrate von 151,7 kbit/s.

Abbildung 1 zeigt das Leistungsdichtespektrum (blau) des GMSK-Signals, also die Verteilung der Sendeleistung über die Frequenzachse. Der Referenzpunkt der Frequenz liegt bei 0 kHz und entspricht damit der Trägerfrequenz des Sendesignals sowie in weiterer Folge der Kanalmittenfrequenz. Die schraffierte Fläche stellt die spektrale Maske dar, die das Sendespektrum keinesfalls verletzen darf. Zur Verdeutlichung, wie benachbarte Kanäle – in der Kanalmittenfrequenz um jeweils 200 kHz nach unten oder oben verschoben – das gewünschte Signal beim Empfänger stören, erscheinen in Grau Teile der Leistungsdichtespektren weiterer Signale.

Zu guter Letzt legt ETSI EN 300 220-1 eine Nutzung zu entweder 0,1 Prozent relativer Dauer oder die Anwendung eines speziellen Zugangsverfahrens fest. Eine 0,1-prozentige Nutzung – sie gilt für jedes beliebige Zeitfenster von 1 Stunde – würde die effektive Datenrate auf unbrauchbare 157 Bit/s reduzieren. Die Antwort liegt im Zugangsverfahren LBT+AFA. LBT steht dabei für Listen-before-Talk, AFA für Adaptive-Frequency-Agility. Das bedeutet grob formuliert in etwa: Erst lauschen, dann nur in ein freies Band senden oder bedarfsweise auf eine andere Frequenz ausweichen. Dadurch lässt sich wieder ein nahezu hundertprozentiger Zugang erreichen. In einem späteren Artikel stellen wir ein dazu geeignetes Funkprotokoll vor.

Abbildung 1: Das Leistungsdichtespektrum eines 25 mW starken GMSK-Sendesignals.

Teilt man nun die 7 MHz Bandbreite des SRD-Bands in solche 200 kHz breiten Funkkanäle, so erhält man zwischen 863 MHz und 870 MHz genau 35 davon (Abbildung 2). Die Reihe der Kanalmittenfrequenzen Fc startet mit Kanal 00 bei 863,1 MHz und endet mit Kanal 34 bei 869,9 MHz, die Bandmitte liegt bei Kanal 17 mit 866,5 MHz. Für jeden Kanal gilt, dass die untere Kanalgrenzfrequenz der oberen des nächstniedrigeren Kanals entspricht und umgekehrt.

Abbildung 2: Eine schematische Darstellung der Unterteilung des SRD-Bands in 35 Funkkanäle.

Der Vollständigkeit halber sei erwähnt, dass unterhalb des SRD-Bands ein bisher für Funkmikrofone genutztes, aber jetzt neu angelegtes (Stand April 2016) ziviles Mobilfunkband liegt. Oberhalb von 870 MHz schließt sich ein weiteres, in Deutschland militärisch genutztes Band für Mobilfunkdienste an [3].

Die Schaltung

Die beiden Schaltungen in Abbildung 3 zeigen exemplarisch einmal das RFM69HCW-Modul an der 40-poligen Stiftleiste der neueren Raspberry-Pi-Modelle (1A+, 1B+, 2 und 3) und einmal das Modul RFM69CW an der 26-poligen Leiste der ursprünglichen Varianten A und B.

Abbildung 3: Das RFM69HCW-Modul am SPI0-Bus und zwei GPIO-Leitungen am Raspberry Pi.

Bei einem etwas höheren Preis bietet das RFM69HCW im Vergleich zum RFM69CW eine Ausgangsleistung von bis zu 100 mW (+20 dBm). Das günstigere RFM69CW bleibt mit nur 20 mW (+13 dBm) auf der höchsten Leistungsstufe 1 dB unter der eigentlich erlaubten Sendeleistung. Als ein weiterer Nachteil kommt das Fehlen des Hardware-Signals DIO4 zum Tragen. Wie wir später noch sehen werden, führt es wie das Signal DIO1 den Timeout-Interrupt, jedoch nicht den störenden Phase-Locked-Loop-Interrupt (dazu später mehr). Deswegen eignet es sich für unsere Zwecke besser.

In jedem Fall wählt der RasPi das Modul über die Leitung CE0 des synchronen seriellen SPI0-Busses aus und spricht mit einem Takt von knapp 8 Mbit/s die Leitungen MOSI (Schreiben) beziehungsweise MISO (Lesen) an. Das Kernel-Modul greift also über diese Schnittstelle sowohl auf die Register als auch auf den FIFO des Transceivers zu (siehe Kasten "SPI-Subsystem").

Bezüglich des am RasPi einstellbaren Bustakts herrscht in den Foren nicht unbedingt Klarheit. Fest steht jedoch, dass man den Peripheral-Takt im ARM-Core (125 MHz) durch Zweierpotenzen teilen kann. Da das Datenblatt des SX1231 [4] – er ist das Herzstück des RFM69 – einen maximalen SPI-Bus-Takt von 10 MHz vorschreibt, befindet man sich mit 125 MHz / 16 = 8000 kHz auf der sicheren Seite.

Das Funkmodul signalisiert das erfolgreiche Versenden beziehungsweise den korrekten Empfang eines Datagramms per Interrupt-Leitung (DIO0 an GPIO25). Über eine zusätzliche Interrupt-Verbindung (DIO1 an GPIO24) leitet das System im Empfangsbetrieb eine etwaige Zeitüberschreitung weiter. Dazu konfiguriert das Kernel-Modul in der Initialisierungsphase beide GPIOs in Eingangsrichtung und leitet Sie zum Interrupt-Controller des ARM-Cores um.

Entsprechend dem Datenblatt zum SX1231 liegt das Ansprechen der Interrupt-Service-Routinen (ISR) jeweils auf der positiven Flanke der beiden Interrupts an. Um die Reaktionszeit des Kernels nicht zu beeinträchtigen und jeden von der Hardware ausgelösten Interrupt auch tatsächlich zu behandeln, gilt es, die ISRs auf minimale Laufzeit zu trimmen.

SPI-Subsystem

Der Linux-Kernel bietet einen recht komfortablen Funktionsumfang zum Betrieb von Geräten am SPI-Bus an. Durch sogenannte SPI-Messages, die man dem SPI-Subsystem im Kernel als Auftrag übergibt, lässt sich beliebige Hardware am SPI-Bus ansprechen. Solche SPI-Messages weisen den SPI-Hardware-Treiber an, wie genau er mit der Hardware am Bus kommunizieren muss. Sobald es alle in der SPI-Message kodierten Buszugriffe ("SPI-Transfers") abgearbeitet hat, ruft das SPI-Subsystem das auftraggebende Modul über dessen Callback-Funktion zurück.

Im vorliegenden Fall kann so das RFM69-Kernel-Modul als SPI-Protokoll-Treiber transparent auf die Register (Konfiguration, Steuerung, Status) sowie den Daten-FIFO des RFM69-Funkmoduls zugreifen und damit dessen Funktion steuern [5]. Die entsprechenden Funktionen finden sich im Code des Moduls in den beiden Dateien rfm69gmsk_core.c und rfm69io.c.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 7 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Aktuelle Ausgabe

08/2017
Überwachung

Diese Ausgabe als PDF kaufen

Preis € 7,99
(inkl. 19% MwSt.)

Neuigkeiten

  • Neues auf der Heft-DVD

    Nur mit dem optimalen System und der richtigen Software nutzen Sie das volle Potenzial eines Mini-PC. Mit der Heft-DVD erhalten Sie nicht nur die neusten Distributionen für den RasPi und Co., sondern gleichzeitig auch die passenden Programme zu den Artikeln.

  • Wo bin ich?

    Gyroskope dienen dazu, Positionsveränderungen wahrzunehmen. Dafür war früher eine recht aufwendige und teure Apparatur erforderlich, heute übernimmt das ein winziger Chip für wenige Euro.

  • Vergissmeinnicht

    Legen Sie Daten im EEPROM des ESP8266 ab, dann überstehen diese selbst einen Stromausfall.

  • Angeschaut

    Das offizielle Raspberry-Pi-Display bietet nur eine geringe Auflösung. Das gleichgroße 7-Zoll-Display von Waveshare kann deutlich mehr und dient zudem als Touchscreen für den RasPi.

  • ESP++

    Espressif mischte bereits mit dem WLAN-fähigen ESP8266 die Mikrocontroller-Gemeinde ordentlich auf. Jetzt legt der Hersteller mit dem ESP32 noch einmal nach.

  • Auf und nieder

    Mit einem PiXtend-Board und der Codesys-IDE bauen Sie den RasPi zur professionellen Steuereinheit für Aufgaben im Smart Home aus.

  • Halali!

    In einem Naturschutzgebiet bedrohen Fuchs und Marder seltene bodenbrütende Vögel. Als Gegenmaßnahme dienen Lebendfallen, die ein Tandem aus Mikrocontroller und RasPi überwacht.

  • Sicheres Zuhause

    Günstige IP-Kameras vom Discounter erkennen und melden zwar Bewegungen, doch die Fehlerrate fällt dabei recht hoch aus. Eine selbst entwickelte Bewegungserkennungssoftware für den RasPi beseitigt das Problem.

  • Tunnelbauer

    Ein Virtual Private Network schützt Ihre Daten vor neugierigen Blocken Dritter. PiVPN übernimmt dabei das Einrichten und Managen von OpenVPN.

  • Wolken

    NextcloudPi erleichtert Ihnen die Installation einer privaten Cloud. Das RasPi-Image bringt alle wichtigen Funktionen von Haus aus mit.