> 来源 | HaaS技术社区
物联网
1991年由美国麻省理工学院( MIT )的Kevin Ashton教授首次提出物联网的概念。
物联网(Internet of Things,缩写:IoT)是基于互联网、传统电信网等信息承载体,让所有能行使独立功能的普通物体实现互联互通的网络。
说到物联网的UI交互方式,就不得先提一下移动互联网UI交互方式。
移动互联网
最近10年的手机芯片高速发展,同时伴随着显示屏幕、摄像头、4G/5G移动网络的快速普及,移动互联网不是简单的在手机上延续PC互联网的交互方式,而是进一步深化了个人对带屏硬件的交互方式,通过触摸交互方式,达到更直观的信息交互行为。
载体 |
交互方式 |
系统 |
PC电脑/笔记本 |
鼠标点击、按键,摄像头、麦克风 |
Window、Mac、Linux |
智能手机 |
屏幕触摸、摄像头、麦克风 |
android、IOS |
从上面一个最基本的对比,由于手机能将更直接的屏幕触摸替代鼠标点击,让每个人出门都不需要再携带笨重的鼠标,从而升华了设备和人的交互。
下面为IOS/android上比较常见的几种屏幕触摸交互
![image.png](https://ucc.alicdn.com/pic/developer-ecology/b38fa7502652481dbf7b1ff9a03f8c5c.png)
物联网的交互方式
上面也提到物联网覆盖的领域特别广,从而导致其交互方式千变万化,下面先针对详细讲解一下其领域中的交互方案
载体 |
交互方式 |
系统 |
穿戴手表 |
屏幕触摸、麦克风 |
android、RTOS |
教学平板/点读笔 |
屏幕触摸、摄像头 |
android、Linux、RTOS |
商显广告屏 |
屏幕触摸 or 无交互 |
android、Linux、RTOS |
工控机 |
屏幕触摸 or 按键 |
Linux、RTOS |
智能面板 |
屏幕触摸 or 按键 |
Linux、RTOS |
门禁&对讲 |
屏幕触摸 or 摄像头 |
Linux |
从上个列表中也不难发现,只要是带屏幕的物联网设备,同时也比较难逃脱屏幕触摸这种最直接的交互方式,因此讲完最基本的物联网交互方式,那自然就会有对应的UI方案与其交互方式匹配。
以下为在IoT场景上新增的几种交互形态(触摸交互则不在这里体现了):
手势交互
手势识别属于隔空识别的操作模式,从安全性上较以往的按键交互、触屏交互有很大的提升,不会有按键操作可能出现的触电风险,也不会有触屏操作卡屏的较高几率
![image.png](https://ucc.alicdn.com/pic/developer-ecology/470e5f6dea054e1789ea3969595d35ca.png)
语音交互
语音就是人最自然的与IoT交互的方式,原因是什么呢?
因为人与人之间交互也一样,也是用语音作为最自然的方式;人和机器也是可以做到这么自然流畅的交互。
语音交互是,即使是你在开着车,手不方便的时候,不看屏幕,不用触摸屏幕上的任何东西,也能够跟你的车交互。
下图是天猫精灵提供的语音交互能力
![image.png](https://ucc.alicdn.com/pic/developer-ecology/4fe0d5135ab64ca2b3add5d56e58811a.png)
物理网的UI方案
随着MCU高频高性能产品的推出,以及人际交互应用越来越多,使得很多产品可以以较低成本实现较为炫酷的显示效果。而越来越多的设备上数据可视化需求是GUI应用发展越来越快的根本原因。
GUI为人机交互提供了更直观UI的操作,尤其是对于一些智能化设备,使得设备操作更加简单易用。设备的联网通信给GUI提供了更多内容呈现的可能,设备厂商或内容服务商通过带一块显示屏,可以把更多的内容将会借助GUI呈现出来。
如今GUI主要的应用领域有智能家居、物联网、医疗、汽车、消费电子、工业等。其中消费电子是近几年来GUI需求增长最快的领域,当然其他应用领域也将会随着智能化终端的应用而带动GUI的发展。
随之而来的是,传统的直接基于目标设备的嵌入式GUI开发模式出现了开发周期长,开发成本高,开发门槛高等问题。考虑到GUI已经成为人与机器沟通的桥梁,且嵌入式系统对GUI的需求越来越高,而这一切均要求有一个开发效率高、可配置及美观的GUI支持。
由于android系统本身的UI方案比较成熟,下面表格主要讲解Linux 和 RTOS系统上的UI方案,以及部分对比内容。
UI方案 |
开发语言 |
资源开销 |
GPU支持 |
动画 |
图片解码 |
QT |
C++(跨平台) |
内存 > 10MB |
支持 |
支持 |
BMP/GIF/PNG/JPEG |
MiniGUI |
C(跨平台) |
500KB < 内存 < 4MB |
不支持 |
支持 |
BMP/GIF/PNG/JPEG |
LVGL |
C(跨平台) |
100KB < 内存 < 2MB |
不支持 |
不支持 |
默认仅支持BMP,有转换工具 |
GTK+ |
C(Linux为主) |
内存 > 10MB |
支持 |
支持 |
BMP/GIF/PNG/JPEG |
柿饼UI |
JS为主,C++为辅 (RTT系统为主) |
内存 > 800KB |
不支持 |
支持 |
BMP/GIF/PNG/JPEG |
以下简单介绍一下开源的3个UI引擎。
QT
完整的跨平台软件开发框架,实现了一套代码可以在所有操作系统、平台和屏幕类型上部署,从台式机、嵌入式系统到可穿戴设备、移动设备。
![image.png](https://ucc.alicdn.com/pic/developer-ecology/02077dfa9c834cbb9a598d15f1e82c57.png)
MiniGUI
MiniGUI 是一个自由软件项目。其目标是提供一个快速、稳定、跨操作系统的图形用户界面(GUI)支持系统,尤其是基于 Linux/uClinux、eCos 以及其他传统 RTOS(如 VxWorks、ThreadX、uC/OS-II、Nucleus 等)的实时嵌入式操作系统。
![image.png](https://ucc.alicdn.com/pic/developer-ecology/f81f0d59ea504c99bfde2e2a565e66c2.png)
Lvgl
littlevgl是一个小型开源嵌入式 GUI 库(简称LVGL),界面精美,消耗资源小,可移植度高,支持响应式布局,全库采用纯 c 语言开发,移植上手简单。
![image.png](https://ucc.alicdn.com/pic/developer-ecology/6a6520da03084aaea401b0b49a6b3043.png)
本领域技术发展方向
物联网领域芯片种类繁多,而可视化应用场景广泛,UI未来会向以下几个方向发展:
- 需要提供统一的UI框架,支持业务逻辑和UI界面可复用(例如:UI需支持不同屏幕的布局),支持多端部署;
- 支持可视化开发,减少开发者的工作量;
- 支持组件化、小型化,能适配不同的设备和资源需求;
提供完善的Native渲染方案,同时结合JS 热加载,热更新等特性,将用户从C/C++研发,逐步转换成JS应用 & 小程序开发。