本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

基于Conexio Stratus的物联网天气数据记录器

发布时间:2022-08-24
分享到:

基于Conexio Stratus的物联网天气数据记录器

发布时间:2022-08-24
分享到:

通过本文,你将了解如何使用 Conexio Stratus 套件和 Datacake 构建低成本(和低代码)天气数据记录器

背景

建筑物的温度读数对于供暖专家、社会房东甚至房主来说可能是一个主要问题,以确保房屋内的温度恒定且定期受控。适当管理的室内气候可以保证为用户提供舒适的环境并有助于节省能源。

本文将演示如何:

  • 免费创建您自己的基于物联网的天气数据仪表板。
  • 在 Datacake 上创建您的第一台设备,并通过 MQTT 代理将运行 ZephyrRTOS 的 Conexio Stratus 连接到 Datacake 平台。
  • 组装所需的硬件。
  • 使用 Conexio Stratus 设备从 BME280 传感器获取重要的环境数据以及电池电压、LTE 信号强度、固件版本和设备 IMEI 等其他生命体征数据,并将其推送到云端。
  • 从世界任何地方可视化和跟踪您的环境数据。

为什么选择蜂窝网络以及为什么选择 Conexio Stratus 套件?

Wi-Fi 服务可能不是最可靠的,在某些地方甚至不是用户的选择。例如,如果您想在农场中间监控和部署一个传感器设备,那里没有 WiFi,但您有良好的蜂窝网络覆盖。这就是蜂窝连接派上用场的地方,这也是我决定使用基于蜂窝的 Conexio Stratus 开发套件的原因。尽管还有许多其他基于蜂窝的物联网平台,但以下是 Conexio Stratus 脱颖而出的一些原因。

  • Conexio Stratus 开发套件使我们能够轻松地对 IoT 解决方案进行原型设计,因为它带有 500MB 的预付费数据和 10 年的全球蜂窝服务。不需要合同。
  • 该开发套件支持 LTE-M 和 NB-IoT 协议,还集成了 GPS,无需购买和集成外部 GPS 模块。
  • 它还具有板载环境传感器,特别是来自 ST micro 的 Sensirion Sht4x 温度和湿度传感器和 LIS2DH 加速度计。
  • 最后但同样重要的是,该套件支持能量收集和太阳能电池充电。这是目前在许多物联网设备中找不到的缺失功能之一。

除了 Stratus 设备,我还使用了 Stratus 扩展板,它支持 Sparkful QWIIC 连接器、用于 Mikroe click 板的 Mikro 总线,以及用于连接外部传感器和执行器的 Grove I2C 连接器。使用此防护罩,我们连接了 Mikroe 的 BME280 天气点击板,用于测量温度、湿度和压力。这主要是为了演示无需焊接即可轻松地将第三方传感器模块连接到 Stratus 设备。

无需外部MCU

与其他需要专用 MCU 来控制 GPS、传感器等其他外围设备的基于蜂窝的 IoT 设备不同,Conexio Stratus 无需外部 MCU。它简单地将主 MCU、单元和 GPS 模块组合在一个由 nRF9160 SiP 支持的微型外形中。nRF9160 包含一个仅用于应用的 Arm Cortex-M33 应用处理器、一个完整的 LTE 调制解调器、射频前端 (RFFE) 和一个电源管理系统,使其成为市场上最紧凑、最完整和最节能的蜂窝物联网解决方案。此外,无需外部 MCU、蜂窝或 GPS 模块,降低了设备集成成本和时间。

因此,让我们深入设置所需的软件和硬件配置。

组装硬件以进行初始固件测试

以下是我们使用过的所有硬件:

对于初始测试,我们将主 Stratus 开发板和 Mikroe BME280 天气点击板插入 Stratus 防护板,如下所示。最终部署的完整硬件将在本文后面进行组装和展示。

Datacake 注册和设置

在此处在 Datacake 平台上注册并创建用户帐户。您的前两个设备是免费的。

在通过 MQTT 存储任何测量读数之前,我们需要在 Datacake 平台上设置一个设备。注册和帐户激活后,前往 Datacake 工作区的车队视图。

点击右上角的添加设备,弹出如下弹窗。

在STEP 1中,选择设备类型为“ API ”,在 Datacake Product 下选择New Product 。然后在“产品名称”下为您的设备分配一个名称。在本教程中,我们将产品命名为“ Conexio Stratus ”。

在STEP 2中,您可以添加一个或多个 API 设备。接下来,分配设备名称并点击Next 。

最后,在STEP 3中,选择 Datacake 计划。要创建设备,必须选择付款计划。由于 Datacake 最多允许您免费创建两个设备,因此您可以选择“免费”计划并单击“添加 1 个设备”。

您的设备现在已经注册到 Datacake 平台,应该会出现在“ Fleet ”视图中的设备下。单击您注册的设备,它将带您进入其工作区。在STEP 2中,您可以添加一个或多个 API 设备。接下来,分配设备名称并点击Next 。

添加数据库字段

好的。此时,我们需要在设备的数据库中定义字段,这些字段将托管从 Stratus 设备通过 MQTT 发送的测量值。

