Project Icon

gr-lora_sdr

GNU Radio实现的开源LoRa软件无线电收发机

gr-lora_sdr项目提供了基于GNU Radio的完整LoRa软件无线电收发机实现。支持灵活设置扩频因子、编码率和带宽等LoRa参数。通过分层模块设计,便于实现USRP设备间以及USRP与商用LoRa设备的通信。项目还包含用于低信噪比环境下性能评估的仿真框架。作为开源项目,gr-lora_sdr可通过源码编译或conda包方式安装使用。

GitHub最后提交 GNU Radio 版本 arXiv 点击量 构建conda包 许可证:GPL v3

概述

这是一个功能完备的GNU Radio软件定义无线电(SDR)实现的LoRa收发器,包含了所有必要的接收组件,即使在非常低的信噪比下也能正常工作。该收发器作为GNU Radio 3.10的一个模块提供。这项工作是在EPFL的电信电路实验室进行的。

在GNU Radio实现的LoRa发射和接收链中,用户可以选择所有的传输参数,如扩频因子、编码率、带宽、同步字、是否有显式头和CRC。

  • 该模块包含了方便的发射和接收层次块。

  • 在发射链中,实现包含了LoRa收发器的所有主要块:头部和CRC插入块、白化块、汉明编码器块、交织器块、格雷反映射块和调制块。

发射流程

  • 在接收端有数据包同步块,执行同步所需的所有必要任务,如必要的STO和CFO估计和校正。然后是解调块,格雷映射块,解交织块,汉明解码器块和解白化块,以及CRC验证块。

接收流程

  • 该实现可用于在低信噪比下进行LoRa SDR接收器的完全端到端实验性能结果。
  • 在apps/simulation文件夹中提供了一个简单的仿真框架。

功能

  • 在USRP-USRP和USRP-商用LoRa收发器(已测试RFM95、SX1276、SX1262)之间发送和接收LoRa数据包。

  • 可用参数:

    • 扩频因子:5-12*
    • 编码率:0-4
    • 隐式和显式头模式
    • 有效载荷长度:1-255字节
    • 同步字选择(网络ID)
    • 验证有效载荷CRC
    • 验证显式头校验和
    • 低数据率优化模式
    • 使用软判决解码以提高性能

* 扩频因子5和6与SX126x不兼容。

参考文献

J. Tapparel, O. Afisiadis, P. Mayoraz, A. Balatsoukas-Stimming and 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.

IEEE Xplore链接, arXiv链接

如果你发现这个实现对你的项目有用,请考虑引用上述论文。

先决条件

  • Gnuradio 3.10
  • python 3
  • cmake
  • libvolk
  • boost
  • UHD
  • gcc > 9.3.0
  • gxx
  • pybind11

用于开发此模块的conda环境在environment.yml文件中描述。

安装

gr-lora_sdr外部树模块可以从源代码安装或直接作为conda包安装。

从源代码

  • 克隆此存储库
    git clone https://github.com/tapparelj/gr-lora_sdr.git
    
  • 进入克隆的存储库
    cd gr-lora_sdr/
    
  • 可以使用conda安装包含所有依赖项的功能环境,或者单独安装它们并跳到下一步。 你可以按照这个教程操作,或者简单地按照以下步骤:
    • 首先下载最新版本的conda,例如:
      wget https://repo.anaconda.com/miniconda/Miniconda3-py39_4.12.0-Linux-x86_64.sh
      
    • 现在运行下载的Anaconda安装程序脚本
      bash Miniconda3-py39_4.12.0-Linux-x86_64.sh
      
    • 重新加载Shell
      source ~/.bashrc
      
    • 现在复制我们的环境以自动安装模块的所有依赖项。注意这将花费相当长的时间(约20分钟)。
      conda env create -f environment.yml 
      
    • 启动你刚刚创建的GNU Radio 3.10 conda环境
      conda activate gr310
      
  • 要构建代码,创建一个适当的文件夹并进入:
    mkdir build
    cd build
    
  • 运行主CMakeLists.txt
    cmake .. -DCMAKE_INSTALL_PREFIX=<你的前缀> # 如果这里没有选择安装前缀,默认为usr/local、CONDA_PREFIX或PYBOMB_PREFIX
    
  • 最后编译组成LoRa收发器的自定义GNU Radio块。将替换为你想用来加速编译的核心数。
    (sudo) make install -j<X>
    
  • 如果你以sudo身份安装,运行
    sudo ldconfig 
    
  • 现在你应该能够运行一些代码了。例如,打开GNU Radio Companion用户界面,检查gr-lora_sdr的块是否在块列表中可用(例如在LoRa_TX下)。
    gnuradio-companion &
    
  • 可以通过执行以下脚本进行最终的收发器功能验证,每两秒传输一帧:
    python3 examples/tx_rx_functionality_check.py 
    

使用

  • gr-lora_sdr/examples/中可以找到LoRa发射器和接收器的示例(包括python和grc)。
  • .grc文件可以用gnuradio-companion打开,以设置不同的传输参数。
  • 由grc生成的python文件可以通过 python3 ./{文件名}.py执行

从conda安装

感谢Ryan Volz,这个OOT模块也可以直接作为Conda包安装。注意gnuradio也将安装在conda环境中。

  • 创建或激活您想要安装此模块的conda环境。如果您不熟悉conda,请参考conda的入门指南
  • 使用以下命令从anaconda频道tapparelj安装模块:
    conda install -c tapparelj -c conda-forge gnuradio-lora_sdr
    
  • 根据您的需求,您可能还需要安装gnuradio的补充包:
    conda install -c conda-forge gnuradio
    
  • gnuradio元包安装了以下所有子包:
    • gnuradio-grc
    • gnuradio-iio
    • gnuradio-qtgui
    • gnuradio-soapy
    • gnuradio-uhd
    • gnuradio-video-sdl
    • gnuradio-zeromq
  • 如果您不想安装所有这些包及其依赖项,可以单独安装您需要的包,例如:
    conda install -c conda-forge gnuradio-uhd
    

使用方法

  • 示例gnuradio-companion流程图与包一起安装,可以在以下位置找到:
    • (Linux/macOS) $CONDA_PREFIX/share/gr-lora_sdr/examples
    • (Windows) %CONDA_PREFIX%\Library\share\gr-lora_sdr\examples

常见问题:

更新日志

  • 添加忽略同步字检查并打印接收到的值的选项

  • 添加可选的以十六进制值打印接收到的有效负载

  • 添加标记流输入支持(用于帧长度定义)

  • 修复了_fft_demod_和_deinterleaver_之间的LLR流格式

  • 在crc验证输出流中添加了标记,指示帧开始、长度和CRC结果

  • 为文件输入添加了分隔符选项

  • 添加了前导长度选项

  • 添加了帧零填充参数

  • 添加低数据率优化支持

  • 添加对小于7的扩频因子的支持

    [...](https://github.com/tapparelj/gr-lora_sdr/blob/master/./Changelog.md

致谢

本工作受到Pieter Robyns、Peter Quax、Wim Lamotte和William Thenaers的https://github.com/rpp0/gr-lora项目的启发。该项目的架构和功能已得到改进,以更好地模拟LoRa的物理层。

许可证

根据GPL-3.0许可证分发。有关更多信息,请参见LICENSE文件。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号