本文介绍了如何使用 Pycom LoPy 微控制器创建自己的 GPS 跟踪器。

您还将学习如何构建您自己的单通道 LoRa Nano 网关。

您喜欢引导式的细节和解释吗?有一 个视频录音 ,从我的技术谈话在 IBM开发人员欧洲人群广播频道

下面的体系结构图显示了我们将在设置中介绍的不同组件。

用作 GPS 跟踪设备的 LoPy 节点,将数据发送到 LoRa Nano 网关。

网关本身通过 WiFi 连接到”ThethingsNetwork”。

最后,我们将在 IBM Cloud 中运行 Node-Red,它将从 TheThingsNetwork中拾取 MQTT 消息,将这些消息存储到 Cloudant 数据库中,并在地图上可视化 GPS 数据点。

需要硬件:

  • 1 LoPy 作为 LoRa 节点 + 天线 (868MHz/915MHz) = 3.7V LiPo 电池
  • 1 个带天线的 uBlox NMEA 串行 GPS 模块
  • 1 LoPy 作为 LoRa 纳米网关 + 天线 (868MHz/915MHz)
  • 2 个 Pycom 扩展板

有关使用的硬件的引用, 可https://pycom.io/products/hardware

需要软件:

为了对 LoPy微 控制器进行编程,我们将使用 Pymakr——一 个用于原子或可视化工作室代码的插件。

来自 测试 的Pycom.io基于ESP32微控制器的多网络硬件模块。大多数模块(函数和库)都内置于 MicroPython 中。

1. 设置 LoRaWAN 纳米网关并连接到 ThethingsNetwork

LoRaWAN纳米网关的源代码可以在这里 找到

解压缩下载文件,然后在 示例下找到 lorawan-nano网关文件夹io / lopy – lorawan – nano – gateway – 使用 – 微间谍和 ttn / “rel =”noopener noreferer” 目标 = “_blank” >https/pycom. io / lopy – lorawan – nano – 网关使用 – 微间谍和 ttn /

这将指导您定义 TheThingsNetwork 上的网关,根据您区域设置配置参数,将代码上传到主板,并在 TheThingsNetwork 控制台中验证其操作性。

你可以在ThingsNetwork 上免费获得一个帐户。它作为网关的注册点,也是我们将从 LoRa GPS 跟踪器节点发送的数据包的集成点。

2. 设置带 GPS 跟踪器的罗拉节点

从事物网络开始:

https://core-electronics.com.au/tutorials/pycom/getting-started-on-the-things-network-tutorial.html

按照 TheThingsNetwork 上的说明注册并激活您的 LoPy 设备。

https://www.thethingsnetwork.org/docs/devices/lopy/usage.html

有两种方法可以通过 OTAA(空中激活)或 ABP(通过个性化激活)激活 LoPy。 OTAA 是首选的方法,当然,如果你有很多设备,但似乎没有与LoRa纳米网关工作。

以下示例 代码使用 ABP 激活,一旦 LoRa 通信处于活动状态,它将发送 10 个字节作为 10 个单独的数据包。

C

 

x
1
67
1
网络导入洛拉
2
导入比纳西
3
洛拉 洛拉模式洛拉.洛拉万

6

7
dev_addr=结构拆包(">l"binascii.取消化 ("XXXXX"){0}0
8
nwk_swkey纳西unhexlify'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
9
app_swkey纳西unhexlify'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
10

11
# 删除所有非默认通道
12
 洛拉remove_channeli

14

15
# 将 3 个默认通道设置为相同频率
16
洛拉.add_channel(0频率=配置LORA_FREQUENCY dr_mindr_min=0dr_max=5
17
洛拉.add_channel(1频率=配置LORA_FREQUENCY dr_mindr_min=0dr_max=5
18
洛拉.add_channel(2频率=配置LORA_FREQUENCY dr_mindr_min=0dr_max=5
19

20
洛拉加入激活+LoRaABP身份验证=dev_addrnwk_swkeyapp_swkey))

22

23
# 创建 Lora 套接字
24
s= 插座socket插座插座AF_LORA插座SOCK_RAW)
25

26
# 设置洛拉万数据速率
27
s.套袜(插座。SOL_LORA插座SO_DR配置LORA_NODE_DR)
28

29
.设置阻止错误

31

32
ii在范围 10):
33
pkt=b'Pkt ]\+字节([i])
34
打印"发送:'pkt
35
s.发送pkt
36
时间睡眠4
37
从 (256

38
如果rx
39
打印("已接收: +,在端口上: +"格式rx端口))
36
时间睡眠4
40
时间睡眠6

现在,我们已经配置了一个LoRa节点,我们应该看到数据包通过纳米网关的控制台以及ThingsNetwork的控制台中进入。

接下来,我们可以添加代码来读取固定的GPS位置数据。

示例代码可以在这里 找到

在该示例中,我们使用 "adafruit_gps"adafruit_gps库,并且仅在有固定的 GPS 位置时发送 LoRa 数据包。

这是所有伟大的,但我们收到的数据都是字节!那么,我们如何将它转换为可用格式呢?我们必须解码它!

TheThingsNetwork 控制台并选择 您的应用程序 别忘了保存它。

Javascript

 

11
9
 
1
函数解码器字节端口) |
2
控制台日志字节
3
>GPS坐标:字符串从字符代码应用字节

5
};
6
}

现在,我们有一个GPS跟踪器通过LoRa连接,这不是好存储在一个数据库,并显示GPS数据到地图上?

为此,我选择在 IBM 云环境中使用 Node-Red。

易于安装,完全免费使用精简版帐户。你可以在这里注册一个 帐户

默认情况下,Node-Red 流存储在 Cloudant 数据库中,因此我们可以轻松地使用相同的数据库来存储我们的 GPS 数据。

你可以在这里找到节点红色流 的例子

GPS数据通过 MQTT从ThingsNetwork 收集 并储存到 云中

为了通过MQTT从 ThingsNetwork获取数据, 您需要创建/生成一个新的访问密钥。去 东西网络控制台, 并选择你的应用程序。您可以在应用程序的设置选项卡中找到访问键。生成的密钥可以在应用程序概述页面的底部找到。

有关MQTT与"TheThingsNetwork"的使用情况的更多详细信息,请在这里 找到

结论

本文应介绍使用 Lora 通信的 IoT 基础知识。

如果你想看到这一切在行动,有一 个视频 录音,从我的技术谈话 IBM 开发人员欧洲众播频道。

在那里,我还展示如何连接LoraGPS跟踪器与比利时的公共Lora通信提供商Proximus。

您是否正在考虑使用 Lora 进行 IoT 的其他用例?

Comments are closed.