在 Datacake 中,导航到“配置”选项卡并向下滚动到“字段”部分,然后单击“添加字段”按钮。

这将打开一个具有多种数据类型的模式。在本文中,我们将添加以“ Float ”类型的温度开头的多个字段。Datacake 会自动填写“标识符”字段。有关详细信息,请参阅下面的片段。

完成字段详细信息后,单击“添加字段”即可完成此字段。您将在下面看到我们为此示例应用程序添加的所有不同字段。这些字段包括:

  • RSRP - LTE 信号强度值
  • 电池 - 用于记录连接的锂聚合物电池的电压
  • IMEI - Conexio Stratus 国际移动设备识别码 (IMEI) 号码
  • 版本 - 设备上运行的固件版本
  • 温度 - BME280 传感器的环境温度读数
  • 湿度 - BME280 传感器的相对湿度读数
  • 压力 - BME280 传感器的环境压力读数

添加集成

接下来,在 Fields 部分的正下方,您将找到Integrations部分。要通过 MQTT 从您的设备转发数据,必须建立与 Datacake 的连接。单击配置,将弹出MQTT 集成信息窗口。

Datacake 平台提供具有 TLS 加密的 MQTT 代理,它允许订阅和记录数据。

在该平台的帮助下,您可以:

  • 通过 MQTT 将传入的设备数据转发到外部服务
  • 通过 MQTT 将数据存储到 Datacake Cloud

为了将测量记录到 Datacake Cloud,我们将把数据发布到相应的主题结构中,如 MQTT 集成窗口中所示。

注意:复制上面的代理名称和我们稍后将在固件配置中使用的主题。

Datacake 的 MQTT 主题前缀遵循以下结构:

dtck-pub/<product_slug>/<device_id>/<field_name>

主题结构中的最后一个元素是测量值的字段名称,它出现在我们之前创建的数据库字段中。该字段(标识符)是我们将发布来自 Stratus 设备的不同测量值的地方。

生成访问令牌

在 Datacake 平台创建和注册用户帐户时,会自动生成用户访问令牌。此 API 令牌充当安全性并允许设备访问用户的帐户。

注意:我们将需要此令牌来使用 Datacake 平台验证我们的 Stratus 设备。

要查看您的个人访问令牌,请单击“ Edit Profile ”,然后单击“ API ”。

要查看您的访问令牌,请单击“显示”。现在将这个访问令牌复制到一个安全的地方,因为我们稍后会需要它。

至此,我们已经具备了将 Conexio Stratus 设备中的数据连接和发布到 Datacake 所需的所有详细信息。现在让我们转到设备固件方面。

MQTT 应用程序代码
我们扩展了 nRF Connect SDK 中提供的示例 MQTT 应用程序,以便轻松地将 Stratus 套件连接到 MQTT 代理,从 Datacake 平台发送和接收数据。

扩展的示例应用程序连接到 Datacake 并将数据发布到配置的发布主题。在按钮按下事件时,应用程序将设备生命值发布到 Datacake 并定期发布环境数据,例如温度和湿度。

完整的应用程序可以在本文下方找到。

将 Datacake 凭据添加到应用程序代码

首先,我们必须将 Datacake 访问令牌添加到应用程序代码中。您将需要conexio_stratus_firmware/samples/datacake/prj.conf使用您的 Datacake 访问令牌进行编辑。更新以下参数。

# MQTT application configuration authentication
CONFIG_MQTT_PASS="DATACAKE_ACCESS_TOKEN"
CONFIG_MQTT_USER="DATACAKE_ACCESS_TOKEN"

注意用户名和密码是一样的。

MQTT 代理配置

接下来,我们需要配置 MQTT 代理主机名和端口。使用以下内容更新 Datacake 代理配置:

# MQTT broker configuration
CONFIG_MQTT_BROKER_HOSTNAME="mqtt.datacake.co"
CONFIG_MQTT_BROKER_PORT=8883

我们将使用使用 CA 签名服务器证书的端口 8883。

MQTT 发布/订阅配置

要将测量记录到设备的特定数据库字段,我们将更新 MQTT 发布主题,如下所示:

# MQTT topics for recording measurement values
# Change this as per your Datacake MQTT Integration and fields
CONFIG_MQTT_PUB_TOPIC_TEMP="dtck-pub/<product_slug>/<device_id>/TEMPERATURE"
CONFIG_MQTT_PUB_TOPIC_HUM="dtck-pub/<product_slug>/<device_id>/HUMIDITY"
CONFIG_MQTT_PUB_TOPIC_PRES="dtck-pub/<product_slug>/<device_id>/PRESSURE"
CONFIG_MQTT_PUB_TOPIC_VER="dtck-pub/<product_slug>/<device_id>/VERSION"
CONFIG_MQTT_PUB_TOPIC_IMEI="dtck-pub/<product_slug>/<device_id>/IMEI"
CONFIG_MQTT_PUB_TOPIC_BAT="dtck-pub/<product_slug>/<device_id>/BATTERY"
CONFIG_MQTT_PUB_TOPIC_RSRP="dtck-pub/<product_slug>/<device_id>/RSRP"
CONFIG_MQTT_PUB_TOPIC_BUTTON="dtck-pub/<product_slug>/<device_id>/BUTTON"

