RAK811 AS923 LoRa GPS 跟踪器板

原文链接:AS923 LoRa GPS Tracking with MatchX MatchBox Gateway and RAK811 LoRa GPS Tracker Board 由Jean-Luc Aufranc撰写。
本文共计6500字,预计阅读17分钟

2018年早些时候,我在家里的屋顶附近安装了 MatchBox LoRa 室外网关,并跟大家介绍了使用 MatchX Cloud 进行设置有多容易。基本上,只需注册到云端、输入序列号,网关就会根据你的位置自动进行配置。我在东南亚,所以网关配置的就是AS923。

在2018年7月的时候,我终于有时间来使用 RAKwireless RAK811 LoRa 跟踪器板,同时我也设法让跟踪器位置显示在了地图上。那是我第一次使用 LoRaWAN,我需要学习了解的东西特别多,还要克服过时的软件开发工具、不同的数据格式,以及所有相关组件之间的一些互操作性问题带来的诸多问题。我会在这篇评测中记录我遇到的所有内容,希望它能帮助大家。

RAK811 LoRa GPS 追踪器拆箱

在进入 LoRa 配置之前,先给大家看看我要使用的 RAK811 节点。如下图所示:

RAK811 LoRa GPS 追踪器开箱
RAK811 LoRa GPS 追踪器开箱

一个带有“IoT Made Easy”的包装盒,里面包含了指向文档和软件的链接。

RAK811 LoRa GPS 追踪器套件
RAK811 LoRa GPS 追踪器套件

打开盒子后,我们会看到电路板、带有长电缆的 GPS 天线、LoRa 天线、micro USB 线、电池线,以及一个带有一些跳线帽和杜邦线的塑料袋。

RAK811 LoRa GPS追踪器板
RAK811 LoRa GPS追踪器板

追踪器板的一侧带有 RAK811 LoRa 模块、用于电池的 2 针接头和连接 I/O 的排针。右上角的跳线用于选择Boot模式,稍后我都会详细介绍。

u-blox MAX-7Q GPS 模块
u-blox MAX-7Q GPS 模块

另一面包括 u-blox MAX-7Q GPS 模块、一个micro USB 接口和Reset按钮。还有两个用于连接天线的 SMA 连接器。

RAK811 跟踪器硬件设置

由于海关规定,该套件不包含任何电池,所以我在当地购买了 18650 电池和电池座。

18650 电池和电池座
18650 电池和电池座

我将其焊接到了提供的电线和连接器上,然后再将其插入电路板。

RAK811 LoRa GPS追踪器板的接线图
RAK811 LoRa GPS追踪器板的接线图

这个时候,还需要连接到 GPS 和 LoRa 天线。我花了一些时间才找到。最后,我终于在RAK的 Aliexpress 页面中找到了哪个 SMA 连接器是用于哪个天线的。

接着为了解更多信息,我在端口和我的电脑之间连接微型 USB 转 USB 电缆,并配置了电路板。

RAK811 LoRa 跟踪器信息、开发工具和固件

我一般使用的是 Ubuntu 16.04,以下就是我在计算机中插入设备时的内核输出:


这是一个典型的串行设备。我们可以使用 minicom 或其他具有 115200 bps 8N1 配置的串行终端程序连接到 /dev/ttyUSB0。然后按下复位按钮或用跳线短接复位和 GND 引脚,然后将其移除,再重新启动电路板:


EU868 并不完全符合我的预期,因为有人告诉我该板是用来配置 AS923的。但事实证明这不是什么大问题,用户应该根据自己的情况相应地配置跟踪器。

我预装的固件有点旧(1.0.2),而Github 上的最新版本是 v1.1.3,这个版本增加了对 AT 命令的支持。他们的文档中也解释了如何使用 CooCox CoIDE 或 Arm Keil 构建固件,这两者都仅适用于 Windows。我看到有的人在Linux下用Makefile搭建成功了,但提交了pull request后,并没有通过,现在和其他代码冲突了。我为了让事情更简单一些,我就使用了 Windows 7 启动 VirtualBox 会话。

第一步是下载CooCox CoIDE,一个Arm GNU嵌入式工具链,从github获取代码然后打开项目,按照文档修改AS923,在CoIDE中构建。看起来挺容易的,但我下载CooCox CoIDE 就遇到了障碍。之后我找到了一个旧版本,然后构建就失败了。最后,RAK 给我提供了更新版本的 CooCox CoIDE下载链接,我设法构建了固件。其实我是在这个评测快结束的时候才找到这个解决方案的,所以我刷了二进制版本:rak811_tracker_classA.bin

你们有三个选项来通过 STLink J-Link 调试器,从 Keil 或 CoIDE 刷新固件,或者使用 STMicro Flash Loader Demonstrator 通过 USB。后者似乎更容易,因为它不需要额外的硬件。我尝试从 RAKwireless 的文档页面的链接下载了,但速度有点缓慢,因此你们可以直接从 STMicro 网站下载

切换Boot模式
切换Boot模式

首先我们需要将跳线短接 BOOT0 和 VCC 以进入如上图所示的串行启动模式,下面是 RAK811 跟踪器引脚图。

RAK811 跟踪器引脚图
RAK811 跟踪器引脚图

按Reset按钮重新启动电路板,我们现在可以使用 Flash Loader Demonstrator。

Flash Loader Demonstrator连接RAK811追踪器
Flash Loader Demonstrator连接RAK811追踪器

首先选择端口名称,在我的情况下为 COM9,然后单击下一步,这是你们应该会被告知检测到板。如果没有,可能是因为忘记正确放置跳线或忘记重新启动电路板。

再次单击下一步,然后从列表中选择 STM32L1_Cat2-128K。

选择STM32L1_Cat2-128K
选择STM32L1_Cat2-128K

再次按下一步按钮,选择我们刚刚下载的固件文件“rak811_tracker_classA.bin”。

选择固件
选择固件

保持所有其他设置不变,然后单击“下一步”按钮开始向板子下载数据,并烧录固件。

开始下载
开始下载

这应该只需要几秒钟。一切完成后,就会收到“下载操作成功完成”的消息。

下载完成
下载完成

现在将 BOOT0 和 GND 短路的跳线移回原位,连接串行终端,然后按下Reset按钮。

使用 OTAA 或 ABP 加入方法配置 RAK811 Tracker

如下所示,这是终端的输出:


没有什么其他的。因为我们应该输入 AT 命令进行配置,就像 Github 中的简要说明那样,如下:

AT命令列表:
at+region=EU868/US915/AS923/AU915/IN865/KR920 //设置设备区域

at+dev_eui=xxxxxxxxxxxxxxxx // 设置设备 dev_eui
at+app_eui=xxxxxxxxxxxxxxxx // 设置设备 app_eui
at+app_key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx // 设置设备 app_key

at+dev_addr=xxxxxxxx // 设置设备 dev_addr
at+nwks_key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx // 设置设备 nwks_key
at+apps_key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx // 设置设备 apps_key

at+join_mode=otaa/abp // 设置设备加入otaa或abp

在我们进一步之前,我们应该先了解这两种方法

  • 无线激活 (OTAA) 是首选且最安全的连接方式。设备与网络执行加入过程,在此期间分配动态 DevAddr 并与设备协商安全密钥
  • 个性化激活 (ABP) 对 DevAddr 参数以及设备中的安全密钥进行硬编码。这意味着通过个性化 (ABP) 激活设备。这种策略可能看起来更简单,因为您跳过了加入这个步骤,但它有一些与安全相关的缺点

OTAA 需要三个参数和一些标识符,下面是其他的安全密钥

  • DevEUI – 64 位终端设备标识符,EUI-64(唯一)
  • AppEUI – 64 位应用程序标识符,EUI-64(唯一)
  • AppKey– 128 位应用程序密钥

OTAA 方式入网后就会自动生成 DevAddr、NwksKey 和 AppsKey(这里注意多一个“s”)。ABP 模式则需要手动指定:

  • DevAddr – 32 位设备地址(非唯一)
  • NwkSKey – 128 位网络会话密钥,用于节点和网络之间的交互
  • AppSKey – 128 位应用程序会话密钥,用于有效载荷的加密和解密

OTAA 似乎是最好的方法,所以还是按照个方法来试试。


