Google ADK vs Arduino ADK vs Sparkfun IOIO vs ADK Shield vs ?????

Search This thread

AdamOutler

Retired Senior Recognized Developer
Feb 18, 2011
5,224
9,827
Miami, Fl̨̞̲̟̦̀̈̃͛҃҅͟orida
Alright, so I'm kinda up in the air. The ADK is very interesting to me and from my understanding it is total mobile device side processing with the Arduino/ADK/IOIO acting as a slave. I'd like to play with this feature which was introduced at Google IO and first included in Android 2.3.4 but I don't know where to start.

So, let me explain what I'd like.. I'd like to build a robot powered by my phone. I want to plug in my phone and drive it around the house. I can work out most of the details on this project myself, however, I'd like to get the most bang-for-buck as possible. I don't want this to be a strictly ADK or IOIO device. I'd like to be able to repurpose it later.

The Open Hardware Acessory Development Kit
Aka Google ADK or Google's IOIO (Pronounced Yo-Yo). At a cost of $400, i imediately said screw that.. I'm not paying $400 for what is practically a finished project and not really a development board. No way, no how... I'm looking for the same functionality without paying the same amount as a new Android device.
hardwaresoftware.jpg



I am looking at 3 different devices. The Sparkfun IOIO, The Google ADK or the ADK Shield for Arduino. I already own an Arduino Mega 1280 so I'm up in the air as to upgrade with a shield or go with a dedicated device.


The IOIO from Sparkfun
http://www.sparkfun.com/products/10748
This IOIO seems to be the cheapest, full device available. Costing only $50. It would seem that it is strictly designed to plug in to USB-OTG on a device and there is no USB for the computer meaning it can only be used as a slave device?
10585-01b_i_ma.jpg



The Arduino ADK
http://www.google.com/products?q=Arduino+adk&hl=en
This device is based on the Arduino Mega 2650 platform. This would be an upgrade from my current MEGA 1280. Costing $75, it seems to be a fairly decent development board with the additional benefeit of ADK/ioio functionality.
ygnIJPCAxhuqG35km8aeECYfv9C28a-7MXvPPlt7Qf9oMJsprGmeFC_4ToieFP3If7ghMscSqluRi5x-vaR7YXO4h3ip0Gc4ID0inrgQUZDHWvm7XKX5tiEThQ6Nu_K09OCdsZYCI90AD72jHUH04BtzVty7mcOHQni53Ru3HYW5hAPdQ4jaNMuPytQGJpAiiQ



USB Host Shield for Arduinohttp://robosavvy.com/store/product_info.php/products_id/1859/currency/USD
The USB Host Shield for Arduino seems to be a pretty good bet. At only $32, it will add the proper USB interface to an Arduino and allow ADK functionality. I'm worried about incompatibility on this Arduino Shield as I only have an Arduino Mega 1280 and not the faster 2650 platform.
DFR0138_01.jpg




I want to make a good choice here.. I'd like some help. I've never worked with ADK/ioio. AT&T has not even officially upgraded my device to 2.3.4 yet.


So, here's my questions:

  1. Will the ADK work properly with a 1280 and a shield?
  2. My understanding, correct me if I'm wrong, the ADK uses server and client side processing and is more for communication between the two devices, while the ioio method is direct slave-only control of the device?
  3. Is there any advantage to buying the official Google ADK other than receiving a pre-fabricated shield with lights and buzzers?
  4. Which one would you go with and why? Do you know of any better options for interfacing Android?
 
Last edited:

djfoo000

Senior Member
Jan 26, 2010
274
30
I'm not a programmer, and quite a noob in arduino. I've thought about connecting Android to my Arduino UNO and the method with most freedom seems to be via bluetooth. Was planning to follow the stuff on this site: http://amarino-toolkit.net/

I have yet to start that project though.
 

cellfreak

Senior Member
Aug 14, 2003
118
11
The Arduino ADK

I just picked up a Arduino ADK. Spent a few hours messing around with a RGB LED. My Motorola Photon would never connect due to the 2.6.32 Kernel. The 2.3.4 was right but the Kernel needs to be 2.6.35 to be an accessory.
Great board just not for the Photon. Will be getting the UNO and a WI-FI shield. And pick up a handfull of RGB LED Matrix, for a wifi driven LED message board.

I used three resistors with a RGB LED.


The Green LED is using the built in resistor. It flashes in time with the SMT LED on the board.
 

AdamOutler

