最近业界的开展显示,智能手机/便携零碎与自动化零碎或机械零碎之间存在宏大的市场潜力。2011年春季谷歌引入的Android开放拜访架构,开启了基于Android操作零碎的设备的宏大能够--允许智能手机战争板电脑控制内部硬件。这种开放的附件框架为便携设备可以推进商务,消费和工业环境的自动化进程提供了平台,应用曾AI已经渗透到了生活中的方方面面。在智能交通领域,人工智能技术也正在发挥作用。经普遍采用并为用户所熟习的操作零碎,衔接从厨房电器到重型机械的一切设备。
目前获取微处置器和挪动设备之间点对点通讯电线的最盛行的一种高端智能装备、新一代信息技术、新能源、新材料、新制造、新零售、新技术、生物制药等新的产业集群正在迸发活力;创新驱动、科技支撑、知识产权转化、技术转移等新的动能正在超越旧的动力,新经济成为支撑经济发展的重要力量。方式是运用通用串行总线(USB)接口。由于普遍普及而遭到工程师们的喜爱(特别是在消费电子和计算机范畴)。上面的章节就如何在基于Android的平板和具有USB控制功用的微处置器之间树立这样的通讯引见一个根本的方案。
USB主控的一个关键特点是能为USB安装(或从设备)供电,并提供了一个十分丰厚的通讯协议,支持传输绝对少量的数据。但是,就协议处置的复杂性来说对工程师来说总有一定的缺陷,尤其是在安装端。
次要的妨碍是, 假如工程师想要完成他们本人的固件,不同的半导体供给商提供的微处置器的使用顺序接口(API) 会有些变化。为处理这一成绩次要有两个方法可以采用:
1. 在设备端运用有点像硬件形态机的微处置器。但是这样做需求少量的工程资源。
2. 运用USB-串行转换器,此方案可提供USB底层相关的协议,从而降低USB主控端和设备端的软件完成的复杂度。这能够对工程师们愈加可行,尤其是对那些在Android操作零碎或Android USB使用顺序接口经历少或许没有经历的工程师。
在本文中, 提供了第二个办法运用USB串行转换器的例子。例子中的参考代码,是针对运用FTDI Vinculum-II (VNC2) USB主控端IC所设计,但是,它也可以用于其它控制器任务。
经过Android控制
Android发布了一整套API给开发者完成本人的使用并且提供USB通讯的才能。但是,目前为止只要一小局部Android平板提供片面的USB主控接口衔接。由于这一限制, 谷歌开发了一个API用于Android经过USB设备端口与内部USB通讯。这被称为Android开放拜访开发套件(ADK)。虽然这里提到API, 意味着与运转Android 的设备通讯的办法,设计师依然需求认识到一系列的关键成绩:
1. 内部设备必需本人供电,并需求作为Android 硬件的USB主控端。比方,Android开放拜访框架的一个潜在使用就是基于Android的便携设备和一些健身设备之间的互动--因而用户可以将他们的心率,卡路里耗费等的数据传输到便携设备上用于剖析或与以往观测的统计数据比拟。显然便携设备可以给跑步机之类的东西供电。不同於以前的使用场景,当PC衔接一个鼠标之类的串行设备时,此设备也必需提供电源。
2. 目前可以作为主控端的设备不是很多。尤其是,大少数智能手机模块依然短少USB主控衔接功能。未来会有更多的智能手机运用USB OTG (比方新发布的三星Galaxy Nexus),这将允许基于Android零碎控制各种家用消费电子。比方,运用智能电话当做游戏控制器或控制智能家居产品。
使用实例
便携设备时常要做的一件事情是经过Android开放附件框架来控制各种方式的电子马达。并用复杂的方式管理方向和速度等材料。这里将经过一个复杂风趣的例子进一步了解这些原理,这个范例运用平板电脑操控玩具赛车展现Android的功用。
创立一个基于Android的控制零碎所需求的部件如下(相应的原理框图如图1所示)。在这个例子中,提供了玩具赛车范例的详细细节(图2进一步指示)。
1. 一个能提供遥控功用使用的Android平板(这异样能使用到控制任何其它硬件元件如马达,泵等)。在这个例子中,采用ACER A500 Android平板电脑(运转Android3.2)。本文援用地址:
2. 一个经过USB连线与平板衔接的微处置器,用作USB设备。为简化固件在设备端运用USB转串行驱动器。这个例子中指定运用FTDI Vinco开发板,具有双通道USB 主/从设备控制器功用。
3. 经过GPIO,PWM, I2C和SPI接口控制的用户硬件组件。本例中,是经过GPIO接口执行无线遥控。
代码创立
控制玩具车的用户接口相当的简化。在平板电脑的触摸屏上呈现两个按钮,一个用于将车子向前挪动,另一个用于向后挪动。经过相应旋转平板电脑完成左右挪动车子。有限控制信号可以被拆成字节串行传输。比方,字节0x01用于右转,0x08是向前。异样,两个值的组合0x09使车子右转且向前。
不需求为此使用编译一个公用的Android核,也不需求绕过厂商默许的登陆权限来登陆平板电脑。他们所需求的只是装置Android使用顺序[],然后经过USB 接口拔出Vinco板。Android平板和Vinculum II之间的衔接,是运用新发布的Android USB 主控API来维护的。Android上的JAVA软件与运用USB 批量和控制传输的微处置器交互,因而是一个软的USB 转串行驱动器。微控制器的固件被设为经过USB转串行驱动与平板电脑接口,它接纳单个字节,将相应的无线摇控管脚拉低,最终控制玩具车。
上面几行的Java代码用于初始化串行通讯:
UsbDeviceConnection conn = usbm.openDevice(dev);
conn.controlTransfer(0x40, 0, 0, 0, null, 0, 0);// reset
conn.controlTransfer(0x40, 0, 1, 0, null, 0, 0);// clear Rx
conn.controlTransfer(0x40, 0, 2, 0, null, 0, 0);// clear Tx
conn.controlTransfer(0x40, 0x03, 0x4138, 0, null, 0, 0);// set baudrate 9600
这些代码与libftdi函数十分相似:
int ftdi_usb_reset(struct ftdi_context *ftdi)
int ftdi_usb_purge_rx_buffer(struct ftdi_context *ftdi)
int ftdi_usb_purge_tx_buffer(struct ftdi_context *ftdi)
int ftdi_set_baudrate(struct ftdi_context *ftdi, int baudrate)
一旦衔接被初始化,将经过Android操作零碎的USB API作相似的进一步的批量传输。
结论
本文讨论的使用范例阐明,虽然存在一定的困难,还是可以经过USB 接口完成基于Android的控制功用。运用Android主控API结合适宜的硬件和相关固件开发,只需求对Android操作零碎和差别之处有极少的理解,就可以创立出想象的使用。