项目简介
本项目围绕Semtech LoRa SX1302集中器芯片,运用C/C++编程语言构建相关库和辅助程序,实现了LoRa网关的各项功能。该网关可将集中器接收到的RF数据包通过IP/UDP链路转发到服务器,同时也能处理服务器发送的RF数据包。
项目的主要特性和功能
- 核心库功能:提供
libloragw
库用于构建基于SX1302集中器芯片的网关,编译后的代码包含在libloragw.a
文件中,可静态链接到最终可执行文件,库中自带基本测试程序用于测试各子模块。 - 数据包转发:
packet_forwarder
程序可添加元数据后将RF数据包转发到服务器(上行链路),同时接收服务器数据并通过网关在无线信道传输(下行链路)。 - 下行链路辅助:
util_net_downlink
程序监听单个UDP端口,对PUSH_DATA和PULL_DATA数据报进行ACK响应,按固定间隔发送下行JSON数据包,还可将上行链路数据存储在本地CSV文件。 - 芯片ID获取:
util_chip_id
工具可配置SX1302以获取其EUI,作为网关ID使用。 - DFU模式切换:
util_boot
软件可将USB网关的集中器切换到DFU模式,以便对其内部的STM32 MCU进行编程。 - 频谱扫描:
util_spectral_scan
软件借助Semtech Corecell参考设计中的额外sx1261无线电进行频谱扫描。 - 初始化脚本:
tools/reset_lgw.sh
脚本通过CoreCell参考设计定义的GPIO对SX1302进行基本初始化,使SX1302退出复位状态并设置电源使能引脚,所有访问SX1302的程序都会调用该脚本。
安装使用步骤
1. 准备工作
确保已下载本项目的源码文件。
2. 编译
在项目根目录下,执行以下命令进行清理和编译:
sh
make clean all
3. 安装
3.1 配置安装目标
编辑项目根目录下的target.cfg
文件,配置可执行文件的安装位置:
- TARGET_IP
:设置网关主机的IP地址,若在网关主机(如树莓派)上编译项目,可设置为localhost
。
- TARGET_DIR
:设置可执行文件要复制到的网关主机文件系统目录,该目录在执行安装命令时必须存在。
- TARGET_USR
:设置用于执行SSH/SCP命令复制可执行文件的Linux用户。
3.2 免密码复制设置
为避免在安装文件时输入用户密码,需执行以下步骤:
- 在运行scp
命令的主机(host_src
)上,以运行scp
的用户身份执行:
sh
ssh-keygen -t rsa
按提示操作,直接按回车键跳过密码短语设置,生成私钥和公钥,公钥默认保存路径为~/.ssh/id_rsa.pub
。
- 将id_rsa.pub
文件传输到目标主机(host_dest
):
sh
ssh-copy-id -i ~/.ssh/id_rsa.pub user@host_dest
完成后,即可免密码登录host_dest
。
3.3 执行安装命令
执行以下命令安装可执行文件和关联文件:
sh
make install
若要安装数据包转发器的JSON配置文件,执行:
sh
make install_conf
4. 交叉编译(从PC进行)
若要从PC进行交叉编译,需执行以下步骤:
- 将对应目标平台编译器的二进制文件路径添加到PATH
环境变量。
- 设置ARCH
环境变量为arm
。
- 设置CROSS_COMPILE
环境变量为对应目标平台编译器的前缀。
以树莓派为目标的示例:
sh
export PATH=[path]/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
在设置上述环境变量的同一控制台中,执行:
sh
make clean all
5. USB相关设置
本项目支持SPI和USB网关。对于USB接口,集中器板上的STM32 MCU需使用项目mcu_bin
目录中的二进制文件进行编程,具体编程方法请参考util_boot/readme.md
说明。项目的每个测试工具可使用-u -d /dev/ttyACMx
命令行选项,或在数据包转发器的global_conf.json
文件中进行适当配置。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】