具有蓝牙功能的 IoT 设备可通过智能手机和其他网关设备提供即时可用的数据访问。但电池供电的低功耗 IoT 解决方案的设计在无线检测以及高能耗通信子系统的优化方面依然面临挑战。对于上市时间排程极度紧迫的设计人员而言,必须简化设计任务。
为帮助开发人员应对低功耗设计复杂性和上市时间压力带来的挑战,STMicroelectronics 和 Enmo Technologies 分别将其各自的 SensorTile 开发套件和蓝牙软件技术进行结合。他们携手推出了一种简单的方法,用于快速开发能够满足紧张的功率预算的电池供电 IoT 设备。
IoT 硬件和软件未必费力
对于希望利用无处不在的蓝牙移动设备的设计人员而言,集成式蓝牙解决方案的出现令他们如虎添翼。除了降低设计复杂性以外,现成的蓝牙解决方案可直接加速市场投放,因为这些解决方案往往已通过,符合监管要求。但对于大多数开发人员而言,将这些包含多个传感器的精密 IC 与一个主机 MCU 组合起来的任务,依然是一个漫长而复杂的过程。此外,即使是经验丰富的开发团队,面对相关软件驱动程序、中间件和应用软件的开发也可能举步维艰。
STMicroelectronics 的 SensorTile 开发套件提供了一套完整的 IoT 开发解决方案,它组合了一块无线传感器系统板、一对载板和一个综合软件开发包。Enmo Technologies 的 IoT.Over.Beacon 软件平台旨在与 SensorTile 环境配合使用,可提供独特的解决方案,限度降低具有蓝牙功能的 IoT 设计的功耗。搭配使用 SensorTile 套件和 Enmo 平台,开发人员便能以少的工作实施完整的低功耗 IoT 设备解决方案,或使用相同的硬件和软件组件作为定制设计的基础。
无线传感器节点
作为套件的组件,SensorTile 系统板是采用 13.5 mm x 13.5 mm 封装且具有蓝牙功能的独立传感器系统。该系统以基于 32 位 ARM Cortex-M4F 的 STM32L4 MCU 为基础,包含 STMicroelectronics BlueNRG 蓝牙收发器和多个传感器,所有组件均通过 SPI 连接或专用接口进行通信
SensorTile 系统提供了完整的无线传感器解决方案,该解决方案在 13.5 mm x 13.5 mm 的外形尺寸内组合了低功耗 MCU、蓝牙收发器、多个传感器、平衡不平衡转换器,甚至还有一根集成天线。(图片 STMicroelectronics)
ST 为该板打包了自己的全套传感器,包括 LSM6DSM 惯性测量装置 (IMU)、LSM303AGR 电子罗盘模块、LPS22HB 压力传感器及其 MP34DT04 MEMS 麦克风。连同板载的低压差 (LDO) 稳压器,板包含 STMicroelectronics BALF-NRG-01D3 小型平衡不平衡转换器,其中集成了一个谐波滤波器和专为 BlueNRG 收发器定制的匹配网络。TDK ANT016008LCS2442MA1 多层天线补全了无线传感器系统的设计。
开发人员可使用两种不同的方案将板连接到套件配套的载板,或其自己的系统设计。在板的两侧,开发人员可利用一组焊盘将其焊接到鞍形板或其他 PC 板。板的背面包含一个连接器,用于将其安装到扩展板或其他任何具有相应连接器的电缆或板。
STMicroelectronics SensorTile 板图片
开发人员可以将 SensorTile 板插入 SensorTile 开发套件的扩展板上的插座,以利用包括 Arduino 兼容型外设在内的其他选件。(图片STMicroelectronics)
PC 板焊盘和背面连接器均引出了多个 MCU 引脚,包括 SPI、I2C 和 UART 接口,一个脉冲密度调制 (PDM) 接口,多个数模转换器 (ADC) 以及 ST 的串行线调试 (SWD) 接口(图 3)。
尽管板可用作独立解决方案,但套件的载板为设计人员提供了基于 SensorTile 开发和部署 IoT 设计的替代方案。鞍形板和配套的原理图说明了开发人员如何使用更多传感器和其他外设来扩充系统。该板包括一个用于湿度和温度的 STMicroelectronics HTS221 传感器。此外,鞍形板还包括 SD 卡插座、micro-USB 接口、开关和电池组。设计人员只需将板焊接到鞍形上的相应焊盘,便可利用更多外设。完成开发后,设计人员可在交货时移除鞍形板的可折断 SWD 接口。
套件的扩展板提供了一种更为简单的方法来开发定制设计。开发人员只需使用专用连接器将板插入扩展板即可(图 2)。连同用于软件开发的 SWD 接口,扩展板提供了包括 micro-USB 连接器、音频插孔和 Arduino 兼容型连接器在内的更多连接器。
即时部署
开发人员只需将板插入扩展板(或将其焊接到鞍形板上),通过 USB 将其连接到主机 PC 以获取电源,然后受支持的 Android 或 iOS 移动应用程序,便可开始探索具有蓝牙功能的 IoT 设计。开发套件附带的系统已使用支持三种样例应用程序的固件进行编程,这些应用程序将低功耗蓝牙 (BLE) 与适用于 Android 或 iOS 的 ST BlueMS 应用程序配合使用,分别演示了将传感器数据记录到 SD 卡、MEMS 麦克风音频流和传感器数据流等应用。
除了提供用于即时部署 SensorTile 应用程序的软件以外,这些样例应用程序还可作为使用 SensorTile 的多层架构的指导。连同 ARM Cortex 微控制器软件接口标准 (CMSIS) 元器件,STMicroelectronics 基于自己的 STM32Cube 环境提供硬件抽象层 (HAL) 和板级支持包 (BSP)。这些层反过来与 STLCS01V1 板、STLCX01V1 扩展板和 STLCR01V1 鞍形板上的基础硬件接口。
SensorTile 软件包提供了基于 STMicroelectronics 的 STM32Cube 设备软件层构建的样例应用程序。它将复杂的硬件互动抽象为若干简单的软件调用。(图片STMicroelectronics)
分层架构尽管看似复杂,但为开发人员提供了传感器数据采集和无线通信的简单抽象视图。例如,BLE 流应用程序演示了开发人员只需在主等待循环之前调用若干初始化例程便可(列表 1)。主循环等待关键事件,包括用于指定传感器数据采样之间的等待时间的定时器到期。当定时器处理程序设置 SendEnv=1,该例程便会使用单个调用
SendEnvironmentalData() 收集并传输环境数据。
/* Initialize the BlueNRG */
Init_BlueNRG_Stack();
/* Initialize the BlueNRG Custom services */
Init_BlueNRG_Custom_Services();
/* initialize timers */
InitTimers();
StartTime = HAL_GetTick();
/* Infinite loop */
while (1){
/* Led Blinking when there is not a client connected */
if(!connected) {
if(!TargetBoardFeatures.LedStatus) {
if(HAL_GetTick()-StartTime > 1000) {
LedOnTargetPlatform();
TargetBoardFeatures.LedStatus =1;
StartTime = HAL_GetTick();
}
} else {
if(HAL_GetTick()-StartTime > 50) {
LedOffTargetPlatform();
TargetBoardFeatures.LedStatus =0;
StartTime = HAL_GetTick();
}
}
}
/* handle BLE event */
if(HCI_ProcessEvent) {
HCI_ProcessEvent=0;
HCI_Process();
}
/* Update the BLE advertise data and make the Board connectable */
if(set_connectable){
setConnectable();
set_connectable = FALSE;
}
/* Environmental Data */
if(SendEnv) {
SendEnv=0;
SendEnvironmentalData();
}
列表 1.此代码片段取自 ST SensorTile 软件包,它显示,开发人员在用于等待新蓝牙事件或传感器数据采样的等待循环之前调用了若干初始化例程。(代码 STMicroelectronics)
SendEnvironmentalData 例程以步进方式遍历各个传感器,使用 BSP 例程采集各个传感器的数据。例如,压力传感器 BSP 例程 BSP_PRESSURE_Get_Press() 将更新压力传感器设备特定的数据结构中包含的数据。SendEnvironmentalData 例程随后使用相应的调用,通过蓝牙将数据传输到 BlueNRG 服务例程 MCR_BLUEMS_F2I_2D()。
设计人员可采用提供的软件应用程序并加入少许更改,也可根据自己的定制需求进行改写。SensorTile 软件环境受 STMicroelectronics STM32 开放式开发环境 (STM32 ODE) 支持,旨在支持开源软件库和框架。套件已使用 ST 的 BLUEMICROSYSTEM 开放式框架固件进行预编程。
STMicroelectronics 的开放式环境为开发人员提供了另一重大好处。他们可以利用旨在增强功能的第三方软件库,而不是继续局限于特定的机制。对于有功率限制的 IoT 设备,此功能在利用能效更高的机制时变得尤其重要。
降低电源要求
对于许多 IoT 应用而言,相关的无线传感器系统依赖于电池电量,并且需要符合严格的功率预算。SensorTile 系统通过使用低功耗器件满足这一硬件要求。例如,在环境和运动应用中通常所需的低速率下,传感器只需要微安级别的功耗。LSM6DSM IMU 在 12.5 Hz 的采样率下仅使用 9 μA 电流,LSM303AGR 电子罗盘在 20 Hz 下仅需 200 μA 电流,LPS22HB 压力传感器在 1 Hz 下需要的电流不超过 12 μA。
此外,STM32L476 MCU 在运行模式下只需 100 μA/MHz (24 MHz)。BlueNRG 蓝牙收发器 IC 在维持一个有源 BLE 堆栈的待机模式下仅消耗 1.7 μA 电流。即便如此,有源无线传输往往仍消耗了主要功率份额,SensorTile 也不例外。BlueNRG 收发器在 8.2 mA 电流下以 0 dBm 传输数据,非常适合低功耗应用,但即便如此,仍是功率受限型设计的用电大户。
系统设计人员可通过简单的权宜之计,即减少无线传输事务的数量并缩短其持续时间,来解决与无线通信相关的功耗挑战。不过,使用标准蓝牙通信,开发人员只有很少几个选项用于限制功耗。具有蓝牙功能的典型应用依赖于使用重复轮询检查的设备发现和配对,这会造成大量功耗而并无实际数据交换。而且,标准蓝牙配对会给 IoT 部署带来严重的后勤复杂性,因为每个 IoT 设备都需要置于发现模式。其次,它必须采用手动方式与移动设备或其他数据聚合器配对。
蓝牙的信标机制提供了可消除与发现和配对相关的功耗和后勤问题的备选方案。不幸的是,标准信标不能携带任何数据有效载荷(例如传感器数据)。
不过,利用其 IoT.Over.Beacon 技术,Enmo Technologies 可将信标技术的省电优势与蓝牙配对设备技术的数据交换功能相结合。因此,Enmo 的机制可提供多达 50 KB 的可变大小有效载荷,同时还能满足长时间操作电池供电 IoT 设备所需的低功耗要求。
与本机 SensorTile 环境一样,开发人员可利用 Enmo 的参考固件。尽管 Enmo 参考固件被处理为对开发人员保持透明,但它将低级 STMicroelectronics 调用替换为对其适用于 SensorTile 的专有 IoT.Over.Beacon 库的调用。
为此,开发人员需要使用 STM32 ST-Link 实用程序来加载参考固件,该实用程序提供了简单的图形用户界面来选择和上传文件。Enmo 参考固件被加载到 SensorTile 板后,将通过低功耗蓝牙连接与 Enmo 的 Android 和 iOS 移动应用程序交互。开发人员可以在 Enmo 应用程序中轻松显示 SensorTile 数据,即,使用小工具将传感器数据显示为图形或表格
Enmo Technologies 的参考固件被加载到 SensorTile 后,将通过蓝牙向 Enmo 的 Android 或 iOS 应用程序传送传感器数据。(图片 Enmo Technologies)
传统蓝牙信标的一项关键功能是,它们能够在移动设备进入和离开具有信标功能的应用程序所覆盖的物理区域时触发。但对于 IoT 设备,物理进入和退出的概念可能不适用。
Enmo 提供了专有机制来模仿蓝牙信标的传统进入和退出模式。在这里,开发人员为 IoT 设备指定触发进入和退出的条件。例如,某个温度检测 IoT 设备可能会在温度变化至高于或低于某个设定的阈值时启动“进入”或“退出”协议。
与本机 SensorTile 软件包一样,用于 SensorTile 的 Enmo 参考固件提供了一种即时解决方案,用于快速部署具有蓝牙功能的低功耗 IoT 设备。类似地,针对定制 SensorTile 开发,Enmo 提供了一个软件开发套件 (SDK),可允许工程师将 Enmo 的 IoT.Over.Beacon 机制集成到自己独有的 SensorTile IoT 应用。利用 Enmo SDK,开发人员使用 STMicroelectronics 环境编写定制的 SensorTile 固件,在需要通过蓝牙发送数据时调用 Enmo 的 IoT.Over.Beacon 库。该库将在 IoT.Over.Beacon 模式下透明地执行数据传输,并在完成传输后提供软件回调。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。