sku: DEV-10748
Description: The IOIO (pronounced "yo-yo") is a board specially designed to work with your Android 1.5 and later device. The board provides robust connectivity to an Android device via a USB or Bluetooth connection and is fully controllable from within an Android application using a simple and intuitive Java API - no embedded programming or external programmer will ever be needed!
The IOIO board contains a single MCU that acts as a USB host and interprets commands from an Android app. In addition, the IOIO can interact with peripheral devices in the same way as most MCUs. Digital Input/Output, PWM, Analog Input, I2C, SPI, and UART control can all be used with the IOIO. Code to control these interfaces is written in the same way as you write an Android app with the help of a simple to use app-level library. In other words, you can combine the awesome computing power, Internet/Bluetooth connectivity, touch screen, and a variety of sensors from your Android device with the ability to easily add peripheral devices to interact with the outside world. Also, using the IOIO does not require any hardware or software modifications to your Android device, thus preserving the warranty as well as making the functionality available to non-hackers.
The IOIO acts as a USB host and connects to most Android devices that have USB slave (device) capability. So far, the devices proven to work with this board are: G1, Nexus One, Nexus S, Motorola Droid X (among many others now). If you get the IOIO working on your Android device, please let us know in the comments below, thanks!
Check out this example project that uses the IOIO's bluetooth capability!
Update: The IOIO now has beta firmware available which supports Google's Open Accessory (ADK) protocol. The code base can be found here.
Note: This product is a collaboration with Ytai Ben-Tsvi. A portion of each sales goes back to them for product support and continued development.
Documents:
Replaces: DEV-10585
PRT-00115
Break Away Female HeadersPRT-00116
Break Away Headers - StraightROB-09347
Servo - Large Full RotationPRT-09389
Jumper Wires Premium 12" F/F Pack of 10TOL-00298
Wall Adapter Power Supply - 9VDC 650mACOM-10820
LED - RGB Clear Common AnodeCOM-00105
LED - RGB Clear Common CathodeCAB-10215
USB microB Cable - 6 FootPRT-09387
Jumper Wires Premium 12" M/M Pack of 10ROB-09457
Motor Driver 1A Dual TB6612FNGTOL-08269
Wall Adapter Power Supply - 5VDC 1ADEV-10745
Electric SheepTOL-08734
Barrel Jack to 2-pin JSTPRT-08671
Jumper Wire - JST Black BluePRT-08612
JST Right Angle Connector
Comments 80 comments
With lot of android phones still available in countries like India running at the latest android 2.1 the promising part of the product is that it works for “OS versions 1.5 and above”
Sorry for hijacking the top comment but I need to warn new buyers. Before you buy this board make sure you can get the library installed first, if you check sparkfun’s tutorial http://www.sparkfun.com/tutorials/280 it looks like a lot of people are having trouble in getting the software set up, am one of them, I’ve been trying for two days. Somebody needs to update the tutorial with step by step screen shots and exact locations of the files. Am not a noob with Java, eclipse or Android, I’ve used Microchip’s Android board and the Arduino’s ADK board, I got those to work.
What part was the old part and which part is the new one, the schematic has a generic part number. What is the difference between the old and the new???
I just bought the old, so I can only assume that the new one is significantly better.
The new board uses a different type of PIC than the previous. Functionally, nothing changes. Basically, we have to create a new SKU when we use a new part.
What are the old and new part numbers? so I can check the datasheets and see what is different and if it applies to my application.
Thanks in advance.
If you are not modifying the firmware on the PIC (which applies to 99% of customers), then the switch doesn’t change a thing. FYI, the old part was a PIC24FJ128DA206. and the new part is the PIC24FJ256DA206, the difference is flash size.
wow, those didn’t last very long
looks like they just got some in…show 168 in stock as of 2:35 EST
Very nice board, many amazing applications possible, but none handheld… Is there a way to take 3,3V from the android connector, instead of supply 5-15V ??
You can boost the voltage to 5v fairly easily enough, but you would need to ensure that the phone could supply enough current. Alternatively you could tap the phone’s battery directly.
SFE sells a 5v boost regulator
http://www.sparkfun.com/products/10255
I also like this one from Pololu due to its size
http://www.pololu.com/catalog/product/798
With all the extra real estate on this board it’s kinda disappointing that there isn’t an integrated buck/boost regulator.
Great product !
I received my board last week and it took me about 2 hours to write my very first Android program that blinks a LED using this board (actually the older version as here in the UK the distributors were still stocking that one) and allows you to change the frequency and brightness.
I’m quite happy I went for this one, rather than one of the ADK boards which are bigger, more expensive, and especially work only with 2.3.4 phones…
Anyhow, GREAT WORK and thanks !!!
dan
P.S. here are the details of my project and a video
Here’s phase 1 of my attempt to transform my phone in an IMU (to be used with my autonomous tank ).
Android IMU – IOIO board – Wii Motion Plus
The basic idea is that the phone (or at least mine, a cheap Orange San Francisco) already has accelerometers and compases, but lacks the most important part, the gyroscopes.
I’ve already used and really like the simplicity and hackability of the Wii Motion Plus gyroscopes, so I want to add them to the phone, through the IOIO board.
Works on my HTC Wildfire running android 2.2.1 with sense. Whoop whoop!!
Works on
* Dell Streak – Android 2.2 Stock ROM
* HTC Magic – Android 2.2.1 CyanogenMod 6.1
* Notion Ink Adam – Android 2.2 Stock ROM
All without the adjustment of the CHG
Imagine if instead of rows of pins on the edges – the IOIO had a standardized 4-pin connector.
Now imagine that half of the sparkfun boards had the same 4 pin connector.
Now imagine SPI / I2C.
Sweetness.
Wake up – that was only a dream.
Your ioio schematic is not complete. Is there a complete schematic available?
It’s all open source:
http://codaset.com/ytai/ioio
What’s incomplete about it?
Works on my HTC Legend
Has anyone got it to work with the Samsung Captivate for AT&T?
It works perfectly with my Samsung Fascinate (VZW), which is also a Galaxy S phone.
Today I had some more time to play with it, and it was really easy to control a RC Servo (an ESC or any other standard RC device would work the same !) …
Here’s a video, the explanations and the Android code:
Android – IOIO – RC Servo (or ESC)
Thanks again guys for this great product !
Dan
does it work with the htc thunderbolt?
I couldn’t get the test app working with the Thunderbolt.
Anyone tested it on a Samsung Charge?
it works with the charge
Works with Samsung Epic 4g.
Confirming a working LG Optimus P500 working with (2.2.2 Froyo).
The sample application imported, compiled, and runs. The initial install/lunch always gives me a “force close”, but when starting from a menu on the phone it works fine.
You might be running with “Debug” rather than with “Run”, and the “force close” you’re seeing has a “waiting for debugger connection” on top, which means it just let’s you kill the app if you’re tired of waiting, but will eventually go away by itself when the debugger connects.
This message looks awfully similar to the “force close” you’re getting for an uncaught exception. I was bitten by it myself a few times…
Works with my HTC Inspire 4G (Android 2.2).
This is going to be soooo cooooool!!! giddy
EDIT: It works… really slowly. There’s a second or two of delay between any user interaction and the board changing state (so as cool as this is, it seems to be unusable for my purposes…).
Anyone else have problems with massive latency…? Or, better yet, solutions…?
One way latency is in the order of 4-5ms. What you’re experiencing is definitely not normal. Are you getting this with the example projects too?
Either way, raise your issue on the users forum mentioned above, and people may be able to assist you.
The latency arises with all examples that have user-manipulable output, as well as my project. Relative temporal offsets between user operations appear to be equivalent to the temporal offsets between responses on the board, though – it’s like everything’s being buffered up. I’m guessing the problem’s in my phone somewhere.
I’ve thrown it to the user forums.
Thanks, by the way, for what is otherwise a brilliant part.
They should ditch the white solder mask and go for black. White reminds me of Apple.
Funny, because for as popular as Apple made the white color in electronics, virtually all of their PCBs are deep blue. Moreover, for as simple and elegant as Apple products are, their PCBs are often more complex and built with more sophisticated manufacturing technology than they could be.
And here’s another cool usage of the IOIO board: connecting a Wii Nunchuck to your Android device !
http://trandi.wordpress.com/2011/07/24/android-ioio-wii-nunchuck/
And as you know, plenty of other Wii peripherals (like the wiimotion plus) can be connected in a similar manner…
Dan
It works on my Samsung Galaxy Mini GT-S5570 with Android 2.2.1. But HelloIOIO becomes unresponsive as soon as the phone goes into standby mode. The same happens when the screen rotates. On the Nexus S (2.3.3) it works just fine. I haven’t figured out yet what the problem might be. Any ideas?
Works with the Motorola Xoom, with the standard firmware. Haven’t tried the ADK fimrware with either my Xoom or my Epic yet…
I’m torn between buying this and getting a USB host shield and rolling my own. My project needs a MUX shield. Does the IOIO accept shields?
I’m just starting to experiment with the IOIO and it seems that CodaSet is down, potentially permanently, so the firmware update and documents are inaccessible.
Any updates? Are they being moved to GitHub?
This board is suported for Samsung Galaxy S with gingerbread ?
Tried the HelloIOIO/toggle statusLED example successfully with the following devices, after updating the IOIO firmware to the latest (0300):
Samsung Galaxy S2 (2.3.3)
Motorola Xoom tablet (3.1)
HTC Desire (2.1)
And yes, the codaset site is down for good (?). Now on github.
Download firmware etc on this address:
https://github.com/ytai/ioio/wiki/Downloads
wiki on
https://github.com/ytai/ioio/wiki
repo on
https://github.com/ytai/ioio
Simple IOIO / PowerSwitch implementation: http://swantron.com/ioio-powerswitch-project/
Nice product! Is it possible to have a low-powered version?
Works on my Samsung Galaxy 5 (I5500L) with upgrade to Android 2.2. Works too on my Samsung Galaxy Tab. OBS.: Tested with HelloIOIO app of App-IOIO0101.zip package. No sucess using IOIO Manager Application for firmware upgrade. Sorry my English.
This is pretty sweet now that I got it working. Now I can turn my wife’s old phone into the brains for a robot. A tip that would have been helpful to me: make sure you download the right version of the ioio library because the latest one didn’t work with the firmware that ships on these.
Just got HelloIOIO working with an Orange Stockholm, here in the UK. It’s about the cheapest Android phone I could find with reasonable functionality: £80.
http://shop.orange.co.uk/mobile-phones/orange-stockholm
BTW, it didn’t work until I upgraded the board’s firmware to the latest version (others have struggled with that problem: https://groups.google.com/group/ioio-users/browse_thread/thread/7172900591e3001b)
How much current does the phone draw from this board when connected?
I am thinking of using a 400mA LiPo battery (http://www.sparkfun.com/products/10718) and the LiPo Charge/Boost board (http://www.sparkfun.com/products/10300) in conjunction with the IOIO.
However if the phone tries to charge from the board it would seriously cripple the circuits battery life.
the IOIO is awesome!
I used it to control a RC car with the IOIO plugged to my HTC Incredible that receives motor commands from a computer over WIFI or 3G. The phone also sends the video and the values from the acceleration and orientation sensors back to the computer. The communication protocol between the phone and the computer is UDP.
you can see the video here:
http://www.youtube.com/watch?v=n6ypGlTCbKk
Have it working with Samsung Galaxy S2. Cool. Phone indicates it is charging – BUT- when I unplug the usb, I can see the battery is slowly draining. Is it possible to have the IOIO connected and have the battery be charged at the same time.. How.? *Anyone else experiencing this?
have you tried adjusting the charge current pot?
I just wrapped up my latest IOIO project. I am taking an analog reading from a solar cell, which is moved via servos via slider bars.
http://swantron.com/android-ioio-project-ioioseek/
Amazing …
Note.. After adjusting the charge current pot on the IOI0 to its mid-point.. the IOIO is now charging the Samsung Galaxy S2 phone ok. Great.
My first impressions of this interesting alternative to Arduino for Android hardware hacking: http://srmonk.blogspot.com/2011/10/ioio-first-impressions.html
I just received IOIO yesterday .. I tried the Hello IOIO app on “Samsung Galaxy 5” GT-I5503 and it worked directly without any troubles … WAW very excited to start developing on it.
Can I use interrupts with the API Java for the IOIO???? I need use external interrupts for take some information from the I2C bus, serial port or external events then in some cases I will have to use the interrupts.
I would also like to know about this. Bump.
Additional information on Bluetooth support and an example video can be found here
can i manufacture and sell this board in my country(india)
Of course, you just need to adhere to the licenses on the hardware and firmware. See the schematic for the hardware license and github for the firmware license.
Are these units now shipping with firmware that supports Bluetooth?
They are now!
awesome! glad I got one before they went out of stock again :)
what version of firmware has this Board?
Hi, I use cyanogenmod, Android 2.3.3 on my HTC Desire. Now I got IOIO, and try to run BlinkingLed on my phone! But I got some problem! When I connect my phone to IOIO, the debug icon never comes up and just charging! debugging option is ON, and when I connect it to PC then debugging is active! so my phone will not connect to IOIO, what should I do? IOIO is powered with 5+V in VIN and GND, and debugging on my phone is ON!
Is it possible to run a sketch while the board is disconnected from the phone?
Example: Simple log of data, then download when a phone is connected. Example: Blink LEDs, connect to phone and download different pattern.
Works with LG Optimus S
I bought IOIO board from other distributer(probably), and it worked well. But, after I tried to update the firmware using NOT IOIOManager app, but using PICKIT3 and MPLAB, it wasn’t working. There was many firmwares (SPRK0012~0016), and I had no idea which one should be used, so I tried every version of firmware with HelloIOIO app, but the result was same. Of course I knew the version of the firmware and app should be matched, and I did.
How can I solve this problem. please help me.
Does this work with the Motorola Atrix?
Confirmed on the Toshiba Thrive 32GB. Great device! The only downside is the board’s width means that if you put it into a solderless breadboard, you will have no open slots on the sides for connections. You have to use female headers on the board to connect to anything.
Works just great with my Dell Streak 5 (Mini) running Android 2.3.3
Absolutely love this product! The wireless update is fantastic and incredibly easy to install. I had considered Arduino because of the amazing amount of resources, open development, and wonderful community, but the ioio has some pretty amazing cost benefits plus 16 bit micro vs 8 bit. Lots of pins on this bad boy. Looking forward to Android + IOIO + Bioloid + ROS! Keep up the excellent work Ytai and Sparkfun, I’m so glad you guys are out there! One more thing for noobs like me, IOIO helps to push development to the Android, where Arduino has incredibly easy and fast sketch loading, pushing much of the code to the micro-controller, so both are designed for entry level and experts alike, but I get the impression Arduino is more of a standalone device, and IOIO is generally designed to accompany an Android device (but you could always write your own firmware) so buyers should keep that in mind (whether they want micro + Android or micro standalone project) both are great. Thanks again. (Still works with my old G1 and my newer phones)
is it not possible then to have your android device in usb development mode while connected to this board? is there no way to debug, but build a new application after every change?
Can the I/O pins function as interrupts?
What the heck am I doing wrong.
I can’t get phone connect to the ioio-board. When I’m connecting the usb-cable to the phone and ioio-board, the phone starts to charge and the usb debugging icon appears but still will the app “Hello IOIO Power” be waiting to get connection…
The odd thing is, that the green led doesn’t flash when the USB-cable is connected between the phone and IOIO. But if I unmark “USB Debugging” under Settings/Application/Development on the phone. Then the green led is flashing on connection…
Earlier I had Android 2.3.3 and then there was no connection att all. Now I have rooted the phone and using 2.2.1. What kind of firmware on the ioio am I using am i unabled to determine. But I ordered it couple of weeks a go and recived it here in sweden just a few days before christmas, if that is for any help for you!
Please, someone! Help me! =)
//The Swede
I just bought the DEV-10748, but I can not run it, after it power on , the power led do light on, but no thing happen even I run the sample code like helloIOIO. Which version the board support? I try the 3.11 and 3.02 but not working
Can it be programmed with an android?
I can’t quite grok from their descriptions how the IOIO differs from the Electric Sheep. I know the Electric Sheep is basically just the ADK platform, and I know this isn’t (unless you load the alternate firmware). But I don’t really understand the differences. Can anyone comment?
I have a project in mind where I want to make my Android phone communicate with another device that has a Serial interface. I don’t really know at this point whether I could get by with just a “Audio Jack Modem for iPhone and Android” or whether I’d need something like the IOIO to ‘translate’ for me.
So far i got it to work on almost every android platform I ran into.
Works on the Pantech Breakout with 2.3.3 via Bluetooth only. Finally. I almost gave up! USB cable doesn’t work because of the internal hub. This Bluetooth dongle didn’t work initially because of the 00:00 ID address. The Pantech couldn’t see it because it doesn’t look at that address. I came across a thread on the Basic4Android forums where a user ‘Jimseng’ had similar problems… Couldn’t see the dongle. He suggests installing the app ‘Bluetooth Class Zero’ (free) and rebooting. Worked great! Now the Breakout is paired and the HelloIOIO app worked right away. I was about to give up and return the phone for a different model… Glad I came across that thread!
Now I just have to get used to Java… :-P
Has anybody been able to use the ioio with a Samsung Galaxy Player 5 (/YP-G70CWY/XAA) ?