×

使用LoRaWAN和TTN在IoT实验室测试RIOT-OS设备

消耗积分:0 | 格式:zip | 大小:0.00 MB | 2023-07-04

479461

分享资料个

结构概述

  • 2 个(或更多)B-L072Z-LRWAN1 LoRa 套件在 IoT-LAB 测试台上运行
  • 物联网基础设施
  • 一个简单的网关(或透明桥),由Python 实现,用于从 TTN 基础设施收集数据并将其发送到谷歌云平台;
  • 歌云平台,提供Cloud IoT 核心Pub/Sub API,用于管理连接、设备以及与 Web 应用程序交换的消息;
  • 使用nodejs + express和一些其他相关框架构建的 web 应用程序;
  • 用于存储的Mongodb NoSQL 数据库程序;
注意:我的github上提供的代码适用于我的个人 google 帐户上的凭据。我没有上传密钥,如果你想运行它,你需要自己设置。

IoT-LAB简介

IoT-LAB 是一个开放的测试平台,它提供了一个非常大规模的基础设施,适用于测试小型无线传感器设备和异构通信对象。

 
 
 
pYYBAGOYMVqAc0tKAAItjGl0njc935.png
 
1 / 2
 

它具有分布在法国六个不同地点的 1500 多个无线传感器节点。节点既可以是固定的,也可以是移动的,并且可以在所有站点中以各种拓扑进行分配。有多种无线传感器可用,具有不同的处理器架构和不同的无线芯片。

由于我们没有兼容 LoRa 的硬件,因此使用测试平台是在真实硬件上进行测试的最佳选择。

LoRaWAN 技术

LoRaWAN® 规范是一种低功耗、广域 (LPWA) 网络协议,旨在将电池供电的“事物”无线连接到区域、国家或全球网络中的互联网,并针对关键的物联网 (IoT) 要求,例如双向定向通信、端到端安全、移动性和本地化服务。它定义了网络的通信协议和系统架构,而 LoRa 物理层则支持远程通信链路。

 
 
 
poYBAGOYMWKAE8yAAAGyaMs8ADI699.png
 
1 / 3
 

LoRaWAN® 网络中的节点是异步的,当它们准备好发送数据时进行通信,无论是事件驱动的还是调度的,避免了同步网络典型的电池消耗。此外,为了优化各种终端应用配置文件,LoRaWAN® 使用不同的设备类别。设备类别权衡网络下行链路通信延迟与电池寿命。

LoRaWAN® 利用两层安全性:一层用于网络,一层用于应用程序。网络安全确保网络中节点的真实性,而应用安全层确保网络运营商无权访问最终用户的应用数据。AES-128 加密与使用 IEEE EUI64 标识符的密钥交换一起使用。

TheThingsNetwork 概述和设置

The Things Network 是 LoRa Alliance® 的贡献者成员,LoRa Alliance® 是一个由 500 多家成员公司组成的非营利性协会,致力于通过开发和推广低功耗广域网 (LPWAN) 物联网来实现大规模部署。 LoRaWAN® 开放标准。

 
 
 
poYBAGOYMWaAGVksAAEBba5Bg9s803.png
 
1 / 2
 

网关构成了设备和物联网之间的桥梁,而物联网的后端系统负责在设备和应用程序之间路由物联网数据。事实上,诸如 LoRaWAN® 之类的非 IP 协议需要某种形式的路由和处理,然后才能将消息传递到应用程序。

TTN 和网桥设置

Things Network Web 界面使这些步骤变得非常简单:

 
 
 
poYBAGOYMWyAM_GlAAGdEvpnHe0861.png
 
1 / 2
 

第一步完成了!是时候设置网关了。我假设您已经阅读了第一篇文章“云平台设置”部分的说明,那么:

  • 同样这一次,网关被谷歌云平台识别为简单设备,因此您需要将其添加到之前创建的设备集中。这里刷新如何做到这一点:https://cloud.google.com/iot/docs/how-tos/devices?authuser=1;
  • 将 root.pem 证书的副本(之前生成的)放在devices_RIOT/gateway文件夹中(或简单地更改所有路径);
  • TTN 使用 AES-128 对称加密,这意味着这一次您需要为对称密钥存储一个简单的字符串。您可以简单地将其作为纯文本保存在变量中,以便查看您的代码的任何人都可以阅读它!让我们做一些更安全的事情。devices_LoRa/gateway文件夹中创建一个ttn_password.txt文件,然后从 TTN 控制台复制并粘贴密码,如上图所示。
  • 恭喜,你找到了关键,现在,就像我们已经做了很多次一样,让我们​​在 gateway_LoRa.py 文件的顶部更改 Google 的设置:
# SETUP
project_id = 'your_project_ID'
registry_id = 'your_register_ID'
cloud_region = 'your_region'
device_id = 'your_device_ID'
sub_topic = 'your_topic'
  • 最后,运行它:

python gateway_LoRa.py

物联网实验室设置

