Zum Inhalt springen

1. Einführung

1.1 Projektbeschreibung

Ziel dieses Projekts war das Experimentieren mit Meshtastic auf LoRa-fähigen Geräten.

Meshtastic ist ein Open-Source-Projekt, das es ermöglicht, ein Mesh-Netzwerk aufzubauen, das auf der LoRa-Technologie basiert. Es ist eine kostengünstige und energieeffiziente Möglichkeit, ein Netzwerk aufzubauen, das unabhängig von Internet und Mobilfunknetzen funktionieren kann.

Fragestellung

Ist Meshtastic als unabhängiges Kommunikations-Netzwerk für den Krisenfall im Raum Dresden geeignet?

1.2 Technologie

Was ist LoRa?

LoRa (von Long Range) ist eine proprietäre Funktechnologie im Besitz von Semtech. Sie ist für die Langstreckenübertragung (z.B. 10 km), schmalbandige Übertragung (gemessen in Kbps) und energiesparende Kommunikation konzipiert, hauptsächlich für Internet of Things (IoT)-Netzwerke. Dafür wird eine drahtlose Modulationstechnik, die aus der Chirp Spread Spectrum (CSS)-Technologie abgeleitet ist verwendet. Sie codiert Informationen auf Radiowellen mithilfe von Chirp-Impulsen! Die modulierte Übertragung von LoRa ist robust gegen Störungen und kann über große Entfernungen empfangen werden.

Es eignet sich ideal für Anwendungen, die kleine Datenmengen mit niedrigen Bitraten übertragen. Daten können über eine längere Reichweite übertragen werden im Vergleich zu Technologien wie Wlan, Bluetooth oder ZigBee. Diese Eigenschaften machen LoRa besonders geeignet für Sensoren und Aktoren, die im Niedrigenergiemodus arbeiten.

Außerdem arbeitet LoRa in einem lizenzfreien Sub-Gigahertz-Frequenzband (d.h. unter 1 GHz), aber die zu verwendenden Frequenzen variieren von Region zu Region aufgrund regulatorischer Anforderungen. Wenn Sie ein LoRa-Gerät kaufen, muss sichergestellt sein, dass das richtige Frequenzband unterstützt wird.

In Europa - 863–870MHz (normalerweise 868MHz).

Warum LoRa?

LoRa versucht die Lücke zwischen zwischen Kommunikationstechnologien wie WiFi, Bluetooth und LTE zu schließen.

https://www.thethingsnetwork.org https://www.semtech.com/uploads/images/LoRa_Why_Range.png Semtech

Es ist für große Reichweite, kleine Bandbreite und Niedrigenergiekommunikation gemacht. Alles in allem also extrem nützlich für IoT Geräte. Einige Beispiele sind:

  • Wassersensoren in einer entfernten Umgebung (Grundwasser)
  • Rauchwarnmelder
  • Tierbeobachtung
  • Verbrauchsmessungen bei Endkunden (Gas, Strom)
  • Wetterstationen die nur ab und zu Informationen übertragen

LoRa and LoRaWAN

LoRaWAN ist über LoRa angesiedelt und definiert das Kommunikationsprotokoll und die Systemarchitektur.

Es ist wichtig zu verstehen, dass es möglich ist LoRa ohne LoRaWAN zu benutzen. Andere LoRa basierte Netzwerke sind Helium, The Things Network Disaster.radio und, was wir weiter betrachten werden, Meshtastic.

Meshtastic

Wie im vorherigen Absatz erwähnt, baut Meshtastic auf LoRa auf und schafft ein dezentralisiertes Mesh-Netzwerk.

Es bringt folgende Eigenschaften mit sich:

  • Verschlüsselte und Textbasierte Kommunikation
  • Plattformunabhängig
    • Computer (unabhänging vom Betriebssystem)
    • Android (dedizierte Chat-App)
    • iOS (dedizierte Chat-App)
  • Dezentralisiert
  • Geringer Stromverbrauch
  • Optionales Standort teilen
  • Open-source

Anders als traditionelle Mobilfunknetzwerke, verbindet sich jedes Endnutzergerät mit einem LoRa Radio und alle LoRa Radios, welche Meshtastic nutzen, können Nachrichten, selbst wenn die Radios nicht im gleichen Mesh sind, weiterleiten. Das passiert so lange, bis die Nachricht Ihr Ziel erreicht oder die voreingestellten “Hops” ausgeschöpft werden.

Meshtastic connections https://loganmarchione.com/2023/05/lora-and-meshtastic/20230510_003.png

1.3 Geräte

Folgende Geräte haben wir für das Projekt genutzt:

Heltec LoRa32 v3