前三行定义了上面讨论的参数,后两行设置了Region和入网模式。看起来是可以组合任何数字的,只要它们的长度是预先指定的 64 位或 128 位。我最初在 minicom 中粘贴 AT 命令时遇到了麻烦,我被告知必须一次粘贴一行,末尾带有“/r/n”(新行)。我尝试了各种终端,在设置->终端中更改设置从而发送(和接收)。接着CR+LF 行换行后,Tera Term就可以正常使用了。

Tera Term终端工具配置
Tera Term终端工具配置

无论你们使用哪个终端,诀窍就是在每个命令后添加一个新行。

at+join_mode 命令必须是最后一个,因为一旦我发送该命令,其他命令就会被忽略了。

将 LoRa应用程序和设备添加到 MatchX Cloud

我们现在已经用必要的参数配置了 RAK811 节点,所以我们需要去MatchX Cloud创建一个应用程序并添加一个具有相同参数的新设备。

MatchX Cloud上创建gps-tracking应用
MatchX Cloud上创建gps-tracking应用

我创建了gps-tracking  应用程序来跟踪自行车位置,至少我的计划是这样的。准备好新应用程序后,就可以单击“创建节点”并添加一个新设备,如下所示,其中包含DevEUI、A ppEUIAppKey参数。

MatchX Cloud添加新设备
MatchX Cloud添加新设备

因为我们要使用 OTAA 加入模式,所以不要选 ABP,然后单击“提交按钮。

第一个 LoRaWAN 连接

现在我们可以按下 RAK811 跟踪器板上的Reset按钮,看看串行控制台会发生什么:


很好,设备可以加入网络了,我们也获取到了各种信息。比如:温度、电池电量和加速度计数据。我们需要等待一段时间才能获得 GPS 坐标。

好的,我们看看在 MatchX Cloud 中得到了什么。

MatchX Cloud收到的设备数据
MatchX Cloud收到的设备数据

太棒了!我们每秒都会收到一些数据包,这是 RAK811 中固件默认应该执行的操作。理论上来说,一旦电路板获得 GPS 数据,我肯定能够在 MatchX Cloud 的地图中看到 RAK811 节点位置。但现在很奇怪,我没有看到这些位置。

在进一步研究了包括使用 The Things Network 设置 RAK811 跟踪器节点的文档后,我发现数据是以Cayenne Low Power Payload (LPP) 格式发送的,网关不会解码这种类型的数据,所以我问了 MatchX是否有可能改变它,并得到以下答案:

谈到数据格式—我们在类型-长度-值 (TLV) 格式中使用的是不同的数据编码。
目前我们的云映射器只能使用这种格式。我们正在对我们的云进行重大更新,想要让更多的数据解析器出现在我们的清单上,但这仍然需要我们一些时间。

将 MatchX MatchBox LoRa 网关连接到物联网

好消息是 Cayenne LPP 可能很快就会得到支持,但我很想在几天内完成我的评测,而不是几个月。因为RAKwireless 提供了使用 The Things Network (TTN) 设置 RAK811的说明,我就决定重新配置网关并连接到 TTN 上试试。

在MatchX Cloud修改网关连接到TTN
在MatchX Cloud修改网关连接到TTN

我们只需要转到MatchX Cloud,特别是网关详细信息页面,然后单击Edit Config按钮更改网关部分,然后连接到 TTN(我这里的情况是 AS1):


现在点击Upload Config按钮,网关配置就完成了。这时你需要注意网关详细信息窗口中的 MAC,因为它也是稍后将在 TTN 中询问的网关 EUI。

设置物联网

现在让我们去The Things Network 网站,注册一个免费账户,然后去TTN 控制台。点击网关注册网关

在TTN上注册网关
在TTN上注册网关

首先勾选“I’m using the legacy packer forwarder”,然后将网关的 MAC 粘贴到“Gateway EUI”字段中、提供描述、选择频率计划(此处为亚洲 920-923 MHz),然后选择适合你的路由器地区。

指定网关位置
指定网关位置

你也可以指定网关位置,但MatchBox 网关是不需要的,因为它支持GPS,最后我选择了天线放置(室外或室内),然后单击注册网关。

现在返回 TTN 控制台主页,单击Application,然后添加 application

TTN上添加应用
TTN上添加应用

在单击Add application之前,要填写你选择应用程序的 ID、描述和Handler registration。

应用概览页面
应用概览页面

你应该会被重定向到应用程序的概览页面,这时你就可以单击顶部菜单中的设备,然后注册设备

TTN上注册设备
TTN上注册设备

给它一个设备 ID,以及我们在 RAK811 节点中配置的 Dev EUI,然后点击Register。现在转到 Device Overview 页面,这时你会看到 DevEUI、AppEUI 和 AppKey 的值。

设备概览页面
设备概览页面

为物联网配置 RAK811

现在,我们可以回到 RAK811 跟踪器上的终端控制台来重新配置我们的新值了。


我发现到了这一步必须要擦除数据,并使用 Flash Loader Demonstrator 重新刷新固件,然后才能使用 AT 命令更新值:


看起来不错,我们只需要等待 GPS 搜到卫星。同时,我们可以使用我们刚刚配置设备的数据选项卡查看我们是否在 TTN 界面中收到了来自设备的加入请求。

TTN上收到的设备数据
TTN上收到的设备数据

很好这一步成功完成了!我们现在需要在myDevices.com注册设备,因为该服务将处理 Cayenne LPP 数据解码,并以漂亮的方式显示数据。

注册免费服务后,在仪表板中选择 LoRa。

MyDevices上注册设备—选择 LoRa
MyDevices上注册设备—选择 LoRa

然后是界面左侧的 The Things Network。

MyDevices上注册设备—选择The Things Network
MyDevices上注册设备—选择The Things Network

现在向下滚动以选择 Cayenne LPP。

MyDevices上注册设备—选择 Cayenne LPP
MyDevices上注册设备—选择 Cayenne LPP

并输入名称,还有你的 DevUI,然后单击“添加设备”。

MyDevices上注册设备—输入设备DevEUI
MyDevices上注册设备—输入设备DevEUI

哦,天哪!DevEUI 已经被占用了。所以我尝试了其他一些,直到我发现“60c5a8fffe002011”没有被注册。我添加了那个设备,但我不得不重复 The Things Networks 和 RAK811 串行接口中的步骤,用我的新 DevEUI 重新配置所有的东西。

在 TTN 中配置 Cayenne 集成

我们还没有完成,因为我们需要回到 TTN,点击设备仪表板中的集成

TTN设备界面上的集成功能
TTN设备界面上的集成功能

选择Cayenne图标,输入选择的进程 ID,然后在访问密钥字段中选择默认密钥

选择集成Cayenne服务
选择集成Cayenne服务

单击添加集成按钮,转到有效负载格式,然后选择Cayenne LPP

选择数据格式为Cayenne LPP
选择数据格式为Cayenne LPP

单击“保存”,几分钟后,我们应该就会在 Cayenne 中看到温度、加速度计和 GPS 数据的良好表示。

更多问题和解决方法

Cayenne上设备的dashboard
Cayenne上设备的dashboard

但是几个小时后,我还是看到一个空的仪表板

TTN上设备数据和设备上的配置信息
TTN上设备数据和设备上的配置信息

我可以在 TTN 中看到一些数据包,但串行控制台显示 OTAA Join 出现了一些问题。所以看起来RAK811 应该是可以直接向网关发送加入请求的,然后网关将其转发给 The Things Netwokrs,但不知什么原因它没有得到反馈。我尝试将 MatchX Gateway global_conf.json 更改为AS1 (Asia 1 – 920 – 923 MHz)提供的网关,但仍然没有成功。

最后,RAKwireless 官方的人通过 TeamViewer 会话帮助了我,并找到了“解决方案”,就是将激活方法从 OTAA 更改为了 ABP 再加入 TTN。

TTN上设备状态页面
TTN上设备状态页面

并将相关的 AT 命令粘贴到 RAK811 串口控制台中。


重置电路板,几秒钟后我开始在 Cayenne LPP 仪表板中获取了 RSSI 和 SNR 数据,几分钟后 GPS 数据也恢复了,我可以在 mydevice.com 中看到 RAK8711 LoRa 跟踪器的位置。

RAK8711 LoRa 跟踪器位置和其他数据显示
RAK8711 LoRa 跟踪器位置和其他数据显示

这一次体验还是存在挺多问题的,但令人高兴的是最后还是成功了。RAKwireless 方面认为 OTAA 的问题可能是时间问题。MatchX 方面则认为这可能是表的问题,具体如下所示:

这个潜在的问题可能与幂表有关。当服务器想要向端节点发送消息时,它指定请求的功率 RF 级别。网关采用此功率水平并减去天线增益(在 global_config 中指定,在我们的示例中为 2.5db,但删除了 0.5,仅减去了 2db)从而去补偿使用的天线。然后它在其 LUT 功率表中查找具有此特定功率的条目以配置其内部放大器。如果它无法找到所需的功率电平,则该消息就会被丢弃。我们的 global_config 配置符合LoRa 区域参数 1.0,我们将在不久的将来更新到版本 1.1。不过,TTN 服务器的配置可能不同。我们还没有为这个地区尝试过 TTN 服务器。

不过,我目前还没有详细调查这部分。我想先完成这篇评测,因为我有一些个人原因需要移除掉网关。

跑步、开车和四处走走

一切准备就绪后就可以正常工作了,我想在家外测试节点然后去查看一下我得到的范围。我的第一个测试是 3 公里的夜跑。我先用皮带将所有东西固定到位。

LORA GPS Tracker

但我很快发现 RAK811 会自动关闭。歧视使用电池运行有时是会发生这种情况,这个问题很偶然。我不确定这是不是原本就存在的问题,因为我在家里进行的早期测试时摔倒了一下,这可能损坏了电路板和引脚。

捣鼓了很久,那天晚上我都没有得到任何数据。第二天早上,我尝试把车开走试试。我先开了几十米,在失去 WiFi 连接之前检查跟踪器的位置确实更新了,这确实是有效的。

RAK811 GPS跟踪器轨迹图
RAK811 GPS跟踪器轨迹图

好了,位置终于以合理的精度(4 到 5 米)正确更新了。然后我慢慢开车到另一个有 WiFi 、视线距离大约 500 米的位置,并通过连接的方式检查该位置是否每分钟更新一次,而 myDevices 仪表板中没有任何内容。因此,我将 RAK811 连接到我的笔记本电脑,并检查了一下它是否在串行控制台中获得了 GPS 数据,结果确实是有的。我开车往回走,回到家就无法进一步更新了。即使在 TTN 仪表板中收到了一些消息,myDevices 仪表板也不会再更新了。

不久之后,我又直线步行到500米以外的一个当地市场,一直在TTN监控数据包。

TTN上的位置数据
TTN上的位置数据

我记得我是在 10:20 左右离开家的,收据的数据显示,我是在 10:32 到了一家室内商店。其实,在理想的情况下,我应该每分钟收到一条消息才对,但实际是有 6 分钟的时间 TTN 根本没有收到任何消息(10:25 到 10:31)。回来的路上没有出现同样的丢包,只丢了两条消息。不过遗憾的是,myDevices 仪表板中仍然没有任何内容。

还有一个很有趣的事,我在写这篇评测的时候,我仍然可以在 myDevices 中看到26号的数据,一直更新到了 17:33。

myDevices上的位置数据
myDevices上的位置数据

现在的时间是 20:00。RAK811板子还在运行,我没有碰过它,但它已经2个半小时没有收到新数据了。当地人告诉我这里有鬼魂,所以这一定是没有收到新数据的原因吧。好吧,开个玩笑。我怀疑这就是使用OTAA时会存在的问题,或者在使用ABP的时候偶尔也出现。所以大概率就是时间问题,或者是特定频率的问题。

我对 LoRa / LoRaWAN 的第一次体验并非完全一帆风顺,以后还有很多东西要学。例如,我还没有来得及考虑功耗和电池寿命的问题,因为只是让它正常运行就花了我很多时间。但至少这是一次很好的学习经历,因为我知道如何可以更好地让它们更好的工作,以及从硬件到云的每个部分是如何集成在一起的。

如果你们有兴趣购买我测评过的这个硬件,你们可以在MatchX 网站上购买到 MatchBox LoRa 网关,价格是 350 欧元,也可以在 全球速卖通上购买 RAK811 LoRa 跟踪器价格大约是 50 美元

分享这篇文章
订阅评论
提醒
0 评论
内联反馈
查看所有评论