2.1 智能台灯需求分析与设计
2.1.1 智能台灯功能需求
1.智能台灯功能的市场调研
通过对市场上智能台灯的功能进行调研,可总结出智能台灯的功能,如表2.1所示。
表2.1 智能台灯的功能
2.智能台灯功能需求分析设计
本章介绍的智能台灯是基于智能产品原型机设计的,结合嵌入式系统技术,能够实现智能台灯亮度的多级调控、监测室内环境参数、监测人体活动以确定是否需要点亮等;结合物联网技术,能够实现无线设置功能;结合Android应用技术、Web应用技术和智云数据平台,能够在Android端(移动端)和Web端实现人与智能台灯的远程交互、多样化场景应用等。
智能台灯功能需求分析如表2.2所示。
表2.2 智能台灯功能需求分析
2.1.2 智能台灯的方案设计
1.总体架构设计
智能台灯是基于物联网四层架构模型进行设计的,其总体架构如图2.2所示。
图2.2 智能台灯总体架构
感知层:通过设备节点(如温湿度传感器、光照度传感器)采集环境数据,数据的采集和上传由STM32F407控制。
网络层:感知层的设备节点和智能台灯应用App的通过BLE实现无线通信,智能台灯应用App和智云服务器通过TCP/IP网络进行数据传输。
平台层:平台层是指智云平台,可提供数据的存储、交换、分析等功能,平台层提供物联网设备节点数据的存储、访问、控制。
应用层:应用层主要是物联网系统的人机交互接口,通过Web端、Android端提供界面友好、操作交互性强的智能台灯应用App。
2.硬件选型分析
1)处理器选型分析
STM32F407/417系列微处理器在10mm×10mm芯片内封装了嵌入式存储器和外设,广泛应用在医疗、工业与消费类领域。STM32F407/417系列微处理器采用时钟工作频率为168MHz的Cortex-M4内核(具有浮点单元),能够提供210 DMIPS/566 CoreMark的性能,并且利用意法半导体的ART加速器实现了0等待访问Flash存储器,同时DSP指令和浮点单元扩大了产品的应用范围。STM32F407的系统架构如图2.3所示。
2)通信模块选型分析
低耗能蓝牙(BLE)是蓝牙最新的规范标准,BLE技术包含三个部分:控制器部分、主机部分与应用规范部分。BLE技术主要有以下三个特点:待机时间长、连接速度快,以及发射和接收功耗低。这些特点决定了它的超低功耗性能,使用标准纽扣电池可以是BLE模块工作数年。另外,(BLE)技术还具有低成本、多种设备之间的互连等优点。
图2.3 STM32F407系统架构
BLE技术应用在2.4GHz的ISM频段,采用可变连接时间间隔技术,这个时间间隔根据具体应用可以设置为几毫秒到几秒。另外,由于BLE技术采用非常快速的连接方式,因此平时可以处于非连接状态,此时链路两端相互间只是知晓对方,只有在必要时才开启链路,然后在尽可能短的时间内完成传输并关闭链路。图2.4所示为BLE网络架构。
图2.4 BLE网络架构
BLE技术适合用于微型无线传感器(每半秒交换一次数据)或使用完全异步通信的遥控器等设备的数据传输。这些设备传输的数据量非常少(通常几个字节),而且发送次数也很少(如每秒几次到每分钟一次,甚至更少)。
(1)跳频技术。蓝牙的工作频率为2400~2483.5MHz(包括防护频带),这是在全球范围内无须取得执照(但并非无管制的)的工业、科学和医疗(ISM)用的2.4GHz短距离无线电频段。
蓝牙使用跳频技术,将传输的数据分割成数据包,传统蓝牙通过79个指定的蓝牙信道传输数据包,每个信道的带宽为1MHz。BLE使用2MHz的带宽,可容纳40个信道,第一个信道始于2402MHz,每2MHz一个信道,直到2480MHz,40个信道分为3个广播信道和37个数据信道。BLE采用自适应跳频技术,通常每秒跳1600次。BLE信道分配如图2.5所示。
图2.5 BLE信道分配
(2)BLE网络优点。
① 高可靠性。蓝牙技术联盟在制定BLE规范时,对数据传输过程中的链路管理协议、射频协议、基带协议采取了可靠性措施,包括差错检测和校正、数据编/解码、差错控制等,极大地提高了无线数据传输的可靠性。另外,BLE使用自适应跳频技术,可以最大限度地减少和其他频段的串扰。
② 低成本、低功耗。BLE技术支持两种模式:双模式和单模式。在双模式中,BLE技术可以集成在现有的传统蓝牙控制器中,或在现有传统蓝牙芯片上加入低功耗堆栈,整体架构基本不变,可降低成本。与传统蓝牙不同,BLE技术采用深度睡眠状态来代替传统蓝牙的空闲状态,在深度睡眠状态下,主机长时间处于超低负载的循环状态,只有在需要运行时才由蓝牙控制器来启动,BLE的功耗较传统蓝牙降低了90%。
③ 低时延。传统蓝牙的启动连接时间需要6s,而BLE仅需要3ms。
④ 传输距离得到了极大的提高。传统蓝牙的传输距离为2~10m,而BLE的有效传输距离可达到60~100m,传输距离的提高极大地开拓了蓝牙技术的应用前景。
⑤ 低吞吐量。BLE支持1Mbps的空中数据速率,但吞吐量只有256kbps。
(3)BLE技术架构和网络架构。
① BLE技术架构。传统蓝牙技术使用的数据包较长,在发送这些数据包时,无线设备必须在功耗相对较高的状态保持较长的时间,容易使芯片发热。这种发热将改变材料的物理特性和传输频率(中断链路),频繁地对无线设备进行再次校准将需要更多的功耗(并且要求闭环架构)。BLE技术架构如图2.6所示。
(a)无线射频单元:负责数据和语音的发送和接收,特点是短距离、低功耗。蓝牙天线一般体积小、质量轻,属于微带天线。
(b)基带与链路控制单元:进行射频信号与数字或语音信号的相互转化,实现基带协议和底层的连接。
(c)链路管理单元:负责管理蓝牙设备之间的通信,实现链路的建立、验证、配置等操作。
(d)蓝牙软件协议实现,属于高层协议。
图2.6 BLE技术架构
② BLE网络架构。蓝牙技术联盟推出了蓝牙协议栈,其目的是为了使不同厂商之间的蓝牙设备能够在硬件和软件两个方面相互兼容,能够实现互操作。为了能够实现远端设备之间的互操作,待互连的设备(服务器与客户端)需要运行在同一协议栈。对于不同的应用,会使用蓝牙协议栈中的一层或多层的协议层,而非全部的协议层,但是所有的应用都要建立在链路层和物理层之上。BLE协议栈架构如图2.7所示。
图2.7 BLE协议栈架构
(a)BLE底层协议。BLE底层协议由链路层协议、物理层协议组成,它是蓝牙协议栈的基础,实现了蓝牙信息数据流的传输链路。
物理层协议:主要规定信道分配、射频频率、射频调制特性等底层特性。BLE设备工作于2400~2483.5MHz的2.4GHz的ISM频段,采用跳频技术减小干扰和衰落,频道中心频率为(2402+K×2)MHz,K=0~39,共40个信道,其中有3个广播信道和37个数据信道。广播信道用于设备发现、发起连接及数据广播,数据信道用于在已连接设备间进行数据传输。物理层规范还对发射机、接收机的性能和参数,如接收机的干扰性能、带外阻塞性能、交调特性等性能指标做了可量化的规定。
链路层(LL)协议:负责管理接收或发送帧的时序,其操作可包含五个状态,分别为就绪态、广播态、扫描态、发起态和连接态。当一个BLE设备建立连接后,只能是主机或从机,从发起态进入连接态的BLE设备为主机,从广播态进入连接态的BLE设备为从机。主、从机相互通信并规定传输时序,从机只能与一个主机通信,而一个主机可以与多个从机通信。在链路层就可能存在多个状态。
就绪态:当链路层处于就绪态时,BLE设备不发送或接收任何数据包,而是等待下一状态的发生。
广播态:当链路层处于广播态时,BLE设备会发送广播信道的数据包,同时监听这些数据包所产生的响应。
扫描态:当设备处于扫描态时,BLE设备会监听其他BLE设备(处于广播态)发送的广播信道数据包。
发起态:用于对特定的BLE设备进行监听及响应。
连接态:是指BLE设备与其监听到的BLE设备进行连接,在该状态下,两个连接的设备分别称为主机和从机。
链路层状态转换图如图2.8所示。
图2.8 链路层状态转换图
(b)BLE中间层协议。BLE中间层协议主要完成数据的解析和重组、服务质量控制等服务,该协议层包括主机控制器接口(HCI)层、逻辑链路控制与适配协议(L2CAP)层。
主机控器接口(HCI)层:介于主机(Host)与主机控制器(Controller)之间,它是主机与主机控制器之间的通信桥梁。HCI层协议的数据收发是以HCI指令和HCI返回事件的形式实现的,BLE设备厂商可以依据蓝牙技术联盟的标准HCI层协议来开发自己的HCI指令集,各厂商可以发挥各自的技术优势。HCI层协议可以通过软件API或硬件接口(如UART、SPI、USB等)来实现。主机通过HCI层向主机控制器的链路管理器发送HCI指令,进而执行相应的操作(如设备的初始化,查询、建立连接等);而主机控制器将链路管理器的HCI返回事件通过HCI层传递给主机,主机进一步对返回事件进行解析和处理。
逻辑链路控制与适配协议层(L2CAP):通过采用多路复用技术、协议分割技术、协议重组技术,向上层的协议层提供定向连接服务以及无连接模式数据服务。同时,该层允许高层协议和应用程序收发高层数据包,并允许每个逻辑通道进行数据流的控制和数据重发的操作。
在BLE协议栈中,应用层之间的互操作是通过配置文件实现的。BLE高层协议的配置文件定义了BLE协议栈中从物理层到逻辑链路控制与适配协议层的功能及特点,同时定义了BLE协议栈中层与层之间的互操作,以及互连设备之间处于指定协议层之间的互操作。
(c)BLE高层协议。BLE高层协议包括:通用访问协议层、通用属性协议层和属性协议层。高层协议主要为应用层提供访问底层协议的接口。
通用访问协议(GAP)层:定义了BLE设备的基本功能。对于传统的蓝牙设备,GAP层包括射频、基带、链路管理器、逻辑链路控制与适配器、查询服务协议等功能。对于BLE设备,GAP层包括了物理层、链路层、逻辑链路控制与适配器、安全管理器、属性协议,以及通用属性协议配置。GAP层在BLE协议栈中负责设备的访问模式并提供相应的服务程序,这些服务程序包括设备查询、设备连接、中止连接、设备安全管理初始化,以及设备参数配置等。在GAP层中,每个BLE设备可以有四种工作模式,分别为广播模式、监听模式、从机模式、主机模式。
通用属性协议(GATT)层:建立在属性协议层之上,用于传输和存储属性协议层所定义的数据。在GATT层,互连的设备分别被定义为服务器和客户端。服务器通过接收来自客户端的数据发送请求,将数据以属性协议层定义数据格式打包并发送给客户端。
属性协议层:定义了互连设备之间的数据传输格式,如数据传输请求、服务查询等。在属性协议层中,服务器与客户端之间的属性表信息是透明的,客户端可以通过服务器属性表中数据的句柄来访问服务器中的数据。
(4)BLE组网方式。BLE系统采用一种灵活的无基站的组网方式,使得一个BLE设备可同时与7个其他的BLE设备相连接。BLE系统的网络拓扑结构有两种形式:微微网(Piconet)和分布式网络(Scatternet)。
① 微微网。微微网是通过BLE技术以特定方式连接起来的一种微型网络,一个微微网可以只有两台相连的设备,如一台笔记本电脑和一部移动电话,也可以最多8台设备。在一个微微网中,所有设备的级别是相同的,具有相同的权限。蓝牙采用自组织组网方式(Ad-Hoc),微微网由主机(Master)(发起连接的设备)和从机(Slaver)构成,有一个主机和最多7个从机。主机负责提供时钟同步信号和跳频序列,从机一般是受控的设备,由主机控制。微微网的架构如图2.9所示。
图2.9 微微网的架构
例如,在手机与耳机间组建的一个简单的微微网,手机作为主机,耳机作为从机。再如,两个手机间也可以直接应用BLE技术进行无线数据传输。办公室的PC可以是一个主机,主机负责提供时钟同步信号和跳频序列,从机一般是受控设备,由主机控制,如无线键盘、无线鼠标和无线打印机。在进行蓝牙组网时,如果组网的无线终端设备不超过7台,则可以组建一个微微网。BLE有两种组网方式,一种是PC对PC组网;另一种是PC对BLE接入点组网。
(a)PC对PC组网。在PC对PC组网方式中,一台PC通过有线网络接入互联网,利用蓝牙适配器充当互联网的共享代理服务器,另外一台PC通过蓝牙适配器与共享代理服务器组建BLE网络,充当一个客户端,从而实现无线连接、共享上网。这种方案是在家庭BLE组网中最具有代表性和最普遍采用的方案,具有很大的便捷性。PC对PC组网如图2.10所示。
图2.10 PC对PC组网
(b)PC对BLE接入点组网。在PC对BLE接入点的组网方式中,BLE接入点,即BLE网关,通过与宽带接入设备相连接入互联网,通过BLE接入点来发射无线信号,与带有BLE功能的终端设备相连接来组建一个无线网络,实现所有终端设备的共享上网。终端设备可以是PC和笔记本电脑等,但必须带有BLE功能,且不能超过7台终端。PC对BLE接入点组网如图2.11所示。
② 分布式网络。分布式网络是由多个独立的非同步的微微网组成的,以特定的方式连接在一起。一个微微网中的主机同时也可以作为另一个微微网中的从机,这种设备又称为复合设备。BLE独特的组网方式赋予了它无线接入的强大生命力,同时允许7个移动的BLE设备通过一个BLE接入点与互联网相连,靠跳频顺序识别每个微微网,同一微微网所有用户都与这个跳频顺序同步。分布式网络是自组织网络的一种特例,其最大特点是无须基站,每台设备的地位都是平等的,并可独立地进行分组转发,具有灵活性、多跳性、拓扑结构动态变化和分布式控制等特点。
图2.11 PC对BLE接入点组网
3)传感器硬件选型分析
(1)温湿度传感器选型。温湿度传感器采用Humirel公司HTU21D型温湿度传感器,它采用适于回流焊的双列扁平无引脚DFN封装,底面积为3mm×3mm,高度为1.1mm。HTU21D型温湿度传感器的输出是经过标定的数字信号,符合标准I2C总线格式。
HTU21D型温湿度传感器可为应用提供一个准确、可靠的温湿度测量数据,通过和微处理器的接口连接,可实现温度和湿度数值的输出。每一个HTU21D型温湿度传感器都经过校准和测试,在产品表面印有产品批号,同时在芯片内存储了电子识别码(可以通过输入命令读取这些识别码)。此外,HTU21D型温湿度传感器的分辨率可以通过输入命令来改变,传感器可以检测到电池低电量状态,并且输出校验和,有助于提高通信的可靠性。
(2)光照度传感器选型。光照度传感器采用BH1750FVI-TR型光照度传感器,该传感器是日本RHOM株式会社推出的一种两线式串行总线接口的集成电路,可以根据收集的光线强度数据来进行环境监测,其具有1~65535lx的高分辨率,可支持较大范围的光照强度变化。
3.硬件方案
智能台灯的硬件主要有主控芯片(微处理器)、BLE模块、RGB灯、4路LED、温湿度传感器、光照度传感器、LCD模块、时钟芯片、存储芯片等。智能台灯硬件列表如表2.3所示。
表2.3 智能台灯硬件选型列表
续表
智能台灯的硬件设计结构如图2.12所示。
图2.12 智能台灯的硬件设计结构
4.应用程序设计分析
1)智能台灯应用App开发框架的分析
智能台灯应用App的界面框架如图2.13所示。
图2.13 智能台灯应用App的界面框架
两级菜单的形式,一级菜单属于一级导航,二级菜单属于二级导航。
智能台灯应用App的界面采用两级菜单的形式,一级菜单属于一级导航,二级菜单属于二级导航。一级导航分布在智能台灯应用App界面的上部,单击即可选中。每个一级导航都有若干二级导航,二级导航是对第一级导航的细化,内容属于二级菜单的细化,主要实现界面的功能。
(1)顶部(<header>):用于包裹标题(div.title)和一级导航(ul.top-nav)。标题用于显示智能台灯的名称。一级导航用于包裹li标签,当切换一级导航时,会通过display属性来显示二级导航及其内容。
(2)二级导航(ul.aside-nav):用于包裹li标签。
(3)内容(div.content):用来显示功能界面,二级导航可以动态切换内容。
2)智能台灯应用App的界面风格分析
在项目开发阶段,界面开发人员在编写代码时必须遵循一定的界面设计原则与规范,以确保界面的统一性。
(1)界面设计的内涵。界面是用户浏览网站的重要媒介,用户可以通过切换界面、单击界面等来了解网站的内容,用户的需求会直接影响界面的设计。随着信息技术的发展,界面的设计还会涉及心理学、艺术学、设计学、人机工学等多个领域。
(2)界面设计的一致性原则。
为了使界面更加美观,以及减轻用户的使用记忆负担,在设计界面时需要保证界面的一致性。一致性是指在界面布局(如国字形和厂字形,用来定位用户阅读的习惯性),以及控件(指相同的显示信息的方式,如字体样式、界面颜色、标签风格、术语、显示错误信息的方式)等方面需要确保一致,其目的是减轻用户的使用记忆负担。界面设计的一致性原则如下:
① 界面样式的相对统一。在设计具体的界面时,可以根据操作的实用性和可实施性对界面样式进行合理的调整,但需要保持界面之间的协调统一、主次明显,以便用户可以方便快捷地进行相关操作,减轻用户的使用记忆负担。
② 界面色彩以及风格的统一。在设计界面时,需要保证界面图片、按钮的颜色和风格的统一,以及在不同操作下图片和按钮状态的视觉效果的统一。
③ 导航、数据显示以及其他相同功能在格式上的统一。
④ 界面的协调一致。例如,界面不同按钮的布局方式,如开启和关闭操作,是采用同一个按钮切换文字还是采用两个按钮来实现,诸如此类的设计应该统一,以保证界面的协调一致。
⑤ 实现相同的功能时应使用相同的操作。
(3)系统响应时间。系统响应时间的设置要合理,如果系统响应时间过长,则会给用户一种卡顿的体验,甚至会消磨用户的耐性;如果系统响应时间过短,则会给用户一种操作快节奏的体验,甚至还未看清界面就已经响应完毕,可能会导致误操作。系统响应时间的设置原则如表2.4所示。
表2.4 系统响应时间的设置原则
续表
(4)出错信息与警告。智能台灯要能够对用户的误操作给出清楚的出错信息以及警告,出错信息与警告要遵循以下原则:
① 出错信息与警告应当使用简单明了的描述,要便于用户理解。
② 出错信息与警告应指出错误可能会导致的不良后果,便于用户做出判断或者根据提示进行改正。
③ 出错信息与警告应伴随视觉上的提示,如弹框、特殊的动画效果或颜色、闪烁。
④ 出错信息与警告不能带有判断性色彩,在任何情况下不能指责用户的误操作等。
⑤ 出错信息与警告只显示与当前环境有关的信息。
⑥ 出错信息与警告应使用一致的标记、缩写,以及可预测的颜色,信息的含义需要非常明确,便于用户理解,不需要用户再参考其他信息。
⑦ 使用缩进或者文本等方式来帮助用户理解系统的功能。
(5)智能台灯应用App界面的视觉设计。
① 允许界面定制。用户可以根据需求更改默认的系统设置,选择其满意的个性化设置。
② 实时帮助。在用户使用智能台灯应用App之前,可以通过实时帮助熟悉系统;在使用智能台灯应用App时,其界面应当提供部分帮助功能,主要是提供针对操作的帮助。实时帮助可以采用提示信息的形式,不能影响正常的使用,当用户不再使用某个功能时(如触笔或手指离开某个功能区),该功能对应的实时帮助应自动关闭。
③ 界面应当提供相关的视觉线索,可通过图形符号来帮助用户记忆,如小图标、下拉框中的相关选项。
④ 界面中的图标设计要符合用户的使用经验,如编辑、保存等的图标设计,用户无须花时间去猜测各个图标的功能。
⑤ 在设计界面的色彩时,应当使用同类色或者接近色,采用色彩弱对比,保证整体色调对比不太强烈,提高用户浏览界面的舒适性。
3)智能台灯应用App的交互设计分析
对于智能产品的App(如智能台灯应用App)来讲,不论在Android端还是在Web端,用户和App的交互体验变得越来越重要,智能产品的App界面的交互设计需要遵循以下原则:
(1)交互的一致性,菜单选择、数据显示,以及各种功能的设计需要采用统一的格式。
(2)对于具有明确结果的操作,需要用户在进行下一步操作是做出选择,并且确保用户完全明确操作的危险性或者破坏性。
(3)允许取消在界面中输入的数据。
(4)允许用户操作中的非恶意错误,系统应有相应的保护功能,保护自己不受非恶意错误操作的破坏。
(5)具有方便退出的按钮。
(6)导航功能应当便于界面切换,用户可以很容易从一个功能模块跳转到另一个功能模块。
(7)用户可以了解自己当前操作的位置,以便进行下一步操作。
2.1.3 智能台灯数据通信协议的设计
智能产品通常是基于物联网的四层架构设计的,智能产品中的数据会贯穿物联网的感知层、网络层、服务层和应用层。数据在这四个层之间层层传递。感知层用于产生数据,网络层在对数据进行解析后将其发送给服务层,服务层需要对数据进行分解、分析、存储和调用,应用层需要从服务层获取经过分析的数据。在整个过程中,要使数据能够在每一层被正确识别,就需要设计一套完整的数据通信协议。
数据通信协议是指通信双方为了完成通信或服务所必须遵循的规则和约定。通过通信信道和设备连接多个不同地理位置的数据通信系统,要使其能够协同工作,实现数据交换和资源共享,就必须使用共同的“语言”,交流什么、如何交流及何时交流,必须遵循某种通信双方都能接受的规则,这个规则就是数据通信协议。
采集类程序通信协议类JSON格式,格式为“{[参数]=[值],[参数]=[值]…}”。
● 每条数据以“{”作为起始字符;
● “{}”内的多个参数以“,”分隔;
● 数据上传指令的格式为“{value=12,status=1}”;
● 数据下行查询指令的格式为“{value=?,status=?}”,程序返回的格式为“{value=12,status=1}”。
智能台灯能够实时监测环境温度、湿度和光照度,既可通过按键控制LED的亮灭,也可以通过智能台灯应用App来控制LED、RGB灯的亮灭和颜色的控制。这些功能涉及的数据要能够被智能台灯、智云数据中心(云平台)和智能台灯应用App识别,数据必须按照一定的协议(数据格式)。智能台灯系统使用数据通信协议如表2.5所示。
表2.5 智能台灯的数据通信协议
参数V1~V3分别用来表示当前时间、闹钟和RGB灯的颜色,用户可通过智能台灯应用App来更新这三个参数,因此参数V1~V3的权限是可读写(R/W)的。V4表示自动模式下光照阈值,发送“{V4=100/200}”,表示设置的光照度最小值是100,最大值是200。V7表示模式切换,用于设置手动模式和自动模式。A0表示光照度,A1表示温度,A2表示湿度,D0用于设置是否允许主动上报数据,D1表示LED的状态。
2.1.4 小结
通过节的学习和实践,读者可以掌握智能台灯功能需求、方案设计和数据通信协议,对智能台灯的前期方案设计有足够的认知。