https://heltec.org/project/wifi-lora-32-v3

  • max TX power: +21dBm
Heltec LoRa32 v3
Heltec LoRa32 v3

LILYGO T-Echo

https://www.lilygo.cc/products/t-echo

  • max TX power: +21dBm
LILYGO T-Echo
LILYGO T-Echo

LILYGO T-Deck

https://www.lilygo.cc/products/t-deck

  • max TX power: +21dBm
LILYGO T-Deck
LILYGO T-Deck

1.4 Flashen der Firmware

Hardware identifizieren oder auswählen

Meshtastic wird offiziell nur von bestimmten Geräten welche ein LoRa Modul innehaben supportet.

Es ist darauf zu achten, dass jedes Gerät welches im Meshnetz betrieben werden soll auf der gleichen Frequenz arbeitet. Hier gibt es unterschiede!

In deutschland können die freien Frequenzbänder 433 MHz und 868MHz, auf welchen Lora operiert, ohne Lizenzkosten oder Amateurfunklizenz genutzt werden.

Solange WLAN Verbindung zu einem Device nicht notw. ist und Bluetooth ausreicht, sollte ein nRF52 Chip gewählt werden, da diese energieffizienter als ESP32 Chips und einfacher zu flashen sind. Es gibt auch noch Geräte auf Basis des RP2040, diese haben wir allerdings nicht getestet.

Eine Liste mit unterstützer Hardware findet sich hier:

https://meshtastic.org/docs/hardware/devices/

Serial Treiber

ESP32

Einen für das eigene Betriebssystem passenden Treiber auf folgender Seite identifizieren, herunterladen und Installieren:

https://meshtastic.org/docs/getting-started/serial-drivers

nRF52

nRF52 Chips benötigen normalerweise keinen Serial Treiber. Sie benutzen einen UF2 bootloader, welche das Gerät als USB-Stick vom Betriebssystem erkennen lassen.

Auf keinen Fall folgenden USB geräte treiber herunterladen, es sei denn es wird UF2 support benötigt

https://meshtastic.org/docs/getting-started/serial-drivers/nrf52

Firmware Flashen

ESP32

https://meshtastic.org/docs/getting-started/flashing-firmware/esp32/ Da es bei uns auf verschieden PCs probleme gab haben wir zum Flashen unter Linux eine Nix-Flake erstellt, die Python mit den richtigen Paketen installiert und eine kleine Anleitung (auch zum selber Compilieren der Firmware) für esp32 und nRF52 Geräte enthät.

nRF52

https://meshtastic.org/docs/getting-started/flashing-firmware/nrf52/ Beim diesen Geräten ist es bei uns manchmal vorgekommen, dass das Flashen von Firmware zwar bis zu dem “Drag und Drop”-Schritt funktioniert und dann aber nicht wirklich mit der neuen Version neu startet. Falls das passiert muss man sich mit einer seriellen Konsole mit dem Gerät verbinden und einfach nur einmal Enter drücken, besonders nachdem Factory-Erase. Das steht unter dem Punkt Factory-Erase auch dokumentiert, aber man benötigt nicht zwingend die Meshtastic CLI, sondern lediglich ein Programm wie z. B. minicom unter Linux.

2. Anwendung

2.1 Software

Zum aktuellen Zeitpunkt gibts es jeweils eine App für iOS und Android. Außerdem gibt es einen Web Client, der sich per Bluetooth, Wi-Fi und Serial verbinden kann.

AppLinkQuellcode
Androidhttps://play.google.com/store/apps/details?id=com.geeksville.meshGitHub
iOShttps://apps.apple.com/us/app/meshtastic/id1586432531GitHub
Webhttps://client.meshtastic.org/GitHub

Die Apps werden regelmäßig geupdated und sind modern aufgebaut.

Ursprünglich sollte hier ein Vergleich der Funktionalitäten erfolgen, es gibt aber keine erkennbaren Unterschiede, außer kleinere in der Bennennung und Bedienung.

UI

iOS

Nachrichten Tab
Nachrichten Tab
Nachrichten in Channels
Nachrichten in Channels
Direktnachrichten mit anderen Nodes
Direktnachrichten mit anderen Nodes
Bluetooth-Verbindung zum eigenen Node
Bluetooth-Verbindung zum eigenen Node
Übersicht der verbundenen Nodes
Übersicht der verbundenen Nodes
Kartenansicht
Kartenansicht
Modul-Konfiguration
Modul-Konfiguration
Radio-Konfiguration
Radio-Konfiguration

Web

Bluetooth-Verbindung mit Node
Bluetooth-Verbindung mit Node
Nachrichten
Nachrichten
Übersicht der verbundenen Nodes
Übersicht der verbundenen Nodes
Channel-Konfiguration
Channel-Konfiguration
Modul-Konfiguration
Modul-Konfiguration
Radio-Konfiguration
Radio-Konfiguration

3. FAQ

3.1 Häufige Probleme

Kommunikation zum Device funktioniert nicht (Linux)

  1. Die Gerät-Datei /dev/ttyUSB0 gehört der Nutzergruppe dialout. Damit der Nutzer Schreibrechte erhalten kann, muss er zur Gruppe hinzugefügt werden:

    Terminal window
    sudo usermod -aG dialout <user-name>
    logout

    Der Nutzer muss sich ausloggen und wieder einloggen, damit er in der Gruppe enthalten ist.

  2. Prüfen, ob das Kabel zwischen Computer und Gerät auch wirklich Daten übertragen kann.

  3. USB-C → USB-C funktioniert manchmal nicht. Dies könnte an einem Fehler bei USB-C Power Delivery liegen. Adapter USB-C → USB-A (findet man meist als OTG-Adapter) schafft Abhilfe.

4. Reichweite

4.1 Theorie

Die Reichweite einer Funkverbindung lässt sich mittel des Link-Budgets (Leistungsübertragungsbilanz) darstellen und gibt die Qualität eines Funk-Übertragungskanals an. Eines der einfachsten Modelle um ein Linkbudget zu errechnen ist mittels Addition der Sendeleistung (Transmitter Power, Tx), der Empfängerempfindlichkeit (Receiver Power, Rx), des Antennengewinns und der Freiraumdämpfung (Free Space Path Loss, FSPL).

Kenngrößen

Der Spreading Faktor und somit die Reichweite eines Senders sind von den Ausbreitungsbedingungen abhängig. Die Empfängerempfindlichkeit hängt von Signal-Rausch-Verhältnis (SNR), Rauschfaktor (NF) und Bandbreite (BW) ab.

Die Freiraumdämpfung beeinträchtigt die Reichweite. Durch die Verdopplung der Entfernung nimmt die Freiraumdämpfung um 6 dB zu. Reflektionen und Brechungen der Funkwellen an Hindernissen und Boden beeinflussen Signalpegel und Reichweite. Im LoRaWAN-Netzwerk befindet sich eine Seite der Funkverbindung in der Regel in Bodennähe. Hindernisse in der ersten Fresnelzone beeinflussen den Signalpegel auf der Rx-Seite und verkürzen die Reichweite. SF-Werte und somit die Reichweite eines Senders hängen von den Ausbreitungsbedingungen ab. LoRaWAN erlaubt mittels ADR ein automatisches Netzmanagement und regelt damit die Reichweiten der Sender.

dB

Die Einheit dB (Dezibel) wird im Zusammenhang mit Funkverbindungen verwendet, um die Signalstärke, Dämpfung oder Verstärkung von elektromagnetischen Signalen zu messen. dB ist eine logarithmische Einheit, die das Verhältnis zwischen zwei Größen ausdrückt. In Bezug auf Funkverbindungen sind die beiden häufigsten Anwendungen die Messung der Signalstärke und die Angabe von Dämpfung oder Verstärkung.

  1. Signalstärke in dBm (Dezibel Milliwatt):

    • dBm misst die absolute Leistung eines Signals im Vergleich zu einem Referenzwert von 1 Milliwatt.
    • Ein positives dBm-Wert zeigt an, dass das Signal stärker ist als 1 Milliwatt, während ein negativer Wert darauf hinweist, dass es schwächer ist.
    • Beispiel: Ein Signal mit -50 dBm ist stärker als ein Signal mit -60 dBm.
  2. Dämpfung und Verstärkung in dB:

    • dB wird auch verwendet, um die Dämpfung oder Verstärkung von Signalen in einer Leitung oder einem System auszudrücken.
    • Eine positive dB-Angabe deutet auf Verstärkung hin, während eine negative dB-Angabe auf Dämpfung hinweist.
    • Beispiel: Ein Verstärker, der das Signal um 20 dB verstärkt, erhöht die Signalstärke um das 100-fache.

Bei Funkverbindungen wird die Signalstärke oft in dBm gemessen, während Dämpfung oder Verstärkung von Antennen, Kabeln oder Verstärkern in einfachen dB-Angaben ausgedrückt werden. Dies ermöglicht eine präzise und effektive Kommunikation über die Leistung von Funksignalen und die Leistung von Komponenten in drahtlosen Netzwerken.

Channelsettings

ChannelsettingLong Range / Fast
Alt ChannelnameLong Fast
Data Rate1.07 kbps (default)
Spreading Factor/ Symbols11 / 2048
Coding Rate4/5
Bandwith250

Transceiverwerte

transmit Power21dBm
Antenna gain0dBi
RX sensitivity-131dBm
RX antenna0dBi
Link Budget152dB

WiFi LoRa 32 v3 (SX1262 Lora Chip) P(dBm) = 21dBm Max Receiving sensitivity = -136dBm@SF12 BW=125KHz

(1)https://www.semtech.com/design-support/lora-calculator

Maximal mögliche Übertragunsstärke

Maximal 500mW ERP (2)\text{Maximal 500mW ERP (2)} Maximal 2.15dBi Antenne (3)\text{Maximal 2.15dBi Antenne (3)}

P(dBm)=10log10(P(500 mW)÷1 mW)=26.9897000434=27dBmP(max)=P(dBm)+2.15dBiP(max)=29.15dBm\begin{align*} P(dBm) &= 10 ⋅ \log_{10} (P(500 \ \mathrm{mW}) \div 1 \ \mathrm{mW}) \\ &= 26.9897000434 \\ &= 27\mathrm{dBm} \\ \\ P(max)&=P(dBm)+2.15\mathrm{dBi}\\ P(max)&=29.15dBm \end{align*}

(2) https://www.bundesnetzagentur.de/DE/Fachthemen/Telekommunikation/Frequenzen/Grundlagen/Frequenzplan/frequenzplan-node.html (Stand März 2022) Eintrag 251004 (Frequenznutzungsbedingungen) (3) https://www.thethingsnetwork.org/forum/t/max-allowed-antenna-gain-for-lora/37182

Überlegungen

Mit einem Link Budget von 152dBm (Einstellung = long fast, mit 21dBm transmit Power und 0dBi Antenne) lässt sich unter optimalen Bedingungen(nur Freiraumdämpfung(Vakuum)) eine Distanz von mehr als 800km Überwinden. Da dies nur unter optimalen Bedingungen möglich ist werden solche Werte natürlich nicht erreicht.

Im Weltraum können Funksignale tatsächlich viel weiter reisen. Unter Normalbedingungen, auf unserem Planeten spielt die Sichtlinie eine bedeutende Rolle. Aufgrund der Tatsache, dass die Welt eine Kugel ist, ist es möglich mit 1,7m Höhe 4,7km weit zu sehen. Da im sub-GHz Bereich eine quasioptische Ausbreitung für Radiowellen gilt, ist der Horizont auch gleichzeitig eine Begrenzung für Funksignale.

Im nächsten Schritt betrachten wir die Wellenausbreitung mit dem Hata-Okumura-Modell (Hata-Modell).

Das Hata-Modell verwendet verschiedene Begriffe in der Dämpfungsformel, um zwischen verschiedenen Typen von Landoberflächen zu unterscheiden. Es werden ländliche bis zu dicht besiedelte Regionen unterschieden.

Hata-Ausbreitungsformel:

Loss(dB)=A+Blog10(d)K+Cd=Distanz zwischen Sender und Empfa¨nger (km)hs=Ho¨he der Senderantenne (m)hr=Empfa¨ngerantennenho¨he (m)K=Korrekturfaktorf=U¨bertragungsfrequenz [MHz]A=69.55+26.16log10(f)13.82log10(hs)B=44.96.55log10(hs)\begin{align*} Loss(dB) &= A + B \cdot \log_{10}{(d)} - K + C \\ d &= \text{Distanz zwischen Sender und Empfänger (km)} \\ h_s &= \text{Höhe der Senderantenne (m)} \\ h_r &= \text{Empfängerantennenhöhe (m)} \\ K &= \text{Korrekturfaktor} \\ f &= \text{Übertragungsfrequenz [MHz]} \\ \end{align*} \\[2em] \begin{align*} A &= 69.55 + 26.16 \cdot \log_{10}{(f)} - 13.82 \cdot \log_{10}{(h_s)} \\ B &= 44.9 - 6.55 \log_{10}{(h_s)} \\ \end{align*}

Urban: große Stadt mit großen Gebäuden welche zwei oder mehreren Stockwerken besitzen oder größere Dörfer mit sehr nahe stehenden Häusern.

Medium: Mittelgroße Stadt

Suburban: Vorort

freifläche: Keine großen Bäume oder Gebäude in Sichtlinie.

