中国首位IoT领域的GDE:Android Things全解析及展望

Android Things


Android的整个生态涉及到手机、手表、电视、汽车以及物联网。Android Things的系统相对其他几部分更加精简,适合与物体结合的场景,也就是物联网方面。它的应用领域偏向于Camers、Gateways、HVAC Control、Smart Meters。


在物联网设备中安全性的是比较难解决的,例如手环、Camers这类安全性相对较高的设备一旦被拿到最高权限,大量私密信息就会被暴露出去。考虑到这方面的问题Android Things在系统设计之初就在安全性上做了完善的配置。


Android Things开发工具


中国首位IoT领域的GDE:Android Things全解析及展望


Android SDk是完全支持Android Things的,当然也能够使用Android Studio作为开发工具。Play Services是google Services的一个组件,Firebase则是数据库,Cloud platform集成了对物联网的数据应用。可以看到Android Things借鉴了很多Android的工具,毕竟它是类似安卓的一套系统。


物联网最基本的形态中类似于传感器、摄像头这样的设备会对数据进行收集,然后进行粗加工传送到云端,最终处理分析这些数据。整个流程中数据会被存放到数据库,但是收集到数据后进行深加工的这一环节,对目前的嵌入式设备来说还有很多问题没有解决。因此数据的深加工都被放在云端解决,这也使得Firebase和Cloud platform在整个数据处理的过程中占有比较重要的地位。


IoT


中国首位IoT领域的GDE:Android Things全解析及展望


出于安全方面的考虑,Android Things的操作系统核心都是由谷歌直接管理,将开发者的权限限制在小范围内。Google提供了IoT Developer Console进行云应用上传以及对设备的下发。


Automatic Security Update是自动安全升级,它在Developer Console中进行推送,一旦有新的Android Things镜像或者需要从Android Things镜像中升级应用都是通过Google服务器自动获得推送升级。Signed Images和Verifled Boot涉及到了嵌入式开发的领域。


一般的简单嵌入式开发引导流程都是先从Bootloader到Linux Kernel,再进入到,之后才是其他应用的启动过程。从整个系统的安全性来看,是可以在Bootloader这部分夹杂一些代码去获得权限的。于是Google 要求Signed Images和Verifled Boot这两部分需要OEM厂商和自己进行认证,来保证这部分二进制镜像的可靠性。


产品的开发中,需要在CPU芯片的模块板上画开发板,进行硬件方面的初期设计。完成后就进入到应用的开发时期,来让开发者进行开发。



Android Things for Developers


中国首位IoT领域的GDE:Android Things全解析及展望


上图是整个Android 的整个系统的框架,包括linux kernel、Libraries、Application Framework、Application。Application中大多是手机或者平板的应用和框架。


中国首位IoT领域的GDE:Android Things全解析及展望


Application Framework这层中灰掉的这部分是Android Things去掉的部分框架,这些框架都涉及到了用户交互方面的应用,而Android Things并不赞赏通过屏幕去进行用户交互。因为物联网的设备只需要配置好最初的设备环境就可以了,系统的运行过程中主要是进行数据收集以及传递的工作。虽然Android Things并不会过多的涉及用户交互,但还是提供了一些交互渠道,比如音频、keyboard、按键。

Different from Android


中国首位IoT领域的GDE:Android Things全解析及展望


不同于Android的多应用多Activity,Android Things中去除用户的交互之外,就只使用了一个应用并且只包含一个Activity。Android有着动态权限的获取,而Android Things的唯一一个应用是伴随系统启动的,不需要用户去动态获取权限。由于Android Things需要驱动众多的外设,所以它还有一个支持这些外设的库。安卓的开发中Android Studio提供了虚拟机的支持,但Android Things可是涉及到了众多的硬件,因此在软件层面上的虚拟机支持是不必要的。


Support Google Service


中国首位IoT领域的GDE:Android Things全解析及展望


上图列出的是Android Things的API支持情况,主要集中在数据、地图、定位这类的服务。在数据相关的服务中关于用户交互的部分也被去除了。Android Things的Cloud部分会生成各种服务API的key,然后在应用中加入key。这样就解决了用户态的认证缺失的情况下,依然能判断当前设备是否为Android Things设备的问题。


用户态驱动


中国首位IoT领域的GDE:Android Things全解析及展望


Android Things提供了几大类的IO,外设的IO包括GPIO,PWM、I2C、SPI、UART、Native PIO。GPIO 可以用于传感器的控制,PWM 用于对电机或声音的控制。I2C、SPI、UART这三部分涵盖了低中高三种总线,在目前所有的传感器模块中,如果需要连接板子都是要用到这三种总线的。


在用户态这方面则抽象出了类似Android的输入、传感器、GPS、Audio的部分。还覆盖了Peripheral I/O的一些设备,这部分的抽象被放在了Android Things Libraries中,通过接口就可以调用。


Simple Peripheral I/O

中国首位IoT领域的GDE:Android Things全解析及展望


上图是GPIO的一个简单例子,主要涉及到方向、触发方式以及回调函数的注册。


Cloud IoT Core Beta


中国首位IoT领域的GDE:Android Things全解析及展望


Android Things收集数据进行深处理必须要经过Google Cloud,上图就是Cloud IoT Core的整个架构。设备将数据导入到Cloud IoT Core后再利用Functions配置数据,接着Pub/Sub进行交互,交互完成后利用Bigtable、BigQuery、ML进行数据的处理,处理完成后将数据交给Datalab以及Date Studio,最后完成一些其他的处理。


Work Flow

中国首位IoT领域的GDE:Android Things全解析及展望


上图展示了用户在Cloud IoT Core上的工作方式。整个流程中有着三个主要角色,第一个角色是设备数据采集的过程,在物联网中数据是低频的传输,基于TCP协议之上,它主要通过MQTT/HTTP协议将数据传输到Cloud IoT Core。另一个角色是Provisioner,当产品开发完成后会交给Device Manager进行管理。Cloud IoT Core采集到的原始数据会被传输到Pub/Sub模块,也就是最后一个角色。

Android Things 社区链接


中国首位IoT领域的GDE:Android Things全解析及展望


Google’s IoT Developers Community:https://g.co/IoTdev

Google’s IoT Solutions:https://Iot.google.com

Android Things SDK:

https://developer.android.google.cn/things/index.html


上一篇:级联 mysqlbackup+GTID+无损复制


下一篇:The Design of Everyday Things 读书笔记