1 前言
本章延续前几篇文章继续介绍Sidewalk,不过本章为实战测试,供大家参考。从device发message,到云服务器看数据,然后再介绍一下代码中使用LR11x0时的GNSS和WIFI定位功能。
目前有两家公司出了整套硬件和配套demo代码,Nordic和Silicon Labs,链接如下:
- EFR32xG24(SiLabs) + SX1262MB2CAS,此链接为SiLabs官方网站,有详细文档介绍,大家可根据此文章链接实现EFR32xG24 + SX1262的开发测试。
- EFR32xG24(SiLabs) + LR11xx,此链接为Semtech官方github,是在SiLabs出的SX1262的代码基础上衍变而来。由于使用的是LR11xx,所以增加了GNSS和WIFI定位功能(GNSS使用NAV2),本章也是基于硬件EFR32xG24 + LR1110作为例子进行讲解的。
- nRF52840(Nordic) + SX1262MB2CAS,nRF Connect SDK - Amazon Sidewalk,这两个链接为Nordic文档,里边有详细介绍,大家可据此入门Nordic + Sidewalk,配置开发环境等。
- nRF52840(Nordic) + LR11xx,此链接为Semtech官方github,是在Nordic出的SX1262的代码基础上衍变而来。由于使用的是LR11xx,增加了GNSS和WIFI定位功能(GNSS使用NAV3),同时增加了LoRaWAN协议,实现双协议栈。大家可根据此文章链接实现nRF52840 + LR11xx的开发测试。
2 节点device
本章选用EFR32MG24+LR1110作为节点硬件,软件使用Semtech的https://github.com/Lora-net/SWDR007/tree/main。下图为系统架构图,先有个整体概念。
首先从github上clone下来代码,根据仓库根目录下的README文档中的步骤,在Simplicity Studio v5中导入、配置工程,然后编译工程,生成binary文件。当然第一步是先flash Sidewalk配置文件.mfg(这个只需要下载一次),然后flash生成的binary文件。
本例子中,我在代码中配置的通信方式是LoRa,同时做GNSS和WIFI定位,我在资源中上传了测试时生成的log文件“Sidewalk-log-1.txt”,文章的最上边可下载。需要注意的是LR11xx使用的firmware是0x0308,而且本代码只支持GNSS的NAV2,但Nordic+LR11xx的那套代码支持NAV3,firmware使用的是0x0401。所以在log中我们需要确认固件版本号,不要弄错了,如下:
00> [00000249] <info> LR11xx: VER HW 0x22 FW 0x0308
当device上电时,需要查看的另外一条重要的log是device的状态,如下:
00> [00610103] <info> app: REG: 0, TIME: 0, LINK: 4
看到上边的log可以理解为已经成功入网并且网络没问题了,下边解释一下其中含义。
- REG代表Registration status,即注册状态,0:device已经注册过了,1:device未注册,需要先注册。
- TIME代表Time sync status,即时间同步。0:时间同步成功,1:时间同步失败。device需要先与gateway进行时间同步,这是一个强制要求,只有时间同步成功了,才能进行后续操作,所以这个是查看log时最主要的点。同时,时间同步成功,代表着入网了,也代表着所做的翻墙网络通了。
- LINK代表Link status,即连接状态,0:没有连接,1:BLE连接,2:FSK连接,4:CSS,即LoRa连接。
本例子在入网成功后,device会一直做GNSS和WIFI scan定位,逻辑是GNSS scan -> 60s -> GNSS scan -> 60s -> WIFI scan -> 60s -> GNSS scan…,每次scan后都会将结果上传到AWS IoT。
GNSS scan log举例:
00> [00891737] <info> app: start gnss scan evt
00> [00891738] <info