为什么说Google选择Arduino至关重要及此对苹果配件授权机制的影响[翻译]

本文全文译自Make Magazine的专栏作家Philip Torrone的文章:Why Google Choosing Arduino Matters and is This the End of “Made for iPod” (TM)?,原文请点击链接进入。

why_arduino_google 本周Google一年一度的开发者大会在旧金山的Moscone中心召开,参与者众多,可以说这是一次顶尖.com公司的盛宴。参与者们响应着大会的主题——“互联网、移动及企业开发者与Google一起应用开放网络技术构建云端应用……集中展示包括应用引擎,Android,Google Web Toolkit,Google Chrome,HMTL5,AJAX,数据API,Google TV及更多的产品和技术”而来,不过,今年是不会有太多的Google TV及Google Wave的东东了:)而对于专注于开放硬件和手机平台的伙计们来说,也许这是有史以来最重要的一个星期了。 在本周的专栏中,我将集中介绍Google是如何选择开源硬件平台Arduino作为其Android开放配件工具的,以及此事的重大意义,写一写我判断Google能够做好此事的分析,然后,我会像以前在专栏中常做的那样,做一些预测(比如:Arduino胜利及前途远大的原因):1)Google此举将会为Android和Arduino平台赢来像前一阵儿Kinect风潮一样的创意涌泉;2)苹果会慢慢开始摒弃原有的配件授权机制,并在该领域或多或少地采纳与Arduino类似的方式;3)微软/诺基亚/Skype阵营会严重关注这一切的发展,并且应该采用Netduino平台作为Windows Phone 7的配件发展模式。 如果手机厂商期待手机市场能够勃发出崭新的创意,涌现出以前无法想象的配件产品,(Google的做法)就是事情的开端。 让我们开始吧,首先是一些Android的统计数字(来源于Google):

  • 1亿台已激活的Android设备
  • 每天有40万新Android设备激活
  • Android Market上已有20万个应用程序
  • Android Market的应用程序安装量达到45亿次

这么多用户、这么多手机,这就是爆发啊,即使是苹果也要开始小小的紧张一下了。本周Google宣布他们选择以Arduino作为开发工具,构成其“Android开放配件”体系。这是一个完美的选择,后面我将会详细阐述。下面是Google的官方声明,同样也可以在主题演讲视频中看到。 “从一开始,Android就被设计成可以扩展到手机以外的领域,为实现此目的,我们设计了Android开放配件体系,以此帮助开发者开始构建与各种Android设备协同工作的全新的硬件产品。” 在视频中,与硬件相关的部分在大约36分钟左右开始。

为何Google选择Arduino?

Arduino套件有大约20万的活跃使用量,此外我估计有大约50万的用户直接间接的在使用Arduino,这当中有学生以及一些甚至不知道他们在使用这种开放平台的用户(使用Processing语言的交互艺术开发者及教育领域的用户等)。如我不久前的断言,作为一种微处理器平台,Arduino已经成功并将前途远大。Arduino拥有成熟的开发者社区、开放的集成开发环境和硬件设计、不错的驱动程序、跨平台,以及价廉、易于上手等优势。现阶段,还真的没有什么别的更简单快速的方式,能够做些像获取模拟传感器数据、控制马达运转这类事了,对于手机来说,更是如此。 在已经拥有如此众多手机数量的情况下,如果Google想以一种最简单的方式去开发相关配件,那么,有什么平台能够同时拥有上手简单、易于连接传感器、开源和有足够的数量优势呢?Arduino,我相信在这里会有不同意见(请在文章后的评论区发言),但是这样真的已经是最优的组合了。 请记住,Google发布在这一版开发套件中的“Arduino”硬件还不是很成熟的。即便算上Google在开发者大会上向与会者免费发放这样无人能望其项背的优势,我们也将在不久以后就能看到更便宜(和更好)的版本问世。而且我认为Google在这一版套件的实现中做出了一些我无法认同的决定,后面我们将详细说明。

什么是Android开放配件套件(ADK)?

