目录
一、基础知识介绍
1.LoRa网关
- LoRa网关是连接终端设备和LoRaWAN网络的设备,负责收集来自多个LoRa基站的数据并将其传输到云端。
- LoRa网关收集LoRa基站传输的消息,并将这些消息转发到LoRaWAN服务器,从而实现设备到云端的通信。
- 网关通常执行数据包的转发、加密解密以及与LoRaWAN服务器的通信。
2.网关芯片
(1)SX1301
- SX1301是Semtech推出的第一代LoRa物理层基带处理器,专门设计用于LoRaWAN网关。
- 它支持多通道、多调制解调的功能,能够同时监听多个LoRa通道,并处理多个终端设备的通信。
- SX1301提供了灵活的接口,可以与不同类型的射频前端和主控制器(MCU)进行集成,使其适用于各种LoRa网关实现。
(2)SX1302
- SX1302是SX1301的进化版本,引入了一些改进和新功能,以提高性能和灵活性。
- SX1302支持更多的并行通信通道,提高了网关的容量和吞吐量。
- 它引入了Digital Front End(DFE)技术,用于增强接收性能和处理复杂的通信场景。
- SX1302还具有更先进的自动频率和时钟校准功能,有助于提高整个LoRaWAN系统的稳定性。
(3)SX1303
- SX1303 是 Semtech 推出的 LoRa 物理层基带处理器系列中的最新型号。
- 提供更高的性能和处理能力,能够更有效地处理多通道、多终端设备的通信。
- 改进了接收性能,提高了灵敏度,使其在复杂的通信环境中更为可靠。
- 引入 Digital Front End(DFE)技术,用于改善接收性能。
这三款处理器均设计用于 LoRaWAN 网关,通过与射频前端、微控制器和其他硬件组件配合使用,实现了 LoRaWAN 网关的功能。它们为长距离、低功耗的物联网通信提供了关键的支持。
二、物品准备
1.树莓派4/4b(记得要有转接板)
2.闪存SD卡、读卡器
3.SX1302/SX1303模块(频段需要和节点一致)
以上是树莓派和lora网关模块组合起来的实物展示图
三、树莓派系统制作
方法一
使用SD卡出厂镜像:
Sysupgrade镜像:
闪存SD卡
下载基础或完整 SD 卡映像,以备不时之需 Pi 版本。
使用Balena Etcher
- 下载适用于 Raspberry Pi 的 SD 卡映像。
- 点击 从文件刷新Balena Etcher界面中的选项。
- 刷新 SD 卡。
使用Win32DiskImager
- 下载 Raspberry Pi 的 SD 卡映像(以 结尾)。
.wic.gz
- 例如,使用7-zip提取图像。
.img.gz
- 在Win32DiskImager界面中,选择提取的文件。
.img
- 刷新 SD 卡。
方法二
直接使用官方提供的树莓派烧录器进行系统镜像烧录,以下是百度网盘的提取链接
链接:https://pan.baidu.com/s/1XkKuFEz9fQnigQEe2hI9vQ?pwd=1dmh
提取码:1dmh
系统制作完毕后将树莓派与显示器连接,操作树莓派系统进行之后的操作
如图选择好自己的设备型号,以及操作系统(注意64位的操作系统可能会烧录失败,可以选择32位的操作系统)还有要存储镜像的SD卡位置 ,点击NEXT等待一段时间就可以烧录完成啦
四、网关配置
1.远程连接
在自己主机上用ssh远程连接树莓派系统(注意需要保持树莓派与主机处于同一个局域网下)
(关于ssh的教程网上都可以查到,这里不作讲述,大家可以自行上网查找,非常简单)
2.准备工作
树莓派需要开启SPI接口和I2C接口
在树莓派终端输入命令
sudo raspi-config
进入如下界面
选择Interface Options进入下一个界面后选择SPI和I2C一直选择确认开启就好啦
3.配置网关并运行
下载源代码
git clone https://gitee.com/rejeee/gw1302s.git
之后依次进行如下操作
cd gw1302s
TARGET_DIR=/home/name/gw1302s/bin
make clean all
make install
make install_conf
之后配置global_conf.json文件,下面是我选用的json文件展示
{
"SX130x_conf": {
"com_type": "SPI",
"com_path": "/dev/spidev0.0",
"lorawan_public": true,
"clksrc": 0,
"antenna_gain": 0, /* antenna gain, in dBi */
"full_duplex": false,
"fine_timestamp": {
"enable": false,
"mode": "all_sf" /* high_capacity or all_sf */
},
"sx1261_conf": {
"spi_path": "/dev/spidev0.1",
"rssi_offset": 0, /* dB */
"spectral_scan": {
"enable": false,
"freq_start": 903900000,
"nb_chan": 8,
"nb_scan": 2000,
"pace_s": 10
},
"lbt": {
"enable": false /* LBT for 500 Khz channels is not supported */
}
},
"radio_0": {
"enable": true,
"type": "SX1250",
"freq": 904300000,
"rssi_offset": -215.4,
"rssi_tcomp": {"coeff_a": 0, "coeff_b": 0, "coeff_c": 20.41, "coeff_d": 2162.56, "coeff_e": 0},
"tx_enable": true,
"tx_freq_min": 923000000,
"tx_freq_max": 928000000,
"tx_gain_lut":[
{"rf_power": 12, "pa_gain": 0, "pwr_idx": 15},
{"rf_power": 13, "pa_gain": 0, "pwr_idx": 16},
{"rf_power": 14, "pa_gain": 0, "pwr_idx": 17},
{"rf_power": 15, "pa_gain": 0, "pwr_idx": 19},
{"rf_power": 16, "pa_gain": 0, "pwr_idx": 20},
{"rf_power": 17, "pa_gain": 0, "pwr_idx": 22},
{"rf_power": 18, "pa_gain": 1, "pwr_idx": 1},
{"rf_power": 19, "pa_gain": 1, "pwr_idx": 2},
{"rf_power": 20, "pa_gain": 1, "pwr_idx": 3},
{"rf_power": 21, "pa_gain": 1, "pwr_idx": 4},
{"rf_power": 22, "pa_gain": 1, "pwr_idx": 5},
{"rf_power": 23, "pa_gain": 1, "pwr_idx": 6},
{"rf_power": 24, "pa_gain": 1, "pwr_idx": 7},
{"rf_power": 25, "pa_gain": 1, "pwr_idx": 9},
{"rf_power": 26, "pa_gain": 1, "pwr_idx": 11},
{"rf_power": 27, "pa_gain": 1, "pwr_idx": 14}
]
},
"radio_1": {
"enable": true,
"type": "SX1250",
"freq": 905000000,
"rssi_offset": -215.4,
"rssi_tcomp": {"coeff_a": 0, "coeff_b": 0, "coeff_c": 20.41, "coeff_d": 2162.56, "coeff_e": 0},
"tx_enable": false
},
"chan_multiSF_All": {"spreading_factor_enable": [ 5, 6, 7, 8, 9, 10, 11, 12 ]},
"chan_multiSF_0": {"enable": true, "radio": 0, "if": -400000}, /* Freq : 903.9 MHz*/
"chan_multiSF_1": {"enable": true, "radio": 0, "if": -200000}, /* Freq : 904.1 MHz*/
"chan_multiSF_2": {"enable": true, "radio": 0, "if": 0}, /* Freq : 904.3 MHz*/
"chan_multiSF_3": {"enable": true, "radio": 0, "if": 200000}, /* Freq : 904.5 MHz*/
"chan_multiSF_4": {"enable": true, "radio": 1, "if": -300000}, /* Freq : 904.7 MHz*/
"chan_multiSF_5": {"enable": true, "radio": 1, "if": -100000}, /* Freq : 904.9 MHz*/
"chan_multiSF_6": {"enable": true, "radio": 1, "if": 100000}, /* Freq : 905.1 MHz*/
"chan_multiSF_7": {"enable": true, "radio": 1, "if": 300000}, /* Freq : 905.3 MHz*/
"chan_Lora_std": {"enable": true, "radio": 0, "if": 300000, "bandwidth": 500000, "spread_factor": 8, /* Freq : 904.6 MHz*/
"implicit_hdr": false, "implicit_payload_length": 17, "implicit_crc_en": false, "implicit_coderate": 1},
"chan_FSK": {"enable": false, "radio": 1, "if": 300000, "bandwidth": 125000, "datarate": 50000} /* Freq : 868.8 MHz*/
},
"gateway_conf": {
"gateway_ID": "AA555A0000000000",
/* change with default server address/ports */
"server_address": "",
"serv_port_up": 1700,
"serv_port_down": 1700,
/* adjust the following parameters for your network */
"keepalive_interval": 10,
"stat_interval": 30,
"push_timeout_ms": 100,
/* forward only valid packets */
"forward_crc_valid": true,
"forward_crc_error": false,
"forward_crc_disabled": false,
/* GPS configuration */
"gps_tty_path": "/dev/ttyS0",
/* GPS reference coordinates */
"ref_latitude": 0.0,
"ref_longitude": 0.0,
"ref_altitude": 0,
/* Beaconing parameters */
"beacon_period": 0, /* disable class B beacon */
"beacon_freq_hz": 869525000,
"beacon_datarate": 9,
"beacon_bw_hz": 125000,
"beacon_power": 14,
"beacon_infodesc": 0
},
"debug_conf": {
"ref_payload":[
{"id": "0xCAFE1234"},
{"id": "0xCAFE2345"}
],
"log_file": "loragw_hal.log"
}
}
将json文件中server_address之后的内容改成所搭建服务器的ip,两个port改为1700
(chirpstack服务器搭建教程在我的上一篇博客中有详细讲述)
运行
输入命令开启网关
./lora_pkt_fwd -c ***.json
有下面的显示就说明网关已经成功开启,可以接入服务器
以上就是Lora网关搭建的全部教程,有疑问也可以私信提问哦,有问题的话也欢迎各路大神指出