LoRaWAN网关源码分析(基础概念篇)

目录

一、简介

1、lora_gateway

2、packet_forwarder

 二、目录结构

1、lora_gateway

2、packet_forwarder


一、简介

        LoRaWAN网关的实现主要依赖两个源代码:lora_gateway和packet_forwarder。接下来,我们将从分析源代码入手,移植LoRaWAN源码,实现LoRaWAN网关的功能。

1、lora_gateway

        这是 Semtech 提供的 LoRa 网关的参考实现,主要包括基带网关驱动程序和一些实用工具。这个软件包主要负责网关硬件的底层控制,如收发数据包、配置射频参数等。通常与 Packet Forwarder 一起使用,以实现完整的网关功能。

基本功能:

  • 控制 LoRa 网关板卡上的射频芯片(如 SX1301 或 SX1302)。
  • 配置射频参数,如频率、带宽、数据率等。
  • 接收来自 LoRa 终端设备的上行数据包。
  • 发送下行数据包到 LoRa 终端设备。

源码下载地址:Lora-net/lora_gateway: Driver/HAL to build a gateway using a concentrator board based on Semtech SX1301 multi-channel modem and SX1257/SX1255 RF transceivers. (github.com)icon-default.png?t=N7T8https://github.com/Lora-net/lora_gateway

2、packet_forwarder

        是一个用于 LoRa 网关的参考实现,主要负责将从终端设备接收到的数据包转发到 LoRaWAN 网络服务器,并接收来自网络服务器的下行数据包进行发送。 

基本功能:

  • 接收 LoRa 网关的上行数据包,并通过网络协议发送到指定的 LoRaWAN 网络服务器(如 ChirpStack )。
  • 接收来自网络服务器的下行数据包,并通过网关的射频接口发送到终端设备。
  • 支持多通道接收,能够同时处理多个频率和数据率的数据包。

源码下载地址:Lora-net/packet_forwarder: A LoRa packet forwarder is a program running on the host of a LoRa gateway that forwards RF packets receive by the concentrator to a server through a IP/UDP link, and emits RF packets that are sent by the server. (github.com)icon-default.png?t=N7T8https://github.com/Lora-net/packet_forwarder

 二、目录结构

1、lora_gateway

      目录结构如下:

 (1)fpga:这个目录通常包含 FPGA 固件代码。如果 LoRa 网关硬件使用了 FPGA 来实现部分功能,这里可能会包含配置文件和代码。

(2)libloragw:这是 LoRa Gateway 的核心库包含硬件抽象层 (HAL) 的实现。libloragw 库提供了与 LoRa 网关基带芯片 (如 SX1301 或 SX1302) 进行通信的基础函数。

(3)LICENSE:该文件包含项目的许可证信息,说明了源码的使用和分发条件。

(4)Makefile:这是一个构建脚本,用于编译源码。你可以运行 make 命令来编译整个项目。

(5)readme.me:该文件通常包含项目的概述、使用说明和编译指南。阅读此文件可以快速了解如何使用和配置该项目。

(6)reset_lgw.sh:这是一个 Shell 脚本,用于重置 LoRa 网关的基带芯片。这通常在网关初始化或重新启动时使用。

(7)util_lbt_test:这个工具用于测试 Listen Before Talk (LBT) 功能。LBT 是一种频谱访问机制,确保设备在发送数据之前没有其他信号在使用该频谱。

(8)util_pkt_logger:这是一个数据包记录工具,用于记录从网关接收到的所有 LoRa 数据包。它对于调试和分析非常有用。

(9)util_spectral_scan:这个工具用于频谱扫描,可以帮助检测和分析特定频段内的频谱使用情况。

(10)util_spi_stress:这是一个 SPI 压力测试工具,用于测试网关与基带芯片之间的 SPI 通信的可靠性和稳定性。

(11)util_tx_continuous:这个工具用于进行连续传输测试,可以用于发射连续的 LoRa 信号以测试发射性能和覆盖范围。

(12)util_tx_test:这是一个传输测试工具,用于发送测试数据包以检查网关的发送功能。

(13)VERSION:这个文件通常包含项目的版本信息。

备注:

        以util_为前缀的工具主要是用于测试和调试的,并不会直接影响 LoRaWAN 网关的正常通信。接下来我的文章主要是整理核心库libloragw。

2、packet_forwarder

        目录结构如下:

(1) compile.sh:这是一个编译脚本,用于编译整个项目。你可以运行这个脚本来编译所有的源代码。

(2)LICENSE:该文件包含项目的许可证信息,说明了源码的使用和分发条件。

(3)lora_pkt_fwd:这是一个关键的应用程序,负责将接收到的 LoRa 数据包转发到 LoRaWAN 网络服务器,并处理从服务器接收的下行数据包。这个程序是网关实际运行中的核心部分之一。

(4) Makefile:这是一个构建脚本,用于编译项目的源代码。你可以运行 make 命令来使用 Makefile 进行编译。

(5)PROTOCOL.TXT:该文件通常包含关于 LoRaWAN 协议或项目中特定通信协议的详细描述。

(6)readme.md:该文件通常包含项目的概述、使用说明和编译指南。阅读此文件可以快速了解如何使用和配置该项目。

(7)util_ack:这是一个实用工具,用于测试和调试 ACK (Acknowledgment) 功能,主要是检查网关是否正确发送和接收 ACK 数据包。

(8)util_sink:这个工具用于接收和处理 LoRa 数据包,类似于数据包接收器或记录器。

(9)util_tx_test:这是一个传输测试工具,用于发送测试数据包以检查网关的发送功能。

(10)VERSION:这个文件通常包含项目的版本信息。

备注:

        接下来,我主要讲解lora_pkt_fwd,这是一个主要的程序,通常称为 "Packet Forwarder"。它负责将接收到的 LoRa 数据包通过互联网转发到 LoRaWAN 网络服务器(如 ChirpStack),并接收从服务器发送回的下行数据包。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力学代码的小信

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值