如何利用Blues Wireless实现断电检测器的设计

描述

  据估计,全球有近 90% 的家庭用上了电,这意味着当我们停电时,我们中近 90% 的人不可避免地会感到烦恼。

  虽然大多数时候这只是一种烦恼,但失去电力(尤其是当我们在离开或睡着时没有意识到它时)可能会导致灾难性的后果。这可能意味着非常多不可估计的意外情况,从恢复供电时由于电流浪涌导致的设备损失,到危重护理环境中的生命线。

  在这个项目中,我们将介绍如何构建我认为最简单的全球可用、支持蜂窝的断电检测器,并配备由 Twilio 提供支持的即时 SMS 通知。

Wireless

  这个项目不需要用到以往曾频繁使用的烙铁,但它也并没有因此变得更容易!

  我们将使用Blues Wireless Cellular Notecard,将其连接到Blues Wireless Notecarrier-A,并使用新发布的 Notecard 固件功能,该功能允许在没有主机微控制器的情况下自主报告 GPIO 状态更改。

Wireless

  我们还需要一个带 JST 连接器的小型 LiPo 电池(任何容量都可以)和一根微型 USB 电缆(带墙上插座适配器)。

  使用蜂窝网络的原因

  当发生停电时,我们不能依赖本地网络硬件来启动和运行(例如 Wi-Fi)。在这种情况下,蜂窝网络是唯一可靠的选择。

  Blues Wireless Notecard 有Wi-Fi和蜂窝两种版本。蜂窝模型在全球范围内适用于LTE-M、NB-IoT 和 Cat-1 协议,与传统的蜂窝物联网产品不同,因为它们预付了 500MB 的数据和 10 年的全球蜂窝服务。

Wireless

  Notecard 成功的秘诀是,一旦你打开它,它就知道要去哪里。Notecard 不在公共互联网上,只能通过私有 VPN 隧道进行通信(使其成为非常安全的设备)。不需要证书管理或手动密钥轮换。

  Notecard 与什么通信?它自动与Blues Wireless 云服务 Notehub.io 同步,后者又可以将数据安全地路由到几乎任何云服务(如 AWS、Azure、Google Cloud)、RESTful 端点或支持 MQTT 的服务。

Wireless

  您只需打开 Notecard 的电源,使用基于 JSON 的 Notecard API中的命令之一,它就能够与云进行通信。

  构建一个断电检测器

  如前所述,我们将使用 Notecard 和 Notecarrier-A。Notecarriers是开发板,可让您使用 Notecard 轻松构建 IoT 解决方案的原型。Notecarrier-A 提供板载天线、JST 连接器、用于外围设备的 Qwiic 连接器,并暴露了 Notecard 上的所有引脚。

  首先,我们只需将 Notecard 插入 Notecarrier-A 上的 M.2 边缘连接器:

Wireless

  然后我们将MAINNotecarrier-A 上的 u.fl 连接器连接到MAINNotecard 上的 u.fl。这允许使用 Notecarrier 上的板载蜂窝天线:

Wireless

  注意:您也可以选择连接GPSu.fl 连接器,这样您就可以使用蜂窝 Notecard 上的 GPS 模块。

  接下来,我们需要使用短跳线连接VUSB到AUX1Notecarrier-A。通过正确的card.auxNotecard API 请求,Notecard 可以自动报告任何AUX引脚 (1-4) 上的状态变化。通过连接VUSB到AUX1,我们将自己设置为能够将断电的状态变化报告到VUSB:

Wireless

  通过JST 连接器将 LiPo 电池连接到 Notecarrier 。LIPONotecarrier 的另一个优点是,当它通过 USB 供电时,它将保持连接的 LiPo 电池的电量:

Wireless

  最后,Notecarrier 可以通过 micro USB 电缆连接到您想要监控的墙上插座。

  设置Notecard

  Notecard 使用一种语言:JSON。

  所有Notecard API 命令都是 JSON 格式,这也意味着任何可以读写字符串的编程语言也可以与Notecard 通信。如果您使用的是 MCU 或单板计算机,则有Blues Wireless 支持的适用于 Python、C/C++、Arduino 和 Go 的 SDK(以及社区支持的适用于Rust和.NET 的 SDK)。

  使用dev.blues.io 提供的浏览器内终端,我们可以通过 Web Serial 的魔力直接连接到我们的 Notecard 并发出基于 JSON 的 API 命令:

Wireless

  尝试发出一个示例命令,例如{“req”:“card.version”},从记事卡中获取一些识别信息:

  》 {“req”:“card.version”}

  {

  “body”: {

  “org”: “Blues Wireless”,

  “product”: “Notecard”,

  “version”: “notecard-3.3.1”,

  “ver_major”: 3,

  “ver_minor”: 3,

  “ver_patch”: 1,

  “ver_build”: 14612,

  “built”: “May 18 2022 11:21:51”

  },

  “version”: “notecard-3.3.1.14612”,

  “device”: “dev:864475040543182”,

  “name”: “Blues Wireless Notecard”,

  “sku”: “NOTE-NBGL-500”,

  “board”: “1.11”,

  “api”: 3

  }

  注意:这是检查 Notecard 固件版本的好机会!我们即将使用的新 API 功能至少需要固件 v3.3.1。

  接下来,我们可以在 Notehub.io 上设置一个新的(免费)帐户并创建我们的第一个 Notehub 项目。

  在这个 Notehub 项目中,我们将看到来自 Notecard 的传入数据,并使我们能够使用 Twilio 发送 SMS 消息:

Wireless

  创建 Notehub 项目后,我们需要保存项目的唯一标识符(ProductUID ),例如:

  com.your-company.your-name:power_outage

  接下来,返回浏览器内终端,将此 Notecard 与我们刚刚创建的 Notehub 项目相关联。为此,我们使用hub.set API:

  {

  “req”:“hub.set”,

  “product”:“com.blues.rlauer:power_outage”,

  “mode”:“continuous”

  }

  然后,我们可以使用hub.sync API 快速测试蜂窝连接,如下所示:

  {“req”: “hub.sync”}

  几秒钟后,我们就可以回到我们的 Notehub 项目,看到 Notecard 已经成功建立了蜂窝连接:

Wireless

  现在我们来看看好东西!我们可以使用card.aux API 的一项新功能,通过以下命令自动报告 AUX 引脚上的状态变化:

  {

  “req”:“card.aux”,

  “mode”:“gpio”,

  “usage”:[

  “input-pulldown”,

  “off”,

  “off”,

  “off”

  ],

  “sync”:true,

  “file”:“power-outage.qo”

  }

  请求

  数组中元素的顺序usage对应于 AUX 引脚。所以数组中的第一项 == AUX1(我们的跳线连接到它)并且它使用input-pulldown选项将引脚设置为下拉输入。

  该“sync”:true参数告诉我们的 Notecard立即将任何状态更改传达给我们的 Notehub 项目。

  最后,该“file”:“power-outage.qo”参数提供了一种在 Notehub 中识别/命名这些状态更改事件的简单方法。

  测试

  假设我们的硬件已插入并以正确的方式连接,并且我们的 Notecard 与 Notehub 成功通信,我们已准备好测试断电!

  只需从 Notecarrier-A 上拔下 micro USB 电缆即可。LiPo 电池将立即成为 Notecard 的活动电源,并且将记录状态更改。AUX1您可能会注意到 Notecard 的绿色 LED 亮起,让您知道它正在与云通信并向 Notehub 发送便笺:

Wireless

  这很棒!在提供的 JSON 中,我们看到阵列中的 AUX1 引脚状态为“低”,这意味着 USB 电源已丢失:

  {“state”:[{“low”:true},{},{},{}]}

  我们还可以重新插入 Notecarrier以查看恢复电源时状态更改事件的样子:

  {“power”:true,“state”:[{“high”:true},{},{},{}]}

  看到这个停电数据显示在 Notehub 中,虽然很好,但并不能真正帮助我们采取任何行动。

  我们的下一步是设置 SMS 消息,以便在停电几秒钟内收到一条短信。这是通过Notehub的路由功能实现的。

  启用短信功能

  Notehub 路由让您可以将数据路由到任何第三方云服务。这可能是 AWS、Azure 或 Google Cloud 等大型云,也可能是 Datacake、Ubidots、Adafruit.io 或 Losant 等物联网平台。它甚至可以是 MQTT 服务或通用 RESTful HTTP/S 服务,就像 Twilio 提供的消息端点一样:

  https://api.twilio.com/2010-04-01/Accounts/[twilio_account_sid]/Messages.json

  请按照 Blues Wireless 提供的广泛的 Twilio SMS 路由指南来启用对 Twilio 的消息传递 API 的访问。

  正如您在该指南中看到的,我们可以对 Notehub 路由进行一些小的自定义,以更改发送的 SMS 消息。

  首先,让我们确保仅在将这些事件发送到 Notehub时才收到通知。为此,请确保在配置 Notehub 路由时提供的字段中输入:power-outage.qopower-outage.qo

Wireless

  其次, Notehub允许您使用JSONata 动态转换JSON。上面的 Twilio 指南中对此进行了概述,我将包含我使用的 JSONata 表达式:

  “&Body=” & (body.state.low ? “Your power is out!

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

全部0条评论

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

×
20
完善资料,
赚取积分