林鑫睿
摘要: Android Things是谷歌公司推出的新一代智能物联网操作系统,有效地降低了开发的难度。该文首先对Android Things的结构、优势和应用场景进行了分析,然后从硬件的准备、关键技术的实现来探讨如何基于Android Things来进行LED灯开关的操作试验,为学习Android Things提供了较好的实践案例。
关键词:物联网;Android Things;LED灯控制;树莓派
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)03-0084-02
1 Android Things技术
Android Things为谷歌公司在2016年12月发布的物联网操作系统。在图1的系统架构中可看出,Android Things通过Things Support Library库,扩展了核心Android框架,从而可使APP能够与手机上没有的硬件集成在一起。此外,出于优化的目的,Android Things只是选用了Android API的子集。由于嵌入式设备典型情况下是为用户呈现单个应用程序,因此在Android Things中一次只能运行一个应用程序,而且应用程序将随着系统自动启动。
Android Things带来了如下显著的优势:
1) 在标准上,通过谷歌的品牌和影响力,类似于Android手机操作系统,有望在业界中推动建立一个流行的智能物联网操作系统。
2) 在开发上,可以在Android Things中使用Java语言来编程,通过调用Android Things提供的有关API来操作硬件,此外还可以使用谷歌丰富的开发资源,降低实现难度。
3) 在效率上,使用Android Studio来开发和调试程序,直接可以在物联网硬件上运行,提高了开发效率。
4) 硬件价格低,Android Things对硬件的要求比Android要低。目前支持Androd Things的开发板有:NXP i.MX7D、NXP i.MX6UL、Raspberry Pi 3、Intel Edison、Intel Joule。
5) 机器学习能力:支持TensorFlow,能够将深度学习应用到物联网领域,提高物联网设备的智能性。
6) 安全性:通过Cloud IOT云平台来进行安全管理,依靠谷歌的安全团队技术,提高物联网产品的使用安全性,减少数据泄露和被攻击的几率。
可以将Android Things部署在多个物联网领域,例如:智慧城市、车联网、智能音箱、数字标牌、打印机等,但目前受开发板成本的限制,Android Things还没有开始大规模在商业市场上应用。
2 硬件准备
1) 树莓派(Raspberry PI)。树莓派作为专门用于学习计算机编程的微型电脑,具有体积小、功能强大、价格便宜的优点,因此在本实验中采用树莓派来安装Android Things。
2) 面包板。面包板是集成电路实验板,板上由若干个小插孔组成,用于插放各类电子元器件。中间部分的5个小插孔是纵向相互连通,而上、下部分的所有横向孔是相互连通的。面包板的优点在于不需要焊接,组装电路较快,而且可以重复使用电子元器件。
3) 其他配件:红、黄、蓝LED灯各1个,电阻3个、杜邦线若干、HDMI接口显示屏1个。
3 系统实现
3.1 功能介绍
通过APP操作界面设置LED灯的开和关,并通过滑动栏来控制开灯的闪烁频率。
3.2 软件开发环境配置
1) Android Studio 3.0对Android Things提供了支持,需要到谷歌开发者官网下载并安装。
2) 打开Android Studio,新建一个项目,设置目标Android设备为“Android Things”,并选择合适的API版本。
3.3 关键实现代码
实现的原理是获取连接在GPIO的引脚对象,通过该对象去访问连接在灯上的引脚BCM6,然后进行true/false的取值来发送接通/关闭引脚,从而实现对灯的管理。
1) 定义一个PeripheralManagerService对象:PeripheralManagerService是负责管理外设连接的类。
PeripheralManagerService service = new PeripheralManagerService();
2) 定义一个Gpio对象:Gpio对象用于读取输入设备的二进制状态(例如:按钮开关)和控制二进制输出设备的开关状态(例如:LED灯)。PeripheralManagerService对象的openGpio方法用于打开指定引脚名字的Gpio对象。
Gpio mLedGpio= service.openGpio("BCM6");
3) 通过Gpio对象的setDirection方法来配置 BCM6引脚为输出信号引脚。
mLedGpio.setDirection(Gpio.DIRECTION_OUT_INITIALLY_LOW);
4) 调用Gpio对象的setValue(true)方法打开LED,或者调用setValue(false)方法关闭LED。
5) 最后调用Gpio对象的close()方法關闭端口的连接,释放资源。
本案例的运行结果如图5,6所示:
4 结论
Android Things能够和树莓派较好地结合,进行物联网的相关应用。在本实验搭建的LED环境中,可以作进一步的物联网扩展开发实验,例如:增加烟雾探测、温度、人体红外感应等类型的传感器,添加摄像头进行图像捕捉等。
参考文献:
[1] 谢景明,钟闰禄,陈长辉,等. Android移动开发项目式教程 [M].2版.北京:人民邮电出版社,2015.
[2] Google, Things[EB/OL].[2018-01-03]. https://developer.android.google.cn/things/index.html.