Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
ART-Pi
SX1302
基于ART-Pi与SX1302的lora-pkt-sniffer抓包工具应用笔记
发布于 2021-09-15 07:24:54 浏览:2527
订阅该版
[tocm] # 1 前言 本文描述了基于RTOS(RT-Thread)、ART-Pi[STM32H7]、LRS007+SX1302、lora-pkt-sniffer软件包等实现的LoRa Packet Sniffer抓包工具。lora-pkt-sniffer抓包工具可用于捕获与解析空口的LoRa(WAN)数据包,可辅助理解LoRa私有协议\LoRaWAN协议、排查LoRa\LoRaWAN产品开发中可能遇到的问题等。 lora-pkt-sniffer软件包详细说明可查看《[lora-pkt-sniffer软件包使用说明](https://github.com/Forest-Rain/lora-pkt-sniffer/blob/master/docs/ReadMe_lora-pkt-sniffer.md)》 本文示例代码如下 - [https://github.com/Forest-Rain/sdk-bsp-stm32h750-realthread-artpi/tree/master/projects/lrs007_lora_pkt_sniffer](https://github.com/Forest-Rain/sdk-bsp-stm32h750-realthread-artpi/tree/master/projects/lrs007_lora_pkt_sniffer) ## 1.1 功能简介 基于ART-Pi lora-pkt-sniffer抓包工具当前主要支持以下功能: - 抓取空口LoRa数据包 - 8个并行的LoRa BW125KHz通道 - 支持CRC过滤机制 - 串口shell支持参数读写,模式控制等 - 可动态灵活配置与重启lora-pkt-sniffer的运行参数 - 支持设定8个LoRa接收信道 - 支持自定义频率组方式 - 支持自动设置频率组方式等 - 支持设定上行\下行(IQ反向接收) - 支持设定LoRaWAN公网\私有 - 支持CRC过滤机制等 - 支持抓包暂停\恢复\重启等 - 私有lora协议原始数据抓取 - LoRaWAN1.0.x协议数据抓取 - 支持解析与格式化lorawan 1.0.x(解密)数据显示 - 支持注册\删除\配置\过滤终端设备等 - 支持设置OTAA三要素、ABP三要素 - 支持修改设备的Fcnt - 支持白名单过滤机制,只接收与解析白名单的数据帧 - 可指定设备DevEUI,用于OTAA设备入网过程 - 可指定设备DevAddr,用于ABP设备或者OTAA设备通信过程 - 支持LoRaWAN同频模式(如CN470同频、EU868、AS923等)双向抓包 - 支持LoRaWAN异频模式(如AU915异频等)上行\下行单方向分别抓包 - 支持参数掉电存储 - 恢复出厂参数 - 掉电保存等 - 支持多种北向接口与解析方式 - 本地串口直显 - 北向通过UART与PC端串口助手(如mobaxterm等)传输 - 本地直接进行LoRaWAN协议解析与格式化处理与数据帧实时显示 - Wireshark显示模式 - 北向通过WIFI\ETH(UDP)与PC传输 - 通过Wireshark进行协议实时解析 ## 1.2 准备工作 ### 1.2.1 所需硬件 - [ART-Pi 开源平台](https://art-pi.gitee.io/website/) - RT-Thread官方开源硬件平台  - [ART-Pi LoRa开发套件](http://wsn.lierda.com/index.php/Home/product/detail/id/113.html) - LoRa扩展板(LRS007) - SX1302模块 - [LSD4WN-2K730NE0(SX1302) Mini PCIe模块](http://wsn.lierda.com/index.php/Home/product/detail/id/100.html) - TX 470~510MHz,最大发射功率~22dBm - RX 470~480MHz - [LSD4WN-2K830NE0 (EU868频段)](http://wsn.lierda.com/index.php/Home/Product/detail/id/99.html) - TX: 860~870 MHz,最大发射功率~27dBm - RX: 860~870 MHz  ### 1.1.2 所需软件 - IDE开发工具 - [RT-Thread Studio 最新版本](https://www.rt-thread.org/document/site/rtthread-studio/um/studio-user-begin/) - MDK5 - ART-Pi SDK开发包 - [https://github.com/RT-Thread-Studio/sdk-bsp-stm32h750-realthread-artpi](https://github.com/RT-Thread-Studio/sdk-bsp-stm32h750-realthread-artpi) - lora-pkt-sniffer软件包 - lora(wan)数据包抓包与解析 - [https://github.com/forest-rain/lora-radio-driver](https://github.com/forest-rain/lora-radio-driver) # 2 基于ART-Pi的lora-pkt-sniffer抓包工具的系统概述 ## 2.1 基于ART-Pi的lora-pkt-sniffer抓包工具的功能框图 lora-pkt-sniffer抓包工具功能框图如下所示  lora-pkt-sniffer抓包工具上电后, lora-pkt-sniffer抓包工具支持两种数据包解析方式,分别是 - 本地串口直显模式(基础显示) - lps北向通过串口连接到PC shell工具) - lps接收到空口lora数据包后,根据lorawan协议解析,然后通过串口输出格式化后的数据包到PC的串口调试工具(如MobaXterm...) - Wireshark显示模式(在本地串口直显模式基础上,额外通过Wireshark解析) - lps北向通过ETH、WiFi连接到PC Wireshark工具 - lps接收到空口lora数据包后,自动重组loratap帧头,打包成满足wireshark格式的数据帧,最后通过UDP输出到PC Wireshark > lora-pkt-sniffer抓包工具默认接收参数: > - 8个LoRa信道: 475.3、475.5、475.7、475.9、476.1、476.3、476.5、476.7 > - 多速率: SF7~SF12 # 3 lora-pkt-sniffer抓包工具使用说明 ## 3.1 依赖 ### 3.1.1 RT-Thread lora-pkt-sniffer抓包工具目前主要基于RT-Thread 4.0.3测试验证。 ### 3.1.2 lora-pkt-sniffer 软件包 lora-pkt-sniffer抓包工具主要使用 lora-pkt-sniffer 软件包。 使用 lora-pkt-sniffer 软件包,需要在 RT-Thread 的包管理中选中它: ```c RT-Thread online packages ---> IoT - internet of things ---> [*] lora_pkt_sniffer is a sniffer tool of lora(wan) packets. ---> [*] Enable Wireshark Mode [*] Use lora-gw-driver-lib Select lora-pkt-sniffer Debug ---> Version (latest) ---> ``` - lora-gw-sniffer 软件包默认采用本地串口直显模式 - 如果需要同时使用Wireshark显示模式,则勾选"Enable Wireshark Mode" - 注意Wireshark模式,lora-pkt-sniffer抓包工具作为UDP客户端,使用的是内核Network组件,因此要求板子wifi或者eth功能是OK ```c RT-Thread Components ---> Network ---> Network interface device ---> -*- Enable network interface device [*] Enable ifconfig features -*- Enable ping features [*] Enable netstat features [*] Enable default netdev automatic change features [ ] Enable IPV6 protocol support ``` ### 3.1.3 lora-gw-driver-lib软件包 使能lora-pkt-sniffer 软件包后,会自动使能lora-gw-driver-lib软件包,lora-gw-driver-lib为lora网关芯片(sx130x)驱动包,提供了lora数据包收发、lora数据帧格式、lorawan解析等功能服务。 使能lora-gw-sniffer软件包后,会自动使能lora-gw-driver-lib软件包。 用户需要根据实际使用的LoRa网关模块,对lora-gw-driver-lib软件包进行额外的配置(如配置跟SX130x模块相关的GPIO引脚等) 目前lora-gw-driver-lib软件包已适配ART-Pi+ LRS007[LSD4WN-2K730NE0(SX1302)],因此在ART-Pi中使用,直接使能即可。 ```c RT-Thread online packages ---> peripheral libraries and drivers ---> [*] lora_gw_driver_lib: lora-gw-driver-lib is lora gateway chip(SX130x) driver binary libraries. ---> Select LoRa Gateway Chip (SX1302) ---> (lgd1302) Setup LoRa Gw Driver Spi Device Name (spi2) Setup LoRa Gw Driver Spi Bus Name (eg:spi1,spi2..,Define BSP_USING_SPIx in [Target Platform]\Board\Kconfig) (i2c3) Setup LoRa Gw Driver I2C Device Name for Temperture(eg:i2c1,i2c2..,Define BSP_USING_IICx in [Target Platform]\Board\Kconfig) [ ] Select lora-gw-driver Services [*] Enable lora-gw-driver GPIO Setup Select Supported Target Borad ---> --- ART-Pi and LRS007[LSD4WN-2K730NE0(SX1302)] [ ] Select LoRa Gw GPIO by Pin Name (NEW) [*] Select LoRa Gw GPIO by Pin Number (NEW) (128) LoRa Gw SPI NSS Pin number (NEW) (15) LoRa Gw RESET Pin number (NEW) (126) LoRa Gw PowerOn Pin number (NEW) (127) LoRa Gw PPS Pin number (NEW) (119) LoRa Gw GPIO6 Pin number (NEW) Select LoRa GW Driver Samples ---> Version (latest) ---> ``` ### 3.1.4 ulog组件 lora-pkt-sniffer抓包工具使用ulog打印\过滤详细的日志信息等 - 使能ulog - ulog缓存大小设置≥ 2048 Byte - 可选 使能ulog内置过滤功能 - 可根据需要过滤不同等级的日志 ```c RT-Thread Components ---> Utiliess ---> [*] Enable ulog The static output log level. (Debug) ---> [ ] Enable ISR log. [*] Enable assert check. (2048) The log's max width. ``` ### 3.1.5 Easyflash组件 lora-pkt-sniffer抓包工具使用了easyflash进行参数的掉电存储与恢复 ```c RT-Thread online packages ---> tools packages ---> [*] EasyFlash: Lightweight embedded flash memory library. ---> ``` ## 3.2 硬件测试平台 lora-pkt-sniffer工具当前所使用的硬件测试平台如下所示 | 序号 | 硬件平台 | MCU | LoRa模块 | 主要用户接口 | | :-- | --- | --- | --- | --- | | 1 | ART-Pi | STM32H750XB | [LSD4WN-2K730NE0](http://bbs.lierda.com/forum.php?mod=viewthread&tid=87)
[ ( SX1302 )](http://bbs.lierda.com/forum.php?mod=viewthread&tid=87) |
- 用户接口定义
- VCC - 3.3V
- GND
- SCK - PI1 (SPI2)
- MISO - PI2 (SPI2)
- MOSI - PI3 (SPI2)
- NSS - PI0
- RESET - PA15
- POWER_ON - PH14
- GPIO6- PA8
| # 4 使用示例 ## 4.1 lora-pkt-sniffer工具shell操作示例  lora-pkt-sniffer工具支持的shell命令可查看 lora-pkt-sniffer 软件包说明。 - lps suspend 挂起当前lps rx线程,暂停接收空口数据包 - lps probe查询设备 - lps srv 查询服务器地址(用于wireshark显示模式) - lps nif 查询北向接口(串口、wifi等) - lps mac 查询lorawan公网设置等 - lps phy 查询crc过滤设置等 - lps deveui 查询注册的设备(用于OTAA设备入网) - lps devaddr 查询注册的设备 (用于ABP设备或者OTAA设备) - lps deveui d896e0ff00010b0c add 使用deveui注册一个OTAA设备{d896e0ff00010b0c } - 缺省appeui为11223344556667780 - 缺省appkey为d896e0ff00010b0c d896e0ff00010b0c - lps deveui d896e0ff00010b0c del 删除一个OTAA设备{d896e0ff00010b0c } - lps devaddr 11223344 add 使用devaddr注册一个(OTAA\ABP)设备{11223344 } - 缺省appskey为001122334455666778899aabbccddeeff - 缺省nwkskey为001122334455666778899aabbccddeeff - lps devaddr 11223344 del 使用devaddr删除一个设备{11223344 } - lps resume 恢复lps rx线程,重新开始接收空口数据包 - ... ## 4.2 本地直显模式示例  本地串口直显模式 - lora-pkt-sniffer工具捕获空口lora数据,北向通过uart连接到PC串口调试助手(MabaXterm) - lora-pkt-sniffer工具的工作频点 - 上行8个LoRa信道: 475.3、475.5、475.7、475.9、476.1、476.3、476.5、476.7 - 多速率: SF7~SF12 - 终端设备注册 - 如果需要解密数据,需要先注册设备(如果不需要解密数据,则无需注册设备) - 入网数据 join request、join accept - 通信通信 - 设备上报 data confirm up - 服务器应答 data unconfirm down ## 4.3 Wireshark显示模式示例 ### 4.3.1 Wireshark参数配置 1. wireshark工具栏 -> "分析" -> "启用的协议"("Enabled Protocols"),在弹出的对话框中,勾选使用LoRaTap、LoRaWAN。   2. wireshark工具栏 ->"分析" -> 选择实际使用端口,“当前”下拉框中选择 LoRaTap或者LoRaWAN 1. 比如当前应用使用的UDP port = 8441,“当前”选择为LoRaTap。  ### 4.3.2 Wireshark抓包  - wireshark过滤器设置lorawan(上图最上面绿色一栏) - lora-pkt-sniffer工具捕获空口lora数据,北向通过wifi连接到PC ,同时通过串口与Wireshark解析与显示 - lora-pkt-sniffer工具的工作频点 - 上行8个LoRa信道: 475.3、475.5、475.7、475.9、476.1、476.3、476.5、476.7 - 多速率: SF7~SF12 - 通信通信 - 设备上报 data confirm up - 服务器应答 data unconfirm down # 5 注意事项 1. LoRa网关模块(SX1302)需连接天线后使用,避免因未接天线导致天线阻抗不匹配,进而影响接收的情况 1. 在实验室等极近距离通信(比如1~2米),可能会出现邻信道干扰情况,这种场景,可适当拉远距离或者减小发送端的发射功率等 1. 为了保证日志输出完整,ulog日志最大长度可设置大些,比如≥2048 1. 当前在ART-Pi平台测试发现MPU使能的时候,会出现SPI访问不稳定情况,目前采用的是不使能MPU的方式 1. 配置STM32CubeMX后,出现Error: L6218E: Undefined symbol DelayBlock_Enable,解决方式如下 > 手动修改 stm32h7xx_hal_conf.h USE_SD_TRANSCEIVER 为0 > \#define USE_SD_TRANSCEIVER 0U # 6 参考 - Semtech SX1302 libloragw - https://github.com/Lora-net/sx1302_hal/tree/master/libloragw - Semtech官方资料 - [https://www.semtech.com/lora](https://www.semtech.com/lora) - RT-Thread官方资料 - [https://www.rt-thread.org/](https://www.rt-thread.org/) - wireshark官方资料 - [https://www.wireshark.org/](https://www.wireshark.org/)
1
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
ForestRain
这家伙很懒,什么也没写!
文章
12
回答
12
被采纳
5
关注TA
发私信
相关文章
1
RT-Thread Studio 编译ART-Pi 的SDK报错 求助!-
2
ART-Pi 在 Studio 中使用TouchGFX Library 编译报错
3
RT-Thread Studio 更新错误
4
基于ART-Pi开发板创建的工程,RT-Thread Settings打不开
5
在 ART-Pi 平台使用 openocd 直接烧录到外部 spi flash?
6
ART-Pi工程用mdk5打开后提示文件找不到
7
ART-PI demo是否能够增加demo流程框图或者详细设计文档
8
ART-Pi 的ST_Link无法识别
9
请把ART-Pi仓库放到gitee上一份。
10
仅有ART-Pi开发包时,RTT Studio无法创建ART-Pi工程
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
I2C_IIC
UART
ESP8266
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
10
个答案
3
次被采纳
xiaorui
3
个答案
2
次被采纳
winfeng
2
个答案
2
次被采纳
三世执戟
8
个答案
1
次被采纳
KunYi
8
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
lizimu
2
篇文章
9
次点赞
swet123
1
篇文章
4
次点赞
Days
1
篇文章
4
次点赞
YZRD
1
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部