A Breakout Board For Your Android Phone

[sparkfun] announced a new board called the IOIO (pronounced “yo-yo”) this week that allows communication from your Android devices to your upcoming projects.

The board hasn’t been released yet; [sparkfun] is still pulling together documentation and waiting on their first production run. We do know that the board contains a PIC24F MCU, and will give your phone analog input,  and Digital I/O, PWM, I2C, SPI, and UART control. Communication with the board is over the USB port on your phone.

The brilliant thing about this board is that an external programmer isn’t required. Everything you connect to this board can be controlled from within Android apps. We covered Android development in a hackaday tutorial series before, so now it’s possible to put these skills to give your projects a touch screen, internet and bluetooth connections, a camera, or your phone’s accelerometers. Very slick.

Video of some basic functions demonstrating what possible with this board after the jump, but feel free to comment and tell us what you’d like to see done with this board.

50 thoughts on “A Breakout Board For Your Android Phone

  1. 50 bucks for no case, no power supply, questionable support on any given phone or OS.

    IMHO, pricing it at 20~25 would be ideal. At this point, it’s just too expensive.

  2. FINALLY! Ever since I first got an Android phone, the only thing going through my mind was how awesome of a mobile robotics platform it could make. Wifi, bluetooth, cell radio, GPS, accelerometer, and a camera, among other stuff, all with some hefty processing power and a good SDK? All they needed was a way of communicating with H-bridges or motor drivers and perhaps a few more sensors, and it would be fantastic.

    High five, Sparkfun. Now to just take your board layout and make my own custom board!

  3. Front facing camera for droids that don’t have one?
    Mass market that bad boy and you’ll make some decent money. ;)
    Until they come out with it on all Android phones.

    Does this mean other devices could potentially use the USB port?

  4. FYI to everyone, this device acts as a USB host, so your phone just thinks its plugged into a PC. Great idea, but I just wanted to point that out because it doesn’t require USB hosting on the phone, something which is less common and usually requires some phone hacking. But anyway, the fact that this works doesn’t mean other peripherals will work with the phone!

    Also, you can always use the Sparkfun Bluetooth serial port devices for $20 – I recently set something up that way.


    The Android SDK has a “bluetooth chat” application that works with those modules with just one line changed. The UUID line that looks similar to this needs to be changed to:

    private static final UUID MY_UUID = UUID.fromString(“00001101-0000-1000-8000-00805F9B34FB”);

    More info;

    It works great!

  5. I’ll sell my board (that does the same job, plus it only uses about half the microcontroller so you can still drive servos or add serial ports etc.) for $30 to anyone who emails me. It will take a week to be delivered and you will pay after you get it and confirm that it works.

  6. reverse it, then you got the OI OI
    my phone(samsung transform) has a front facing cam…its useless as NOTHING uses it
    if this wasnt $50 i’d get 1(maybe haha) but it does need a micro usb IN port for at minimum usb charging including passthrough, maybe firmware upgrade as well as a li-po/liion to double your battery life

  7. So…it’s an arduino. This is definitely not a breakout board, because it’s not tapping into the phone’s native IO. The only real feature is the USB host, but even this can be programmed into an arduino. It’s certainly not analogue input either; it’s sampled by the PIC’s ADC, which is likely inferior to the phone’s native ADC.

  8. This board seems to use ADB, which is a really nice and robust way to do two-way communication between the phone and an MCU. BlueTooth really sucks for robust communication such as in embedded setups or robotics, and USB also allows you to power your phone over vbus.

    Of course this was all done before, but kudos to Ytai and SparkFun for bringing it to the masses.

  9. @spiritplumber I don’t see anything on your site about peripherals acting as usb hosts to connect to Android phones. I don’t see anything about DIY either, everything has a price tag. Though I might have missed it, the site isn’t the easiest to navigate. Are you referring to the SerialDroid? I don’t see how that compares to the IOIO.

  10. ahah in italian io-io is correctly spoken like “yo-yo” :) in anyway i think it is a powerfull alternative instead of soldering break-out pins on the GPIOs provided by the CPU of the phone :D

    With good APIs, i think this board can achieve an equivalent popularity like the arduino-board.

  11. Firstly, I’d allow ioio to be said as yo yo (like io in tion words). Kind of not right but it’s okay and I like that.

    Mainly though, this kind of thing is awesome as it unlocks the powers of something already created so that you can do with it as you please.

    There are so many people having to reinvent the wheel in order to create something impressive. This makes it possible for people to create something amazing (and already familiar) without having to shell out for too much expensive hardware.

  12. Sparkfun links to the creator’s blog http://ytai-mer.blogspot.com/2011/04/meet-ioio-io-for-android.html, this info was pulled from there:
    When asked if it was based on the ADB MicroBridge project, “No, I did my own implementation as this was about 8 months ago, and I believe MicroBridge had not been published at the time.
    Since then, we’ve done tons of stuff above this layer in order to really provide good, high level experience, OTA upgrades, etc. That is the reason for the delay in publication.”

    A snippet from an app used to control a servo on pin 12 with a pot on pin 40:
    AnalogInput input = ioio.openAnalogInput(40);
    PwmOutput pwmOutput = ioio.openPwmOutput(12, 100); // 100Hz
    while (true) {
    float reading = input.read();
    pwmOutput.setPulseWidth(1000 + Math.round(1000 * reading));

    The blog has a ton more info, and videos.

  13. Rachel: USB host support can’t be programmed into the Arduino. You need a $40 Arduino shield, which is nearly as much as the price of this entire board. Once you take into account the cost of the Arduino, the fact that this is apparently far better-equipped in terms of I/O options, the much better power supply on the IOIO… this looks like a far superior option in all respects.

    The Arduino just isn’t very good if you need USB host support or full-speed USB.

  14. My suggestion – this and a high quality audio shield with a Burr-Brown 2-channel DAC on top. My EVO Shift 4g has this terrible clicking and popping sound when I use Pandora and it’s because of the audio chip on the phone. Hopefully an app can be written for this to bypass audio to the USB port.

  15. @spiritplumber

    Developing software for an Android phone to control the IOIO doesn’t require the phone to be rooted. This is quite important as newer Android devices are getting harder to permanently root than their predecessors (ie: Desire HD).

  16. @makomk: SF sells USB host shields for $25. Their cheapest Arduino plus this shield is $45, which is still $5 less than the IOIO.

    Selling a breakout board for a $5 chip at $50 is just excessive, if you ask me. On the other hand, if it ‘just works’ it might be worth the money, and since it’s open source, people will probably produce cheap knock-offs in due time.

  17. Inopia: ah, the (original?) non-Sparkfun version of the USB host shield is rather more expensive. Also, do bear in mind that you need to buy a seperate USB-to-TTL cable for programming the cheap Sparkfun Arduinos unless you have one lying around.

  18. My IOIO was on my doorstep when I got home from work…got Eclipse / ADK / Droid 2 running on my Ubuntu laptop this morning. So far, just the example sketch from SparkFun, but this thing has a ton of potential. So excited….

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.