×

使用Helium、Ubidots和WisBlock开发物联网解决方案

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

李巍

分享资料个

描述

Helium Network 是地球上最受欢迎的网络之一,这就是它被称为人民网络的原因。它由一个社区网络组成,任何人、企业或个人都可以使用它来连接他们的物联网终端节点。如果你对加密世界感兴趣,你就会知道你可以安装一个 Helium 热点并通过开采其代币 HNT 赚钱。但是,您知道您可以像使用蜂窝网络一样使用此网络吗?你会发现的!

Helium 是一个使用 LoRaWAN® 协议连接全球物联网设备的项目。在这个网络中,每个有覆盖的人都可以用它把数据发送到云端,开发一个可以解决特定环境下很多问题的应用程序。

这个项目做得很好。他们专注于许多物联网行业,其在加密货币社区的流行有助于在世界许多地方创建网络。加利福尼亚州甚至有一个城市正在努力成为一个由 Helium 连接的智能城市。

在世界上大多数主要城市,都安装了大量的 Helium 热点。坏消息是没有开发足够的应用程序,因为这是一项相对较新的技术。另一方面,需要创建更多此类应用程序的需求每天都在增加,您可以使用 WisBlock 轻松开发它们,所以让我们学习如何做吧!

你需要什么?

或者您可以单独购买这些物品:

这些项目也可用于:

一步步

  • 一些非无聊的技术细节
  • 检查覆盖范围
  • 配置您的网络服务器
  • 使用 WisBlock 开发您的应用程序
  • 将您的数据连接到物联网平台 (Ubidots)
  • 下一步是什么?

一些非无聊的技术细节

在我们开始动手项目之前,我们需要澄清为什么需要所有步骤。看一下图 1。端节点负责将数据从模拟世界转换到数字世界,并将其传输到网关。当您使用 Helium Network 时,您可以使用您在需要实施项目的地点拥有的覆盖范围。不需要额外的硬件,因为您将使用其他人的硬件。

poYBAGSAfVGAMVUsAAC-wUUU1f8800.png
图 1:LoRaWAN® 的典型架构
 

数据到达这些网关/热点并传输到网络服务器,这取决于您使用的网络,在这种特殊情况下,Helium 提供了它。您可以将此数据发送到各种物联网平台以进行可视化、自动通知和分析。您可以在 Ubidots、Qubitro、DataCake、AWS 等之间进行选择。

检查覆盖范围

要检查您是否覆盖,请访问https://explorer.helium.com/,然后搜索您的位置。如果您在您所在国家/地区的主要城市,您将获得 Helium 覆盖。我在哥伦比亚波哥大,我所在的地区似乎有覆盖范围。那么,让我们来试试吧!

poYBAGSAfVWAcTa5AAM21xVIvHo572.png
图 2:检查您的氦气覆盖范围
 

配置您的网络服务器

要开始使用 Helium 网络,请访问https://console.helium.com/并注册(如果您没有帐户)。在注册过程中,您需要添加一个新组织。别担心,您可以输入任何名称并继续该过程。

Helium 控制台的主页如图 3 所示。

pYYBAGSAfVeAQ-mCAAFGr0MGpPM444.png
图 3:Helium 控制台
 

在添加新设备之前,让我们谈谈一些重要的事情。当您使用 Helium 网络将数据从终端设备发送到云端时,您必须为此付费。网络内的官方货币不是HNT,但发送的数据必须用DC(Data Credits)支付。您将收到 250 DC 以开始使用 Helium 网络。您可以根据您的应用需求购买更多 DC。每个 DC 的值定义为:

1DC = 24 字节 = 0.00001 美元

记住这个细节,继续添加新设备。为此,请转至设备并单击添加新设备图标。

pYYBAGSAfVqAfxOVAADjfHd4GRo621.png
图 4:添加新设备
 

在名称字段中输入您想要的任何名称,然后单击保存设备Dev EUI App EUIApp Key变量将自动生成,所以不要更改它们。

pYYBAGSAfV2AQLshAAFnXdpbaSA155.png
 

这样,就创建了一个新设备。当您单击设备名称时,您可以在仪表板中检查数据。

poYBAGSAfV-Ad_ZAAACePKd80Ws551.png
图 5:创建的新设备
 
poYBAGSAfWKAYTsrAAD9tKxYnY8062.png
图 6:新设备仪表板
 

使用 WisBlock 开发您的应用程序

让我们开发一个基础项目:读取大气变量。即温度、湿度、压力和气体阻力。

第一步是配置硬件。为此,您需要以下材料:RAK4631、RAK19007 和 RAK1906,如图 7 所示。

pYYBAGSAfWWANDtzAAPgMFAzb-k386.png
图 7:所需材料
 

传感器的连接非常简单,将其插入任何传感器插槽,即插槽 A、B、C 和 D,然后用螺丝固定。如图 8 所示。

pYYBAGNVkzKAEUhqAACVkDCy034444.png
图 8:连接插槽 A、B、C 或 D 上的传感器。
 

最后,将 LoRa 天线连接到 RAK4631 核心。

poYBAGSAfWqAZuT8AACpWjY82po943.png
图 9:蓝牙和 LoRa 天线连接
 

最后,WisBlock 就可以使用了。

pYYBAGSAfW-Ab7OxAASUJzNARaQ372.png
图 10:准备使用的 WisBlock
 

编程

编程阶段非常简单,您可以使用我们官方 GitHub 站点上提供的代码只需将其复制并粘贴到您的 Arduino IDE 中即可。

注意:如果您在本教程之前没有使用过 Arduino 或 WisBlock,我们建议您在此处访问我们的介绍性教程。

一些说明:

如果这是您第一次使用 WisBlock,您将需要安装两个库,只需单击第一行代码中的链接,然后单击安装。

#include 
#include  // Click to install library: http://librarymanager/ALL#SX126x-Arduino
#include 
#include 
#include 
#include  // Click to install library: http://librarymanager/All#Adafruit_BME680
Adafruit_BME680 bme;

如果您在 OTAA 或 ABP 激活模式下工作,此代码很有用。Helium 使用 OTAA,如图 6 所示,因此在 LoRaWAN® 参数设置行中,将 doOTAA 保留为默认值。

大多数参数都已准备就绪,因此无需更改它们。与您所在地区相关的参数除外。在这种情况下,您需要根据项目的部署位置更改区域,我的区域使用 AU915 标准,但您可以在Helium 官方网站上查看您的区域。

bool doOTAA = true;   // OTAA is used by default.
#define SCHED_MAX_EVENT_DATA_SIZE APP_TIMER_SCHED_EVENT_DATA_SIZE /**< Maximum size of scheduler events. */
#define SCHED_QUEUE_SIZE 60                     /**< Maximum number of events in the scheduler queue. */
#define LORAWAN_DATERATE DR_3                   /*LoRaMac datarates definition, from DR_0 to DR_5*/
#define LORAWAN_TX_POWER TX_POWER_0                 /*LoRaMac tx power definition, from TX_POWER_0 to TX_POWER_15*/
#define JOINREQ_NBTRIALS 5                      /**< Number of trials for the join request. */
DeviceClass_t g_CurrentClass = CLASS_A;         /* class definition*/
LoRaMacRegion_t g_CurrentRegion = LORAMAC_REGION_AU915;    /* Region:AU915*/
lmh_confirm g_CurrentConfirm = LMH_CONFIRMED_MSG;         /* confirm/unconfirm packet definition*/
uint8_t gAppPort = LORAWAN_APP_PORT;                /* data port*/

我们根据事件发送数据,使用触发器函数,您可以根据需要修改它们。

// Foward declaration
static void lorawan_has_joined_handler(void);
void lorawan_join_fail(void);
static void lorawan_rx_handler(lmh_app_data_t *app_data);
static void lorawan_confirm_class_handler(DeviceClass_t Class);
static void send_lora_frame(void);

更改在 Helium 平台上获得的 OTAA 密钥。该顺序与 Helium 控制台中的顺序相同,只需将它们分成两对并0x在每个之前添加,以便程序可以将其理解为有效格式。

//OTAA keys !!!! KEYS ARE MSB !!!!
uint8_t nodeDeviceEUI[8] = {0x60, 0x81, 0xF9, 0x8B, 0x44, 0x71, 0x68, 0x29};
uint8_t nodeAppEUI[8] = {0x60, 0x81, 0xF9, 0x62, 0xB9, 0x08, 0x55, 0x1E};
uint8_t nodeAppKey[16] = {0x1B, 0x88, 0x59, 0x08, 0x47, 0x80, 0x6A, 0xF5, 0xB8, 0x64, 0xA9, 0xB7, 0xFF, 0x45, 0xB3, 0x5F};

函数循环将是空的,因为正如我之前告诉你的,函数与事件一起工作。

void loop()
{
}

在该void bme680_get()函数中,读取来自传感器的数据,并且通过将获得的测量值乘以 100 并进行位移来创建有效负载。当您执行 Helium 和 Ubidots 之间的集成时,将需要此信息。

现在您已准备好验证上传您的程序。

图 11:验证并上传您的代码
 

如果一切正常,您就已经在向 Helium 发送数据了。

在 Serial Monitor 中,您将看到类似于图 12 中所示屏幕截图的内容。WisBlock 连接到 LoRaWAN® 并每 20 秒读取和发送一次数据。我们建议,如果您想保存 Helium 给您的积分,请不要设置较短的发送间隔。

