设置一个LoRa网关看起来很复杂,不过不用担心。我会先讲述一下原理,然后给大家演示一下如何完成一个LoRa网关的设置。
在本文中需要准备的软硬件:
我最近经常在玩LoRa模块,甚至自己制作了一块LoRa开发板。通过LoRa技术可以实现低功率远程无线电通信,这是一种载荷较小、有效而又简单的方法。你甚至可以解锁LoRa的更多功能:设置一个可以连接到互联网的LoRaWAN网络,允许移动节点在不同网管之间跳跃——就像是你的手机一样,当你在移动的时候,它会连接到不同的信号发射塔。所以这个夏天我打算制作一个低成本的LoRa网关,并将其运行在TTN的网络上。它比我想象的要简单的多了~
网关是一个连接到互联网的LoRa设备,它可以监听多个不同的LoRa频道,在网路回程(例如TTN)和终端节点设备之间进行转发数据包。你可以把它想象成低功耗移动终端设备节点的蜂窝塔。
TTN给出了一些可供选择的网关硬件的建议设备,而我选择了RAK Wireless的RAK831来进行此次尝试:
RAK831是一个LoRa集中器板,可以与树莓派搭配使用。我直接购买了这样的一个LoRa开发套装,这里面包含了所有在本项目中需要的硬件:
套件中还包含一个WisNode板,类似于一个Arduino+LoRa的终端设备;此外套件内还包含一个LoRa Tracker板,但是我就不需要了,因为我已经自制了一个带GPU的LoRa节点。
因为很多软件已经预先在内存卡中配置好了,所以还是比较简单的。并不必在树莓上启用SPI,也不必从GitHub下载基于iC880a的网关软件。这些都已经搞定了,基本上可以做到开箱即用。
我按照指示在 /etc/wpa_supplicant/wpa_supplicant.conf
中设置了WiFi凭证。
接下来主要工作是为网关进行参数配置。首先要确认网关标识,每个网关都有自己的ID,因为这样才可以通过网络接口的MAC地址来实现访问。可以通过这个脚本来获取网关的ID:
GATEWAY_ID=$(ip link show eth0 | awk '/ether/ {print $2}' | awk -F\: '{print $1$2$3"FFFE"$4$5$6}'); echo ${GATEWAY_ID^^}
网关的配置有点混乱,首先,有一个全局配置文件并非特定于您的网关,而是特定于您所在的区域(欧盟,美国,澳大利亚等)。我在美国,所以我在GitHub上使用了物联网网关配置项目中的美国全球配置文件。
靠近末尾的gateway_conf是重要的部分,这是您所在地区的正确路由器信息,这个文件将进入到**/opt/ttn-gateway/bin**的位置。
重要:为了使我的网关能够工作,我必须将以下代码加入到gateway_conf部分中,来激活global_config.json文件中的GPS:
{
"gateway_conf": {
...
"gps": true,
"gps_tty_path": "/dev/ttyAMA0",
"fake_gps": false,
...
}
}
该网关的特定信息会保存在这个文件里面**/opt/ttn-gateway/bin/local_config.json**。在这里,您可以使用global_config.json中的密钥信息以及您的gateway_ID,有关网关位置的位置信息以及联系信息。
这是我的:
{
"gateway_conf": {
"gateway_ID": "B827EBFFFEF11045",
"servers": [
{
"server_address": "router.us.thethings.network",
"serv_port_up": 1700,
"serv_port_down": 1700,
"serv_enabled": true
}
],
"ref_latitude": 45.0466,
"ref_longitude": -93.4747,
"ref_altitude": 277,
"contact_email": "[email protected]",
"description": "nootropic design RAK831 LoRa gateway"
}
}
网关启动时,local_config.json信息与global_config.json信息合并。
棘手的是,您的网关配置可以由GitHub中的远程文件控制。gateway-remote-config GitHub repo是TTN网关的许多本地配置文件的集合。当您的网关启动时,它实际上从GitHub中提取最新内容。如果可以为你的网关找到相关的文件,它将删除local_config.json文件,并创建一个符号链接,从bin / local_config.json到树莓派上克隆仓库中文件!
如果您想这样做,请在GitHub上分解网关远程配置报告,将您自己的本地配置文件提交到以您的GatewayID命名的分叉报告中(例如,B827EBFFFEF11045.json),然后向主仓库提交拉取请求。几天后,您的本地配置文件将被合并,当您的网关启动时,它将使用它。
我的最终配置是**/opt/ttn-gateway/bin/local_config.json**,它是连接到GitHub中my config file in GitHub的链接。
global_config.json中的gateway_conf部分只包含以下内容:
{
"gateway_conf": {
"gps": true,
"gps_tty_path": "/dev/ttyAMA0",
"fake_gps": false
}
}
我把网关安装在一个防水的外壳里,里面有5V电源、LoRa天线和GPS天线。夏天天气不太热,我很快就会看到此网关在明尼苏达州冬天天气中表现如何。我希望在封闭外壳内树莓派产生的热量可以防止硬件结冰,但是我不知道能不能行!(更新:树莓派即使在零下28华氏度(-33摄氏度)时也没有问题!!!)
天线杆是聚氯乙烯管,我用一根5米长的RG-58电缆将集中器板连接到玻璃纤维天线上。5米长的电缆有功率损耗,但考虑到这一点后,天线仍能提供净增益。我认为它看起来很棒,我希望我的邻居不要认为它碍眼。
我希望这个网关的设置文章对其他人有用!LoRa真是一项令人兴奋的学习技术。