Freifla¨che:K=(1.1log10(f)0.7)hr(1.56log10(f)0.8)C=4.78(log10(f))2+18.33log10(f)40.94Suburban:K=(1.1log10(f)0.7)hr(1.56log10(f)0.8)C=2[log10(f/28)]25.4Medium:K=(1.1log10(f)0.7)hr(1.56log10(f)0.8)C=0Urban, 150 <= f <= 200 MHz:K=8.29(log10(1.54hr))21.1C=0Urban, 200 < f <= 1500 MHz:K=3.2(log10(11.75hr))24.97C=0\begin{align*} \text{Freifläche:} \\ K &= (1.1 \cdot \log_{10}{(f)} - 0.7) \cdot h_r - (1.56 \cdot \log_{10}{(f)} - 0.8) \\ C &= -4.78 \cdot (\log_{10}{(f)})^2 + 18.33 \cdot \log_{10}{(f)} - 40.94\\ \text{Suburban:} \\ K &= (1.1 \cdot \log_{10}{(f)} - 0.7) \cdot h_r - (1.56 \cdot \log_{10}{(f)} - 0.8) \\ C &= -2 \cdot [\log_{10}{(f/28)}]^2 - 5.4\\ \text{Medium:} \\ K &= (1.1 \cdot \log_{10}{(f)} - 0.7) \cdot h_r - (1.56 \cdot \log_{10}{(f)} - 0.8) \\ C &= 0 \\ \text{Urban, 150 <= f <= 200 MHz:} \\ K &= 8.29 \cdot (\log_{10}{(1.54 \cdot h_r)})^2 - 1.1 \\ C &= 0 \\ \text{Urban, 200 < f <= 1500 MHz:} \\ K &= 3.2 \cdot (\log_{10}{(11.75 \cdot h_r)})^2 - 4.97 \\ C &= 0 \\ \end{align*}

Hata, Suburban, 868MHz Die Grafik zeigt die Reichweite nach dem Okumura-Hata-Modell für ein Suburbanes Gebiet bei Nutzung einer 868MHz frequenz. Wie der Grafik zu entnehmen, wird bei unsererem Linkbudget von 152dBm maximal eine Reichweite von ungefähr 6km möglich

Die bereitgestellten Formeln decken nicht alle im Okumura-Modell vorgeschlagenen Bedingungen ab. Hatas Ansatz gilt nur mit folgende Einschränkungen:

Frequenz150-1500 MHz
Distanz1-20km
Höhe Senderantenne30-200m
Höhe Empfängerantenne1-10m
Mit folgenden Werten wurde im suburbanen gearbeitet: hs=30mhr=2mf=869MHzA=69.55+26.16log10(f)13.82log10(hs)=69.55+26.16log10(868)13.82log10(30)126.008B=44.96.55log10(hs)=44.96.55log10(30)35.225K=(1.1log10(f)0.7)hr(1.56log10(f)0.8)=(1.1log10(868)0.7)2(1.56log10(868)0.8)1.281C=0Loss(dB)=A+Blog10(d)K+Clog10(d)=Loss(dB)A+KCBd=10Loss(dB)A+KCB=10Loss(dB)126.008+1.281035.225=10Loss(dB)124.72735.225\text{Mit folgenden Werten wurde im suburbanen gearbeitet: }\\ \begin{align*} \\ h_s &= 30\mathrm{m} \\ h_r &= 2\mathrm{m} \\ f &= 869\mathrm{MHz} \\ \\ A &= 69.55 + 26.16 \cdot \log_{10}{(f)} - 13.82 \cdot \log_{10}{(h_s)} \\ &= 69.55 + 26.16 \cdot \log_{10}{(868)} - 13.82 \cdot \log_{10}{(30)} \\ &\thickapprox 126.008 \\ \\ B &= 44.9 - 6.55 \log_{10}{(h_s)} \\ &= 44.9 - 6.55 \log_{10}{(30)}\\ &\thickapprox 35.225\\ \\ K &= (1.1 \cdot log_{10}{(f)} - 0.7) \cdot h_r - (1.56 \cdot \log_{10}{(f)} - 0.8) \\ &= (1.1 \cdot log_{10}{(868)} - 0.7) \cdot 2 - (1.56 \cdot \log_{10}{(868)} - 0.8) \\ &\thickapprox 1.281 \\ \\ C &= 0 \\ \end{align*} \\ \begin{align*} Loss(dB) &= A + B \cdot log_{10}{(d)} - K + C \\ log_{10}{(d)} &= \frac{Loss(dB) - A + K - C}{B} \\ d &= 10^\frac{Loss(dB) - A + K - C}{B} \\ &= 10^\frac{Loss(dB) - 126.008 + 1.281 - 0}{35.225}\\ &= 10^\frac{Loss(dB) - 124.727}{35.225}\\ \end{align*} % K Urban = 1.045 % C Urban = 0 % K Freifläche = Suburban = 1.281 % C Suburban = 0 % C Freifläche = -28.352
Freifläche(Max)64.640km (Begrenzung! Sichtlinie 24.6km)
Suburban(Max)10.130km
Urban(Max)9.975km
Freifläche(152dB)37.943km (begrenzt auf Sichtlinie 24.6km)
Suburban(152dB)5.946km
Urban(152dB)5.855km
Freifläche(Gebäude)12.612km
Suburban(Gebäude)1.220km
Urban(Gebäude)1.018km
Sichtlinie24.6km

