来吧,一个IoT应用设计
大量的研究表明,智能家居和可穿戴设备是目前最流行的物联网应用。嵌入式的MCU是这些物联网应用程序的核心。 然而,为了在这个快速而有竞争力的市场上成为一个有效的基础,嵌入式的MCU需要能够支持不断增长的创新速度。为了加快开发速度和降低制造成本,物联网设计师们正在寻找单片机的MCU,这种单片机集成了安全性、 I/O功能以及与超低功耗系统设计的无线连接,以及一个灵活的架构,以便使设计与不断变化的标准保持最新的设计。
本文将介绍物联网市场的趋势以及智能家居和可穿戴应用的相关性,然后举例说明智能门锁控制器的实现,将讨论可穿戴应用程序以及实现,并说明如何利用可穿戴设备实现与智能家庭网络互动。
物联网技术使工作和生活变得更加实惠、便捷、舒适和智能。正如物联网分析的一项研究显示,智能家居和可穿戴设备是人们寻找的最流行的物联网应用程序(见图1)。
图1 | 物联网市场趋势
智能家居的概念包括设备在家中的互动和用户有限参与。例如,早上6点,闹钟会以最喜欢的播放列表中的音乐声吵醒你。 与此同时,卧室的灯光慢慢亮起,让你在自己的时间里醒来。当楼下的入侵警报系统被关闭时,厨房里的咖啡机就会打开,所以当你准备享用的时候它已经准备好了。客厅的窗帘和百叶窗开着,浴室里的毛巾加热器温暖了毛巾,你甚至还没起床呢。 这真是一个智能的家。
这些物联网设备的核心是安全性、可靠性、成本效益和无线连接。 安全保证敏感的个人信息保持私密,并且保护整个系统免受恶意黑客的侵害。可靠性对于系统的无缝、无误控制至关重要。 连通性使无线信息交换成为能够进行高级分析的互联网,系统可以自学提供更加个性化的服务。 通过额外的数据,如上下文(即谁进入了房子)可以用来提高智力。例如,房间设置可以调整,以配合一个人进入家庭时的喜好。语音命令功能使得电器更容易使用,比如告诉前门为朋友和家人解锁。最后,该系统需要降低成本,使物联网技术能够负担得起大众市场的采用。 图2展示了一个智能家居的例子。
图2 | 智能家居示例
智能门锁控制器实现
为了了解开发基于IoT应用程序的复杂性,来实现一个智能的家庭门锁控制器(见图3)。该控制器实现门运行的指纹安全性; 两个控制室内灯光、恒温器和电器的房间控制节点; 温度监测节点; 以及对所有这些节点的安全网络(基于BLE 4.2)。要实现所有这些功能,需要进行大量的处理。今天的许多嵌入式单片机,包括本示例中使用的PSoC 6 BLE,在满足低功耗操作要求的同时提供了足够的处理性能。就 PSoC 6 BLE 而言,这是通过双核体系结构实现的: Arm Cortex-M4可用于高性能任务,而 Arm Cortex-M0 + 处理低功耗任务。综合的安全能力维护总控制器的安全性。
图3 | 基于嵌入式单片机的智能家居示例
基于指纹的门锁
安全是必要的,以确保未经授权的人无法通过房门进入住宅。 一个安全的系统可以使用指纹验证来建立。 设计一个门锁,存储授权用户的指纹,可以防止未经授权的人进门。 对于这个应用程序,指纹传感器感知人的手指,嵌入式控制器对该人进行认证,然后门锁被关闭。 更先进的功能也可以实现,如果未经授权的人试图进入住宅,可以触发警报或发送通知给房屋所有者。
一个基于指纹的典型认证系统包括一个指纹传感器/模块,该指纹传感器和处理器运行各种高级算法,如用户注册和身份验证。嵌入式MCU的高性能核心可以执行这些功能,并通过 SPI等接口管理与指纹模块的通信。指纹技术相当成熟,指纹模块可以从MCU制造商那里获得,该模块提供了一个通过模块捕捉和验证指纹的整个软件框架。 例如,指纹框架负责向指纹模块生成低级指令,并提供可以调用的封装函数,以执行更复杂的任务,例如"获取指纹图像"或"注册指纹图像" 与模块的SPI通信遵循一种基于中断的方法,即主机发送一个命令并等待模块处理命令。该模块的响应方式是生成一个中断,在这个中断中,主机将读取由模块准备的数据。该模块还可以配置为中断处理器的手指触摸传感器。 这使得处理器能够在低功耗状态下运行,同时等待模块在手指触摸时唤醒它。
数据存储
指纹数据可以存储在内部Flash中。 然而,由于每个指纹图像的大小和指纹的数量控制器可能需要支持在一般的家庭人数,Flash的成本将会增加。由于内部 Flash 是一种高级资源,特别是当设计复杂的应用程序如智能家庭控制器时,将指纹数据存储器卸载到外部存储,这通常是这个用例更好的方法。
外部存储通过一个类似quad-SPI的接口进行交互,提供了一种存储指纹数据的有效方法。 支持XIP (eXecute-In-Place)模式的 Quad-SPI 接口允许CPU将外部存储视为内部 Flash的一部分。这使得外部存储的访问类似于内部的Flash访问,从而简化设计和操作。 此外,quad-SPI接口支持硬件中的即时软件加密和解密(128位 AES) ,确保指纹数据安全地存储在外部存储中。
网络连接
为了将门锁控制器集成到一个智能家庭网络中,使用了BLE。不仅将门锁控制器与智能家居网络相连接,而且提供了一种安全的指纹编码方式。 这是通过将门锁控制器与授权手机配对来实现的。 除了为用户提供配置门锁的接口外,还允许用户控制注册过程(见图4)。
图4 | 智能门锁的安全方案工作流
房间控制和监控
房间控制节点允许用户控制室内的照明、恒温器和其他设备。它们还可以监测温度、湿度等环境参数。 这些节点可以通过智能手机和/或本地控件来控制。 例如,图3所示的系统包括两个光控制节点和一个温度监测节点。 此外,光控节点支持基于用户识别的智能控制。例如,当使用经过身份验证的指纹打开房门时,节点可以配置为打开灯。 同样,当有人离开时,门是锁着的时候,灯可以关掉(见图5)。
图5 | 室内控制实现示例
建立安全网络
在通过智能手机进行配置和初始化之后,节点使用BLE安全连接建立基于集群的网络。每个集群的中心节点都支持一个独特的16位标记。在节点配置过程中,每个节点都提供其集群中心节点的令牌和详细信息。这些节点将群集中心添加到一个白名单中,并仅根据请求将标记发送给被白名单的集群中心,以建立连接。 一旦连接建立起来,节点通过通知向中心节点发送数据,中心节点将数据包转发,然后在网络上分发。 数据包可以传递给另一个节点或广播包。 例如,当用户解锁门时,这个信息(即用户1已经进入了房子)可以从门锁节点发送到其集群的中心节点。 然后数据被转发到房间控制节点,最后,房间控制节点打开灯。
图6 | 房间节点控制示例流
基于集群的网络通过启用选择设备(集群中心节点)来处理路由和附加处理,从而消除了通过所有节点路由数据包的需要。这节省了从节点的能量和对处理能力要求,其中许多节点可能在电池上运行。 可以根据所掌握的功力选择中心节点。 该网络类似于低功耗无线个人区域网(6LoWPAN)上的IPv6,其中路由器(中心节点)和主机(边缘节点)。 拥有基于集群的网络还可以简化通过网关(边缘路由器)访问互联网的途径,如果需要的话,可以通过互联网远程控制节点。
图7 | 互联网对房间节点的控制示例
智能家用电器可能相当复杂。以可靠和符合成本效益的方式提供安全所需要的芯片加密能力、集成的安全无线连接以及在内部和外部存储中获取个人数据(即捕获的指纹)的机制。 由于物联网的标准正在迅速变化,因此需要安全启动过程来保证电器的更新特性。 此外,固件可配置外设和可编程模块的可用性确保了设备可以集成物联网系统运行所需的许多组件。
对于许多物联网设备来说,电是至关重要的,尤其是那些使用电池的设备。低功耗设计允许设备始终保持并提供即时响应。具有动态电压和主频缩放的双核体系结构允许电器支持高性能的功能,如指纹认证和功率敏感的关键过程,如尾迹触摸。
可穿戴应用程序的实现
智能手表不再只是为了显示时间。智能手表通过发送短信、电话和健康监控手段将我们的手腕变成了智能手机套件。可穿戴设备是用户"几乎总是"佩戴的无线设备。例如,健身监测器是一种可穿戴设备,可以通过监测心率、锻炼、睡眠习惯、体温、出汗等参数来跟踪人的健康状况。这些设备有多个传感器,通常像智能手机或个人电脑一样可以与互联网连接的设备进行通信。 这些设备有三个主要特征:
始终运行: 因为健身监视器是持续运行的,所以这些设备需要长时间的电池寿命。当设计可穿戴设备时,最大的挑战之一就是他们对电力的渴求,而且他们所能容纳的电池尺寸往往有限。 监控活动: 一个健身器械监测感官、过程、日志和报告用户活动。这包括监测多个传感器和执行"传感器融合",其中多个传感器的数据通过类似DSP的引擎相互关联,以分析更复杂的行为,并以用户可以理解和使用的方式跟踪它们。 交换数据: 这包括将收集和分析的信息传递给其他设备的能力,例如向智能手机发送通知和告警。
图8: 可穿戴设备的特征
图9: 使用嵌入式MCU的可穿戴健康监测设备的实现
活动监测
计步器和卡路里计数器计算一个人行走的步数,并计算出燃烧的卡路里数量。为了检测步数,需要一个加速度传感器。压力传感器也用来测量步行/跑步时海拔的变化。大多数传感器都有一个数字接口,通常是I2C,SPI或UART。需要对已获得的数据进行额外的过滤和处理,以计算步数、高度、燃烧的卡路里等等。这些传感器也用于实现低功耗的系统功能,比如在检测到运动时唤醒整个系统,以便进行实时分析。为了支持多传感器,嵌入式MCU将需要几个数字接口。理想情况下,这些接口可以在I2C、SPI和UART之间进行配置,以使开发人员在传感器选择和实现方面拥有最大的灵活性。此外,嵌入式单片机需要支持一个双核体系结构,它具有一个能够执行传感器融合和复杂分析的单片机,以及一个低功耗的单片机来执行系统任务,如在运动中唤醒。
环境监测
传感器也可能需要收集环境数据,例如紫外线照射量、环境温度、大气压力、指南针方向等。
GPS
全球定位系统传感器通常是带有UART接口的数字传感器。 GPS传感器提供位置(经纬度)、速度和高度信息。
音频
在无线链路传输音频数据之前,数字域的音频信号处理是任何音频系统的重要组成部分。 数据通常采用基于麦克风来收集数据,然后测量、过滤和/或压缩。 具有集成DSP功能和音频功能的嵌入式单片机,可以大大简化高质量、不间断的声音音频子系统的设计。
安全性
可穿戴设备需要能够跟上不断变化的安全协议和措施。带有安全引导功能的嵌入式单片机确保可穿戴设备只执行经过身份验证的代码。此外,设备可以支持在线 OTA (OTA)更新,使更新对用户是透明的。
用户界面
今天的用户已经习惯于使用按钮、滑块和近距离感应来触摸显示器。一个嵌入式的单片机也可以支持不同的输出类型,可以支持各种显示技术,如 Eink,OLED等。
无线连接
设备需要支持可穿戴设备操作的必要服务——无线连接,例如与低耗电蓝牙的连接。
支持所有这些功能需要一个完整的固件流(见图10)。支持可穿戴应用的制造商可以提供完整的库,可以加速开发和降低整体设计的成本。
图10 可穿戴设备的固件流示例
任务架构
在任何可穿戴设计中,有三个关键任务:
获取数据
处理数据
与用户的输入和输出(显示)进行通信
传感器采集通常需要比其他任务更高的处理器操作频率,因为这种处理包括在大样本基础上运行的过滤器。因此,使用像Arm Cortex-M0 + 这样的低功耗核心来进行传感器数据的获取效率更高。处理传感器数据取决于所使用的算法的复杂性,开发人员必须在功率效率和处理速度之间权衡。 对于光处理,可以使用用于获取传感器数据的相同低功耗核心。然而,对于更多的实时操作,需要更高性能的处理器,如ARM Cortex M3/M4核心。 用户界面,通常是一个轻量级的过程,当涉及到简单的可穿戴显示和输入时,可以由任何一个核心处理,但理想的是在低功耗核心上实现。因此,为了在低功耗的可穿戴设备中实现最佳性能,需要一个双核结构。需要注意的是,可以利用双核架构来做固件框架管道化,通过加速任务完成来提高响应性能,并通过在核心之间共享时钟、RAM、Flash等资源,减少资源和功耗。
低功耗处理器,如Cortex M0 +,运行一个简单的任务调度器来处理频繁的、低带宽的任务,比如:
传感器数据采集
电容式感应扫描及处理
BLE链路层控制器维护BLE的连接和通告
系统管理,包括安全任务和传感器控制
高性能处理器,如 Cortex M4,作为运行 RTOS 的应用程序处理器,并处理处理器密集的应用程序级任务,如: 传感器数据处理(如定向计算、高度计算等) 显示图形,如绘制文字、图像、形状等 完整的指纹处理,包括匹配和注册算法 主机层任务,包括所有服务、配置文件和连接身份验证
在共享内存和快速的处理器间通信(IPC)是核心之间的桥梁,通信延迟几乎不存在,相比之下,两个设备在外部进行通信几乎是不可比的。
低功耗核心任务架构
在高级别上,低功耗核心执行两种类型的任务: 第1级: 在每个周期执行的周期性任务和二级任务: 周期性时间档任务,但在每个循环中执行一次(任务/周期的n个周期)。 一个计时器可以用来产生一个中断来表示一个周期的开始,比如每10毫秒(100hz)。 1级任务在中断事件中执行一次。时隙变量可以在每个中断时递增,并传递给二级任务管理器。根据插槽编号,执行适当的二级任务。表1提供了可在低功耗核心中执行的各种任务的例子。
任务 | 类型 |
---|---|
BLE控制器 | Level 1 |
电容式感应扫描和手势检测 | Level 1 |
获取和处理GPS | Level 1 |
压力 / 温度数据的获取 | Level 2 |
紫外线数据的获取 | Level 2 |
电池数据采集 | Level 2 |
在完成数据采集任务或任何需要通过高性能核心运行的任务(如已经检测到一个手势) ,就会形成一个消息包,并通过IPC发送到高性能核心。对高性能核心发出中断,处理消息包,并将数据适当传递给在高性能核心上执行的预期任务。
高性能核心任务架构
高性能核心使用一个RTOS来管理诸如BLE、运动感应、显示更新、GPS、压力/温度、紫外线和指纹检测等任务。 除了BLE、运动感应和指纹检测外,其他任务都需要等待来自低功耗核心的数据。
可以周期性地运行 BLE 任务(每次连接间隔一次)。 完成后,任务暂停,直到下一次唤醒。
运动感应任务可以是一个非周期性的任务,只要运动传感器本身提出一个中断,它就会运行。 像 Invensense MPU9255这样的运动传感器包括一个数字运动处理器(DMP),它收集芯片上的FIFO数据,并以预先配置的速率中断高性能核心。 在中断时,运动传感器任务通过SPI接口读取运动传感器中的FIFO,并处理数据以计算方向,步骤,卡路里燃烧等等。
指纹检测任务可以是一个非周期性的任务,当用户在滚动、验证或者删除指纹时都会运行。当用户指纹被注册并且显示被锁定时,这个任务也会运行。一个注册用户的指纹可以用来解锁和保护可穿戴设备。
显示任务也可以是一个非周期性的任务,只要数据需要在屏幕上进行更新(即传感器数据、时间、电池和来自其他任务的 BLE 通知) ,或者如果一个电容式感应的手势事件是从低功耗核心报告的。
GPS、压力/温度和紫外线任务可以是伪周期任务,因为它们不会周期性地停止和唤醒。相反,在从各自的传感器收集数据之后,任务唤醒是从低功耗核心触发的。由于低功耗核心的数据采集速率是周期性的,所以这些任务可以在高性能核心上定期执行。
表2显示了高性能核心管理的任务示例。
任务 | 优先级 | 堆栈 |
---|---|---|
BLE | 9 | 500 |
运动传感器 | 8 | 500 |
显示 | 6 | 500 |
压力传感器 | 8 | 200 |
GPS传感器 | 8 | 100 |
指纹传感器 | 7 | 5000 |
处理器间通信架构
两个同时运行的核心需要一个保护共享数据和通信的机制,以便同步固件中的任务。 双核体系结构需要支持多个IPC机制,如 IPC锁、消息传递和中断/通知。 任务代码可以使用IPC锁特性来保护共享数据和 IPC 消息传递到核心之间的通知和数据。
IPC锁
当访问共享数据进行修改时,访问核心/任务就会尝试获取与数据相对应的锁。 如果锁是空闲的,那么核心/任务将被授予访问数据的权限。 一旦更新/处理完成,该任务就可以释放锁来将数据访问到其他待完成的任务。 这保护数据不会被多个试图同时更新或使用数据的数据损坏。
IPC消息
除了保护共享数据外,还需要一种通信方式来同步核心之间的任务。 这可以通过在内核之间传递的"命令和参数"消息包来实现。 当一个核心希望对方执行一个动作时,它会将动作/命令ID包含任何需要的参数到消息中,并将消息传递给IPC。 一旦消息包准备好,核心会在另一个核心上触发一个IPC中断,在这个核心中,命令被解析,然后执行。
智能家居配备可穿戴设备
为了理解可穿戴设备与智能家居互动的一些方法,可以考察一些用例。
智能厨房
智能电器只有在家长在附近(即家长的健康监察器或电话在适当范围内)时,才能使用危害儿童的器具(例如炉子、炉子、洗碗机) ,以防止发生意外。
图11|使用可穿戴设备的智能厨房控制
智能车库
一个自动车库门可以做更多的开放。 当一个人走近车道或门,设置一个预先设定好的功能序列,例如打开车道、车库、走廊和厨房的灯光,就可以触发'我回家'功能。车库的门也可以调整家庭的安全设置,打开车库内部的入口门,调整房间的供暖到预设温度,打开家庭音响系统开始播放音乐。
图12|使用可穿戴设备的智能车库控制
基于手势的交互控制
一种包含9轴运动感应的可穿戴设备可以决定用户手腕的方向。这种定向数据可以进一步处理,以检测基于运动的手势。 这样的手势可以用来控制节点。 例如,当一个人靠近前门时,他或她可以把手腕平放,指向门,并顺时针旋转手腕来打开门或者逆时针锁上门(见图13)。
图13|使用可穿戴设备的智能门锁控制
同样,当一个人靠近房间控制节点时,图14所示的手势可以用来控制光强。 例如,旋转手腕顺时针方向增加光强度,而逆时针运动则会减弱光强(见图15)。
图14|手腕旋转的例子
图15|室内灯光控制示例
随着可穿戴设备中存在多个静态BLE节点和处理资源,可以在了用的准确性范围内对家庭中使用可穿戴设备的用户进行三角测量。 这个位置,连同从9轴传感器融合算法得到的方向性数据,可以使用户指向一个物体并与其进行交互。 图16显示了一个用户在多节点智能家居环境中与灯泡互动的例子。 门锁、灯泡和温度节点,每个都有一个静态位置,用来三角定位可穿戴设备在房子里的位置。数据表明用户指向的方向。 手腕手势可以用来发送控制命令或者与被指向的节点进行交互。
图16|节点控制示例
为了能够实现这样的功能,智能家居和可穿戴设备可以互动,可穿戴设备需要一个嵌入式的MCU,具有灵活和综合的架构。为了能够与可穿戴设备中的许多传感器进行接口,嵌入式单片机必须支持多个不同的标准数字和模拟接口。 MCU还可能需要多个ADC来获取信号和集成运算放大器,以减少组件和可穿戴形式。 如果可穿戴设备支持一个电容式触摸显示器,它将需要传感器和处理资源来实现各种触摸元件,包括按钮、滑块和近距离传感器。 图17显示了可穿戴设备可能需要的许多功能。
图17|适合智能家居的可穿戴设备架构
此外,如前所述,双核体系结构将使开发人员能够提供足够的处理能力,同时保持整体的低功耗操作。 图18显示了如何在一个低功耗核心(Cortex-M0 +)和一个高性能核心(Cortex-M4)之间的功能分区。
图18|低功耗核心(M0 +)与高性能核心(M4)之间的功能划分
低功耗运行及效率
低功耗对于使用电池的可穿戴设备来说是必不可少的。 嵌入式单片机需要支持多种操作模式,以使开发人员能够优化电能效率。 除了极低的睡眠和休眠模式外,MCU应该能够动态地测量核心的电压和频率。
为了理解动态电压和频率缩放如何能够节省大量电力,可以考虑指纹传感器的例子。 当指纹传感器没有使用时,系统可以记录到较低的频率和电压,比如48兆赫和0.9v(ULP)核心操作。 当指纹被启用和运行时,指纹传感器的指纹中断指示指纹,系统会被记录到更高的频率和电压,以提供实时处理,按96mhz 和1.1v的核心操作进行实时处理。 由于指纹操作不是那么频繁,设备大部分时间都是在ULP 模式下运行,从而大大降低了整体功耗(见图19)。
图10|PSoC 6 BLE的电源管理示例
另一个优化功率效率的例子是通过管理PMIC控制器。 例如,嵌入PSoC 6的 MCU 可以关闭向其自身提供VDD的PMIC。 可以通过开关机启用PMIC。 这就消除了对外部控制PMIC 的专用逻辑需要。 在这种功率下降模式下,单片机几乎没有任何电流,仍能保持时间存活。 当需要的时候,它也可以被唤醒。
安全性
可穿戴设备和智能家庭网络之间的安全通信非常重要。安全性可以在嵌入式单片机内实现多层次的安全性:
BLE安全性
嵌入式单片机需要支持最新的安全更新到 BLE 规范,其中包括BLE安全连接和私密的链路层。链接层隐私提供一个可解析的私人地址,使黑客难以嗅到设备。
OTA安全性
安全引导确保MCU只执行信任代码。 与OTA结合使无线应用程序能够更新,并且只允许在设备中执行可信代码。
加密处理器
在硬件中处理加密方法大大简化和加速复杂的安全算法,减少开发难度并最小化CPU的干预。
外部存储的实时解密
除了加密处理器外,嵌入式处理器还可以在串行存储器接口上提供实时的加密/解密。 这种能力极大地简化了外部存储中加密代码和数据的存储,并提供了一个强大的实现。
结束语
本文涵盖了智能家居设备/控制器和可穿戴设备设计的许多重要方面。双核体系结构为开发人员提供了实时分析传感器数据所需的处理能力,同时以最大的功率效率管理实时系统任务。
表3总结了在智能家电和可穿戴设备中可以实现的许多功能。
物联网需求 | 功能/实现 |
---|---|
安全性 | 提供安全的存储和传输个人数据与芯片加密处理器;使可编程硬件和固件的可编程硬件和固件安全启动安全(OTA)升级 |
始终运行和低功耗 | 低功耗体系结构可以在不牺牲性能的情况下启用"始终"应用程序;动态电压和频率缩放使得性能和功率关键处理 |
灵活性与集成性 | 一种双核的 MCU 体系结构,可以在不牺牲性能的情况下启用"始终"应用程序;电容式感应技术使得用户界面更加灵活;ADC 可编程模拟块,包括电流,DAC和差分 ADC;易于使用,固件可配置外设 |
无线连接 | 集成的BLE和免费的BLE协议栈,增强了安全性、隐私性和吞吐量 |
(本文编译自http://www.embedded-computing.com/guest-blogs/designing-smart-home-and-wearables-iot-applications)
参考资料
PSoC 6 MCU: PSoC 63 with BLE Datasheet Programmable System-on-Chip (PSoC)
PSoC 63 with BLE Architecture Technical Reference Manual (TRM)
AN210781 - Getting Started with PSoC 6 MCU with Bluetooth Low Energy (BLE) Connectivity
AN219528 - PSoC 6 MCU Low-Power Modes and Power Reduction Techniques
AN215656 – PSoC 6 MCU Dual-Core CPU System Design
AN213924 - PSoC 6 MCU Bootloader Software Development Kit (SDK) Guide
AN217666 – PSoC 6 MCU Interrupts
AN218241 - PSoC 6 MCU Hardware Design Considerations
AN92239 - Proximity Sensing with CapSense
AN219434 - Importing PSoC Creator Code into an IDE for a PSoC 6 Project
AN91445 - Antenna Design and RF Layout Guidelines