ADK平台配置与运行

作为小车计划的一部分,控制方面,要实现小车和Arduino的通信,于是我采用ADK,它的全名是:

Accessory Development Kit,是在Google I/O 2011大会上宣布的。目前支持2.3.4以上的Android版本。不过不幸的是,很多手机,像G1,需要一些Geeky的方法才能让它run起来,这篇文章就是给你一个框架概念和操作流程,如果你手头上有一套ADK,如何让它跑起来。

本文需要一些前置的知识:

Arduino的基本知识,写过Arduino程序最好。

adb工具的使用

Linux系统下文件的权限

会给Android刷机(但你不一定要刷)

基础知识

一个完整的ADK应用,要有以下几部分组成:

1. 一个宿主Arduino板

2. 一个USB_HOST_Shiled板

3. 一台Android手机

4. 一个运行于Arduino板上的固件

5. 一个运行于Android手机上的App

是的,他们的长像就像下面这个样子:

我呢,主要是要用这个板子来控制我的车http://intijk.com/?p=854,你可以用它来做任何你想要的项目。

硬件都可以直接从淘宝上购买,Arduino的种类可以自由选择,现在据我所知,这几种板子的支持都没有问题:

Arduino Uno

Arduino Duemilanove

Arduino ATmega 2560

我使用的是Arduino Duemilanove 。

确认手机支持ADK,否则就得刷Rom

手机我用的是HTC G1,可能你觉得它太老了,但你想,G1如果都能做,就任何Android手机都能做。

首先,你要查看你的手机是否支持ADK,在编译内核的时候,有一个选项,如果没有选,就不支持。所以如果发现你的内核不支持,就需要重新刷rom来解决了。我原来的CM7.1-rc2-0901的rom就不支持,所以刷了EzGingerBread的Rom

那么,如何判断你的内核OK不OK呢?首先请出Android的瑞士军刀:adb工具。

adb pull /proc/config.gz

解压,出现config文件

打开config,搜索

CONFIG_USB_ANDROID_ACCESSORY

如果出现的是

CONFIG_USB_ANDROID_ACCESSORY=y

That means you are a lucky boy! 你的Rom没有问题!

但如果它被注释掉了,或者没有,那么请节哀,我写的刷机文章在这里,你把SPL刷到hboot-1.33.0013d,把Radio刷到radio-2.22.28.25,把Rom刷成GINGERBREAD-DS-Stable-v1.0-20111204.zip,刷机之后,再次检查/proc/config.gz 直到有CONFIG_USB_ANDROID_ACCESSORY=y

补全必要的库文件

有这一步还不代表你的手机就是ADK 无障碍的,还可能缺少运行库。检查是否有如下两个文件,如果没有,说明你需要它。

/system/framework/com.android.future.usb.accessory.jar

/system/etc/permissions/android.hardware.usb.accessory.xml

我把它放在这里usb_accessory供你下载,它们是来自我写的这篇文章里的,通过adb从AVD的镜像里抽出来的。

好的,把它们push到你的手机上。在此之前,请注意读写权限问题。强烈推荐你用RE管理器把/system目录挂载为读写,对于高手来说,搜一下android remount,注意,不解决读写问题,无法push文件。

adb push com.android.future.usb.accessory.jar /system/framework/

adb push android.hardware.usb.accessory.xml /system/etc/permissions/

一般来说,传上去的文件权限是 -rw-rw-rw 而我们需要和其它库文件的权限保持一致-rw-r–r–,所以用adb获得手机的shell,执行:

adb shell

chmod go-w /system/framework/com.android.future.usb.accessory.jar

chmod go-w /system/etc/permissions/android.hardware.usb.accessory.xml

然后重启一下。

到这里,你就拥有了一台ADK Enable的手机了!很给力哦亲!

准备固件

我们开始准备固件和App。

固件的获得很简单,首先请你按这篇文章配置好0023版本的Arduino和ADK的开发环境,如果你是在Windows下,就只要下载0023的Arduino并配置ADK就可以,不需要理会文中关于avr-gcc的部分。

然后从github上下载(什么?你木有github,为什么不呢?Every cool boy have a one! Go to github.com and get it!)https://github.com/felis/USB_Host_Shield_2.0

下载了之后,就有一个USB_Host_Shiled_2.0目录,删掉/libraries/USB_Host_Shield目录,

把下载的这个目录后面的_2.0去掉,放在/libraries/下面

启动你的arduino 0023,如果现在打开了,请关闭掉所有的arduino窗口,然后重启。

选择File → Examples → USB Host Shield → adk → demokit_20

Tools → Board选择你对应的Arduino类型。

编译上传即可。

到这个位置,固件搞定。

准备App

然后参照这篇文章http://intijk.com/?p=948,编译出App,安装在手机上。

到这里,固件和App就都搞定了。

运行起来

给Arduino板子上电,用usb线连接手机和板子,然后点一下Shiled板上的Reset键。手机上出现如下画面,点击确定,就运行成功了。

在出现的界面里点out,滑动下面第一个条,可以控制arduino板3号引脚的输出电压,接一个LED上去。就可以看到效果,我录制了一段视频在后面。

如果有什么问题不懂或者没做成,直接在下面留言,或者邮箱Gtalk联系我: intijk 爱特 gmail 点 com

ADK平台配置与运行》上有 10 条评论

  1. 你好 我按照你的教程做了 但是 打开程序 连接设备 没有弹出 。。。用于该Usb配件 请问是什么原因

发表评论

电子邮件地址不会被公开。

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>