Es darf nicht vergessen werden, dass das Hata-Modell nur eine annäherung im Bereich bei Entfernungen um die 1-20km ist. Alle Werte die darüber berechnet werden sollten mit anderen Werkzeugen überprüft werden. Wie in unserem Fall Freifläche(Max) und Freifläche(Gebäude).

Für (Gebäude) wird eine Dämpfung von 17dB für das Eindringen in Gebäude und ein Verlust von 8dB für das Fading angenommen. Das bedeutet, dass die Analyse an die Bedingungen für Sender innerhalb von Gebäuden angepasst wurde. Das Link-Budget wird daher um 25 dB auf 128dB reduziert.

Für (Max) wird das maximal mögliche legale Limit für Sendeleistung und Antennenverstärkung ausgereizt und liegt bei einem Linkbudget, wie anfänglich dargelegt, von 160.15dB.

(152dB) beschreibt die maximal mögliche ausbreitung des Signals bei der Sendeleistung der von uns verwendeten Geräte.

Die Höhe der Antenne des Senders wurde auf 30Meter festgelegt, da dass Hata Modell nur mit dieser minimalen Höhe arbeiten kann.
Die Empfängerantenne liegt auf 2Meter Höhe.

Fazit

Fazit: Das Hata-Modell kennt keine Erdkrümmung und ist nur eine erste Näherung. Als Kontrolle sollten bei Berechnungen immer die Sichtlinie beachtet werden und damit die plausabilität der Berechnung kontolliert und ggf. eingeschränkt werden. Die minimale Höhe der Senderantenne macht die Anwendung des Hata-Modells für unser Projekt weniger praktikabel gibt jedoch einen ersten Anhaltspunkt um mit unseren Messwerten zu vergleichen.

Notizen

PRX=PTX+GTX+GRXLTXLFSLPLRXPRX=received power (dBm)PTX=transmitter output power (dBm)GTX=transmitter antenna gain (dBi)GRX=receiver antenna gain (dBi)LTX=transmit feeder and associated losses (feeder, connectors, etc.) (dB)LFS=free space loss or path loss (dB)LP=miscellaneous signal propagation losses=(these include fading margin, polarization mismatch, losses associated with=medium through which signal is travelling, other losses...) (dB)LRX=receiver feeder and associated losses (feeder, connectors, etc.) (d)BFSPL(dB)=20log10(d)+20log10(f)147.55FSPL=(4πd/λ)2=(4πdf/c)2FSPL=Free Space Path Loss (Freiraumda¨mpfung)d=Abstand zwischen Tx und Rx in Meternf=Frequenz in HertzRx-Empf.=174+10log10(BW)+NF+SNRBW=Bandbreite in HzNF=Rauschfaktor in dBSNR=Signal-Rausch-Verha¨ltnis (signal to noise ratio).=Es gibt an, wie weit das Signal u¨ber dem Rauschen liegen muss.\begin{align*} PRX &= PTX + GTX + GRX − LTX − LFS − LP − LRX \\ \\ PRX &= \text{received power (dBm)} \\ PTX &= \text{transmitter output power (dBm)} \\ GTX &= \text{transmitter antenna gain (dBi)} \\ GRX &= \text{receiver antenna gain (dBi)} \\ LTX &= \text{transmit feeder and associated losses (feeder, connectors, etc.) (dB)} \\ LFS &= \text{free space loss or path loss (dB)} \\ LP &= \text{miscellaneous signal propagation losses} \\ &\phantom{=} \text{(these include fading margin, polarization mismatch, losses associated with} \\ &\phantom{=} \text{medium through which signal is travelling, other losses...) (dB)} \\ LRX &= \text{receiver feeder and associated losses (feeder, connectors, etc.) (d)B} \\ \\[2em] FSPL \mathrm{(dB)} &= 20\log_{10}(d) + 20\log_{10}(f) - 147.55 \\ FSPL &= (4πd/λ) \cdot 2 = (4πdf/c) \cdot 2 \\ \\ FSPL &= \text{Free Space Path Loss (Freiraumdämpfung)} \\ d &= \text{Abstand zwischen Tx und Rx in Metern} \\ f &= \text{Frequenz in Hertz} \\ \\ \text{Rx-Empf.} &= -174 + 10\log_{10}(BW) + NF + SNR \\ BW &= \text{Bandbreite in Hz} \\ NF &= \text{Rauschfaktor in dB} \\ SNR &= \text{Signal-Rausch-Verhältnis (signal to noise ratio).} \\ &\phantom{=} \text{Es gibt an, wie weit das Signal über dem Rauschen liegen muss.}\\ \end{align*}

