The problem:using USB gadgets with your Android ● USB is asymmetric ○ host: controls bus, enumeration, initiates communication, acts as a power source ○ device: needs endpoints to speak to host, describes capabilities to host on enumeration, standard or vendor specific functions, draws juice (power) from host ● Most Android devices had no (or limited) USB host capabilities. ● No USB standard APIs.
The solution(s) Provide a USB Host API on Android 3.1 &Create Android Open Accessory devices to act as USB hosts
So whats Android Open Accessory● Accessory acts as host● Android acts as device● Two bulk endpoints for 2way communication
So how we create AccessoriesAccessory Development Kit ● Hardware ○ ADK board: Arduino Mega2560 + Circuits@Home USB Host Shield ○ ADK shield: provides input/output via LEDs, a joystick, temp and light sensors ● Software ○ USB host lib ○ Arduino sketch ○ Android Open Accesory library ○ other libs ○ Android demo app
open source hardware and softwareSchematics and source code for ADK provided under CreativeCommons BY-SA and Apache 2.0 license. ● Several companies released ADK compatible boards ● PIC based implementation available ● Arduino can be used as an ADK device.
Where to buy ADK boards● Arduino Store: Its the ADK board from the original Arduino makers.● DIY drones: ADK for RC and UAV enthusiasts (I for one welcome our flying Android ovelords)● Microchip: PIC based ADK (mass production anyone)● Modern Device: Freeduino based ADK● RT Corp: The one Google gave away at Google I/O● Seed Studio: Seeduino based ADK● SparkFuns IOIO board: has beta support for ADK development (and its IOIO)
ADK using Arduino Uno and USB hostshieldSince ADK is Arduino + USB host shield you can make yourown until your purpose built ADK board arrives.Follow the instructions on this URL: http://goo.gl/AmGgM
So what you can make! just a few examples of Open Accessory Devices