pYYBAGSAfXGAdwrvAADw9ycKPEw133.png
图 12:Arduino 串行监视器
 

在Helium Console中可以看到数据进来了,但是可以看到所有的数据都显示为红色。这意味着您没有集成。更明确地说:您的数据到达 Helium LNS(LoRaWAN® 网络服务器),但无法存储。此数据将仅存储 300 秒、5 分钟,然后就会消失。这就是需要物联网平台的原因。

poYBAGSAfXSAKZG5AACuLzpCHZ0483.png
图 13:Helium 控制台
 

物联网平台或应用服务器有很多,例如 Ubidots、Qubitro、Datacake、AWS 或 MS Azure,您甚至可以搭建自己的应用服务器。但在这种情况下,我们将使用 Ubidots。

将您的数据连接到物联网平台 (Ubidots)

在这部分,您将需要一个 Ubidots 帐户。您有两种选择可以开始,第一种是在您测试平台时创建一个为期一个月的免费专业帐户。第二种选择是创建一个仅限于教育或研究项目的免费帐户,称为Ubidots STEM。对于本教程,我们将使用第二个。

您只需使用您的电子邮件注册即可创建一个新帐户。当您第一次访问 Ubidots 时,您没有任何配置。所以第一步是创建一个设备。单击设备并选择插件

poYBAGSAfXeAcxqAAACKhusH3a0047.png
图 14:创建新设备
 

选择创建插件

pYYBAGSAfXqARmbtAAB0-eJ-N5s544.png
图 15:选择创建插件
 

在对话窗口中,选择选项Helium

poYBAGSAfXyAD8ECAAD9rXKZ0CY888.png
图 16:选择氦气选项
 

蓝色图标继续。

pYYBAGSAfX-AaAfNAADKE19yzEw653.png
图 17:单击蓝色图标继续
 

在 Ubidots STEM 中,您只有默认令牌选项,当您使用专业版时,您可以创建更多令牌。选择Default Token选项,然后单击蓝色图标继续。

poYBAGSAfYKAOINoAABHVMFqh_k515.png
图 18:选择默认令牌并单击蓝色图标
 

添加名称和描述,最后单击绿色图标

现在,您在 Ubidots 中有了一个新设备,您可以在下一个窗口中检查它,并弹出一个指示您已创建新插件的窗口。

poYBAGSAfYaALvotAABma2spHIk628.png
图 18:您的设备已创建
 

在离开 Ubidots 之前,转到您的个人资料图标并选择API 凭据

pYYBAGSAfYiAVGnpAAB4KUuIc9k199.png
图 19:转到您的 API 凭据
 

单击默认令牌并复制它。以后会有用

pYYBAGSAfYuASzoDAACKxUxje3A034.png
图 20:复制您的默认令牌
 

下一步是创建与 Helium 的连接。转到 Helium 控制台并选择Integrations

poYBAGSAfY6AXXH0AAEaR8a1-P0046.png
图 21:在 Helium 控制台上选择集成
 

单击添加新集成

pYYBAGSAfZCAfaltAACK2v8vfPI151.png
图 22:单击添加新集成图标
 

选择Ubidots

pYYBAGSAfZWAJNcPAAFA1rLx_WE758.png
图 23:搜索 Ubidots 图标并单击它
 

单击添加集成

pYYBAGSAfZiAOVz4AAFoKTbCy-U780.png
图 24:单击添加集成
 

粘贴您在前面的步骤中复制的令牌。然后点击Get Webhook URL

poYBAGSAfZuAOe_WAAEKm4RQ5NM250.png
图 25:粘贴您之前创建的令牌
 

您将看到一条确认消息,其中包含来自 Ubidots 的链接,Helium 将在其中重定向数据。单击继续

poYBAGSAfaCAd7JgAAELRp9iar8106.png
图 26:检查链接并单击继续
 

为 Integration 指定一个名称并单击Add Integration

pYYBAGSAfaOAax98AAEBt7HDWLg316.png
图 27:添加名称并单击添加集成
 

这样,您就已经在 Helium 和 Ubidots 之间创建了一个新的集成,如图 28 所示。

pYYBAGSAfaaAMHKTAAEUYjcMxbI434.png
图 28:创建了一个新的集成
 

下一步是创建一个函数。

注意:函数用于将数据从一种格式转换为另一种格式。当我们对 WisBlock 进行编程时,数据是十六进制格式,它将使用这种格式到达 Web 服务器。但是要将这些数据发送到物联网平台,我们需要将这些信息解码为服务器可以理解的语言,例如 JSON 格式。

要创建函数,请单击添加新函数

pYYBAGSAfaiAHFvNAACTbzD8bxw981.png
图 29:添加新功能
 

选择自定义函数

poYBAGSAfauAM4e0AACkZiStFlQ607.png
图 30:选择自定义
 