Line of Sight tool

https://www.heywhatsthat.com

Beispielrechnung

Let’s consider a simplified example of a LoRa link budget for a point-to-point communication link. Please note that real-world scenarios are more complex and involve additional factors, but this example should provide a basic understanding:

  1. Transmit Power (Tx Power): Let’s assume the transmitter has a power output of 20 dBm.

  2. Frequency (f): Assume a frequency of 868 MHz.

  3. Distance (d): Let’s consider a communication distance of 2 kilometers.

  4. Antenna Gains (Gt and Gr): Assume both the transmitter and receiver antennas have a gain of 2 dBi.

  5. Free Space Path Loss (Lp): Using the free space path loss formula:

    Lp=20log10d+20log10(f)+LFSLp = 20 \log_{10}{d} + 20 \log_{10}{(f)} + L_{FS} Lp=20log102+20log10(868106)+20log104πcLp = 20 \log_{10}{2} + 20 \log_{10}{(868 \cdot 10^6)} + 20 \cdot \log_{10}{\frac{4\pi}{c}}

    Here, (c) is the speed of light. The result will be the path loss in dB.

  6. Received Power (Rx Power): Plug the values into the link budget equation:

    Rx Power=Tx Power+Tx Antenna GainPath Loss+Rx Antenna Gain\text{Rx Power} = \text{Tx Power} + \text{Tx Antenna Gain} - \text{Path Loss} + \text{Rx Antenna Gain}

    Substitute the values and calculate the received power.

The calculated received power should be compared with the receiver’s sensitivity specification. If the received power is higher than the sensitivity threshold, the link is expected to work under the specified conditions.

Keep in mind that this is a simplified example, and in a real-world scenario, additional factors such as atmospheric conditions, interference, and fading effects should be considered for a more accurate link budget analysis.

4.2 Praxistest

In unseren Praxistests am Elbufer in Dresden haben wir eine Reichweite von 4km Luftlinie erreicht.

Wir sind mit dem Fahrrad jeweils vom Blauen Wunder in beide Richtungen gefahren und haben unsere Meshtastic Geräte im Rucksack mitgenommen.

Für den kontinierlichen Sendetest, haben wir in den Moduleinstellungen den Range Test aktiviert und auf ein Interval von 1min gestellt.

Node Übersicht
Node Übersicht

Mithilfe eines Setup QR Codes, konnten wir unser Mesh aufbauen.
Node “Meshtastic 45b0” war noch von einem vorherigem Versuch im Mesh enthalten, aber nicht am Experiment beteiligt.

Startpunkt: Blaues Wunder. Göran stand auf der Brücke und hat die Nachrichten empfangen.
Christian (Sventastic) ist nach Westen Richtung Stadt gefahren. Julian nach Osten Richtung Pillnitz.

Bei ~3km Gesamt-Distanz (Luftlinie) herrschte immer noch eine gute Verbindung von der Brücke zu beiden anderen Nodes.

Bei ~3.2km Distanz (Luftlinie), begann die Verbindung von Göran zu Christian schlechter zu werden.

Blick vom Blauen Wunder Richung Pillnitz
Blick vom Blauen Wunder Richung Pillnitz

Logfiles

Die Logfiles der Nodes wurden aufgezeichnet und können hier eingesehen werden:

NodeTypLink
GöranMetricsDownload
PositionDownload
JulianMetricsDownload
PositionDownload
SventasticMetricsDownload
PositionDownload

Fazit

Dieser Test konnte zeigen, dass Meshtastic mit batteriebetriebenen Geräten ohne besondere Ausrichtung der Antennen eine gute Distanz auf Luftlinie zurücklegen kann. Wegen der Weiterleitung von Nachrichten konnte die Verbindung zwischen Christian und Julian aufrechterhalten werden.

Die Werte ließen sich wahrscheinlich auch noch verbessern, wenn bessere Antennen verwendet würden und eine genauere Ausrichtung der Antennen erfolgen würde.

Innerhalb der Stadt, mit vielen Gebäuden und anderen Hindernissen, ist die Reichweite wesentlich geringer. Das Meshnetzwerk müsste dann enger aufgebaut werden, um eine gute Verbindung zu gewährleisten.

