littlebot
Published on 2025-04-12 / 1 Visits
0

【源码】基于CC++编程语言的SX1302 LoRa网关项目

项目简介

本项目围绕Semtech LoRa SX1302集中器芯片,运用C/C++编程语言构建相关库和辅助程序,实现了LoRa网关的各项功能。该网关可将集中器接收到的RF数据包通过IP/UDP链路转发到服务器,同时也能处理服务器发送的RF数据包。

项目的主要特性和功能

  1. 核心库功能:提供libloragw库用于构建基于SX1302集中器芯片的网关,编译后的代码包含在libloragw.a文件中,可静态链接到最终可执行文件,库中自带基本测试程序用于测试各子模块。
  2. 数据包转发packet_forwarder程序可添加元数据后将RF数据包转发到服务器(上行链路),同时接收服务器数据并通过网关在无线信道传输(下行链路)。
  3. 下行链路辅助util_net_downlink程序监听单个UDP端口,对PUSH_DATA和PULL_DATA数据报进行ACK响应,按固定间隔发送下行JSON数据包,还可将上行链路数据存储在本地CSV文件。
  4. 芯片ID获取util_chip_id工具可配置SX1302以获取其EUI,作为网关ID使用。
  5. DFU模式切换util_boot软件可将USB网关的集中器切换到DFU模式,以便对其内部的STM32 MCU进行编程。
  6. 频谱扫描util_spectral_scan软件借助Semtech Corecell参考设计中的额外sx1261无线电进行频谱扫描。
  7. 初始化脚本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】