The IOIO-OTG (pronounced “yo-yo-O-T-G”) is a development board specially designed to do just that. It features a PIC microcontroller which acts like a bridge that connects an app on your PC or Android device to low-level peripherals like GPIO, PWM, ADC, I2C, SPI, and UART. An app-level library helps you write control code for these low level peripherals in the same way you’d write any other Java app!
What separates the IOIO-OTG from previous IOIO boards is the ability to leverage the USB On-The-Go specification to connect as a host or an accessory. There are several ways to connect the IOIO to your Java app. If the app is running on your Android device, the IOIO-OTG will act as a USB host and supply charging current to your device (meaning the IOIO-OTG will need its own power source). If your app is running on a Windows, Linux or OSX machine, the IOIO-OTG will assume device mode and present itself as a virtual serial port. When in device mode, the IOIO-OTG can be powered by the host! Connecting a USB Bluetooth dongle will cause the IOIO-OTG to show up as a Bluetooth serial connection so you can go wireless!
A switch on the board can be used to force the IOIO-OTG into host mode, but most of the time the board can be left in ‘auto’ mode and it will detect its role in the connection. We’re now shipping the IOIO-OTG board loaded with the V4.00 bootloader and the V3.30 application firmware. New application firmware is frequently released, and can be upgraded without needing a programmer using the IOIODude application.
The board includes a JST connector for attaching a LiPo battery and there are several pin headers broken out for voltage and ground access. A trimpot on the board allows you to adjust the charge current used when the IOIO-OTG is acting as a host. A USB-A to micro-A OTG cable is included which will let you connect your android device to the micro-USB port on the board using the cable that came with your android device.