请参考Google的在线文档 “Android3.1平台中第一次包括了支持Android开放配件的特性(该特性将同样移植到Android2.3.4系统中),这些特性允许外接的USB硬件设备(Android USB配件)与Android系统设备间以一种名为配件模式的方式进行互动。当Android系统设备进入这种配件模式,连接的配件将作为USB主设备(给总线提供电源,枚举各种连接设备),而Android系统设备则成为连接设备。Android USB配件是一种特定的设备,用来连接Android系统设备并在两者间应用一种简单的协议(Android配件协议),使其能够连接并识别出各种支持配件模式的Android系统设备。配件必须同时提供500mA 5V的电流做充电用。许多以前发布的Android系统设备只能作为普通的USB设备,无法与外部USB设备建立数据连接。而支持Android开放配件的设备将超越这一限制,让开发者可以建立自己的配件,与各种支持该特性的Android系统设备连接并互动。 现在被称为ADK板的设备就是一块基于Arduino Mega2560和Circuits@Home USB插件的带有USB主控制器的微处理器开发板,你可以在以后的开发中将其做为前述的所谓Android USB配件。这样的ADK板带有输入输出插口,你可以基于此设计出用于扩展功能的称为“插件”的子电路板。由开发者用C++语言编程的固件程序,可以安装到这样的开发板中,以定义配件的功能,与插件及连接的Android系统设备互动。开发板的硬件设计文件保存在hardware目录中。” 简而言之,ADK板就是一块Arduino Mega和USB主设备控制器插件的合体,同时还可以通过外接电源给Android手机提供稳定的5V电源,这些是好消息。下面则是不好的消息,说明了Google是怎样画蛇添足的……

关于Android开放配件套件(ADK)的一些坏消息

有人会说了:老早以前就有方法可以让Arduino与Android手机协同工作了!比如MicroBridge,IOIO,Amarino或者Cellbots,有些人会说现在的ADK板跟IOIO比简直就是倒退,因为ADK只支持新的手机,这样开发出来的配件没什么向上兼容性。不过我想这就是手机厂商的一贯做法吧,他们就是靠这样才能卖出新的型号或让用户更新系统的。

对于上面提到那些项目和产品来说,他们仍然可以继续自己发展,只不过是没有Google的背后支持罢了(到目前为止)。我想随着时间发展,我们会看到Google采纳一些与IOIO类似的特性,当然这只是我的猜测。上面的图片是Oleg Mazurov的USB主控插件(使用MicroBridge)。
“Romfont”的文章我非常赞同,他写到:
“ADK开发团队用增加一个新协议的糟糕方法,成功地使大家只能在最新的手机上使用ADK,这样也使任何商业应用在短期内都无法实现。对爱好者来说,这意味着要么选择更新自己现在的手机到最新的ROM,要么去买一个新手机,否则他们就无缘参与这件乐事。所以现在我们面对的情况是:虽然已经有了成熟的解决方案,我们却只能使用一个由Google硬塞给我们的,在设计和兼容性方面都不如前者的替代方案。
我真的很想喜爱ADK,如果Google能够充分利用时间,做出一个好的设计方案的话,我也会第一个起立鼓掌支持。他们本可以用正确方式增加新的协议,他们可以从Android调试桥(ADB)上着手,更重要的是,他们应该在USB直接传输(OTG)中增加正确的硬件支持。可是现在的ADK非但没有解决任何已存在的问题,反而通过增加一个考虑不周的全新标准,使事情变得更糟了,这种迭床架屋正是Android平台当前最不需要的。”

请仔细阅读全文,里面有很多好观点。不过Google将Arduino与Android结合绝对是最重要的事实,而有关未来发展、更好的实现方式等等都会很快到来的。我知道现在已经有人在做些什么了,有报道说虽然还有电源供应问题,但是已经可以用标准的Arduino板和USB主控插件的集成(而不是ADK板)来做开发了,我会关注并在以后确认这样的报道是否属实。

另一件事,Google在硬件方面并不是特别的专业。我认为将Mega和一个USB主控插件合在一起的方式,只不过是因为这样最简单和快速,以便能够赶上开发者大会,也可以从强大的Arduino开发者阵营中借力。Google多半不会只是想让大伙儿买一些Keil编译器,做些用手机让LED闪闪亮的原型而已。所以,还是要再顶一次Google,当然我会更期待新版本的发布(以及开源社区的发力)。
最后在进入下一章节前,提供ADK文档的下载,Google在这方面为开源硬件做出了很好的贡献(下载)。

(Google方式)是否意味着苹果相对严苛的配件授权机制的末日呢?

