Answers:
在Android的配件开发套件(ADK)应该做你需要的一切。
这是专门设计用于与Android交互的Arduino板。您可以通过蓝牙或USB(我认为是WiFi /以太网)将两者连接。
由于整个体系结构都是开放的,因此您可以充分利用每个部分的优势。您编写Android代码以从手机的内置传感器获取数据并控制显示。然后,您可以编写Arduino代码来控制执行器,伺服器和其他电话无法提供的传感器。两者之间进行通讯的代码是通过Google提供的开放源代码。
Android Open Accessory Development Kit(ADK)提供了一个Android USB附件的实现,该附件基于Arduino开源电子原型平台,该附件的硬件设计文件,实现该附件的固件的代码以及与该应用程序交互的Android应用程序附件。硬件设计文件和代码包含在ADK软件包下载中。
大多数示例都是围绕使用电话作为某种硬件附件(例如时钟)的图形界面而设计的。但是没有理由您也无法访问手机的传感器并来回传递数据。
Adafruit甚至在其商店页面的ADK 上提到使用它制作机器人:
快速追踪您的Android手机硬件开发或仅使用Arduino ADK 设计 手机机器人!Arduino ADK是基于功能强大的ATmega2560(数据表)的微控制器板。它具有USB主机接口,可与基于Android的手机连接,并具有电源升压转换器,可在将其插入ADK时通过DC电源为手机充电。
(强调我的)
另一个选择是IOIO-OTG板:
该Sparkfun产品说明描述了它的功能:
它具有PIC微控制器,其作用类似于桥接器,可将PC或Android设备上的应用程序连接至GPIO,PWM,ADC,I2C,SPI和UART等底层外围设备。应用程序级库可帮助您以编写其他Java应用程序的相同方式为这些低级外围设备编写控制代码!
该开发板应该可以完成您希望做的所有事情,甚至还提供了一个不错的教程来帮助您入门。
我看到的主要问题并不是与执行器真正连接-如果您有一种很好的方法来无线传输数字信号(甚至更好的模拟信号,或者一个足以执行PWM的通道),则可以将其与电机驱动器芯片(例如L293D),一切顺利。对于伺服器,您需要良好的响应时间,以便可以处理脉冲。如果您具有支持PWM的通道,那么该通道就不会很难,因为该通道已经具有高波特率。如果通道较慢,则可能需要伺服,因为您需要精确的脉冲时序。
我看到的第一个选项(虽然它很笨重)是拿起Raspberry Pi,通过以太网将其连接到无线路由器,然后将电话无线地连接到同一台。现在,只需为您的手机编写一个基本应用程序,即可根据输入将请求发送到Pi,并为该应用程序编写另一个服务器(如应用程序)来处理这些请求。IMO可能很笨重,但可以扩展。你也可以将路由器放在车外,并坚持这一进PI(或使用热点,完全消除了路由器)。
另一种选择是使用像此处所示的蓝牙控制器。我以前没有使用过,但是看起来您仍然需要一个微控制器来处理它。我想您可以将其RX / TX引脚直接连接到arduino上的TX / RX,尽管我对此不太确定。
如果您以前使用过XBee / ZigBee,则可能想尝试一下蓝牙蜂。
最后一种选择是将电话USB端口与常规的无线控制设置(XBee /其他)一起使用-但这将需要一个来编写驱动程序和所有驱动程序。
许多最新的Android设备(例如Nexus 7)都支持USB On The Go(OTG),这是支持“ USB Host Mode”的一种很好的说法。在这些情况下,只要电缆价格低于1美元,就可以使用任何兼容的USB设备。您不需要具有用于USB主机模式的硬件的Arduino专业版本。
我已经进行了足够的实验,以至于当使用OTG电缆连接时,诸如Leonardo或Teensy 2之类的“普通” Arduino在Android手机上看起来像是TTY(例如串行端口)设备。
本文深入探讨了如何使用Android USB Host API从Android应用程序与Arduino通信。它需要Android 3.1及更高版本,并且不需要您root设备。