用树莓派+lora shield搭建一个LoRaWAN网关

1. 创建单信道LoRaWAN网关

1.1 准备工作

配置树莓派上网

网上教程很多,不再介绍。

开启树莓派SPI接口

  • 输入命令
    pi@raspberrypi:~ $ sudo raspi-config
  • 在"Interfacing Options"选项中,找到SPI选项,选择enable。
    在这里插入图片描述
    在这里插入图片描述

安装必需库文件

使用“ sudo apt-get installconnectionpi”为Raspberry Pi中使用的BCM2835安装以C语言编写的GPIO访问库;

1.2 正式开始

把LoRa shield连接到树莓派上

在这里插入图片描述

在这里插入图片描述

下载单信道LoRa网关代码到树莓派

$ make all
$ ./single_chan_pkt_fwd

在这里插入图片描述
如上图,树莓派表示已经找到连接到自己的LoRa shield了。将“Gateway ID”部分记录下来。
这边工作还没有完成,先放一放,回来再做。

2. TTN网站相关操作

2.1 注册并登录TTN

进入TTN之后,点击头像边的下拉箭头,选择“console”,进入控制台,如下所示。

在这里插入图片描述

2.2 注册Gateway

选择“GATEWAYS”,在进去的页面选择“register gateway”
在这里插入图片描述
在“Gateway ID”部分填写前面记录的ID,并在下面小方框里面打“√”。选好对应的频段之后,点击页面最下面的“Register Gateway”。
在这里插入图片描述

2.3 注册Application

点击“Applications”,进入页面。点击“add application”,进入配置页面。
在这里插入图片描述
在填写好“Application ID”之后,点击页面最下面的按钮“Add application”,生成对应的应用,具体如下图所示。
在这里插入图片描述

2.4 注册device

在对应的应用下面注册设备,点击“register device”。
在这里插入图片描述
在输入“Application ID”之后,点击生成“Register”,生成对应的设备。
在这里插入图片描述
在修改网关代码main.cpp对应部分的代码,并重新编译运行。

  1. 修改中心频率:
uint32_t freq = 868100000;

改成

uint32_t freq = 433175000;
  1. 修改服务器地址:根据自己选择的TTN服务器修改。参考链接:TTN服务器列表。网站给出的是域名,根据工具把转换为ip地址。域名/IP查询工具
    我使用的服务器是router.eu.thethings.network,对应的IP地址为:52.169.76.203
#define SERVER1 "54.72.145.119"

改成

#define SERVER1 "52.169.76.203"  

3. Client端操作

3.1 下载代码

代码链接:https://github.com/dragino/Lora/tree/master/Lora%20Shield/Examples/lora_shield_ttn

3.2 修改代码

3.2.1 client端代码修改

  1. 根据TTN上的设备信息修改NWKSKEY、APPSKEY、DEVADDR等参数。
    在这里插入图片描述
    在这里插入图片描述
  2. 当使用的client的默认工作频率是433MHz的时候,我们需要修改一下LMIC库文件,保证双方通信。
    ① 在代码中添加433MHz相关的代码,具体参考如何添加其他频段,例如EU433
    ② 在lmic.c里面强制转化发送的中心频率为433MHz。
bit_t LMIC_setupChannel (u1_t chidx, u4_t freq, u2_t drmap, s1_t band) {
...
LMIC.channelFreq [chidx] = freq;
}

变为

bit_t LMIC_setupChannel (u1_t chidx, u4_t freq, u2_t drmap, s1_t band) {
...
freq = 433175000;//这个频率应该与gateway监听的频率相同
LMIC.channelFreq [chidx] = freq;
}

4. 观察实验结果

搭建的gateway上观察到的收包现象:
在这里插入图片描述
TTN上观察到的收包现象:
在这里插入图片描述

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好的,我可以给您提供一个简单的Java代码示例来实现Lora网关通讯。 首先,您需要使用串口通信来与Lora网关进行通信。因此,您需要使用Java串口通信库,例如RXTX或JSerialComm。在本示例中,我们将使用JSerialComm库。 以下是示例代码: ```java import com.fazecast.jSerialComm.SerialPort; public class LoraGatewayCommunication { public static void main(String[] args) { SerialPort serialPort = SerialPort.getCommPort("COM1"); // 串口名称,请根据实际情况修改 serialPort.setComPortParameters(115200, 8, 1, 0); // 设置串口通信参数 serialPort.setComPortTimeouts(SerialPort.TIMEOUT_READ_BLOCKING, 1000, 0); // 设置超时时间 if (serialPort.openPort()) { // 打开串口 System.out.println("串口已打开"); } else { System.out.println("无法打开串口"); return; } while (true) { if (serialPort.bytesAvailable() > 0) { // 判断是否有数据可读 byte[] buffer = new byte[serialPort.bytesAvailable()]; serialPort.readBytes(buffer, buffer.length); // 读取数据 String message = new String(buffer); // 将字节数组转换为字符串 System.out.println("收到消息: " + message); } } } } ``` 以上代码将打开COM1串口,并读取Lora网关发送的数据。您可以根据需要修改串口名称和通信参数。 注意:这只是一个简单的示例代码,您需要根据Lora网关的具体通信协议进行修改。同时,为了避免在读取数据时出现问题,您需要确保您的Lora网关与计算机之间的通信稳定。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值