想知道你要怎样才能获得苹果许可,去生产“已授权”的iPod/iPhone配件么?
“只有加入苹果配件授权(MFi)机制才能去生产iPod/iPhone/iPad配件。经授权的开发商可以获得技术文档,硬件原件,技术支持和授权标志。给开发商的技术规范中详细描述了配件的协议,该通讯协议确定了配件与苹果设备间的互动方式。开发商同样获准可以接触硬件接口及相关部件,以便开发商的研发和生产。”

我认为“授权开发商”是过时的概念,而开放规范才是与时俱进的。苹果的方式是否会逐渐消亡?我认为会的,但是这是否会发生要看Android配件体系是否发展顺利,如果未来所有惊人和精彩的发展都集中在Android这一方,苹果就会改变它已有的方式,它不得不如此。
我听说苹果的配件NDA是非常,非常严格的(比任何其它厂商都严格),有一个配件生产领域的熟人曾对我说:“如果苹果喜欢你生产的东西,那么他们就会去克隆你的产品,要永远记住这一点”,虽然这是前几年,在iPod一统天下时代的事情,但是这确实是配件厂商要严肃考虑的事情。如果苹果不喜欢你的硬件,他们可以像从App Store下架一个应用那样把你的硬件封杀掉。如果有从事硬件生产领域的人,而且和苹果合作愉快的话,欢迎将你的经历发在评论里(如果苹果允许你这么干的话)。

也许我是有点被苹果的iOS评审过程伤到了(我的应用从来没有被审核通过过,而且你也无法联系苹果了解为什么,简直就是噩梦一场)。虽然我也有其它事情可做,但是这终归是浪费了我很多时间。此外,我现在也确实在全力支持应用开源硬件的公司。

另一方面,我认为Google也在内部大力发展配件
“Hershenson和Brit是2000年建立Danger的三个联合创始人,第三个人就是现在Android的老大Andy Rubin。这三个工程师创建了当时颇为先锋的面向消费者的智能手机,比如2000年在名人中颇为普遍的T-Mobile的Sidekick。

现在,这三个人再次合作了,在过去的12个月里,Brit和Hershenson悄悄地加入了Google,为Android手机开辟了一块称为Android硬件的全新领域……他们设计的产品将成为未来Android附件的标杆作品。Android硬件将探索从家庭自动控制,体感游戏到机器人的各个方面。虽然目前还没有计划立刻生产Google品牌的Android硬件,但Brit指出他会乐见这样的产品在以后出现。在Cupertino(苹果)的家伙们要注意了。”

这可是一个了不起的团队,如果未来这些家伙炮制出一批惊人的配件产品,然后和从Google中离职创业的家伙们创建的公司(过一阵儿又会被Google收购回旗下)合作或交给他们经营的话,我是不会惊讶的。这种做法和苹果的一贯方式可是有天壤之别的,我可是很怀念当初的Sidekick的。

微软/诺基亚/Skype阵营该如何应对?

如果微软也打算象Google这样做呢,是否有开源的.NET基础的硬件平台呢?当然有,Netduino。快点啊,Ballmer,赶紧跳出来宣布Windows Phone 7的下一代配件平台吧!说真的,赶紧跳出来宣布这将会是下一个Kinect吧!不过拜托,千万别收购了制造Netduino的公司,那样只会把一切搞砸的。只要公开宣布支持他们(秘密的也行,秘密实验室!),然后给每一个.NET开发者一人一台Windows Phone 7手机和Netduino开发板让他们开始倒腾就行了,开发者至关重要,不是么?

开发者开发者开发者!不开玩笑,说不定目前在Redmond(微软总部)真有这样的会议在召开呢,希望不会被官僚主义者埋葬,微软,开始干吧!

Android会成为下一个Kinect型的创意源头么?

我们等着瞧吧,数以千计的开发者大会参与者正在回家的路上,几天之内我们就能看到第一批创造,几周之内会有应用和原型问世,而几个月(或更短时间)内就会有产品出售,由Kickstarter这样的服务资助,新的创业公司会横空出世。最好的预测未来的方式就是由我们自己动手去创造实现。我现在其实并不在意Android的未来发展,让我激动的是不用越狱或越过重重障碍,我就可以去制造一些东西了,即使最终没有成功。而且可以使用我最喜爱的开源硬件平台,Arduino。为什么Google选择Arduino事关重大?因为从此开始,如果有谁想与Google竞争并激励开发者去制造配件产品的话,他只能选择开放一途,并只能选择Arduino。