We heard that there is a specialized hardware for Android called IOIO. So we spend some time to fount out more about IOIO. IOIO (pronounced YoYo) is an input/output board for Android phones and tablets. It allows you to attach electronic devices to your Android phone using the USB connection. If you have a IOIO with the latest firmware, you can also communicate over Bluetooth if you attach a Bluetooth adapter to the IOIO. General conclusion is that IOIO consists of firmware for Microchip PIC24F microcontroller and libraries for Android.
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. The whole project, both hardware and software is open source. IOIO uses the same Integrated Development Environment that Google recommends for Android development—Eclipse. Eclipse isn’t required for either Android or IOIO, but it is the most common software used to create apps for them. Eclipse and the other software that you need are all available for Windows, Mac, and Linux.
You can purchase a IOIO board online from Sparkfun Electronics, Jaycon Systems, IOIOMint version from Adafruit or the Droidalyzer IOIO boardfrom Seeedstudio. In the near future links to our projects with IOIO will be here: (Still nothing yet)
Since all reference point to Sparkfun, we do the same so we used their excellent tutorial for IOIO. At the end we give you description of few projects with IOIO.
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. No firmware programming is required - only Android application authoring with a very simple API for controlling the pins on the board. No modification of the Android device is required - you avoid the complication of modification and the voiding of warranty.
The programming language used to write an Android app is Java. In general, the holy grail for developing Android apps is developer.android.com. There, you will find most of the information on Android development. For documentation/downloads specific to the IOIO and for more advanced discussions about the IOIO, see these links:
• IOIO Wiki
• All of the Downloads you need
• IOIO discussion group
Here are the pieces of hardware you will need to complete this tutorial:
• Android enabled device using OS 1.5 or greater.
• IOIO for Android board
• USB cable that is compatible with your Android device
• 5-15V power supply with at least 1A of current.
The Eclipse IDE (integrated development environment), the Android SDK (software development kit), and the JDK (Java development kit) are the primary pieces of software that you will need to install. The page developer.android.com has written thorough instructions on what exactly you will need to download. Please read the instructions carefully, they are found in the link below:
• Installing Eclipse and the Android SDK
ATTENTION: You must use JDK v6 (not v5 or v7) for Android development.
When you reach Step 4 in the Android SDK tutorial, you will at least need to install the SDK components relevant to the Android device you will be working with. For example, if you have an Android phone, goto Settings > About Phone and scroll down to Android Version. You must install the SDK platform corresponding to the Android version of your device.
Instead of creating a new project from scratch, we can import an existing IOIO project that has all of the files ready to go. If you need instruction on creating a new project, see the Hello World example on developer.android.com.
To import an existing project...
1) Download the latest 'Android Software and IOIO Application Firmware Image' zip file (App-IOIOxxxx, where xxxx is the software/library version number).
Note: If you are using an older IOIO board, make sure the version number of your IOIO library is less than or equal to the version number of your firmware. In other words, if you can't get the sample app to work with an older IOIO, use one of the older library versions or upgrade the firmware on your IOIO using the IOIO Manager and then use the latest download.
2) Unzip the downloaded package into a safe location where you want to keep your project files.
3) Next, open Eclipse, then goto File > Import, and select Existing Projects Into Workspace. Then hit Next.
4) Another window will pop up (as shown below). Select 'Select Root Directory' and navigate to the file you just unzipped and point to the HelloIOIO folder found in /applications/HelloIOIO. Be sure the check box is selected for your project. Now hit Finish.
5) You should now have HelloIOIO in your project explorer in Eclipse. Notice that there is a small red x next to the project name. This means there are build errors, so whenever you see this, you know something needs to be fixed. In this situation, we need to link the IOIO library to our project, as outlined in the next step.
6) Now we need to link the IOIO library and IOIO Bluetooth library to your project which will give you full access to the IOIO API. The IOIOLib and IOIOLibBT directories contains the libraries that allow you to communicate to the IOIO board.
Follow the exact same steps in 3 and 4 above, except use the IOIOLib file and then the IOIOLibBT instead of the HelloIOIO file.
After you added the library files into the workspace, select the HelloIOIO project, then on the top toolbar goto: Project > Properties. Then, select 'Android' in the list to the left. In the 'Library' section, click add, then add both the IOIOLib and IOIOLibBT libraries. You should see both of them with a green check mark as shown below (note: image doesn't show the IOIOLibBT, but it should be there if using Bluetooth).
Also, make sure the 'Project Build Target' is properly selected according to the specific Android OS you are using.
Note: If you ever need to change your build target (say you are using a device with a different Android OS), you can change it here.
7) The next thing you need to do is make sure your app has internet permissions. To do this, open the AndroidManifest.xml file located in the main project tree. Make sure you are in the permissions tab, then click Add > Usage Permissions, then make sure the 'Name' field is android.permission.INTERNET.
After you have done this and saved your project, the projects explorer window should look something like this:
Note: I get some problems with the targets that I dont know to solve at the moment :)
[2012-10-24 12:39:47 - IOIOLibBT] Unable to resolve target 'android-10'
[2012-10-24 12:40:41 - IOIOLibAccessory] Unable to resolve target 'Google Inc.:Google APIs:10'
The project tree has many files. You really don't need to mess with the IOIOLib project tree so you can minimize that one. The file that contains the java code for the IOIO is in HelloIOIO > scr > ioio.examples.hello > MainActivity.java. You are ready to write your code here.
For more information visit Sparkfun IOIO for Android Bigginers Guide.
Now...let see few interesting projects with IOIO.
A RC car is controlled by a IOIO board, plugged to an Android phone that receives motor commands from a computer over Wi-Fi or 3G (Wi-Fi in this video). 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.
The whole project was programmed in JAVA. The source code is available here:
For more recent work, go to:
IOIO over Bluetoth:
Demonstration of IOIO operating over Bluetooth using a standard Bluetooth dongle.
More information at:
IOIO-SHR Object Follower:
More information can be found at: http://www.letsmakerobots.com/node/30351
Here is link with youtube videos of IOIO projects: http://ioio.media.mit.edu/node/7
You get the point what you can do with IOIO Android.