
Zusammenfassung
Dies ist die voll funktionsfähige GNU-Radio-Software-Software (SDR) implementiert eines LORA-Transceivers mit allen erforderlichen Empfängerkomponenten, um selbst bei sehr niedrigen SNRs korrekt zu arbeiten. Der Transceiver ist als Modul für GNU -Radio 3.10 erhältlich. Diese Arbeiten wurden im Labor der Telekommunikationscircuits, EPFL, durchgeführt.
In der GNU -Radio -Implementierung der LORA TX- und RX -Ketten kann der Benutzer alle Parameter der Übertragung auswählen, wie z.
- Das Modul enthält praktische hierarchische Blöcke für TX und RX.


- In der TX-Kette enthält die Implementierung alle Hauptblöcke des LORA-Transceivers: den Header- und die CRC-Insertion-Blöcke, den Whitingblock, den Hamming-Encoder-Block, den Interleaver-Block, den grauen Abnutzungsblock und den Modulationsblock.

- Auf der Empfängerseite befindet sich der Paketsynchronisationsblock, der alle für die Synchronisation erforderlichen Aufgaben ausführt, wie z. Der Demodulationsblock folgt zusammen mit dem grauen Mapping -Block, dem Deeinterleaving -Block, dem Hamming -Decoderblock und dem Dewhiting -Block sowie einem CRC -Überprüfungsblock.

- Die Implementierung kann für die vollständige experimentelle Leistungsergebnisse eines LORA-SDR-Empfängers bei niedrigen SNRs verwendet werden.
- Ein einfaches Simulationsframework ist im Ordner Apps/Simulations -Ordner verfügbar.
Funktionen
* Ausbreitungsfaktoren 5 und 6 sind nicht mit SX126X kompatibel.
Referenz
Originalpublikation
J. Tapparel, O. Afisiadis, P. Mayoraz, A. Balatsoukas-Stimming und A. Burg, "Ein Open-Source-Prototyp von Lora Physical Layer auf GNU-Radio" 2020 IEEE 21. International Workshop zur Signalverarbeitung Vorschüsse in drahtlosen Mitteilungen (Spawc), Atlanta, Ga, USA, 2020, S. 1-5. IEEE XPLORE LINK, ARXIV -LINK
Veröffentlichung aktualisiert
J, Tapparel und A. Burg, "Design und Implementierung von Lora Physical Layer in GNU -Radio". Verfahren der GNU -Radiokonferenz, Knoxville, TN, USA, 2024. GNU -Radioverfahren
Wenn Sie diese Implementierung für Ihr Projekt nützlich finden, sollten Sie das oben genannte Papier zitieren.
Voraussetzungen
- Gnuradio 3.10
- Python 3
- cmake
- libvolk
- Schub
- Uhd
- GCC> 9.3.0
- GXX
- Pybind11
Installation
Das Out Out Out Tree Modul GR-Lora_SDR kann aus der Quelle oder direkt als Conda-Paket installiert werden.
Von Quelle
- Klonen Sie dieses Repository
git clone https://github.com/tapparelj/gr-lora_sdr.git
- Gehen Sie zum geklonten Repository
- Sie können die erforderlichen Abhängigkeit optional über die bereitgestellte Conda -Umgebung installieren oder die Abhängigkeit unabhängig voneinander installieren und die Verwendung von Conda umgehen. Sie können diesem Tutorial folgen oder einfach folgen:
- Laden Sie zuerst die neueste Veröffentlichung von Conda herunter, zum Beispiel:
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
- Führen Sie nun die heruntergeladene Datei aus, die das Anaconda -Installationskript ist
bash Miniconda3-latest-Linux-x86_64.sh
- Und laden Sie die Schale neu
- Kopieren Sie nun unsere Umgebung, um alle Abhängigkeiten des Moduls automatisch zu installieren
conda env create -f environment.yml
- Starten Sie die Conda Environment GNU Radio 3.10, die Sie gerade erstellt haben
- Um den Code zu erstellen, erstellen Sie einen geeigneten Ordner und gehen Sie darin:
- Führen Sie die Haupt cmakelists.txt aus
cmake .. -DCMAKE_INSTALL_PREFIX= < your prefix > # default to usr/local, CONDA_PREFIX or PYBOMB_PREFIX if no install prefix selected here
- Kompilieren Sie schließlich die benutzerdefinierten GNU -Radioblöcke, aus denen der Lora -Transceiver kompiliert wird.
(sudo) make install -j $( nproc )
- Wenn Sie als sudo run installiert sind
- Jetzt sollten Sie in der Lage sein, einige Codes auszuführen. Öffnen Sie beispielsweise die Benutzeroberfläche der GNU-Radio-Begleiterin und prüfen Sie, ob die Blöcke von gr-lora_sdr in der Liste der Blöcke verfügbar sind (z. B. unter lora_tx).
- Eine endgültige Überprüfung der Transceiver -Funktion kann durch Ausführen des folgenden Skripts durchgeführt werden, wobei alle zwei Sekunden einen Rahmen übertragen werden:
python3 examples/tx_rx_functionality_check.py
Verwendung
- Ein Beispiel für einen LORA-Sender und ein Empfänger finden Sie in gr-lora_sdr/ Beispielen/ (sowohl Python als auch GRC).
- Die .GRC-Dateien können mit Gnuradio-Companion geöffnet werden, um die verschiedenen Übertragungsparameter festzulegen.
- Die von GRC generierte Python -Datei kann mit
python3 ./{file_name}.py ausgeführt werden
Von Conda
Dank Ryan Volz kann dieses OOT -Modul auch direkt als Conda -Paket installiert werden. Beachten Sie, dass Gnuradio auch in der Conda -Umgebung installiert wird.
- Erstellen oder aktivieren Sie die Conda -Umgebung, in der Sie dieses Modul installieren möchten. Siehe den Conda -Starthandbuch, wenn Sie bereits damit vertraut sind.
- Installieren Sie das Modul vom Anaconda -Kanal Tapparelj mit:
conda install -c tapparelj -c conda-forge gnuradio-lora_sdr
- Abhängig von Ihren Anforderungen möchten Sie möglicherweise ergänzende Pakete für Gnuradio installieren mit:
conda install -c conda-forge gnuradio
- Das Gnuradio -Metapackage installiert alle folgenden Unterteile:
-
gnuradio-grc -
gnuradio-iio -
gnuradio-qtgui -
gnuradio-soapy -
gnuradio-uhd -
gnuradio-video-sdl -
gnuradio-zeromq
- Wenn Sie nicht alle und ihre Abhängigkeiten wollen, können Sie diejenigen installieren, mit denen Sie einzeln möchten:
conda install -c conda-forge gnuradio-uhd
Verwendung
- Beispiele für Gnuradio-Companinon-Flowgraphen werden mit dem Paket installiert und können in:
- (Linux/macOS)
$CONDA_PREFIX/share/gr-lora_sdr/examples - (Windows)
%CONDA_PREFIX%Librarysharegr-lora_sdrexamples
Häufige Probleme:
- Nach dem Ziehen einer neuen Version von Git nicht zu
make- Wenn sich die Parameter eines Blocks in der neuen Version geändert haben, müssen Sie zuerst die alte Installation reinigen, bevor Sie das Modul erneut erstellen.
- Aus dem Build -Ordner ausführen
(sudo) make uninstall
make clean
make -j4
(sudo) make install
- "ImporteurRor: Kein Modul namens Lora_Sdr":
- Dieses Problem stammt wahrscheinlich von fehlenden Pythonpaths und Ld_Library_Path
- Weitere Informationen finden Sie unter https://wiki.gnuradio.org/index.php/modulenotFoundError, um diese Variablen zu ändern. Wenn Sie während des Aufrufs "CMake" ein Präfix einstellen, überspringen Sie direkt nach Punkt C (Überprüfen Sie, ob die Pfade in Ihren Ordnern hilfreich sein können.)
- Die OOT-Blöcke erscheinen nicht in Gnuradio-Companion:
- Die neuen Blöcke können in Gnuradio-Companion geladen werden, indem die folgenden Zeilen in Home/{Benutzername}/. Gnuradio/config.conf hinzugefügt werden (wenn diese Datei nicht vorhanden ist, müssen Sie sie erstellen):
[grc]
local_blocks_path=path_to_the_downloaded_folder/gr-lora_sdr/grc
Changelog
Fügen Sie die Option hinzu, um Synchronisationsprüfungen zu ignorieren und die empfangenen Werte zu drucken
Fügen Sie optionalem Druck der empfangenen Nutzlast als Hex -Werte hinzu
Mit dem Tagged -Stream -Eingangsunterstützung hinzugefügt (für die Frame -Definition der Frame -Länge)
Das LLR -Stream -Format zwischen fft_demod und deeinterleaver behoben
Tags zum CRC -Überprüfungsausgangsstrom -Indikations -Rahmen -Start, Länge und CRC -Ergebnis hinzugefügt.
Trennzeichen für die Dateieingabe hinzugefügt
Die Option der Präambellänge hinzugefügt
Parameter für Frame-Null-Padding hinzugefügt
Fügen Sie Unterstützung bei niedriger Datensatzoptimierungsunterstützung hinzu
Fügen Sie die Unterstützung von Verbreitungsfaktoren hinzu, die kleiner als 7 sind
...
Kredit
Diese Arbeit wurde von Pieter Robyns, Peter Quax, Wim Lamotte und William Dutaers von https://github.com/rpp0/gr-lora inspiriert. Welche Architektur und Funktionen verbessert wurden, um die physikalische Schicht von Lora besser zu emulieren.
Lizenz
Unter der GPL-3.0-Lizenzlizenz verteilt. Weitere Informationen finden Sie unter Lizenz.