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),并接收从服务器发送回的下行数据包。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/757557.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu系统打包ISO镜像文件

本文以ubuntu20.04系统为例 1.Systemback简介 Systemback 是一个开源的系统备份和恢复工具,它主要用于 Linux 操作系统。Systemback 可以帮助用户创建完整的系统备份,包括操作系统、应用程序、用户数据等,并且可以在需要时将系统恢复到备份的…

后端之路第三站(Mybatis)——结合案例讲Mybatis怎么操作sql

先讲一下准备工作整体流程要做什么 我们要基于一个员工管理系统作为案例,进行员工信息的【增、删、改、查】 原理就是用Mybatis通过java语言来执行sql语句,来达到【增、删、改、查】 一、准备工作 1、引入数据库数据 首先我们把一个员工、部门表的数…

Modbus TCP与TCP/IP协议间的差异与应用场景

Modbus TCP概述 Modbus协议简介 Modbus是一种专为工业自动化系统设计的通信协议,采用主从模式,即一个主设备(通常是计算机或可编程逻辑控制器)与多个从设备(如传感器、执行器等)进行通信。Modbus协议具有…

cesium使用cesium-navigation-es6插件创建指南针比例尺

cesium-navigation-es6 是一个为 Cesium.js 提供导航控件的库,它提供了一些常见的用户界面组件,用于在 Cesium 场景中实现用户导航和交互。下面将介绍如何在项目中使用 cesium-navigation-es6。 使用步骤 1. 安装 cesium-navigation-es6 首先&#xf…

成品视频素材下载网站有哪些?剪辑好可以用的视频素材网站分享

对于初学者在制作短视频时,常常希望能够快速获取高质量的素材。如果你正计划从事短视频创作,这里推荐几个优秀的成品素材网站,希望能对你有所帮助。 首先推荐的是蛙学网 作为国内用户首选的成品视频素材平台之一。这里提供丰富的视频素材库&…

phpstorm2024代码总是提示“no usages”或者“无用法”解决办法

问题:phpstorm2024使用时,总是会提示无用法,如果没有安装中文语言包的情况下会提示:no usages,如果想关闭怎么办? 编译器右上角点击齿轮进入设置,按照下图的方法点击即可关闭。或者在编译器的“…

AI场景落地之:快速搭建企业智能客服

企业智能客服可以大大简化企业的客服成本,也是企业AI应用落地的一个主要场景,本篇内容我们围绕智能客服相关的几个需求来进行阐述如何通过ThinkBot启智来快速搭建一个实用的企业智能客服。 关于启智 ThinkBot启智2.0是一个基于LLM大模型的AI应用构建引擎…

[鹏城杯 2022]babybit

发现一个压缩包提取出来提取出来两个压缩包里面是注册表使用MiTeC Windows Registry Recovery 恢复注册表 flag在ROOT\ControlSet001\Control\FVEStats里的OsvEncryptInit和OsvEncryptComplete中 NSSCTF{2022/6/13_15:17:39_2022/6/13_15:23:46}

Nettyの粘包、半包问题框架解决方案自定义协议

1、Netty框架是如何解决粘包、半包问题 关于粘包,半包问题,在前面几篇中都有提及,我们简单的复习一下。 粘包指的是客户端发出的多条消息,被服务端当做一条进行接收。半包指的是客户端发出一条完整的消息,在传输的过程…

基于ACO蚁群优化的城市最佳出行路径规划matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于ACO蚁群优化的城市最佳出行路径规划matlab仿真,可以修改城市个数,输出路径规划结果和ACO收敛曲线。 2.测试软件版本以及运行结果展示…

51单片机STC89C52RC——8.2 8*8 LED点阵模块(动态图像)

目的/效果 在《51单片机STC89C52RC——8.1 8*8 LED点阵模块(点亮一个LED)》我们点亮一个LED,接下来我们将在8*8的矩阵中展示动态的图像。 1:单列展示: 2:单行展示 3:笑脸 4:右移…

查看linux服务磁盘类型

查看linux服务磁盘类型 查看当前服务器磁盘挂载类型 df -h2. 查看/dev/mapper/centos-root挂载卷类型 # 查询 lsblk# 查询磁盘类型 lsblk -d -o name,rota | grep sda # 说明 sda 0 代表固态硬盘ssd sda 1 代表机械硬盘hdd

haproxy实现代理和负载均衡

HaProxy介绍: haproxy是法国开发者威利塔罗在2000年使用C语言开发的一个开源软件,是一款具备高并发(一万以上)、高性能的TCP和HTTP负载均衡器,支持基于cookie的持久性,自动故障切换,支持正则表达式及web状态统计&…

算法基础-----【递归回溯】

1、递归 递归是一种算法结构,递归会出现在子程序中自己调用自己或间接地自己调用自己。递归就是分为递去和归来。 递去:递归的问题必须可以分解为若干规模较小,与原问题相同的子问题,这些子问题可以用相同的解题思路解决。 归来…

[Go 微服务] Kratos 使用的简单总结

文章目录 1.Kratos 简介2.传输协议3.日志4.错误处理5.配置管理6.wire 1.Kratos 简介 Kratos并不绑定于特定的基础设施,不限定于某种注册中心,或数据库ORM等,所以您可以十分轻松地将任意库集成进项目里,与Kratos共同运作。 API -&…

【工具推荐】ONLYOFFICE 桌面编辑器 8.1:引入全新功能,提升文档处理体验

ONLYOFFICE 桌面编辑器 8.1 现已发布:功能完善的 PDF 编辑器、幻灯片版式、改进从右至左显示、新的本地化选项等 【工具推荐】ONLYOFFICE 桌面编辑器 8.1:引入全新功能,提升文档处理体验 一、什么是ONLYOFFICE? ONLYOFFICE 是…

Java新手启航:Windows下JDK安装,开启编程之旅

你是不是对编程充满好奇,想要迈入Java的世界,却不知道从何开始?别担心,每一个Java大师都是从安装JDK开始的,而今天,我将手把手教你如何轻松完成JDK的安装,让你迈出编程之旅的第一步! 接下来&am…

深入解析内容趋势:使用YouTube API获取视频数据信息

一、引言 YouTube,作为全球最大的视频分享平台之一,汇聚了无数优质的内容创作者和观众。从个人分享到专业制作,从教育科普到娱乐休闲,YouTube上的视频内容丰富多彩,满足了不同用户的需求。对于内容创作者、品牌以及希…

第三十六篇——最大熵原理:确定的答案找到之前,我们该做什么?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 又双叒叕一个伟大的原理,又双叒叕觉得太伟大了,知…

解释什么是lambda函数?它有什么好处?

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…