0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

应用笔记 | STM32WL LoRa节点入网失败问题分析总结

STM32单片机 来源:未知 2023-09-27 17:10 次阅读


关键字:STM32WL,LoRaWAN,入网,OTAA



目录预览

1.引言

2.LoRaWAN网络架构

3.创建CubeMX工程

4.移植过程中可能遇到的问题

5.小结


01

前言


客户刚使用STM32WL做LoRa节点应用开发或测试过程中,有时会遇到LoRa节点入网失败的问题。使用STM32WL开发的LoRa节点加入的网络可能是标准的LoRaWAN网络或者是私有的LoRa网络。这篇文章会总结常见的LoRa节点入网失败的问题。考虑到私有LoRa网络的多样性以及无论是私有LoRa网络还是标准的LoRaWAN网络,它们在入网流程中都有许多相近的地方。本文会选取加入LoRaWAN网络失败的问题进行分析。而私有LoRa节点入网失败问题则可以参考类似的分析思路。


02

LoRaWAN网络结构


我们先来简单了解一下LoRaWAN网络架构:



如图一(图片来源:http://lora-alliance.org/about-lorawan/)LoRaWAN网络架构一般包含LoRaWAN节点(DEVICE),LoRaWAN网关(GATEWAY),LoRaWAN网络服务器(NETWORK SERVER,里面又包含Roaming和JOIN SERVER)以及应用服务器(APPLICATION SERVER)。LoRaWAN节点通过网关加入到LoRaWAN网络并将数据通过网关转发到网络服务器和应用服务器。在节点入网之前,需要完成以下步骤:


注:下面以STM32WL LoRaWAN节点,STM32MP1+ RAK2287网关以及Loriot网络服务器举例。


1. 选择合适的LoRaWAN网络服务器注册LoRaWAN网关,注册网关一般需要配置网关配置网络服务器的地址,端口号,以及网关地址。如图二



2. 网关通过网线或WiFi连接到网络服务器,如图三显示网关和网络服务器连接成功。



3. 获取STM32WL LoRa节点DevEUI,AppEUI,AppKey,如图四。并在网络服务器填入相应的节点DevEUI,AppEUI,AppKey注册节点。如图五



4. 当前面步骤都准备就绪后,将STM32WL节点和网关上电,如果STM32WL节点和网关工作频段一致就可以通过网关以OTAA方式正常加入到LoRaWAN网络中,如下图六显示的STM32WL节点成功入网的串口log。节点开始和网络服务器和应用服务器的正常数据通信。如图七所示网络服务器上收到的数据。



03

LoRaWAN入网流程


下面我们从LoRaWAN协议的角度进一步介绍入网过程。LoRaWAN定义的入网流程有两种:


1. Over-the-Air Activation(OTAA)

2. Activation By Personalization(ABP)


OTAA方式,基于全局唯一标识符,自由加入LoRaWAN网络,有空中消息握手的过程,可以定期更新安全密钥(会话密钥和派生密钥)


ABP方式,生产时存储共享密钥,省去空中握手过程,节点锁定到特定网络。上电后,设备立即开始工作;跳过加入程序


对比两种入网方式,可以知道OTAA方式安全性更高,它后续用于数据加解密的密钥在空中握手的时候生成,并且可以定期更新。而ABP方式,它的密钥在出厂的时候写死在节点,被破解的风险更大。下图八中也列出了两种入网方式节点配置参数的区别。由于OTAA方式更安全,使用较多。从它也可以更清楚了解入网的完整过程,下面会以OTAA的方式进一步介绍入网的流程。



OTAA的详细入网流程如下图九所示,首先LoRaWAN节点会发送Join Request消息通过网关给网络服务器,网络服务器收到请求后会根据消息里面的DevEUI,AppEUI进行验证,验证通过后发送一个Join Accept的消息返回给节点。发送Join Request请求之前,需要先准备节点的三个参数,也就是前面提到过的DevEUI,AppEUI,AppKey。对于STM32WL只要节点有烧写相应的LoRaWAN End node例程的软件,可以通过串口查看这三个参数,如图十所示。在这里需要注意的是节点端发送的Join Request消息没有被加密,只有MIC完整性校验。而收到的Join Accept消息是经过加密的,节点需要使用AppKey解密才能拿到网络服务器下发的明文消息。节点会用Join Accept消息里解析的AppNonce(JoinNonce)和自己本身就有的AppKey,DevNonce一起生成后续用于数据加密的网络会话密钥NwkSKEY,和应用会话密钥AppSKey,如图十一(其中Join EUI就是AppEUI)。这两个密钥分别用于后续节点和网络服务器数据通信加密,和节点与应用服务器数据通信加密。生成会话密钥后,后面就是正常的数据传输流程。



04

入网失败常见问题总结



接上面介绍的入网流程,有时会遇到以下入网失败的情况。它们可以按前面介绍的入网流程的步骤逐一分析,也就是按LoRaWAN节点——LoRaWAN网关——LoRaWAN网络服务器之间的通信进行分析,检查是哪个环节导致入网失败:


1.LoRaWAN网关——LoRaWAN网络服务器通信失败,导致节点入网失败


入网过程中,网关的作用是将节点的Join Request信息转发给网络服务器,如果网关和网络服务器通信失败,节点会因为网络服务器没办法收到Join Request并对其进行校验而导致入网失败。一般网关与网络服务器通信失败,在网络服务器上会显示网关的处于断开状态。解决方法是先检查网关的网络连接,比如检查网关的网口或WiFi连接是否正常。如果网络连接没问题,如前面介绍,则需要进一步检查网关注册时网关配置的网络服务器地址,端口号,以及网关地址有没错误。如果以上两点确认没问题,网关和网络服务器一般可以正常通信。


2. LoRaWAN节点——LoRaWAN网关通信失败,导致节点入网失败


节点和网关通讯失败又可以分以下几种情况:


(1)节点工作频段和网关工作频段不一致,导致通信节点和网关通信失败。这种情况,只能重新配置其中一方的工作频段,或是修改节点端或是修改网关端的工作频段,使其工作频段保持一致。需要注意的是即使使用的是同一个工作频段,比如EU868或CN470,因为在EU868或CN470里,还会以868MHZ或470MHZ为中心频点,按使用带宽划分很多个不同的工作频道,如图十二,图十三所示,而具体的工作频道不一致也会导致入网失败。针对节点使用STM32WL LoRaWAN End Node例程可以在相应的region头文件里修改工作频道,比如使用的是CN470,可以在RegionCN470.h里修改节点端的工作频道。至于网关,有的可以通过串口AT指令对其工作频道进行修改。



(2)节点和网关的调制参数配置不一致,导致其入网失败。这里调制参数包括:BW,SF,CR,LDRO。这种情况解决方法很简单,只要把节点或网关的参数修改成一致就能解决,如图十三显示网关的SF7/SF12 BW125KHZ。这里需要注意的是STM32WL LoRaWAN End Node例程中低速优化LDRO在设置SF=11或12时会默认打开,如果网关端没有打开LDRO也会导致通信失败。所以在使用SF=11或12时,要检查LDRO的设置。


(3)节点的RF性能太差导致入网失败。RF性能差有可能是因为节点没有接天线,导致通信距离短,或是节点的RF输出功率Tx或接收灵敏度本身太差导致通信失败。第一种的解决办法,只要把节点和网关靠近测试或加上天线测试就能解决。第二种情况则需要重新调试射频线路的阻抗匹配或者需要重新改版才能解决。这里需要注意的是,STM32WL节点的工作频段都是从外部32MHZ晶振信号倍频上去的,如果32MHZ晶振精度不满足要求(一般建议是10ppm)也会导致灵敏度变差。另一种情况是在使用BGA封装的型号,且RF Tx功率输出设置成22dBm输出时,PCB容易发热导致晶振产生温漂,进而降低32MHZ的精度,导致灵敏度变差。灵敏度变差也容易导致通信失败。针对32MHZ晶振的使用,客户可以参考STM32WL规格书DS13105,如图十四,选择合适的晶振。如果考虑温漂,可以使用TCXO晶振。




3. LoRaWAN节点——LoRaWAN网络服务器通信失败,导致节点入网失败。


节点和网络服务器通信失败有可能是下面两种情况:


(1)在网络服务器上注册的三个节点参数DevEUI,AppEUI,AppKey,和节点本身对应的参数不匹配。如果DevEUI或AppEUI配置不一致,则网络服务器不会审核通过Join Request请求,不会下发Join Accept消息给节点。如果AppKey不一致,则节点无法解析节点下发的Join Accept数据,以至于无法取出AppNonce用于生成后续通信使用的会话密钥。从而导致入网失败。解决办法是确保节点和网络服务器端的DevEUI,AppEUI,AppKey三个参数一致。


(2)节点加入网络成功后,后续无法再正常加入网络问题:这个问题的出现一般是因为Join Request中的各个参数固定,比如上面节点的DevEUI,AppEUI是可以固定的值,但DevNonce在每次发Join Request时,它的值是不一样的。DevNonce存放的其实是一个从零开始的计数器的值,在每一次的Join Request这个计数器会自动增加。如果节点重启,它的值会存储在非易失性NVM存储器中,而且它会和AppEUI绑定。对应于同一个节点的AppEUI,DevNonce的值不能重复使用。否则这个Join Request会被网络服务器忽略,继而导致入网失败。这也是为什么当DevNonce的值固定后,第一次入网能成功,而后续入网会失败。


05

小结


本文简单介绍了STM32WL LoRa节点在LoRaWAN网络中的工作框图以及其入网流程。根据入网流程和各个环节之间的通信总结了可能导致入网失败的因素,并给出了相应的解决办法。


完整内容请点击“阅读原文”下载原文档。


订阅号

关注STM32

视频


B站账号


点击“阅读原文”,可下载原文档


原文标题:应用笔记 | STM32WL LoRa节点入网失败问题分析总结

文章出处:【微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6035

    文章

    44554

    浏览量

    634660
  • STM32
    +关注

    关注

    2270

    文章

    10895

    浏览量

    355744

原文标题:应用笔记 | STM32WL LoRa节点入网失败问题分析总结

文章出处:【微信号:STM32_STM8_MCU,微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    X-CUBE-CLASSB以及生态系统为何如此重要

    ‍‍‍‍‍‍‍‍ X-CUBE-STL目前支持STM32MP1、STM32U5、STM32L5、STM32H5和STM32WL。实
    的头像 发表于 11-07 14:01 295次阅读

    使用STM32WL系列Sub-GHz无线驱动程序的应用示例

    STM32WL系列器件包括内置的低于1GHz无线外设 ( Sub-GHz 指的是低于 1GHz 的无线电频段 ),能够支持LoRa(仅限STM32WLE5/55器件)、(G)FSK、(G)MSK
    的头像 发表于 07-18 10:20 4540次阅读
    使用<b class='flag-5'>STM32WL</b>系列Sub-GHz无线驱动程序的应用示例

    芯海应用笔记:通用 MCU IAR 开发指南

    本应用笔记旨在帮助指导用户针对芯海通用 MCU 基于 IAR 环境的快速开发,帮助用户快速建立应用工程。芯海科技通用 MCU 提供的 pack 开发包都是仅支持芯海 CSU、MDK 或 IAR 通用
    发表于 05-16 11:50

    芯海通用 MCU 应用笔记 :CS32F103 系列 MCU IAP 升级指南

    本应用笔记旨在帮助指导用户针对芯海 CORTEX-M3 MCU CS32F103 系列单片机 IAP 应用的快速开发。本应用笔记实现了 CAN 和 USART 两种接口方式来开发 IAP 应用,协议
    发表于 05-16 11:40

    芯海CSU18P88应用笔记

    本应用笔记旨在为用户提供关于CSU18P88的详细信息和使用指南,帮助用户快速开发基于CSU18P88的应用。*附件:CSU18P88应用笔记V1.5.pdf
    发表于 05-16 10:24

    CSU18MX86应用笔记

    本应用笔记旨在为用户提供关于CSU18MX86的详细信息和使用指南,帮助用户快速开发基于CSU18MX86的应用。*附件:CSU18MX86应用笔记_V1.0.pdf
    发表于 05-16 10:21

    CAN-bus应用笔记节点

    在CAN-bus电路设计中,理论上收发器支持节点数最多可做到110个,但实际应用中往往达不到这个数量。今天我们就来谈谈如何通过合理的CAN-bus总线设计,保证CAN网络中的通讯的可靠性和节点
    的头像 发表于 05-12 08:24 553次阅读
    CAN-bus应<b class='flag-5'>用笔记</b>:<b class='flag-5'>节点</b>篇

    st官网lora节点程序OTAA模式加入网络后,把网关与服务器的连接断开后,节点是否一直持续发送数据?

    st官网lora节点程序OTAA模式加入网络后,把网关与服务器的连接断开后,节点是否一直持续发送数据?
    发表于 04-28 06:54

    Microchip TCP/IP 协议栈应用笔记

    电子发烧友网站提供《Microchip TCP/IP 协议栈应用笔记.pdf》资料免费下载
    发表于 04-17 14:16 1次下载

    STM32CubeMX STM32WL不能配置LoRaWAN的原因?

    STM32CubeMX 中使用STM32WL配置LoRaWAN时不能配置,请问为什么?
    发表于 04-02 07:47

    请问wl55启用LoRa的最小系统与f1系列最小系统有什么不同?

    wl55启用LoRa的最小系统与f1系列最小系统有什么不同吗?
    发表于 03-27 06:13

    LoRa网关+LoRa节点的特点和优势

    LoRa网关是连接终端设备和LoRaWAN网络的设备,负责收集来自多个LoRa基站的数据并将其传输到云端。 LoRa网关收集LoRa节点
    的头像 发表于 03-19 17:02 1384次阅读
    <b class='flag-5'>LoRa</b>网关+<b class='flag-5'>LoRa</b><b class='flag-5'>节点</b>的特点和优势

    STM32WL添加DSP库后用IDE编译报错“uses VFP register arguments”怎么解决?

    STM32WL添加DSP库后用IDE编译报错“uses VFP register arguments”怎么解决?
    发表于 03-14 07:10

    stm32wl如何获取RX接收的内容?

    最近在调试RX和TX的lora简单功能,成功调用了接收发送中断,但读出的数据一直是乱码,有大神知道怎么读出正确的数据吗
    发表于 03-13 07:45

    实战经验 | 如何在用户应用中开启 LoRa CAD

    关键词:LoRa, CAD, Channel Activity Detection 目录预览 1、LoRa CAD 应用场景举例 2、STM32WL LoRa CAD 原理和驱动 3、
    的头像 发表于 12-26 17:45 1533次阅读
    实战经验 | 如何在用户应用中开启 <b class='flag-5'>LoRa</b> CAD