引言
如果您只关心:打造一个 LoRaWAN 网关,请参考《花一个小时,打造自己的LoRaWAN网关》
花一个小时,打造自己的LoRaWAN网关_lorawan网关开发_RimeLink的博客-CSDN博客
本文介绍 LoRaWAN 网关(以下简称网关)的源代码和二次开发的步骤。尽管它需要一点儿 Linux 知识,然而,这是每个“有耐心”的人都可以掌握的。
1 网关的构成
如下图所示,网关是 LoRaWAN 模组和 loraserver 的桥梁。
它接收模组的 LoRa 数据包,封装成特定格式的 UDP 包发送给 loraserver,这称之为上行(UpLink);下行(DownLink)是一个逆过程,即从 loraserver -> 模组。
它的硬件构成是 2 部分:SX1301 收发 LoRa,ARM+Linux 负责驱动和协议转换。
很明显,源代码运行在 Linux 之上,并且是标准的 C 语言。
2 为什么它会基于 ARM+Linux
Linux 没有版权纠纷,并且开源免费,加上强大的网络功能,这让它成为智能设备的首选操作系统。
ARM 功耗低,性价比高,工具链成熟,强大的生态圈,这让它成为智能设备的首先 CPU。
敏捷开发和精益设计在国外深入人心,智能产品一般先在 RaspberryPi(树莓派,典型的 ARM+Linux)上验证,扩大了这 ARM+Linux 的疆域。
3 我怎么登录 Linux 系统
至少有 2 种办法登录网关的 Linux 系统,无论哪一种方法,用户名和密码分别为:guest rimelink
3.1 串口登录
拿一根 USB 转串口线,连接网关的 GRT 引脚,打开 TeraTerm 串口软件,配置 115200-8-n-1 即可登录网关的 Linux 系统。
串口登录的优势很大,它可以查看 Linux 启动日志,判断硬件正确性;缺点是需要串口工具和安装驱动。
下载 TeraTerm 串口软件:锐米通信产品开发工具 - 长沙市锐米通信科技有限公司
3.2 网络登录
从路由器查询 LoRa 基站的 IP(下例为 192.168.1.121),通过 putty 软件可登录网关的 Linux 系统。
网络登录的好处是不依赖额外的硬件(串口工具);缺点是需要查询 IP,无法诊断硬件故障。
下载 putty 软件:锐米通信产品开发工具 - 长沙市锐米通信科技有限公司
从路由器查询 IP :如何在路由器中查询 LoRa 基站的 IP 地址 - 网关 - LoraWAN论坛 - Powered by Discuz!
4 源代码是如何组织的
网关的源代码有 2 部分,如下图所示。
SX1301 驱动代码 cd /home/rime/lora_gateway/libloragw/; ls -l
LoRa 转 UDP 代码 cd /home/rime/packet_forwarder/lora_pkt_fwd/; ls -l
5 如何查看/修改/编译源代码
登录网关 Linux 系统后,可以使用 less 命令查看源代码;使用 vi 可以编辑修改源代码。
因为网关 Linux 自带了 gcc 编译器环境,修改后的代码可以原地编译,不需要交叉编译器。
如果修改了 SX1301 驱动代码,这需要优先编译,因为 LoRa 转 UDP 代码依赖它。
先进入该目录 cd /home/rime/lora_gateway/libloragw/
执行 make 编译 sudo make clean all
小窍门:sudo 是让 guest 用户拥有 root 权限,clean 用于清除“旧”的编译文件,all 用于编译和链接生成可执行文件。
编译 LoRa 转 UDP 代码和上面相似。
先进入该目录 cd /home/rime/packet_forwarder/lora_pkt_fwd
执行 make 编译 sudo make clean all
6 如何运行二次开发后的代码
现代的 Linux 系统都是基于 systemd 来管理 service,二次开发并编译代码后,重启 service 即可生效。
重启 service 命令 sudo systemctl restart rime_gateway.service
7 如何复制源代码
基于 Linux 主机复制源代码 scp -r guest@192.168.1.121:/home/rime ./
基于 Windows 主机复制源代码
下载安装 WinSCP 软件(www.winscp.net) -> 新建会话 -> 主机名=192.168.1.121 -> 用户名=guest 密码=rimelink -> 登录