# MQTT subscription topics
CONFIG_MQTT_SUB_TOPIC="dtck/conexio-stratus/<product_slug>/<device_id>/+"

例如,使用 Product-Slug my-product , Device-ID 6b98a3bb-9ae1-418f-9375-f23091a849cd和 Field-IdentifierTEMPERATURE将发布消息到:

dtck-pub/my-product/6b98a3bb-9ae1-418f-9375-f23091a849cd/TEMPERATURE

有效负载将保存您要记录到该特定数据库字段中的值。

publish("dtck-pub/my-product/6b98a3bb-9ae1-418f-9375-f23091a849cd/TEMPERATURE", 25.00)

到这一步已经设置好了 MQTT 参数配置。

对 Stratus 设备进行编程

要编译应用程序,请在应用程序目录中打开一个终端窗口并发出以下west命令

west build -b conexio_stratus_ns
成功编译应用程序后,连接 Stratus 设备并将其置于 DFU 模式。

使用 newtmgr 刷写编译好的固件:

newtmgr -c serial image upload build/zephyr/app_update.bin
打开串行控制台并重置 Stratus 设备。终端中将显示以下串行 UART 输出。如果您是第一次连接 Stratus 设备,请花几分钟时间注册到网络并与塔建立 LTE 连接。由于 Stratus 设备已预先配置为自动连接到 LTE 网络,因此无需额外的 SIM 激活。

*** Booting Zephyr OS build v2.6.99-ncs1  ***
<inf> mqtt_app: Stratus MQTT Datacake sample started, version: v1.0.0
<inf> watchdog: Watchdog timeout installed. Timeout: 60000
<inf> watchdog: Watchdog started
<dbg> watchdog.watchdog_feed_enable: Watchdog feed enabled. Timeout: 30000
<inf> mqtt_app: Provisioning certificates
<inf> mqtt_app: LTE Link Connecting...
+CEREG: 2,"412D","03382810",7
+CSCON: 1
+CEREG: 5,"412D","03382810",7,,,"11100000","11100000"
%CESQ: 35,1,10,1
<inf> mqtt_app: LTE Link Connected!
<dbg> mqtt_app.modem_rsrp_handler: Incoming RSRP status message, RSRP value is 35
<inf> mqtt_app: IPv4 Address found 144.126.245.197
<inf> mqtt_app: client_id: 352656103852334
<inf> mqtt_app: TLS enabled
<inf> env_sensors: Environmental sensors initialized
<inf> mqtt_app: MQTT client connected<inf> mqtt_app: Subscribing to: dtck/conexio-stratus/4fbfe839-c8aa-4882-a890-02f981753f6d/+ len 59<inf> mqtt_app: SUBACK packet id: 1234
<inf> mqtt_app: Publishing: 26.06
<inf> mqtt_app: to topic: dtck-pub/conexio-stratus/4fbfe839-c8aa-4882-a890-02f981753f6d/TEMPERATURE len: 73
<inf> mqtt_app: Publishing: 23.24
<inf> mqtt_app: to topic: dtck-pub/conexio-stratus/4fbfe839-c8aa-4882-a890-02f981753f6d/HUMIDITY len: 70
...
建立 LTE 连接后,您会注意到 Stratus 连接到 Datacake MQTT 代理,之后它将传感器数据发布到配置的主题。您的 Stratus 设备现在处于活动状态并正在与 Datacake 云进行通信。

在 Datacake 仪表板上可视化天气数据

固件启动并运行后,返回 Datacake 仪表板并将图形小部件添加到您的工作区。您现在将看到设备数据流入 Datacake 并填充漂亮的图表。下面是我们创建的示例仪表板。

您可以从世界任何地方访问实时设备仪表板和数据:https ://app.datacake.de/pd/f66e9fed-996e-4b84-b44f-e3d4e458cd3e

组装最终部署就绪的硬件

现在我们已经启动并运行了初始固件和仪表板,让我们组装完整的硬件以进行部署。在这里,我们将一个小型太阳能电池板连接到 Stratus 护罩,用于为 LiPo 电池充电。通过滑动 Stratus 主板侧面的开关打开设备后,完整的硬件安装在亚克力外壳内,如下所示:

结论

这篇文章演示了您可以使用 Conexio Stratus 蜂窝物联网设备创建的众多应用程序之一。现在我们有了像 Datacake 这样的无代码或低代码云平台,发送和可视化 IoT 设备数据变得比以前容易得多。借助预付的 500MB 蜂窝数据,您无需 WiFi、蓝牙甚至 SD 卡即可从世界任何地方跟踪和记录您的天气数据。

本文中所用到的一些代码

如果您对此项目有任何想法、意见或问题,请在下方留言。

以上内容翻译自网络,原作者:Rajeev Piyare,如涉及侵权,可联系删除。

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论