gr-lora_sdr

gr-lora_sdr

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

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

GNU RadioLoRaSDR软件定义无线电开源Github开源项目

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

概述

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

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

  • 该模块包含了方便的发射和接收层次块。
<p float="center"> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/128fe48b-2d70-487e-b14b-a414c4bbf6ef.png" height="120" /> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/0e5d5267-d41c-4c7e-8355-b7c97197452d.png" height="120" /> </p>
  • 在发射链中,实现包含了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块。将<X>替换为你想用来加速编译的核心数。
    (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的扩频因子的支持

    <font size="10"> [...](https://github.com/tapparelj/gr-lora_sdr/blob/master/./Changelog.md</font>

致谢

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

许可证

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

编辑推荐精选

Pixmax

Pixmax

一站式AI短剧创作平台

Pixmax专注打造下一代“ AI 视觉创作引擎”,整合行业顶尖 AI 大模型、工工业级精准控制及企业级协同管理功能,是全方位的 AI 内容创作平台。

豆包

豆包

字节跳动旗下 AI 智能助手

字节跳动旗下 AI 智能助手

GPT Plus|Pro充值

GPT Plus|Pro充值

GPT充值

支持 ChatGPT Plus / Pro 充值服务,支付便捷,自动发货,售后可查。

GPT Image 2中文站

GPT Image 2中文站

AI 图片生成平台

GPT Image 2 是面向用户的 AI 图片生成平台,支持文生图、图生图及多模型创意工作流。

Vecbase

Vecbase

你的AI Agent团队

Vecbase 是专为 AI 团队打造的智能工作空间,将数据管理、模型协作与知识沉淀整合于一处。算法、产品与业务在同一平台无缝协同,让从数据到 AI 应用的落地更快一步。

音述AI

音述AI

全球首个AI音乐社区

音述AI是全球首个AI音乐社区,致力让每个人都能用音乐表达自我。音述AI提供零门槛AI创作工具,独创GETI法则帮助用户精准定义音乐风格,AI润色功能支持自动优化作品质感。音述AI支持交流讨论、二次创作与价值变现。针对中文用户的语言习惯与文化背景进行专门优化,支持国风融合、C-pop等本土音乐标签,让技术更好地承载人文表达。

QoderWork

QoderWork

阿里Qoder团队推出的桌面端AI智能体

QoderWork 是阿里推出的本地优先桌面 AI 智能体,适配 macOS14+/Windows10+,以自然语言交互实现文件管理、数据分析、AI 视觉生成、浏览器自动化等办公任务,自主拆解执行复杂工作流,数据本地运行零上传,技能市场可无限扩展,是高效的 Agentic 生产力办公助手。

lynote.ai

lynote.ai

一站式搞定所有学习需求

不再被海量信息淹没,开始真正理解知识。Lynote 可摘要 YouTube 视频、PDF、文章等内容。即时创建笔记,检测 AI 内容并下载资料,将您的学习效率提升 10 倍。

AniShort

AniShort

为AI短剧协作而生

专为AI短剧协作而生的AniShort正式发布,深度重构AI短剧全流程生产模式,整合创意策划、制作执行、实时协作、在线审片、资产复用等全链路功能,独创无限画布、双轨并行工业化工作流与Ani智能体助手,集成多款主流AI大模型,破解素材零散、版本混乱、沟通低效等行业痛点,助力3人团队效率提升800%,打造标准化、可追溯的AI短剧量产体系,是AI短剧团队协同创作、提升制作效率的核心工具。

seedancetwo2.0

seedancetwo2.0

能听懂你表达的视频模型

Seedance two是基于seedance2.0的中国大模型,支持图像、视频、音频、文本四种模态输入,表达方式更丰富,生成也更可控。

下拉加载更多