物联网,尤其是工业物联网 (IIoT),不仅要在很多业务部门之间产生变革性的影响,还要为嵌入式 IIoT 解决方案的开发带来根本性的转变。很多负责此类项目的工程师选择市售的单板计算机 (SBC) 作为设计的基础。尽管这种方法可以快速产生结果,但也会让开发人员难以轻松地将最终的设计付诸大批量生产。当选择原型开发平台时,一定要仔细检查作为设计基础的 MCU 以及各种支持元件,以了解它们是否可以单独购买并能够从头集成到新的设计中。
本文将重点介绍用于物联网设计的简单温度传感器平台的设计,还将重点说明所使用的个别元件。此外,此平台不仅用于验证设计理念,还将展示如何利用功耗调查对开发进行微调以及如何优化功耗。
图 1: IIoT 温度传感器的基本功能要求
考虑图 1 中所示的简单温度传感器设计。此图突出显示了需要为将自身的数据存储在云平台上的电池供电型温度传感器设计的基本功能块。微控制器 (MCU) 会按预设的时间间隔轮询温度传感器,然后使用无线设备建立通信链路并向负责接收数据的云应用程序发送数据。对设计工程师而言,在选择要使用的元件时需要做出很多个人决定,这些决定会影响物料清单成本。例如,温度传感器可能包括专用的温度传感器(例如Analog Devices 推出的畅销 TMP36 系列),或者更加全面的温度、湿度和气压组合传感器(例如 Bosch Sensortec BME280),或者 Epcos-TDK 推出的普通表面贴装 PTC 热敏电阻器。成本只是其中一个考虑因素,还需要考虑精度、容差和接口方法。选择的传感器还会决定 MCU 规格。如果使用经济实惠的热敏电阻器,在所需的温度范围可能无法与温度呈线性关系,因此需要通过软件执行某种程度的斜率计算。尽管实现此目的所需的 MCU 资源数量是最少的,但仍需要加以考虑。从另一个极端来看,BME280 需要与主机 MCU 进行 SPI 或 I2C 通信,因此需要使用一个具有这些接口功能并能够控制传感器和处理更多数据的设备。对于通信方法,也同样需要做出很多关键决定。最重要的决定或许是要使用的无线协议,最常用的协议是蓝牙和 Wi-Fi。蓝牙可进行短距离的通信,适合传输相对较少的数据,通常与网关设备进行通信,网关设备可能会首先将数据整合,然后再使用长距离通信协议(例如 Wi-Fi)进一步传输这些数据。利用传感器进行 Wi-Fi 通信时,无需使用中间网关,因此可进行长距离通信,适合传输更多的数据,但功耗会更高。
决定使用无线通信之后,还需要决定是选择使用分立方法还是预认证的无线模块。除非您的公司拥有自己的射频专家设计团队且预期的产量非常高,否则很可能会使用模块方法。
这种设计的最终功能是电源管理。为传感器供电的其中一种方法是从可更换的钮扣电池供电,但也可以使用具有无线能量收集技术或小型太阳能板的充电电池。此外,如果能够将 MCU 和无线模块置于多种不同的休眠模式,则会非常有利于降低功耗以延长电池寿命。通常使用软件来以这种方式实现对设备的控制。这种设计的其他考虑因素还包括预期的产量,以及此传感器是否有可能是公司希望开发并推出的众多传感器产品之一。如果是后一种情况,则开发基于平台的方案可获得更多的优势,在该方案中,MCU 和无线功能在整个系列内都是通用的,每种型号只有传感器特定的电路有所不同。
当原型开发考虑采用传感器设计(例如前面重点介绍的设计)时,设计工程师可以通过多种不同的方式搭建设计。过去,制造商的开发套件和评估板提供了构建设计基础的理想学习平台,不过在很多情况下集成各种功能时,需要执行一些设计工作和嵌入式开发。但完全集成的新款紧凑型单板计算机 (SBC) 正日益受到希望最大限度缩短原型开发时间的工程师的欢迎,这种设计足够开源,因此工程师能够以此 SBC 为中心构建最终设计的基础。在这种情况下,必须能够买到 SBC 的所有核心元件,并且知识共享许可证必须涵盖所有的器件库。
完全集成的紧凑型 SBC 的一个很好的例子是 Adafruit Feather M0 Wi-Fi(图 2)。
图 2: Adafruit Feather M0 Wi-Fi 单板计算机。
Adafruit Feather M0 Wi-Fi 示意图如图 3 所示。
图 3: Adafruit Feather M0 Wi-Fi 示意图。
该板的 BOM 包括一个 32.768 kHz 的晶体、四个 LED 以及几个电阻器和电容器。
具有 USB 引导程序的 MCU 允许使用畅销的 Arduino IDE,为 Feather 产品的软件开发提供了便利。使用这种方法可以快速开发应用程序,而紧凑的 Feather 板可轻松集成到早期小批量生产的测试版新产品中。专业开发人员无需使用 Feather 的 Arduino USB 串行程序和调试功能,相反,他们可以选择使用 Atmel 软件框架 (ASF),此框架使用位于板下侧的 SWDIO/SWCLK 引脚。正如前文所述,成功使用 SBC 为您的设计开发原型的关键在于能够基于 SBC 的核心元件搭建您自己的设计。Adafruit Feather M0 无疑也支持这种方法。MCU 和无线模块可在市面上直接够得,提供多种开发工具和资源。可以在此处找到 Microchip SAMD21G18 微控制器规格书,此规格书详细说明了可用的器件选项和封装尺寸。硬件资源包括 ATSAMD21 XPRO 评估板、内容全面的用户指南,以及在在线仿真器、编程器和调试器 (Atmel-ICE),还包括一系列扩展板,例如装有多种传感器的 ATIO1-XPRO。WINC1500 也受到开发资源的良好支持,包括可与 ATSAMD21 XPRO 配合使用的 XPRO 扩展板 ATWINC1500-XPRO。
Feather 提供了一个可用于验证设计理念并开发原型的理想开发平台,不仅如此,它所基于的所有元件都是现成的,这意味着您也可以信心百倍地将原型设计投入到生产设计阶段。
为了展示为 IoT 应用开发原型的便利性,本文引用了一个示例,此示例将 Feather M0 Wi-Fi 连接到 Microsoft 的 IoT 服务 Azure。
Microsoft Azure 是企业级弹性 IIoT 平台的一个很好的例子,它不仅能够与传感器和致动器设备建立连接,还为所收集的数据提供了全套的存储和分析应用程序。使用此平台的免费试用版可轻松访问您所需的全部功能。
此应用程序展示了 Bosch BME280 温度、湿度和压力传感器的使用,但在此示例中,您无需将传感器连接到 Feather 即可仿真要发送的数据。
图 4: 设置新的 Azure IoT 中心实例。
点击仪表板页面顶部的 + New(+ 新建)按钮并选择 Internet of Things(物联网),然后选择 IoT Hub(物联网中心)。随后即可指定您的 IoT 中心参数(名称和资源组),如图 5 中所示。
图 5: 在 Microsoft Azure 中设置 IoT 中心功能。
此设置过程的最后一个阶段是在 IoT 中心内创建一个设备。如图 6 中所示,添加 Device ID(设备 ID)为 TempSensor1 的设备。勾选方框并保存后,会自动生成设备密钥。当运行 Feather 草图之后,您将需要此设备的主密钥。在这一点上可能会产生混淆,因为 IoT 中心和每个设备都有自己的主密钥。主密钥是在系统提示输入连接字符串时需要输入的密钥(图 8)。
图 6: 将 Feather 温度传感器作为设备添加到 IoT 中心。
现在即可运行所提供的演示草图。
假设您已拥有 Arduino IDE,您只需添加用于 Feather M0 板的支持文件。Adafruit 教程会指导您完成此过程。
使用 Blink 示例草图测试您的 Feather M0 Wi-Fi 板是一种很好的做法。在继续操作之前,确保您能够编译和上传草图,并且板载引脚 13 LED(位于微型 USB 连接器的旁边)正确闪烁。
要使用演示草图,您必须将库清单添加到您的 Arduino IDE 环境中。请注意,对于 Azure 库 AzureIoTHub、AzureIoTUTIlity 和 AzureIoTProtocol_HTTP,您需要安装 1.0.21 版,否则草图会出现编译错误而无法运行。此外,如果您决定不使用 BME280 传感器但使用仿真的数据,您仍需要包含该传感器的库。不仅如此,默认情况下,草图还会假设您要使用的是物理传感器。如果希望仿真数据,您需要将 config.h 文件中的标题行更改为“#define SIMULATED_DATA true”。
图 7 突出显示了完整的库清单,屏幕的底部表明成功编译了草图并已将其上传到目标 Feather M0 板。
图 7: 显示了库清单并表明已成功上传的 Arduino IDE。
上传了草图之后,您需要切换到 IDE 的串行监视器。当写入草图时,需要通过串行监视器输入 Wi-Fi 访问详细信息和 Azure 连接字符串(图 8)。
图 8: 输入 Wi-Fi 和设备连接信息。
在输入上述详细信息之后不久,您应当会在串行监视器上看到确认信息,表明已建立 Wi-Fi 连接。随后,Feather 应当开始向 Azure IoT 中心发送数据,如图 9 中所示。在本例中,我们一直在使用仿真的数据。
图 9: 显示正在从 Feather M0 Wi-Fi 发送消息的串行监视器。
当 Azure 物联网中心开始接受消息之后,您可以检查以确保正在接收消息。图 10 显示了物联网设备总结,其中显示了接收到的消息的数量。
图 10: 显示消息总结的 Microsoft Azure IoT 中心。
当 Azure 平台开始接收传感器数据之后,您即可使用某些数据存储和分析功能进行调查,在 Microsoft Azure 网站上可以找到这些功能的详细信息。
正如本文中的前文所述,当使用电池作为电源时,节省功耗至关重要。Wi-Fi 是一种特别耗能的协议,但正如人们已经认识到的那样,与其他方法相比,这种协议具有很多优势。因此,必须注意优化传感器设计的运行,以便在不影响传感器性能的情况下实现低功耗。MCU 和 Wi-Fi 模块都能够被置于休眠模式,这样可以显著延长电池寿命。
可以在 SAM-D21 规格书中找到有关各种 MCU 节能模式以及设备的电源管理功能如何控制这些模式的详细信息。也可以在此处找到一条应用说明,此说明研究了可以从 MCU 的外设接口和功能实现的节能方法。ATWINC1500 也提供了几乎同样多的节能资源,包括此应用说明中的一节专门介绍。在 Feather M0 Wi-Fi 教程中,Adafruit 展示了电源监视器的使用方法,以说明 Wi-Fi 模块的功耗差异(图 11)。
图 11: Feather M0 Wi-Fi 板功耗。
图 11 中的橙色线代表 Feather M0 Wi-Fi 板的整体功耗。紫色线表示 LiPo 电池的电源电压。请注意无线电的运行产生的尖峰,第一个尖峰包含接入点的链路设置。在所进行的通信的范围以外,静态电流约为 22 mA,表明 MCU 的电流约为 10 mA、Wi-Fi 模块的电流约为 12 mA。了解预期的最终产品的潜在用途有助于确定可实现的节能水平。例如,如果每分钟只需测量一次温度,并且执行温度测量和与云应用通信需要 5 秒钟时间,则可据此将设备的休眠时长设置为至少 55 秒钟,从而让设备在 91% 的时间内处于深度休眠模式。其他节能方法可能需要执行多次温度测量才能通过 Wi-Fi 发送测量结果,也可能只在温度读数不同于上一次的测量结果时发送测量结果。
总结
现成的 SBC 提供了一个用于验证产品概念和构建初始原型设计的理想平台。精心选择使用市售的畅销 MCU 和无线元件的 SBC 可以确保在验证原型之后,可以充分利用此类板通常具有的上市时间优势、开源资源和社区支持,快速将原型转换为最终设计。