Retired Senior Recognized Developer
Feb 18, 2011
5,224
9,827
Miami, Fl̨̞̲̟̦̀̈̃͛҃҅͟orida
I just picked up a Arduino ADK. Spent a few hours messing around with a RGB LED. My Motorola Photon would never connect due to the 2.6.32 Kernel. The 2.3.4 was right but the Kernel needs to be 2.6.35 to be an accessory.
Great board just not for the Photon. Will be getting the UNO and a WI-FI shield. And pick up a handfull of RGB LED Matrix, for a wifi driven LED message board.

You won't need an Arduino UNO. The MEGA form factor is compatible with the smaller UNO form factor and the pins are totally compatible. Just get the wifi shield. My understanding is that the Uno would only be a reduction in size and features.
 
  • Like
Reactions: sert00

cellfreak

Senior Member
Aug 14, 2003
118
11
Return

I returned the ADK. And will be getting an UNO or MEGA. If it comes down to size I'll get a nano with a shield.

You won't need an Arduino UNO. The MEGA form factor is compatible with the smaller UNO form factor and the pins are totally compatible. Just get the wifi shield. My understanding is that the Uno would only be a reduction in size and features.
 

ytai

New member
Jul 4, 2011
2
9
I'm the developer of IOIO, so I won't pretend to be objective :)
First, there's no such thing as "Google IOIO". Google's board is called ADK. Although the original board cost $400, there have been since many other compatible boards, with the cheapest ones costing about $80 I believe.
There's also IOIO, which I developed and is sold by SparkFun for about $50.

The two most significant differences between the two are:
  1. ADK and its clones would only work on very specific Android devices, while IOIO would work on almost any Android device since Android 1.5.
  2. With ADK you'd have to write both the Android-side (Java) and the Arduino-side (C++) software, and establish a communication protocol between them. You'd have to know both languages and two different IDEs and unless you're doing something very trivial, it will take a significant amount of time to get something working reliably. With IOIO, you just write the Android side. You include a library called IOIOLib in your application, which provides an API that lets you control the IOIO pins and functions as if they were physically connected to your Android. You don't need to care about the fact that there's a separate processor here, communication protocols, etc.

Some possibly less important differences:
  • ADK boards are compatible with Arduino shields. If you want to use one in your application, IOIO will not be a good choice.
  • If you stick a Bluetooth dongle into IOIO instead of a USB cable to the Android, it will communicate wirelessly with the Android. The nice thing is that your application doesn't need to care about it, and you can even switch back and forth while your app is running.

If you want more info, see my blog post. Since I can't seem to be allowed to post links, just Google "IOIO over OpenAcessory" (without quotes).
 

AdamOutler

Retired Senior Recognized Developer
Feb 18, 2011
5,224
9,827
Miami, Fl̨̞̲̟̦̀̈̃͛҃҅͟orida
I'm the developer of IOIO, so I won't pretend to be objective :)
First, there's no such thing as "Google IOIO". Google's board is called ADK. Although the original board cost $400, there have been since many other compatible boards, with the cheapest ones costing about $80 I believe.
There's also IOIO, which I developed and is sold by SparkFun for about $50.

The two most significant differences between the two are:
  1. ADK and its clones would only work on very specific Android devices, while IOIO would work on almost any Android device since Android 1.5.
  2. With ADK you'd have to write both the Android-side (Java) and the Arduino-side (C++) software, and establish a communication protocol between them. You'd have to know both languages and two different IDEs and unless you're doing something very trivial, it will take a significant amount of time to get something working reliably. With IOIO, you just write the Android side. You include a library called IOIOLib in your application, which provides an API that lets you control the IOIO pins and functions as if they were physically connected to your Android. You don't need to care about the fact that there's a separate processor here, communication protocols, etc.

Some possibly less important differences:
  • ADK boards are compatible with Arduino shields. If you want to use one in your application, IOIO will not be a good choice.
  • If you stick a Bluetooth dongle into IOIO instead of a USB cable to the Android, it will communicate wirelessly with the Android. The nice thing is that your application doesn't need to care about it, and you can even switch back and forth while your app is running.

If you want more info, see my blog post. Since I can't seem to be allowed to post links, just Google "IOIO over OpenAcessory" (without quotes).
I found your blog. I changed the title as there is no Google IOIO.

Ok. So, from what I'm seeing, the differences:

IOIO is a total slave unit that accepts direct inputs over usb from a running application. It's compatible with more devices out-of-the-box. The ADK allows a custom program to be launched for whatever code is running on the AT processor on the device... EMF Reader will launch your EMF app, Robot will launch your Robot app... I think this is a limitation of IOIO right?

Can the ADK emulate the same IOIO functionality where pins are commanded high and low?
 

cellfreak

Senior Member
Aug 14, 2003
118
11
ADK

I posted the ADK will not work with the Sprint Motorola Photon. The phone has the wrong has the 2.6.32.9 kernel. For it to be seen by the ADk board it needs the 2.6.35.9 kernel.

Why did you return it? The ADK does more than Uno right? As far as I understand, you just downgraded?
 

AdamOutler

Retired Senior Recognized Developer
Feb 18, 2011
5,224
9,827
Miami, Fl̨̞̲̟̦̀̈̃͛҃҅͟orida

kindlefirexda

Member
Feb 24, 2012
8
0
Honestly, I don't have much experience with this since I don't even have an Arduino board yet.

However, if you want to get a board locally, go with the Arduino. They sell them now at Radio Shack.

I intend to get one as soon as I can and experiment with it on my Kindle Fire.
 

jtdogblue

Senior Member
Aug 25, 2011
82
19
IE
I was also interested in this. I think it would cool to fly a rc plane with a phone hooked up, using the camera for live video feed and a laptop to send flight controls through 3g link.. Heck, you could even use the accelerometer as a gyro, the magnetic sensor for orientation, and gps for coordinates. If 3g were to drop, the plane would switch to gps guided autopilot until it gets reception.

I've since scrapped the idea, since it would probably be easier for me to get a HAM license and do all that with my own rX/tX stuff.
 

AdamOutler

Retired Senior Recognized Developer
Feb 18, 2011
5,224
9,827
Miami, Fl̨̞̲̟̦̀̈̃͛҃҅͟orida
Honestly, I don't have much experience with this since I don't even have an Arduino board yet.

However, if you want to get a board locally, go with the Arduino. They sell them now at Radio Shack.

I intend to get one as soon as I can and experiment with it on my Kindle Fire.

Arduinos at radioshack are Duemillenova style. They are the basic modeland wont do anything with Android. You need the ADK. It can be obtained online for $80.

I have one, but i havnt had time to play with it.
 

fox0001

Member
May 13, 2010
18
1
Great~!I want to get IOIO now~

I'm the developer of IOIO, so I won't pretend to be objective :)
First, there's no such thing as "Google IOIO". Google's board is called ADK. Although the original board cost $400, there have been since many other compatible boards, with the cheapest ones costing about $80 I believe.
There's also IOIO, which I developed and is sold by SparkFun for about $50.

The two most significant differences between the two are:
  1. ADK and its clones would only work on very specific Android devices, while IOIO would work on almost any Android device since Android 1.5.
  2. With ADK you'd have to write both the Android-side (Java) and the Arduino-side (C++) software, and establish a communication protocol between them. You'd have to know both languages and two different IDEs and unless you're doing something very trivial, it will take a significant amount of time to get something working reliably. With IOIO, you just write the Android side. You include a library called IOIOLib in your application, which provides an API that lets you control the IOIO pins and functions as if they were physically connected to your Android. You don't need to care about the fact that there's a separate processor here, communication protocols, etc.

Some possibly less important differences:
  • ADK boards are compatible with Arduino shields. If you want to use one in your application, IOIO will not be a good choice.
  • If you stick a Bluetooth dongle into IOIO instead of a USB cable to the Android, it will communicate wirelessly with the Android. The nice thing is that your application doesn't need to care about it, and you can even switch back and forth while your app is running.

If you want more info, see my blog post. Since I can't seem to be allowed to post links, just Google "IOIO over OpenAcessory" (without quotes).
 

blorgggg

New member
Mar 7, 2012
1
0
I've been working with the Mega ADK for a while, and it is true, there is SOOO much stuff you have to wade through on the Eclipse/Android side, and the Arduino/C++ side before you can get the thing to do basic stuff (like control a servo without the official demokit sheild)

So to recap (and correct me if I am wrong) here are the pro's and cons of the IOIO and the ADK

IOIO
Pro's - Just code in android! Quick simple access to all the pins available on the board.
Accepted by more devices?

Con's - no division of processing power

ADK
Pro's - just send commands to arduino, and have the arduino's processor take on extra tasks, (maybe if you are doing a bunch of High end computer vision stuff, and fancy motor control, you would want to split the task load?) Full control over how you program the board itself.

Con's- byzantine sample code to wade through. Fewer Android devices support this?

So it seems like, unless you need really high end performance, the IOIO is the way to go!
 

AdamOutler

