
Résumé
Il s'agit de l'implémentation radio-définie par logiciel Radio GNU entièrement fonctionnel (SDR) d'un émetteur-récepteur LORA avec tous les composants du récepteur nécessaires pour fonctionner correctement même à des SNR très faibles. L'émetteur-récepteur est disponible en tant que module pour GNU Radio 3.10. Ce travail a été mené au Laboratoire des circuits de télécommunications, EPFL.
Dans l'implémentation radio GNU des chaînes LORA TX et RX, l'utilisateur peut choisir tous les paramètres de la transmission, tels que le facteur d'étalement, le taux de codage, la bande passante, le mot de synchronisation, la présence d'un en-tête explicite et CRC.
- Le module contient des blocs hiérarchiques pratiques pour TX et RX.


- Dans la chaîne TX, la mise en œuvre contient tous les blocs principaux de l'émetteur-récepteur LORA: l'en-tête et les blocs d'insertion CRC, le bloc de blanchiment, le bloc de codeur Hamming, le bloc entrelacier, le bloc de dérogation gris et le bloc de modulation.

- Du côté récepteur, il y a le bloc de synchronisation des paquets, qui effectue toutes les tâches nécessaires nécessaires à la synchronisation, telles que l'estimation et la correction STO et CFO nécessaires. Le bloc de démodulation suit, ainsi que le bloc de mappage gris, le bloc de décollement, le bloc de décodeur Hamming et le bloc de décomposition, ainsi qu'un bloc de vérification CRC.

- La mise en œuvre peut être utilisée pour les résultats de performances expérimentaux de bout en bout d'un récepteur LORA SDR à faible SNR.
- Un cadre de simulation simple est disponible dans le dossier Apps / Simulation.
Fonctionnalités
* Les facteurs de propagation 5 et 6 ne sont pas compatibles avec SX126X.
Référence
Publication originale
J. Tapparel, O. Afisiadis, P. Mayoraz, A. Balatsoukas-stage et A. Burg, «An Open-source Lora Physical Layer Prototype on GNU Radio», 2020 IEEE 21st International Workshop on Signal Processing Advances in Wireless Communications (Spawc), Atlanta, GA, USA, 2020, pp. 1-5. Lien IEEE Xplore, lien arXiv
Publication mise à jour
J, Tapparel et A. Burg, "Conception et mise en œuvre de la couche physique Lora dans la radio GNU". Actes de la Radio Conference GNU, Knoxville, TN, États-Unis, 2024. Proceeurs radio GNU
Si vous trouvez cette implémentation utile pour votre projet, veuillez envisager de citer le papier susmentionné.
Condition préalable
- Gnuradio 3.10
- Python 3
- cmake
- libvolk
- booster
- Euh
- GCC> 9.3.0
- gxx
- pybind11
Installation
Le module hors arborescence GR-LORA_SDR peut être installé à partir de la source ou directement en tant que package conda.
De la source
- Cloner ce référentiel
git clone https://github.com/tapparelj/gr-lora_sdr.git
- Aller au référentiel cloné
- Vous pouvez éventuellement installer les dépendances requises à l'aide de l'environnement conda fourni, ou installer directement les dépendances indépendamment et contourner l'utilisation de conda. Vous pouvez suivre ce tutoriel ou simplement suivre:
- Téléchargez d'abord la dernière version de Conda, par exemple:
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
- Maintenant, exécutez le fichier téléchargé qui est le script d'installation d'Anaconda
bash Miniconda3-latest-Linux-x86_64.sh
- Et recharger la coquille
- Copiez maintenant notre environnement pour installer automatiquement toutes les dépendances du module
conda env create -f environment.yml
- Démarrer le conda environnement GNU Radio 3.10 que vous venez de créer
- Pour créer le code, créez un dossier approprié et y allez:
- Exécutez les principaux cmakelists.txt
cmake .. -DCMAKE_INSTALL_PREFIX= < your prefix > # default to usr/local, CONDA_PREFIX or PYBOMB_PREFIX if no install prefix selected here
- Enfin, compilez les blocs radio GNU personnalisés en composant l'émetteur-récepteur LORA.
(sudo) make install -j $( nproc )
- Si vous avez installé en tant que Sudo Run
- Maintenant, vous devriez pouvoir exécuter certains codes. Par exemple, ouvrez l'interface utilisateur GNU Radio Companion et vérifiez si les blocs de GR-LORA_SDR sont disponibles sur la liste des blocs (par exemple sous LORA_TX).
- Une vérification finale du fonctionnement de l'émetteur-récepteur peut être effectuée en exécutant le script suivant, en transmettant une trame toutes les deux secondes:
python3 examples/tx_rx_functionality_check.py
Usage
- Un exemple de transmetteur et récepteur LORA se trouve dans GR-LORA_SDR / Exemples / (à la fois Python et GRC).
- Les fichiers .grc peuvent être ouverts avec Gnuradio-Companion pour définir les différents paramètres de transmission.
- Le fichier Python généré par GRC peut être exécuté avec
python3 ./{file_name}.py
De conda
Grâce à Ryan Volz, ce module OOT peut également être directement installé en tant que package conda. Notez que Gnuradio sera également installé dans l'environnement Conda.
- Créez ou activez l'environnement conda dans lequel vous souhaitez installer ce module. Reportez-vous au guide de démarrage Conda GetS si vous ne le connaissez pas déjà.
- Installez le module à partir du canal Anaconda Tapparelj avec:
conda install -c tapparelj -c conda-forge gnuradio-lora_sdr
- Selon vos besoins, vous voudrez peut-être installer des packages complémentaires pour Gnuradio avec:
conda install -c conda-forge gnuradio
- Le MetaPackage Gnuradio installe tous les sous-packages suivants:
-
gnuradio-grc -
gnuradio-iio -
gnuradio-qtgui -
gnuradio-soapy -
gnuradio-uhd -
gnuradio-video-sdl -
gnuradio-zeromq
- Si vous ne voulez pas tous ces dépendances et leurs dépendances, vous pouvez installer celles avec lesquelles vous souhaitez:
conda install -c conda-forge gnuradio-uhd
Usage
- Exemple de flux Gnuradio-Companinon sont installés avec le package et peuvent être trouvés dans:
- (Linux / macOS)
$CONDA_PREFIX/share/gr-lora_sdr/examples - (Windows)
%CONDA_PREFIX%Librarysharegr-lora_sdrexamples
Problèmes fréquents:
- Ne pas
make après avoir tiré une nouvelle version de Git- Si les paramètres d'un bloc ont changé dans la nouvelle version, vous devez d'abord nettoyer l'ancienne installation avant de construire à nouveau le module.
- à l'intérieur du dossier de construction, courez
(sudo) make uninstall
make clean
make -j4
(sudo) make install
- "Importorror: aucun module nommé lora_sdr":
- Ce problème provient probablement de PythonPath manquant et LD_LIBRARY_PATH
- Reportez-vous à https://wiki.gnuradio.org/index.php/modulenotfounderror pour modifier ces variables. Si vous définissez un préfixe pendant l'appel "cmake", sautez directement au point C. (Vérifier que les chemins existent dans vos dossiers pourraient vous aider.)
- Les blocs OOT n'apparaissent pas dans Gnuradio-Companion:
- Les nouveaux blocs peuvent être chargés dans Gnuradio-Companion en ajoutant les lignes suivantes dans Home / {Username} /. Gnuradio / Config.conf (si ce fichier n'existe pas, vous devez le créer):
[grc]
local_blocks_path=path_to_the_downloaded_folder/gr-lora_sdr/grc
Changelog
Ajouter une option pour ignorer les vérifications des mots de synchronisation et imprimer les valeurs reçues
Ajouter une impression facultative de la charge utile reçue sous forme de valeurs hexagonales
Ajout de la prise en charge de l'entrée de flux marqué (pour la définition du cadre de la longueur du trame)
Format de flux LLR fixé entre FFT_DEMOD et DeInterleaver
Ajout de balises à CRC Vérification de la vérification du flux de sortie Le cadre du trame, de la longueur et du résultat CRC.
Ajout de l'option de séparateur pour l'entrée du fichier
Option de longueur de préambule ajoutée
Paramètre ajouté pour le cadre zéro-padding
Ajouter un faible support d'optimisation du taux de données
Ajouter le soutien des facteurs de propagation inférieurs à 7
...
Crédit
Ce travail a été inspiré de https://github.com/rpp0/gr-lora par Pieter Robyns, Peter Quax, Wim Lamotte et William Thenaers. Quelle architecture et les fonctionnalités ont été améliorées pour mieux imiter la couche physique de LORA.
Licence
Distribué sous la licence GPL-3.0. Voir la licence pour plus d'informations.