为其命名,然后将以下代码复制并粘贴到 Custom Script 空间中,如图 31 所示。

function Decoder(bytes, port) {
var decoded = {};
decoded.temperature = (bytes[1] << 8 | (bytes[2])) / 100;
decoded.humidity = (bytes[3] << 8 | (bytes[4])) / 100;
decoded.pressure = (bytes[8] | (bytes[7] << 8) | (bytes[6] << 16) | (bytes[5] << 24)) / 100;
decoded.gas = bytes[12] | (bytes[11] << 8) | (bytes[10] << 16) | (bytes[9] << 24);
return decoded;
}
poYBAGSAfa6AZfmxAAFBNIasKOg343.png
图 31:复制自定义脚本空间中的函数
 

如果您使用上一节中的 Arduino 代码创建有效负载,则解码器功能很有用,并且仅当您使用 RAK1906 时才有效。如果使用其他传感器,或使用其他方式创建有效负载,您将需要修改代码。但这没什么大不了的,它是用 JavaScript 编写的,并且您有一个存储库,用于存储由 Helium 社区创建的许多有效负载。

您可以使用脚本验证器来验证代码的运行,如图 32 所示。

pYYBAGSAfbGADJPiAABvIrdCEtM176.png
图 32:输入一个十六进制值以检查您的脚本
 

如果您看到一切正常,请单击保存功能

现在您已经创建了设备、集成和解码器函数,是时候将它们放在一起了。转到Flows并单击+图标以添加新节点。

poYBAGSAfbOABWdBAABWS_qoypc013.png
图 33:单击 + 图标添加节点
 

单击Devices添加设备,单击Functions添加之前创建的函数,单击Integrations添加 Ubidots Integration。只需拖放即可将其定位在屏幕上。

poYBAGSAfbaAG4A-AAC52KKJ2rk693.png
图 34:拖放三个元素
 

通过单击第一个框的点连接块并将线拉到另一个块,这非常容易。

poYBAGSAfbiAMVWjAAClo68kYCQ210.png
图 35:连接块
 

就是这样!您已经准备好连接了!只需连接您的 WisBlock 即可查看!

pYYBAGSAfbuAEDNOAAC3pK7ySUg355.png
图 36:显示数据的 Helium 控制台
 

如果您的前几个数据包显示橙色,请不要担心,建立完整连接可能需要一些时间。

现在去Ubidots平台。单击设备 > 设备,您将找到一个已连接的设备。单击它以查看数据。

poYBAGSAfb6Afo4yAACQx-C31ng813.png
图 37:检查您连接的设备
 

您会发现许多与我们之前配置的气体、温度和湿度数据不同的其他数据,例如 RSSI、端口等。

pYYBAGSAfcCAV16CAAFDKZTdvQE554.png
图 38:设备数据
 

要以更有序的方式查看此数据,请转至数据 > 仪表板并单击添加新小部件

poYBAGSAfcOAMJhwAAB7QP9fPt8514.png
图 39:创建一个新的 Widget
 

您会发现许多小部件来显示您的信息。我将添加一个仪表来显示湿度数据。

poYBAGSAfcWAWZ3dAACCUt5FZEQ896.png
 

单击添加变量

poYBAGSAfceAEI2WAAA6bBAWtEg764.png
图 40:单击添加变量
 

单击要显示变量的设备,然后选择要显示的变量。在这种情况下,湿度,然后单击“选择”。

poYBAGSAfcqAOqaOAACKAXnTi2Y400.png
图 41:选择要在小部件上显示的变量
 

您可以更改外观和配置详细信息。设置你想要的数据,然后点击保存

pYYBAGSAfcyAB97eAABgRFoc3uQ920.png
图 42:配置首选项并单击保存
 

现在您的数据有条理地显示在仪表板中。

pYYBAGSAfc-ADY8OAABvBb9AlEc678.png
图 43:包含湿度数据的仪表板。
 

您可以按照上述步骤将其他变量添加到仪表板。

poYBAGSAfdKAb6D-AADFzWlRmT0740.png
 

恭喜!!你做到了!!您可以探索 Ubidots 用于显示和处理数据的工具,并继续学习您需要的有关 IoT 和 Helium 平台的一切知识。

下一步是什么?

现在,您已具备使用 LoRaWAN® 处理物联网的所有基础知识。您现在可以创建P2P 通信,可以使用 RUI3,可以使用 WiFi蜂窝网络,现在您正在使用 Helium Network。因此,我们计划使用我们的传感器和接口创建更多有趣的开发教程,或者创建专业和完整的应用程序。告诉我们,您想在这个平台上看到什么?我们该怎样帮助你?请留下您的评论,不要忘记关注我们的官方Hackster 个人资料。下个教程见!


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

评论(0)
发评论

下载排行榜

全部0条评论

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