4. 配置LoRa网关:SX130x系列连接ChirpStack
网关是LoRaWAN网络的“耳朵”和“嘴巴”。说白了,它负责把空中的LoRa射频信号,转成网络能理解的IP数据包。这一章,我们就来搞定RAK7249这类SX130x网关的配置,让它和ChirpStack服务器顺利“对上话”。
核心目标:让Packet Forwarder(包转发器)软件成功连接到你的ChirpStack服务器,并开始转发数据。
4.1 理解网关的“大脑”:Packet Forwarder
Packet Forwarder是运行在网关上的一个守护进程。它不处理数据,只做一件事:把网关收到的LoRa原始数据包,打包成JSON格式,通过UDP协议发给服务器;反过来,也把服务器下发的指令,转成射频信号发出去。
我个人习惯把Packet Forwarder比作一个“快递员”。它不关心包裹里是什么,只负责准确投递。这个设计很巧妙——让网关专注于射频,让服务器专注于数据处理。
4.2 准备工作:你需要的信息
动手之前,先准备好下面几样东西。我在项目中遇到过好几次,因为漏了某个参数,折腾了半天才发现。
| 信息项 | 说明 | 获取方式 |
|---|---|---|
| 服务器地址 | ChirpStack服务器的IP或域名 | 自己搭建的服务器IP,或云服务商提供 |
| 服务器端口 | 默认是1700(上行/下行共用) | ChirpStack配置文件中的 udp_bind 端口 |
| 网关ID | 网关的唯一标识,通常是MAC地址 | 网关背面标签,或通过 ifconfig 查看 |
| 频率规划 | 你所在地区的LoRa频段(如CN470、EU868) | 当地无线电管理规定 |
小提示:如果你用的是RAK7249,网关ID通常印在设备底部的贴纸上。格式类似 B827EBFFFEXXXXXX。记下来,后面注册网关要用。
4.3 连接网关:SSH登录
RAK7249默认运行的是基于OpenWrt的系统。你可以通过SSH登录进去。网关通电后,用网线连接到你的路由器,找到它的IP地址。
# 假设网关IP是 192.168.2.100
ssh root@192.168.2.100
# 默认密码通常是 root 或 rakwireless
登录成功后,你会看到类似 root@RAK7249:~# 的提示符。嗯,到这里,网关就在你手里了。
4.4 配置Packet Forwarder
Packet Forwarder的配置文件通常位于 /opt/ttn-gateway/packet_forwarder/lora_pkt_fwd/ 目录下。核心文件是 global_conf.json。
我个人习惯先备份原文件,再修改:
cd /opt/ttn-gateway/packet_forwarder/lora_pkt_fwd/
cp global_conf.json global_conf.json.bak
vi global_conf.json
打开后,你会看到一大段JSON。别慌,我们只需要关注几个关键字段。
4.4.1 配置服务器地址
找到 server_address 字段,改成你的ChirpStack服务器地址:
"server_address": "192.168.1.100", // 替换成你的服务器IP
4.4.2 配置上行/下行端口
默认端口是1700,一般不需要改。但如果你服务器用了其他端口,记得同步:
"serv_port_up": 1700,
"serv_port_down": 1700,
4.4.3 配置频率规划
这是最容易出错的地方。我曾经因为选错了频段,导致网关一直在报错,却收不到任何数据。你需要根据所在地区,找到对应的 radio_0 和 radio_1 配置。
以中国CN470频段为例,典型的配置片段如下:
"radio_0": {
"enable": true,
"type": "SX1257",
"freq": 470300000, // 470.3 MHz
"rssi_offset": -166.0,
"tx_enable": true
},
"radio_1": {
"enable": true,
"type": "SX1257",
"freq": 470500000, // 470.5 MHz
"rssi_offset": -166.0,
"tx_enable": false
}
警告:频率设置必须符合当地法规。在中国,LoRa频段是470-510MHz。如果你在欧盟,要用868MHz。用错频段不仅收不到数据,还可能违法。
4.5 启动并验证连接
配置完成后,重启Packet Forwarder服务:
/etc/init.d/packet-forwarder restart
然后查看日志,确认是否连接成功:
logread -f | grep packet
如果看到类似下面的输出,说明连接成功了:
INFO: [main] 868.1 MHz: listening for packets...
INFO: [up] PUSH_ACK received in 2 ms
INFO: [down] PULL_ACK received in 1 ms
PUSH_ACK 表示服务器收到了你上行的数据包确认。PULL_ACK 表示你成功拉取了服务器的下行指令。这两个ACK都出现,就说明“快递员”已经上岗了。
4.6 网关注册到ChirpStack
Packet Forwarder连上服务器后,还需要在ChirpStack后台注册这个网关。打开ChirpStack的Web界面(通常是 http://服务器IP:8080),登录后进入“Gateways”页面。
- 点击“Add”按钮。
- 输入网关ID(就是前面记下的那个)。
- 输入网关名称(随便起,比如“My RAK7249”)。
- 选择正确的频率规划(必须和Packet Forwarder里的一致)。
- 点击“Save”。
注册成功后,回到网关列表,你应该能看到网关状态变为“Connected”。
4.7 整体架构回顾
为了让你更直观地理解整个流程,我画了一张图。它展示了从LoRa终端设备到ChirpStack服务器的数据流向。
4.8 常见问题与避坑
- 连接不上服务器? 先ping一下服务器IP,确认网络通。然后检查防火墙,确保UDP 1700端口是开放的。
- 一直显示“waiting for PULL_ACK”? 这通常是服务器地址或端口配置错了。我曾经犯过这个错,把端口写成了1701,结果折腾了一下午。
- 网关注册后显示“never connected”? 检查网关ID是否填写正确。注意大小写和冒号格式。
- 日志里全是“CRC error”? 可能是频率配置不对,或者天线没接好。先检查物理连接。
调试小技巧:在ChirpStack后台的“Gateways”页面,点击你的网关,进入详情页。在“Live LoRaWAN frames”标签页里,你可以实时看到网关上报的原始数据包。这是排查问题最直接的方法。
好了,到这里,你的网关应该已经和ChirpStack成功握手了。接下来,你就可以开始往上面挂载终端设备,进行真正的LoRaWAN通信测试了。