Android Things旨在让Android开发者可以用熟悉的工具(Android Studio)开发智能设备。

Android Things是给Android开发者开发智能设备的一个大大的福利,Android开发者熟悉移动开发和移动互联网,可以将自己的移动互联网思维注入智能设备的设计中,而传统的硬件开发者,在这方面相较于Android开发者有所欠缺,这是Android开发者的优势。

如何开发一个智能设备

然而,Android开发者对硬件、电路往往不够熟悉,这是劣势,然而通过学习,对硬件和电子电路有一些了解,就可以很方便的用Android Things开发智能设备了。如果你喜欢动手,可以很方便的设计你的智能设备,并DIY出原型产品,开发运行在设备中的Android Things APP,结合云服务和手机APP,展示你的产品创意。之后聪明的你就可以全面的展示你的智能设备,融资或是通过众筹的方式,进行智能设备的产品化。或者你只想DIY自己玩玩,或是带着你的孩子一起玩,对,给孩子开发自己专属的智能玩具,那也是很酷的事情。

一个基于Android Things的玩具小车

做Android Things,做物联网开发,就不得不说电子电路了,Android开发者可能并不熟悉,不过本文会帮你梳理一下,基本上都是初中物理的知识。首先要介绍一个非常好的工具——面包板。

树莓派和面包板

面包板可以让你不需要焊接,通过接插的方式,把电子元件连接在一起,实现所需的功能,非常省时省力。Android Things官网的开发案例,也基本上都是通过面包板连接电子元件实现的。上图就是Android Things官网的第一个例子,电灯大法(让LED灯闪烁)。虽然Android Things现在也推荐一些集成了LED、按键和一些传感器的树莓派扩展板,不过还是建议入门者选择面包板和插件元件的配件套装,这样你知道电路是怎么连接的,知道原理会有助于发展你的创意。

我们可以按上图,先连接好电路:

1. 图中从树莓派的一个GPIO引脚(Pin31-BCM6),引出线到面包板上。
2. 面包板中间每一行(标注了1~30)中下半部分的ABCDE五个孔、FGHIJ五个孔,是分别连通的。即第1列的ABCDE孔可以理解为是用一根导线连通的。
3. 如图中,导线和电阻左侧,都连在第13列下半部分的孔中,它们是接通的。
4. 连接一个电阻(可以选用300Ω~1KΩ的电阻,如果有我们的配件套装,可以使用蓝色的电阻,阻值是1KΩ的)。
5. 同样,通过面包板,电阻的另一端连接到了红色LED灯上,注意是连接LED灯的长脚。
6. 红色LED灯的短脚,通过面包板,连接一根杜邦线,连接到了面包板上面的负极插孔上。
7. 面包板上下各有一对电源正极插孔(标红线)和负极插孔(标蓝线或黑线),这些孔同一行整行都是连通的。
8. 将面包板上方的负极插孔,连接到树莓派的负极(GND)上。

这样,我们就可以通过控制GPIO产生高电平,电流通过电阻流过LED灯,使LED灯发光了。

我们在淘宝上提供了入门套装,你可以选择包含了树莓派和已烧录Android Things系统的TF的套件,如果你已经有树莓派,只购买配件即可。如果你要自己下载烧录Android Things系统,可以先读我的另一篇《Android Things入门防坑必读-硬件和系统下载安装篇》。

https://sysolve.taobao.com/

套件根据Android Things官网Samples开发案例所需的配件进行打包,精选优品,无需自己搭配,专业工程师亲自搭配测试。

Android Things开发配件套装



开发第一个Android Things APP

如果你是Android开发者,你应该已经有了Android Studio,如果没有的话,可以到官网下载一个最新版的。

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

下载Android Studio

之后,到Github上去下载官网第一个例子(Simple PIO)的源代码。

https://github.com/androidthings/sample-simplepio

