将3.1的USB主机模式与Arduino一起使用



是否有一个很好的教程使用Arduino与Android其中Android设备是USB主机?(Android设备的操作系统版本为3.1 (Honeycomb)或更高)。开发者网站上唯一的宿主程序是导弹发射器,这似乎比与Arduino接口简单得多。

细节:我试图使一个华硕变压器主机Arduino Uno,但由于有很少的信息如何Android 主机模式的工作原理,我迷失在哪里开始。我只需要Android能够从Arduino的内存中读取数据值。Arduino被用来计算信号的频率,然后需要将该值传递给Android。如果我错过了一些简单的方法,请随时告诉我。

(有很多关于使用ADK使Arduino主机的信息浮动,但与变压器,这不是一个选项-参见Stack 溢出问题是否有可能让Android ADK在华硕Eee Pad Transformer上运行3.1?

这些信息并不需要是Transformer或Uno特定的,我只是找不到人们在平板电脑上使用新主机模式的例子。

我们让FTDI通信工作,没有内核驱动程序,使用以下代码:http://android.serverbox.ch/?p=370

请注意,三星Galaxy Tab 10.1似乎缺乏适当的USB代码来检测USB设备(除了鼠标,键盘,集线器和存储,它们由操作系统检测而不是传递给应用程序)。

但是,我们在Acer A500上实现了这个功能。

arduino uno放弃了以前设计中使用的FTDI或类似的USB -rs232芯片,转而支持基于LUFA堆栈的可重新编程USB接口。

在正常的linux下,你会使用USB CDC驱动程序-所以问题是蜂窝平板电脑是否配备了这些。

Honeycomb USB主机支持似乎提供了一种在第三方用户空间android应用程序中编写低级USB驱动程序的方法,因此如果该功能尚未在内核中,则可以在用户空间中添加。

另一个想法是改变arduino上的LUFA安装,将其重新配置为LUFA项目支持的许多其他模式之一,使其看起来像未经修改的蜂窝平板电脑已经知道如何交谈,例如大容量存储驱动器,或键盘,或鼠标等。但是,如果您希望对这个系统外设进行低级(特别是写)访问,则可能需要在蜂窝平板上进行根级访问。

如果你只是想找到一些使用USB主机功能的应用程序的例子,你最好的选择是使用像谷歌的代码研究工具,并搜索一些USB主机特定的类/权限/意图

例如,搜索android.hardware.usb.action.USB_DEVICE_ATTACHED会出现以下应用程序:

  • https://github.com/peterdn/CameraBuddy/
  • http://code.google.com/p/andslr/

由于Arduino使用的是USB到RS232转换芯片,主机模式USB端口通常需要内核模块驱动程序来实现串行驱动程序。通常使用FTDI芯片,模块可能被命名为ftdi_sio。所以在底层,如果启用了USB主机模式,系统可能会使用这个模块提供一个/dev/ttyUSB0设备。但这是无用的,我认为,因为它是隐藏的应用程序,除非它是在一个根深蒂固的设备上运行。所以我认为高层次的ADK抽象是可行的

最新更新