4.3 Simulation

Die Wartung vieler Meshtastic Nodes für den Zweck des Experimentierens mit der Software bzw. dem Protokoll kommt mit einem größeren Aufwand einher. Dafür kann sich eine Simulation besser eignen, um Resultate ohne Aufwand direkt beobachten zu können.

Mit der Software Meshtasticator ist es möglich, ein Meshtastic Netzwerk zu simulieren. Diese basiert auf zwei vorherigen Simulatoren (lora-network-simulator und LoRaSim) und nutzt unterliegend die Meshtastic Linux Anwendung, weswegen die Verwendung eines Linux Betriebsystems Voraussetzung ist.

Wir haben den Simulator in einer Ubuntu-VM installiert. Einige Pakete mussten installiert werden.

Terminal window
sudo apt install git python3-tk python3-pip python3-venv \
gpiod libgpiod gpiod libgpiod-dev \
libgpiod2 libyaml-cpp-dev libbluetooth-dev

Danach musste man das Meshtasticator und Meshtastic-Firmware Repository herunterladen.

Um die Firmware zu compilieren, benötigt man PlatformIO. Das Tool lässt sich mit dem System Paketmanager wie z.B. apt installieren, häufig bekommt man eine veraltete Version, da die Paketquellen der meisten Betriebsysteme nur langsam aktualisiert werden.

Deshalb empfehlen wir, den Paketmanager von Python zu nutzen:

Terminal window
pip install platformio

Der Installationspfad liegt in ~/.local/bin, welcher nicht standardmäßig in der Systemvariable PATH enthalten sein kann. Falls der Befehl pio beim Aufruf nicht gefunden wird, reicht es aus, den Installiationspfad zum System-PATH hinzuzufügen:

Terminal window
export PATH="$HOME/.local/bin:$PATH"

Die Meshtastic Firmware, welche normalerweise für IoT Hardware kompiliert wird, kann auch nativ auf einem Linux Betriebsystem mithilfe von Portduino ausgeführt werden.

Mit Environment-Parameter native baut PlatformIO die Firmware für ein Linux Betriebsystem.

Terminal window
pio run --environment native

Das kompilierte Binary befindet sich dann im Ordner firmware/.pio/build/native.

Damit der Meshtasticator die gewünschten Anordnungen simulieren kann, muss die Binary in den Ordner von Meshtasticator kopiert werden. Bevor die Abhängigkeiten von Meshtasticator installiert werden können, sollte in dem Ordner eine Python-Umgebung aktiviert werden:

Terminal window
python3 -m venv venv
source venv/bin/activate
Installieren der Abhängigkeiten
pip3 install -r requirements.txt

5. Fazit

Meshtastic ist ein gut voranschreitendes Projekt, dass eine solide Software-Plattform für die Kommunikation zwischen LoRa-fähigen Geräten ermöglicht.

Damit aber Meshtastic als Katastrophennetz eingesetzt werden könnte, sind aktuell noch einige Hürden im Weg.

Für den Einsatz als Katastrophennetz müssten erstmal genug solcher Meshtastic- und LoRa-fähigen Geräte angeschafft werden, sodass ein zuverlässiges Mesh-Netzwerk innerhalb der Stadt aufgebaut werden könnte. Dies müsste am Besten mit einer Großbestellung geschehen, da sonst der Markt überlastet werden und die Preise steigen könnten.

Es müssten genug Geräte innerhalb der Stadt hoch positioniert werden, da die Reichweite von LoRa durch Gebäude wesentlich begrenzt ist. Nur bei freier Luftlinie sind Verbindungen über mehrere Kilometer möglich. Andere Funktechnologien mit mehr Sendeleistung, sind durch Gebäude weniger beeinträchtigt. Aber im Katastrophenfall mit zusammengebrochener Infrastruktur (Black-Out), ist LoRa mit geringem Energieverbrauch besser geeignet.

Aktuell ist Meshtastic noch softwareseitig auf Netzwerke mit bis zu 80 Nodes limitiert. Das reicht bei Weitem nicht, um den Raum Dresden vollständig abzudecken. Das Protokoll scheint auch nicht für solche Mega-Meshes ausgelegt zu sein, was man am maximalen Hop Count von 7 erkennen kann. Ein limitierter Hop Count könnte eine weitreichende Zustellung verhindern.

Die Software ist für ein Open Source Projekt ohne große Finanzierung auf einem guten Niveau, aber noch nicht für allgemeine Nutzung ausgereift. Dafür würde es einen Feinschliff in User Experience und Stabilität benötigen.