本文内容、开发板及配件仅限用于学校或科研院所开展科研实验!
本文利用LimeSDR Mini和PothosFlow实现LoRa的仿真、发射、接收、重放,理解LoRa的基本原理。实验流程包括:首先,使用PothosFlow搭建LoRa收发的仿真流图并验证;其次 ,使用Limesdr实现LoRa的收发;最后,查看实验结果。
目录
一、什么是LoRa
LoRa是semtech公司创建的低功耗局域网无线标准,低功耗一般很难覆盖远距离,远距离一般功耗高,LoRa的名字就是远距离无线电(Long Range Radio),它最大特点就是在同样的功耗条件下比其他无线方式传播的距离更远,实现了低功耗和远距离的统一。
LoRa的特性
- 传输距离:城镇可达2-5Km,郊区可达15Km。
- 工作频率:ISM频段包括433、868、915MH等。
- 标准:IEEE 802.15.4g。
- 调制方式:基于扩频技术,线性调制扩频(CSS)的一个变种,具有前向纠错(FEC)能力,semtech公司私有专利技术。
- 容量:一个LoRa网关可以连接上千上万个LoRa节点。
- 电池寿命:长达10年。
- 安全:AES128加密。
- 传输速率:几百到几十Kbps,速率越低传输距离越长。
LoRa和LoRaWan很容易混淆。上图可以看出,LoRa是LoRaWan的一个子集,LoRa仅仅包括物理层定义,LoRaWan还包括了链路层。LoRaWAN是一个开放标准,它定义了基于LoRa芯片的LPWAN技术的通信协议。 LoRaWAN在数据链路层定义媒体访问控制(MAC),由LoRa联盟维护。
二、实验硬件软件
硬件---LimeSDR Mini、拉杆天线
软件---Ubuntu运行支持Limesdr、SoapySDR、Pothos的环境,Pothos Flow v0.6.1,LoRa-SDR模块。
三、编译安装
1、编译安装json.git
如果没有安装json.git的代码,则你在oRa-SDR代码的cmake时候会碰到如下的问题
这里提示LoRa toolkit requires json.hpp
所以我们需要安装json。这个问题在issue列表中有提到。
Install pre-requisite - nlohmann-json-dev (Ubuntu/Debian) · Issue #12 · myriadrf/LoRa-SDR · GitHub
Having installed Pothos via the PPA on Ubuntu and then trying to install this project from source via Git, you should mention that the package "nlohmann-json-dev" (via Ubuntu) is a requirement or that will be needed.
git clone https://github.com/nlohmann/json.git
编译并安装:
cd json
mkdir build
cd build
cmake ../
make
sudo make install
sudo ldconfig
2、编译安装LoRa-SDR
从github上下载LoRa-SDR源码:
git clone https://github.com/myriadrf/LoRa-SDR.git
编译并安装:
cd LoRa-SDR
mkdir build
cd build
cmake ../
make
sudo make install
由于之前缺少json库,cmake出错了,所以需要将build文件夹删除掉重新来一遍。
在make install之前,你的Pothos Flow中是没有LoRa的模块的。
在make install之后,
四、LoRa发送和接收纯仿真
我们使用https://github.com/myriadrf/LoRa-SDR/tree/master/examples中的
lora_simulation.pth,为了能够在Pothos Flow中打开此文件,你需要将文件后缀修改为pothos,即lora_simulation.pth--》lora_simulation.pothos。
五、用LimeSDR Mini来发送和接收数据
https://github.com/myriadrf/LoRa-SDR/tree/master/examples中有lora_sdr_client.pth和lora_sdr_relay.pth,参考这两个程序,我们编写了一个可用一个LimeSDR Mini就能够实现发送和接收的程序。
例如发送一个“limesdr mini”字符串,首先点击运行按钮,
然后在Display_Transmitter页面中的MessageTx中输入limesdr mini后点击回车键,
在Display_Receiver界面中你会看到接收到了“limesdr mini”。
目前存在的问题:用一个LimeSDR Mini来发送和接收,每次发送需要重新点击运行按钮。
六、有用的链接
GitHub - myriadrf/LoRa-SDR: An SDR LoRa implementation for R&D
LimeSDR - LoRa Transmit, Receive, Relay and Simulation! | Crowd Supply