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。

更多相关文章

  1. 读取android手机流量信息
  2. Android(安卓)--- Activity生命周期
  3. 锁屏界面
  4. android 获取唯一标识
  5. android 零星调试笔记
  6. 从 Android(安卓)Sample ApiDemos 中学习 android.animation API
  7. Android常用控件
  8. android 开机直接运行app并当做手机桌面
  9. SlidingMenu和ActionBarSherlock结合做出出色的App布局,Facebook

随机推荐

  1. android声音服务
  2. Android 桌面快捷方式操作
  3. Android 星级评分条DEMO
  4. android 应用选择器的使用
  5. android 界面属性
  6. Android巴士转发
  7. Android APP增量升级的实现方式
  8. android反编译工具之jadx简介
  9. 关于android的webview打开淘宝天猫链接问
  10. 移植unrar到Android