在Android Studio中打开,这里有个坑,应该是Android Studio的Bug,由于项目使用的是新的gradle-4.1进行编译,提示Failed to open zip file。没有下载成功。测试发现用浏览器是可以打开下载的,所以感觉是Android Studio的Bug。如图,打开gradle-wrapper.properties文件,看最后一行。

Android Studio提示Failed to open zip file错误

如下图红框所示,讲最后一行的https改成http,重新编译即可,第一次编译时要下载gradle-4.1-all.zip文件,需要耗费很长时间。

将https改成http

通过网络adb连上树莓派,假设树莓派的IP地址为192.168.1.100,即在命令行输入

adb connect 192.168.1.100

如果是NXP的Pico开发板,则是通过USB Type-C线,通过USB方式连接ADB,通过网络方式连接ADB会提示拒绝连接。

连接成功后,运行blink这个APP即可看到LED灯闪烁了,可以尝试换其它颜色的LED灯试试效果。

运行blink

如果你希望你的APP可以开机自动运行,那么可以修改AndroidManifest.xml文件。

让APP自动启动

如文件中的注释所述,将下面的代码段的注释取消即可。主要是设置了“android.intent.category.HOME”属性,这样相当于你的APP是设备的默认启动程序了。此时你的APP将会开机自动启动,当APP意外中止时,也将会自动重启。

试想你的智能设备售卖出去了,然后程序异常退出了,你总不希望它在用户手里变砖头吧,所以Android Things发现你的APP退出之后,会帮你重新启动。(以前都要自己写异常重启的代码,现在系统帮你实现了。)

不过在调试的时候,APP因为自动重启而没办法停止就不太好,比如你先调试了A程序,然后又运行了B程序,A程序没法退出,B程序就没法申请A程序已使用的资源。所以,官网给出的方法是,调试完A程序之后,如果要调试B程序,则先通过ADB将A程序卸载掉。

adb uninstall com.example.projectA

或者,保持AndroidManifest.xml文件中,下面的代码段为注释状态。

使用PWM控制舵机

在官网Simple PIO这个例子中,还有一个pwm项目,可以在启动运行的地方,将blink项目切换为pwm项目,运行这个APP,我们可以控制舵机旋转。

运行pwm项目 连接舵机示意图

如图,需要通过三根线连接舵机:

舵机接线

1. 树莓派5V电源线,如图中红线,连接到舵机红色线
2. 树莓派 GND线,如图中黑线,连接到舵机棕色线
3. 树莓派 PWM输出线,如图中黄线,连接到舵机橙色线

注意线不要接错,否则可能烧毁舵机。

更多动手实践

我在Blink代码的基础上,做了一个数字管显示数字,自动累加的例子,你可能猜到了数码管其实就是一系列LED灯组合在一起的,后面的文章中会做介绍,你也可以动手实践一下。

在Blink基础上修改的数字显示例子 数码管显示代码示例

更多相关文章

  1. 【源码】Android(安卓)面包屑导航效果源码、Android(安卓)各种侧
  2. 【Android】socket通信【客户端访问】
  3. android 通过广播监听网络连接状况
  4. Android判断当前的android设备是否处于联网状态
  5. Android判断当前的android设备是否处于联网状态
  6. Android判断当前的android设备是否处于联网状态
  7. Android判断当前的android设备是否处于联网状态
  8. Android判断当前的android设备是否处于联网状态
  9. Android判断当前的android设备是否处于联网状态

随机推荐

  1. android Studio 引用fresco 出现的问题
  2. Android Edittext设置负数以及小数
  3. TextView添加ClickableSpan和LinkMovemen
  4. Android的唤醒锁和键盘锁
  5. Android(安卓)sqlit java层源码分析
  6. android问题(1)
  7. Android(安卓)ExpandableListActivity 学
  8. TextView控件
  9. Flutter 透明状态栏及字体颜色的设置方法
  10. Android输入法遮挡问题的解决思路