1

我想构建一个带有传感器的设备(使用 Arduino 或带有微控制器的自制电路),我想通过 USB 电缆将数据从它发送到 Android 设备。通过 USB 连接设备需要什么库?有没有我可以阅读的文档?问题是,每当我搜索这个时,我只会得到关于 ADK 及其主板的结果,而不是其他设备的结果。有什么我应该事先知道的吗?我对这两个领域都不陌生,但这是我第一个将两者联系起来的项目。

谢谢你。

4

3 回答 3

2

首先要检查的是您的 Android 设备是否配备了USB 主机接口。在这种情况下,您可以将常规 USB 设备连接到您的 Android 并使用此 API与设备进行通信。

然而,典型的 Android 设备(几乎每部手机)都只配备 USB 设备接口,用于连接 PC 或其他 USB 主机。在这种情况下,您必须使用 Android 的USB 附件支持。Android Open Accessory 协议背后最重要的想法是它交换(逻辑上)USB 设备和 USB 主机角色。USB 主机查找具有特定供应商/产品 ID 的设备,选择特定的 USB 协议接口,然后简单地使用找到的输入/输出批量端点进行通信 - 非常聪明,不是吗?

要构建 Android Open Accessory 兼容设备,您需要一个带有 USB 主机接口的 CPU。如果你想使用 Arduino,这个盾牌可能是一个很好的起点,因为它的固件已经实现了 Android 开放附件协议。还有一些示例应用程序

于 2012-11-05T12:32:53.090 回答
2

这在通过 OTG 连接到 Arduino Mega 的 Nexus7 上效果很好。

适用于 CDC、FTDI、Arduino 和其他设备的 Android USB 主机串行驱动程序库。

希望能帮助到你!

于 2013-10-16T08:48:19.053 回答
1

你有两个解决方案

1:您的 Arduino 板充当 USB 主机并为 Android 设备供电。

使用此解决方案,您必须在 Arduino 板上实现 USB 主机堆栈,并且必须实现 Android 开放附件协议。您的 Arduino 板必须为 Android 设备供电。然后,您的应用程序必须使用USB 附件 API与您的开发板进行通信。

优势:

  • 适用于几乎所有 Android 设备(Android 设备上不需要 USB 主机端口)

缺点:

  • 设备板比较复杂(必须为两个设备都供电)
  • 固件比较复杂(必须实现USB Accessory模式)

    2. 您的 Arduino 开发板充当 USB 设备,Android 设备为您的开发板供电。

使用此解决方案,您不必实施特定的 USB 协议。您的开发板将充当标准 USB 设备。由于您充当设备,因此您可以直接通过 USB 电缆为您的主板供电(Android 设备将为自己和您的主板供电)。要与您的开发板通信,您将使用 Android 的USB 主机 API

优势:

  • 设备板非常简单
  • 固件简单且易于调试(您甚至可以使用 PC 进行测试)

缺点:

  • 仅适用于具有 USB 主机端口的 Android 设备
  • 在大多数设备上,您需要特定的电缆或适配器(例如:otg usb 主机电缆)

我有解决方案 2 的经验,并且效果很好。Android 源代码的所有源代码都可以从下面的链接获得。我已验证它适用于我在以下 Android 设备上工作的公司的传感器设备:

  • 三星Galaxy S3
  • 宏碁 Iconia 选项卡 a200
  • 华硕变压器垫 TF300T

但它应该适用于大多数平板电脑和最近的手机,如果你想看看我们的体验,你可以看到这篇文章。

于 2012-11-06T08:55:21.093 回答