首先,您必须设置对 IoT-LAB 服务器的ssh访问权限。这些步骤都很简单,IoT-LAB 教程做的很好,所以我直接给你留了文档链接。https://www.iot-lab.info/tutorials/ssh-access/。

现在,我们已准备好进行设置:

  • 首先,建立到 Saclay 站点主机的 ssh 连接:

my_computer$ ssh @saclay.iot-lab.info

是您的帐户 ID,可以在个人资料页面上找到
poYBAGOYMXGAFwZgAAG13OUp7Us311.png
 
  • 连接后,在主文件夹中克隆 RIOT Github 存储库:

@saclay:~$ git clone https://github.com/RIOT-OS/RIOT.git

  • 创建并切换到一个新目录(例如“mycode”):

@saclay:~$ mkdir

@saclay:~$ cd

  • 是时候上传代码了。打开一个新终端,然后转到devices_LoRa/device并“安全复制”所有文件:

my_computer$ scp main.c @saclay.iot-lab.info:

my_computer$ scp Makefile @saclay.iot-lab.info:

my_computer$ scp Makefile.ci @saclay.iot-lab.info:

  • 由于 RIOT 不支持 SSH 前端默认安装的 arm GCC 版本,我们需要提供一个新版本:

@saclay:~/mycode$ export PATH=/opt/gcc-arm-none-eabi-7-2018-q2-update/bin:$PATH

  • 然后验证您是否拥有正确的 GCC 版本:

@saclay:~/mycode$ arm-none-eabi-gcc --version

  • 让我们编译,运行:

@saclay:~/mycode$ make clean all

  • 现在我们有了程序的可执行和可链接格式(.elf),是时候在 IoT-LAB 测试平台上开始新的实验了。登录并提交实验:

@saclay:~/mycode$ iotlab-auth -u

@saclay:~/mycode$ iotlab-experiment submit -n -d -l , archi=st-lrwan1:sx1276+site=saclay

我知道,我们都希望复制和粘贴所有这些命令,避免键入它们。但是,在这种情况下,请记住设置实验名称、时间和节点数。
  • 上一步会返回一个id,注意,一定要保存好,不然丢了就需要重启一切!!或许不是,你很幸运,你可以随时在网站上的“我的实验”下查看它。但是,这不是您需要的唯一 ID,而是一个新的 ID,即与您的实验相关联的节点的数量/数量。要找到它,只需运行:

@saclay:~/mycode$ iotlab-experiment get -i -r

  • 完美,此时,我们已经编译了代码并运行了一个实验。让我们在 B-L072Z-LRWAN1 LoRa 套件上刷写可执行文件:

@saclay:~/mycode$ iotlab-node --update bin/b-l072z-lrwan1/device_LORA.elf -l saclay,st-lrwan1,

记得输入正确的节点号!
poYBAGOYMXSAYBM2AAD3H-9MetE181.png
 

在 IoT-lab 上运行设备

节点正在运行,现在您可以使用 Netcat 访问每个节点,每个终端窗口一个:

@saclay:~/mycode$ nc st-lrwan1- 20000

pYYBAGOYMXeACUuVAAB7uEiis2Y888.png
 

如果由于任何原因,设备出现任何类型的问题,请转到您的 IoT-lab 页面,找到实验和节点,然后重新启动它,如下图所示。

poYBAGOYMX2ADDNiAAF8f0YjPLY146.png
 

现在,转到 TTN Web 控制台上的“应用程序 > appID > 设备 > 设备 ID”并获取设备 EUI、应用程序 EUI 和应用程序密钥信息。因此,在运行的设备上,将它们设置为 RIOT 固件:

> loramac set deveui your_EUI
> loramac set appeui your_EUI
> loramac set appkey your_key

为避免问题也设置数据速率,IoT-LAB 在其网站上建议值为 5:

> loramac set dr 5

最后,加入网络:

> loramac join otaa

poYBAGOYMYGAPwNXAACSiC8XoW4108.png
 

现在,您可以使用我们在之前分配中使用的相同命令来开始自主发送消息:

> start ...

新仪表板

旧仪表板非常简单,因此我决定进行一些更改并添加新功能。

首先,我决定重组数据库,它现在为每种遥测类型提供一个不同的架构,并为设备提供一个新架构。因此,每个设备都有一组对遥测的引用,它使用 deviceId 作为外键。大大减少了检索时间并增加了系统的一般可扩展性。

它现在可以识别需要连接的新设备并直接添加它们。此外,每当有新消息时,主页上不仅会显示遥测值,还会显示设备的身份。

总之,为了提供令人愉悦的视觉界面,我添加了一些彩色图表来显示最后一小时的值,而旧值和以前一样显示在列表中。

pYYBAGOYMYqACwiOAAMQndA1pyg445.png
 

结论

该应用程序现在能够从虚拟设备、使用 MQTT-SN 协议的 RIOT-OS 设备以及使用 LoRaWAN® 的新实现中检索数据。此外,借助新的仪表板和新的彩色图表,任何人都可以体会到使用物联网“事物”收集数据的美丽程度。

 

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

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !