I was some day wondering how to connect IO to Android smartphone or tablet.One well known option is to use IOIO or IOIO-OTG board connected to Android device USB port. The IOIO (pronounced “yo-yo”) is a board specially designed to work with Android devices and robust connectivity to an Android device via a USB or Bluetooth connection and is fully controllable from within an Android application. The IOIO Board uses multiple protocols to communicate with a control device. IOIO Application Protocol allows an application running on the control device (Android tablet, Android smartphone or Windows PC) to access the pins and commands of the IOIO. Typically, the connection is one of these:
-Windows PC -> USB (serial port protocol) -> IOIO
I saw IOIO in use with Android tablet, and wanted to get my own because it looked nice product when working with Android (Arduino USB connection does not work with many Android devices). The current up to date version of IOIO is IOIO-OTG. I found that I could get IOIO-OTG cheaply from dx.com, so I ordered it. After some weeks I received the product. Here is picture of IOIO-OTG board I have. I have connected my homemade power cable to it from 9V battery or 5-12V mains adapter.
First Android tests failed. None of the Android devices could find the IOIO board. And this was supposed to be easy-to-use product that was specifically designed for Android device. I wired the IOIO-OTG board to Android tablet with the supplied OTG cable connected to USB-microUSB cable (that connects to tablet). I tried several cables and several apps, but no success. The questions are is the board damaged or is there some software configuration problem?
If it does not work with Android device, does it work with PC? So I decided to check if it works on Windows PC, because IOIO-OTG offered also this connectivity mode. I started Windows testing using instructions from Running IOIO-OTG on a Windows PC page. First I made sure that the IOIO-OTG is switched to Auto (A) mode. The board needed drivers, and I got driver from https://github.com/ytai/ioio/blob/master/driver/ioio.inf (saved the data to file ioio.inf and made Windows to install driver from there). Running example program HelloIOIOSwing from IOIO software packet worked! So the board is not completely broken.
Back to Android USB testing. I used IOIO Controller (0.69 Euros) and some free IOIO software to do testing again on Android. No luck with anything. I did some hardware debugging. I used my USB Power Current Voltage Tester to see that there was no +5V power coming out of the USB connector (IOIO should supply +5V when it is in USB host mode). I did some debugging with help from multimeter and IOIO-OTG schematic: Found out that the output FET does not get right driving voltage level to turn on. It turned out that one contact on the output current adjustment potentiometer was not soldered properly:
When I fixed the soldering issue, the board started to work as it should. Android devices found it nicely and IOIO software could find it. It turned out that IOIO Controller looked like best control software for testing.
The IOIO Controller allowed to control the state of the different pins to use different purposes. I could use pins 10-15 as PWM output I can control,pins 15-38 as digital outputs and pins 39-46 as analog inputs. The software had also digital input reading mode, but I could not get it to show any valid input states. The I/O pins on the IOIO-OTG are designed for 3.3V LVTLL signal levels. In my tests the PWM outputs generated the PWM signal at 100 Hz frequency which is suitable for example for LED dimming and should be suitable for hobby servo controlling at 1-2 ms pulse lengths (if you need to get different PWM frequency like commonly used 1 kHz as given by Arduino Firmata or used by some industrial PWM systems, you need to make your own program).
IOIO-OTG supports also wireless Bluetooth connection option by plugging USB-Bluettooth adapter to it. I wanted to try it as well. I used cheap Super Mini Bluetooth 2.0 Adapter Dongle (Vista Compatible) that I wired to IOIO-OTG with USB-OTG cable. I used instructions from IOIO Over Bluetooth for Android page to get started. I used USB male-micro-A-to-female-A adapter cable to connect Bluetooth Adapter Dongle to IOIO-OTG.The board worked well in Automatic mode (A) and current limiting potentiometer at almost maximum setting.
Before starting using the control software, I needed the IOIO board with USB dongle to be “paired” with my Android device. I went to Settings > Wireless & networks > Bluetooth settings menu. I found device called IOIO. I clicked the IOIO in order to pair it with PIN code 4545.
I used IOIO Bluetooth Control Device to control the IOIO-OTG from Android smart phone. It worked well. I also tried IOIO RC Remote Control software, which also worked. Now I have working wireless IO that I can control from Anrdoid device.