arduino是一个开放的硬件平台,包括一个简单易用的i/o电路板,以及一个基于eclipse的软件开发环境。arduino即可以被用来开发能够独立运行,并具备一定互动性的电子作品,也可以被用来开发与pc相连接的外围装置,这些装甚至还能够与运行在pc上的软件(如flash,max/msp,director,processing等)进行沟通。  

       arduino硬件电路板可以自行焊接组装,也可以购买已经组装好的,软件则可以从arduino网站免费下载使用。其中硬件参考电路是以cc(creative commons)的形式提供授权。

       一、背景

       Google在去年5、6月份的时候更新Android到2.3.4开始支持外接扩展硬件,这里无疑为我们描绘了未来嵌入式智能的发展蓝图,在任何你需要智能计算的地方,可以是汽车里,可以是家庭智能计算中心,甚至可以在天文台都可以即时插入手机获取手机的计算资源。当然就目前来看最大的应用还是在机器人智能上。

       很久以前就一直萌生有自己做机器人的想法,苦于对数电模电单片机了解太粗浅,一直没能下手,这次ADK的开放可以说对于做软件的人来说是敞开了机器人的大门。

       因为ADK发布并不久,算是比较新的技术,网上的资源相对较少,特别是国内的资源更少,这里就我这段时间对ADK环境搭建的经验分享出来给大家。

       Google本身发布了一个专用于ADK的板子,要价400美刀,当然实际上用arduino + usb host shield(在淘宝上2560 + USB HOST SHIELD 2.0 只需要300人民币左右)也是可以达到的,虽然实际做起来有点曲折。

       二、相关文件的生成

       先附上google标准教程。你严格按照这个做,如果能完成最好,如果不能完成还是看我这个吧。

       http://developer.android.com/guide/topics/usb/adk.html

       你需要在这步产生两个文件,一个手机端用的apk以及一个用于上传到板子上的pde。

       严格按照谷歌官方的步骤走:

       第一步,下载google ADK包(https://dl-ssl.google.com/android/adk/adk_release_0512.zip)。

       第二步,搭建android开发环境(其他文章已经讲了,我这里就不重复了),通过SDK Manager下载Adds-on(Google APIs),如果手机就2.3.3,level10,如果是pad就需要3.0(安装图可以见http://code.google.com/android/add-ons/google-apis/installing.html)。

       第三步,在eclipse中,通过建立已存在工程的方式把ADK包中的\app工程建立出来,target选google API或者2.3.3或者3.0,根据需要建立,建立完了以后,在工程下就会有bin文件夹产生了,下面那个apk就是我们要用的apk了。

       第四步,下载arduino开发IDE(http://arduino.cc/en/Guide/HomePage),完了安装,之后将ADK包中的\firmware\arduino_libs下的两个文件夹拷贝到arduinoIDE安装目录下的\libraries中,然后打开IDE,从IDE中打开ADK包中的\firmware\demokit\demokit.pde,编译就行了。

       通过第三步产生的apk传到手机,以及第四步的pde选择好对应的板子后传到板子上,我们就完成了google标准教程中的内容,如果你的apk能在手机上顺利安装,并且在板子连上打印线(用于供电,你也可以用电源线供电)后,USB HOST SHIELD连上手机时如果出现了警告窗口,恭喜你,剩下的内容你不用看了,你已经打通了手机和板子的通信,剩下的就是写你想要的功能了。

       如果APK没装成功,或者线连通了手机上没有出现警告窗口,接下来的内容可能会对你有些帮助。

       三、手机端开发环境的搭建

       手机端最硬性的条件是手机必须支持到android2.3.4以上的rom,从实际情况来说,即使G1也能刷到2.3.4以后,所以理论上说所有的android手机都能支持(实际上根据老外研究貌似galaxy S系的手机不支持)。我这里使用的就是很早期的HTC G2来做的。

       有可能你在按google标准做法做了以后,APK安装不上,LOG中显示

       Package com.google.android.DemoKit requires unavailable shared library com.android.future.usb.accessory; failing!

       这需要你按照下面步骤进行测试和调整:

       (1)关于rom。第一,如果你的手机通过官方升级渠道能够升级到2.3.4以后恭喜你,你不用为rom发愁,什么都不做或者做一点拷贝工作就能完成手机端的布置。第二,如果你的手机官方升级早已停滞(比如我用的HTC G2)那么你只能刷MOD版的rom,国内比较常见的可以去安卓网或者机锋网搜索你想要的rom,由于不是专门的开发网站,他们的rom比较有局限性,一般都是从国外的rom拉过来改的,国外比较权威的是xda论坛,一般的rom都能找到,刷机过程我这里就不赘述了,内容比较多,请不太清楚的读者转到网上搜索资料学习一下。一般来说,MOD版的rom都有root权限,可以通过如下方式检查你的rom是否支持ADK,拉取根目录下/proc/config.gz出来,解压缩,搜索"CONFIG_USB_ANDROID_ACCESSORY",如果搜索不到或者搜索出来的结果是"# CONFIG_USB_ANDROID_ACCESSORY is not set"那很不幸,这个rom是不支持ADK的,需要再刷其他rom(以HTC G1或者G2这些早期版本来说,ezGingerBread的rom是支持的,但是安装后需要自己设置语言为中文)。

       (2)关于运行库以及权限Rom的问题解决后,可以尝试安装一下,很可能还是安装不上,是因为缺少运行库的原因,你可以把模拟器文件中/system/framework/下面的com.android.future.usb.accessory.jar文件拷到手机的对应目录下,同时需要把/system/etc/permissions/目录下的android.hardware.usb.accessory.xml拷贝到对应目录下,这个目录也被链接到/etc/permissions的。(如果没有root提权需要用adb命令push文件),这里附上国外解决这个问题的原始链接:https://github.com/ezterry/manifest-gingerbread-DS/issues/32。

       经过这两步,按道理来说应该可以顺利安装上APK了,这时你可以尝试下把板子跟手机连一下观察是否有警告框弹出,如果没有,接着往下看。

       四、ARDUINO端开发环境搭建

       非常恶心地,google原始提供的pde以及USB HOST SHIELD库并不支持目前市面上常见的USB HOST SHIELD,只需要做一个简单替换即可。先下载USB HOST SHIELD LIB 2.0,地址如下https://github.com/felis/USB_Host_Shield_2.0/downloads

       解压,将arduinoIDE目录下原来的USB_Host_Shield做个备份后删掉,然后将解压得到的目录重命名为USB_Host_Shield。

       打开新USB_Host_Shield目录下\examples\adk\demokit_20\下的pde文件通过arduinoIDE打开,编译,上传到板子上,重新插拔与手机连接的USB线,Cheers,应该有警告框弹出了,连接打通!

       最后附上USB_HOST_SHIELD lib 2.0地址:http://www.circuitsathome.com/mcu/google-open-accessory-interface-for-usb-host-shield-library-2-0-released

本文发布:Android开发网
本文地址:http://www.jizhuomi.com/android/environment/155.html
2012年8月12日
发布:鸡啄米 分类:Android开发环境 浏览: 评论:0