一起玩转GNU Radio:LoRa实验

本文内容、开发板及配件仅限用于学校或科研院所开展科研实验!

本文介绍一篇关于用GNU Radio实现LoRa通信的论文,论文第一作者是Joachim Tapparel。LoRa是LoRaWAN的私有物理层协议,且LoRa由于其独特的低功耗特点,已经广泛应用在物联网场景中。为了深入研究LoRa的通信机制,最近几年已经有大量关于LoRa协议逆向的相关工作。在论文中,作者介绍了如何基于GNU Radio来实现LoRa物理层通信,并探讨了采样时间偏差和载波频率偏差对通信的影响效果,以及如何估计和消除这些偏差。利用USRP NI2920来做实验,测试了LoRa在无编码和编码情况下的误码率,展示了所构建的LoRa通信系统的可行性和可靠性。

目录

一、论文原文和相关技术报告

二、LoRa 物理层简介

三、gr-lora_sdr安装与使用

四、常见问题与解决方法

1、ModuleNotFoundError: No module named 'lora_sdr'

2、No rule to make target '/usr/lib/x86_64-linux-gnu/liborc-0.4.so'

五、有用链接


一、论文原文和相关技术报告

该工作介绍网址

LoRa PHY based on GNU Radio ‒ TCL ‐ EPFL

论文原文下载地址

https://arxiv.org/abs/2002.08208

LoRa逆向分析技术报告下载地址

https://www.epfl.ch/labs/tcl/wp-content/uploads/2020/02/Reverse_Eng_Report.pdf

二、LoRa 物理层简介

LoRa使用带宽为125KHz、250KHz或500KHz的扩频调制方法,扩频因子SF为7、8、9、10、11或12。每个LoRa符号扩频成7、8、9、10、11或12比特,具有N=2^SF个码片。LoRa的发射和接收过程,包括whitening、信道编码、交织、格雷映射。其中,

whitening是将有效载荷比特与一个伪随机序列进行异或操作。

信道编码实现纠错编码,LoRa使用汉明编码。

交织,LoRa使用对角交织器(diagonal interleaver)。

格雷映射,LoRa采用反格雷码实现从比特到符号的映射。

LoRa的数据包包括从Preamble upchirps、Network identifiers、Downchirps、Header、Payload和CRC。

 关于什么是upchirps和downchirps,可以参见LoRa重要知识 - 简书

三、gr-lora_sdr安装与使用

我的电脑环境是,Ubuntu 20.04虚拟机,GNU Radio 3.8.1.0 (Python 3.8.10)。

 代码安装过程如下,如果碰到问题,请参见《六、常见问题与解决方法》。不同人的电脑可能会碰到不同的问题,在cmake或make过程中,提示缺少什么库或者找不到什么库,依次解决即可。

git clone https://github.com/tapparelj/gr-lora_sdr.git
cd gr-lora_sdr
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig

需要注意的是,在安装gr-lora_sdr代码之前,你电脑中需要已安装GNU Radio 3.8,否则无法正常安装使用。

在我们安装gr-lora_sdr之前,在GNU Radio的GRC中,当你在模块搜索栏输入“lora”后,你会发现无法搜索到任何模块。

 当你成功安装了r-lora_sdr代码之后,你会发现可以搜索到lora相关模块。

 gr-lora_sdr的GRC基本实例文件在《apps/single_user》文件夹中,用GNU Radio的GRC打开tx_rx_simulation.grc文件并运行结果如下图所示。该GRC文件是纯仿真程序。在运行程序时,可能会提示“ImportError: No module named lora_sdr”错误,具体解决方法见《六、常见问题与解决方法》。

终端的信息如下图所示:

 在《apps/single_user》文件夹中还有用USRP来进行发射和接收的流图程序,可以将UHD模块替换成osmocom Source/Sink模块,LimeSDR Source(Rx)/LimeSDR Sink(Tx)模块后用HackRF或LimeSDR来实现发送和接收。

四、常见问题与解决方法

1、ModuleNotFoundError: No module named 'lora_sdr'

根据GitHub - tapparelj/gr-lora_sdr: This is the fully-functional GNU Radio software-defined radio (SDR) implementation of a LoRa transceiver with all the necessary receiver components to operate correctly even at very low SNRs. This work has been conducted at the Telecommunication Circuits Laboratory, EPFL.的“Frequent errors”和ModuleNotFoundError - GNU Radio相关内容,得知解决方法如下:

在终端中输入:

export PYTHONPATH=/usr/local/lib/python3/dist-packages:$PYTHONPATH
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

上述命令是适合我电脑的命令,不同人的电脑可能略有不同,具体可以参见ModuleNotFoundError - GNU Radio的方法。

2、No rule to make target '/usr/lib/x86_64-linux-gnu/liborc-0.4.so'

在运行make后,提示,

make[2]: *** No rule to make target '/usr/lib/x86_64-linux-gnu/liborc-0.4.so', needed by 'lib/libgnuradio-lora_sdr.so.ca195cb1'.  Stop.
make[1]: *** [CMakeFiles/Makefile2:251: lib/CMakeFiles/gnuradio-lora_sdr.dir/all] Error 2
make: *** [Makefile:141: all] Error 2

原因是缺少liborc-0.4。

根据

根据引用\[1\]和引用\[2\]的内容,解决"ModuleNotFoundError: No module named 'gnuradio'"的方法如下: 1. 首先,确保已经安装了Python和pip。可以使用以下命令安装Python和pip: ``` sudo apt-get install python sudo apt-get install python-pip ``` 2. 然后,安装GNURadio。可以使用以下命令更新软件包列表并安装GNURadio: ``` sudo apt-get update sudo apt-get install gnuradio ``` 3. 如果在运行make命令时出现错误,如引用\[3\]所示,可能是由于缺少依赖库导致的。在这种情况下,需要安装缺少的依赖库。根据错误提示中提到的缺失的库文件,可以尝试使用以下命令安装相应的库文件: ``` sudo apt-get install liborc-0.4-dev ``` 请按照上述步骤进行操作,应该能够解决"ModuleNotFoundError: No module named 'gnuradio'"的问题。 #### 引用[.reference_title] - *1* *3* [走进“开源SDR实验室” 一起玩转GNU RadioLoRa实验](https://blog.csdn.net/OpenSourceSDR/article/details/119591575)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [解决ModuleNotFoundError: No module named ‘gnuradio](https://blog.csdn.net/QAQIknow/article/details/115447777)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值