Retired Senior Recognized Developer
Feb 18, 2011
5,224
9,827
Miami, Fl̨̞̲̟̦̀̈̃͛҃҅͟orida
I've been working with the Mega ADK for a while, and it is true, there is SOOO much stuff you have to wade through on the Eclipse/Android side, and the Arduino/C++ side before you can get the thing to do basic stuff (like control a servo without the official demokit sheild)

So to recap (and correct me if I am wrong) here are the pro's and cons of the IOIO and the ADK

IOIO
Pro's - Just code in android! Quick simple access to all the pins available on the board.
Accepted by more devices?

Con's - no division of processing power

ADK
Pro's - just send commands to arduino, and have the arduino's processor take on extra tasks, (maybe if you are doing a bunch of High end computer vision stuff, and fancy motor control, you would want to split the task load?) Full control over how you program the board itself.

Con's- byzantine sample code to wade through. Fewer Android devices support this?

So it seems like, unless you need really high end performance, the IOIO is the way to go!

You forgot a few. There's more cons to the ioio and pros to the ADK.

ioio cannot function on its own. ioio is simply an output device.

adk is easier to program than android, the device can function on its own and then pass data to the Android. ADK can function as a stand-alone USB device that can be plugged into a computer as well.
 

jams90

Senior Member
Apr 26, 2008
51
3
Some possibly less important differences:
  • ADK boards are compatible with Arduino shields. If you want to use one in your application, IOIO will not be a good choice.
  • If you stick a Bluetooth dongle into IOIO instead of a USB cable to the Android, it will communicate wirelessly with the Android. The nice thing is that your application doesn't need to care about it, and you can even switch back and forth while your app is running.

If you want more info, see my blog post. Since I can't seem to be allowed to post links, just Google "IOIO over OpenAcessory" (without quotes).


hi i wonder if i can stick a bluetooth dongle on my Arduino Mega Adk and comunicate wirelessly with android..

have anyone try to do this? thanks! i have my motorola Xoom Working with Arduino Mega ADK via USB
 

aaronpoweruser

Inactive Recognized Developer
Jul 19, 2007
1,708
7,505
earth
You forgot a few. There's more cons to the ioio and pros to the ADK.

ioio cannot function on its own. ioio is simply an output device.

adk is easier to program than android, the device can function on its own and then pass data to the Android. ADK can function as a stand-alone USB device that can be plugged into a computer as well.

i prefer the ioio over the adk cause of all the extra junk needed to get the adk working and if you need complex functions just do them android side. the adk is standalone which is a plus but most applications need to be send data back. but the adk has more liberies available but most of them are easy to write in java if needed. all the adk is is a serial bridge so you would need to write an interface to send data back and forth so as long as your project needs constant communication and you can do basic c and java for the liberies the ioio is a better choice provided your not using crazy shields like gprs

---------- Post added at 12:47 PM ---------- Previous post was at 12:47 PM ----------

hi i wonder if i can stick a bluetooth dongle on my Arduino Mega Adk and comunicate wirelessly with android..

have anyone try to do this? thanks! i have my motorola Xoom Working with Arduino Mega ADK via USB
the ioio lets you do this with a 2 bt module
 

Top Liked Posts

  • There are no posts matching your filters.
  • 9
    I'm the developer of IOIO, so I won't pretend to be objective :)
    First, there's no such thing as "Google IOIO". Google's board is called ADK. Although the original board cost $400, there have been since many other compatible boards, with the cheapest ones costing about $80 I believe.
    There's also IOIO, which I developed and is sold by SparkFun for about $50.

    The two most significant differences between the two are:
    1. ADK and its clones would only work on very specific Android devices, while IOIO would work on almost any Android device since Android 1.5.
    2. With ADK you'd have to write both the Android-side (Java) and the Arduino-side (C++) software, and establish a communication protocol between them. You'd have to know both languages and two different IDEs and unless you're doing something very trivial, it will take a significant amount of time to get something working reliably. With IOIO, you just write the Android side. You include a library called IOIOLib in your application, which provides an API that lets you control the IOIO pins and functions as if they were physically connected to your Android. You don't need to care about the fact that there's a separate processor here, communication protocols, etc.

    Some possibly less important differences:
    • ADK boards are compatible with Arduino shields. If you want to use one in your application, IOIO will not be a good choice.
    • If you stick a Bluetooth dongle into IOIO instead of a USB cable to the Android, it will communicate wirelessly with the Android. The nice thing is that your application doesn't need to care about it, and you can even switch back and forth while your app is running.

    If you want more info, see my blog post. Since I can't seem to be allowed to post links, just Google "IOIO over OpenAcessory" (without quotes).
    2
    Alright, so I'm kinda up in the air. The ADK is very interesting to me and from my understanding it is total mobile device side processing with the Arduino/ADK/IOIO acting as a slave. I'd like to play with this feature which was introduced at Google IO and first included in Android 2.3.4 but I don't know where to start.

    So, let me explain what I'd like.. I'd like to build a robot powered by my phone. I want to plug in my phone and drive it around the house. I can work out most of the details on this project myself, however, I'd like to get the most bang-for-buck as possible. I don't want this to be a strictly ADK or IOIO device. I'd like to be able to repurpose it later.

    The Open Hardware Acessory Development Kit
    Aka Google ADK or Google's IOIO (Pronounced Yo-Yo). At a cost of $400, i imediately said screw that.. I'm not paying $400 for what is practically a finished project and not really a development board. No way, no how... I'm looking for the same functionality without paying the same amount as a new Android device.
    hardwaresoftware.jpg



    I am looking at 3 different devices. The Sparkfun IOIO, The Google ADK or the ADK Shield for Arduino. I already own an Arduino Mega 1280 so I'm up in the air as to upgrade with a shield or go with a dedicated device.


    The IOIO from Sparkfun
    http://www.sparkfun.com/products/10748
    This IOIO seems to be the cheapest, full device available. Costing only $50. It would seem that it is strictly designed to plug in to USB-OTG on a device and there is no USB for the computer meaning it can only be used as a slave device?
    10585-01b_i_ma.jpg



    The Arduino ADK
    http://www.google.com/products?q=Arduino+adk&hl=en
    This device is based on the Arduino Mega 2650 platform. This would be an upgrade from my current MEGA 1280. Costing $75, it seems to be a fairly decent development board with the additional benefeit of ADK/ioio functionality.
    ygnIJPCAxhuqG35km8aeECYfv9C28a-7MXvPPlt7Qf9oMJsprGmeFC_4ToieFP3If7ghMscSqluRi5x-vaR7YXO4h3ip0Gc4ID0inrgQUZDHWvm7XKX5tiEThQ6Nu_K09OCdsZYCI90AD72jHUH04BtzVty7mcOHQni53Ru3HYW5hAPdQ4jaNMuPytQGJpAiiQ



    USB Host Shield for Arduinohttp://robosavvy.com/store/product_info.php/products_id/1859/currency/USD
    The USB Host Shield for Arduino seems to be a pretty good bet. At only $32, it will add the proper USB interface to an Arduino and allow ADK functionality. I'm worried about incompatibility on this Arduino Shield as I only have an Arduino Mega 1280 and not the faster 2650 platform.
    DFR0138_01.jpg




    I want to make a good choice here.. I'd like some help. I've never worked with ADK/ioio. AT&T has not even officially upgraded my device to 2.3.4 yet.


    So, here's my questions:

    1. Will the ADK work properly with a 1280 and a shield?
    2. My understanding, correct me if I'm wrong, the ADK uses server and client side processing and is more for communication between the two devices, while the ioio method is direct slave-only control of the device?
    3. Is there any advantage to buying the official Google ADK other than receiving a pre-fabricated shield with lights and buzzers?
    4. Which one would you go with and why? Do you know of any better options for interfacing Android?
    1
    I just picked up a Arduino ADK. Spent a few hours messing around with a RGB LED. My Motorola Photon would never connect due to the 2.6.32 Kernel. The 2.3.4 was right but the Kernel needs to be 2.6.35 to be an accessory.
    Great board just not for the Photon. Will be getting the UNO and a WI-FI shield. And pick up a handfull of RGB LED Matrix, for a wifi driven LED message board.

    You won't need an Arduino UNO. The MEGA form factor is compatible with the smaller UNO form factor and the pins are totally compatible. Just get the wifi shield. My understanding is that the Uno would only be a reduction in size and features.
    1
    I returned the ADK. And will be getting an UNO or MEGA. If it comes down to size I'll get a nano with a shield.

    Why did you return it? The ADK does more than Uno right? As far as I understand, you just downgraded?
    1
    I've been doing a lot of searching and I can't find anyone attempting to use the ADK with a generic uC like an MSP430.

    you can try to implement soft-usb (like what they did with the avr-series), but I doubt if it is possible to do with the msp430. It is just easier to take a cheap bluetooth-serial module and connect it with your microcontroller. Plus you need less (difficult) code and the android side is easier to program (just bluetooth communication).

    you could also use a ft232 like chip to handle the usb stuff.