Helium Network 是地球上最受欢迎的网络之一,这就是它被称为人民网络的原因。它由一个社区网络组成,任何人、企业或个人都可以使用它来连接他们的物联网终端节点。如果你对加密世界感兴趣,你就会知道你可以安装一个 Helium 热点并通过开采其代币 HNT 赚钱。但是,您知道您可以像使用蜂窝网络一样使用此网络吗?你会发现的!
Helium 是一个使用 LoRaWAN® 协议连接全球物联网设备的项目。在这个网络中,每个有覆盖的人都可以用它把数据发送到云端,开发一个可以解决特定环境下很多问题的应用程序。
这个项目做得很好。他们专注于许多物联网行业,其在加密货币社区的流行有助于在世界许多地方创建网络。加利福尼亚州甚至有一个城市正在努力成为一个由 Helium 连接的智能城市。
在世界上大多数主要城市,都安装了大量的 Helium 热点。坏消息是没有开发足够的应用程序,因为这是一项相对较新的技术。另一方面,需要创建更多此类应用程序的需求每天都在增加,您可以使用 WisBlock 轻松开发它们,所以让我们学习如何做吧!
或者您可以单独购买这些物品:
这些项目也可用于:
在我们开始动手项目之前,我们需要澄清为什么需要所有步骤。看一下图 1。端节点负责将数据从模拟世界转换到数字世界,并将其传输到网关。当您使用 Helium Network 时,您可以使用您在需要实施项目的地点拥有的覆盖范围。不需要额外的硬件,因为您将使用其他人的硬件。
数据到达这些网关/热点并传输到网络服务器,这取决于您使用的网络,在这种特殊情况下,Helium 提供了它。您可以将此数据发送到各种物联网平台以进行可视化、自动通知和分析。您可以在 Ubidots、Qubitro、DataCake、AWS 等之间进行选择。
要检查您是否覆盖,请访问https://explorer.helium.com/,然后搜索您的位置。如果您在您所在国家/地区的主要城市,您将获得 Helium 覆盖。我在哥伦比亚波哥大,我所在的地区似乎有覆盖范围。那么,让我们来试试吧!
要开始使用 Helium 网络,请访问https://console.helium.com/并注册(如果您没有帐户)。在注册过程中,您需要添加一个新组织。别担心,您可以输入任何名称并继续该过程。
Helium 控制台的主页如图 3 所示。
在添加新设备之前,让我们谈谈一些重要的事情。当您使用 Helium 网络将数据从终端设备发送到云端时,您必须为此付费。网络内的官方货币不是HNT,但发送的数据必须用DC(Data Credits)支付。您将收到 250 DC 以开始使用 Helium 网络。您可以根据您的应用需求购买更多 DC。每个 DC 的值定义为:
1DC = 24 字节 = 0.00001 美元
记住这个细节,继续添加新设备。为此,请转至设备并单击添加新设备图标。
在名称字段中输入您想要的任何名称,然后单击保存设备。Dev EUI 、App EUI和App Key变量将自动生成,所以不要更改它们。
这样,就创建了一个新设备。当您单击设备名称时,您可以在仪表板中检查数据。
让我们开发一个基础项目:读取大气变量。即温度、湿度、压力和气体阻力。
第一步是配置硬件。为此,您需要以下材料:RAK4631、RAK19007 和 RAK1906,如图 7 所示。
传感器的连接非常简单,将其插入任何传感器插槽,即插槽 A、B、C 和 D,然后用螺丝固定。如图 8 所示。
最后,将 LoRa 天线连接到 RAK4631 核心。
最后,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 之间的集成时,将需要此信息。
现在您已准备好验证和上传您的程序。
如果一切正常,您就已经在向 Helium 发送数据了。
在 Serial Monitor 中,您将看到类似于图 12 中所示屏幕截图的内容。WisBlock 连接到 LoRaWAN® 并每 20 秒读取和发送一次数据。我们建议,如果您想保存 Helium 给您的积分,请不要设置较短的发送间隔。
在Helium Console中可以看到数据进来了,但是可以看到所有的数据都显示为红色。这意味着您没有集成。更明确地说:您的数据到达 Helium LNS(LoRaWAN® 网络服务器),但无法存储。此数据将仅存储 300 秒、5 分钟,然后就会消失。这就是需要物联网平台的原因。
物联网平台或应用服务器有很多,例如 Ubidots、Qubitro、Datacake、AWS 或 MS Azure,您甚至可以搭建自己的应用服务器。但在这种情况下,我们将使用 Ubidots。
在这部分,您将需要一个 Ubidots 帐户。您有两种选择可以开始,第一种是在您测试平台时创建一个为期一个月的免费专业帐户。第二种选择是创建一个仅限于教育或研究项目的免费帐户,称为Ubidots STEM。对于本教程,我们将使用第二个。
您只需使用您的电子邮件注册即可创建一个新帐户。当您第一次访问 Ubidots 时,您没有任何配置。所以第一步是创建一个设备。单击设备并选择插件。
选择创建插件。
在对话窗口中,选择选项Helium 。
按蓝色图标继续。
在 Ubidots STEM 中,您只有默认令牌选项,当您使用专业版时,您可以创建更多令牌。选择Default Token选项,然后单击蓝色图标继续。
添加名称和描述,最后单击绿色图标。
现在,您在 Ubidots 中有了一个新设备,您可以在下一个窗口中检查它,并弹出一个指示您已创建新插件的窗口。
在离开 Ubidots 之前,转到您的个人资料图标并选择API 凭据:
单击默认令牌并复制它。以后会有用
下一步是创建与 Helium 的连接。转到 Helium 控制台并选择Integrations 。
单击添加新集成。
选择Ubidots 。
单击添加集成
粘贴您在前面的步骤中复制的令牌。然后点击Get Webhook URL 。
您将看到一条确认消息,其中包含来自 Ubidots 的链接,Helium 将在其中重定向数据。单击继续。
为 Integration 指定一个名称并单击Add Integration 。
这样,您就已经在 Helium 和 Ubidots 之间创建了一个新的集成,如图 28 所示。
下一步是创建一个函数。
注意:函数用于将数据从一种格式转换为另一种格式。当我们对 WisBlock 进行编程时,数据是十六进制格式,它将使用这种格式到达 Web 服务器。但是要将这些数据发送到物联网平台,我们需要将这些信息解码为服务器可以理解的语言,例如 JSON 格式。
要创建函数,请单击添加新函数。
选择自定义函数
为其命名,然后将以下代码复制并粘贴到 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;
}
如果您使用上一节中的 Arduino 代码创建有效负载,则解码器功能很有用,并且仅当您使用 RAK1906 时才有效。如果使用其他传感器,或使用其他方式创建有效负载,您将需要修改代码。但这没什么大不了的,它是用 JavaScript 编写的,并且您有一个存储库,用于存储由 Helium 社区创建的许多有效负载。
您可以使用脚本验证器来验证代码的运行,如图 32 所示。
如果您看到一切正常,请单击保存功能。
现在您已经创建了设备、集成和解码器函数,是时候将它们放在一起了。转到Flows并单击+图标以添加新节点。
单击Devices添加设备,单击Functions添加之前创建的函数,单击Integrations添加 Ubidots Integration。只需拖放即可将其定位在屏幕上。
通过单击第一个框的点连接块并将线拉到另一个块,这非常容易。
就是这样!您已经准备好连接了!只需连接您的 WisBlock 即可查看!
如果您的前几个数据包显示橙色,请不要担心,建立完整连接可能需要一些时间。
现在去Ubidots平台。单击设备 > 设备,您将找到一个已连接的设备。单击它以查看数据。
您会发现许多与我们之前配置的气体、温度和湿度数据不同的其他数据,例如 RSSI、端口等。
要以更有序的方式查看此数据,请转至数据 > 仪表板并单击添加新小部件。
您会发现许多小部件来显示您的信息。我将添加一个仪表来显示湿度数据。
单击添加变量。
单击要显示变量的设备,然后选择要显示的变量。在这种情况下,湿度,然后单击“选择”。
您可以更改外观和配置详细信息。设置你想要的数据,然后点击保存。
现在您的数据有条理地显示在仪表板中。
您可以按照上述步骤将其他变量添加到仪表板。
恭喜!!你做到了!!您可以探索 Ubidots 用于显示和处理数据的工具,并继续学习您需要的有关 IoT 和 Helium 平台的一切知识。
现在,您已具备使用 LoRaWAN® 处理物联网的所有基础知识。您现在可以创建P2P 通信,可以使用 RUI3,可以使用 WiFi和蜂窝网络,现在您正在使用 Helium Network。因此,我们计划使用我们的传感器和接口创建更多有趣的开发教程,或者创建专业和完整的应用程序。告诉我们,您想在这个平台上看到什么?我们该怎样帮助你?请留下您的评论,不要忘记关注我们的官方Hackster 个人资料。下个教程见!
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !