Google's new ADK makes it easy for you to connect almost anything to an Android via an Arduino. What could be more natural a pairing.
Google has announced an SDK that allows the development of USB peripherals for all Android devices using an Arduino hardware component.
Many news sources are getting this confused with the bigger and more ambitious project that Google has in mind to make Android the universal home control system - Android@Home - but this isn't the case. The new facility solves a much more modest problem but it has the advantage of being with us now.
While other phone manufacturers are doing their best to keep you out of their hardware Google's ADK - Accessory Development Kit - aims at making it easy for you to connect almost anything to an Android. In short it is a way of creating Android hardware peripherals that connect to the device via USB. The ADK works on the latest Android 3.1 and it has been backported to work on Android 2.3.4.
A special Android Open Accessory mode has been introduced which allows the devices to communicate via USB. In this case, however, it is the remote device is the primary device, i.e. the host, and even charges up the Android as if it was an accessory.
Some Android devices are already capable of acting as a host, usually tablets with an additional host USB connector. In this case you can simply connect any standard USB device, a hard disk say or USB stick and use it in the standard way. However, most phones can't act as a host device and can't initiate a USB connection. You can plug them into a PC say and then the PC acts as the host and makes the Android storage available as local storage. It is reasonably safe to say that most Android devices have to have a non-host USB connector, however.
So to be clear, the ADK simply provides a way of creating USB peripherals to those devices that can't act as a host by allowing the peripheral to act as the host and use the Android device as an accessory. When an ADK based peripheral is connected to an Android device it first has to check that the Android can work in the required mode - if not it simply won't connect. So ADK based peripherals are not going to work until a significant number of devices are running Android 2.3.4 or later.
The ADK is based on the assumption that the other device will be based on an Arduino controller, which is also an open source platform and why the pairing of the two makes good sense. As well as software the ADK also has a hardware component that includes a Arduino development board with a USB shield - the only problem is that they sold out almost at once! Using the Arduino as an intermediary it should be relatively straightforward to engineer a connection to any other peripheral you care to think up - data collection device, sensor, GPS, video camera and so on.
The idea that the add-on device is the host is a little strange but there are some situations where having the Android device tethered so that it doesn't run out of battery power over a long period of use might be an advantage.
What people will do with this sort of ability only time will tell - but I can think of a few projects already.
Android Open Accessory Development Kit
There's an Arduino for that!