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:///?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:///?p=948,编译出App,安装在手机上。
到这里,固件和App就都搞定了。
运行起来
给Arduino板子上电,用usb线连接手机和板子,然后点一下Shiled板上的Reset键。手机上出现如下画面,点击确定,就运行成功了。
在出现的界面里点out,滑动下面第一个条,可以控制arduino板3号引脚的输出电压,接一个LED上去。就可以看到效果,我录制了一段视频在后面。
如果有什么问题不懂或者没做成,直接在下面留言,或者邮箱Gtalk联系我: intijk 爱特 gmail 点 com