IOIO (pronounced yo-yo) is a series of open source PIC microcontroller-based boards that allow Android mobile applications to interact with external electronics. The device was invented by Ytai Ben-Tsvi in 2011, and was first manufactured by SparkFun Electronics. The name "IOIO" is inspired by the function of the device, which enables applications to receive external input ("I") and produce external output ("O").
Features
The IOIO board contains a single PIC MCU that acts as a USB host/USB slave and communicates with an Android app running on a connected Android device.9 The board provides connectivity via USB, USB-OTG or Bluetooth, and is controllable from within an Android application using the Java API.1011121314
In addition to basic digital input/output and analog input, the IOIO library also handles PWM, I2C, SPI, UART, Input capture, Capacitive sensing and advanced motor control.15 To connect to older Android devices that use USB 2.0 in slave mode, newer IOIO models use USB On-The-Go to act as a host for such devices.16 Some models also support the Google Open Accessory USB protocol.17
The IOIO motor control API can drive up to 9 motors and any number of binary actuators in synchronization and cycle-accurate precision.1819 Developers may send a sequence of high-level commands to the IOIO, which performs the low-level waveform generation on-chip.2021 The IOIO firmware supports 3 different kinds of motors; stepper motors, DC motors and servo motors.2223
Device firmware may be updated on-site by the user.24 For first-generation devices updating is performed using an Android device and the IOIO Manager application available on Google Play.2526 Second-generation IOIO-OTG devices must be updated using a desktop computer running the IOIODude application.27
The IOIO supports both computers and Android devices as first-class hosts, and provides the exact API on both types of devices.28 First-generation devices can only communicate with PCs over Bluetooth, while IOIO-OTG devices can use either Bluetooth or USB.29 PC applications may use APIs for Java or C# to communicate with the board; Java being the official API.3031
Applications
The IOIO hardware and software is entirely open source,32 and enabled the creation of hundreds of DIY robotic projects around the world.3334353637
The board has been featured in various learning kits, which aim to help students write Android applications that can interact with the external world.38394041
The Qualcomm Snapdragon Micro Rover is a 3D printed robot that leverages an Android smartphone and the IOIO to control the robot's motors and sensors.4243 A team led by Israeli inventor Dr. Guy Hoffman created an emotionally-sensitive robot, that relies on the IOIO to control the robot's hardware.44
Reviews
The IOIO has been variously described as a "geek's paradise", "an easy way to get I/O from an Android device’s USB connection" and "a USB I/O breakout board for Android smartphones which turns your handset into a super-Arduino of sorts".45464748 It featured as a recommended "gift for geeks" in a Scientific Computing article.49
According to SlashGear, an online electronics magazine:
You could hook up the IOIO for Android and a couple of heat sensors, and whip up an app that measures room temperature and then emails you if it’s getting too hot. Thanks to a range of I/O choices – including Digital Input/Output, PWM, Analog Input, I2C, SPI and UART control – you could also connect your home thermostat to automatically adjust the heating in response.
— Chris Davies, "IOIO for Android gets video demos: Geek’s paradise!", SlashGear5051
According to SparkFun, the first manufacturer of the device:
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.
— Publishing Team, "IOIO Android Interface Board Retail", SparkFun5253
According to Ytai Ben-Tsvi, the inventor of the device:
Android phones are powerful mobile computers having internet connectivity and a rich variety of built-in sensors (camera, GPS, IMU, touch screen). They are also very easy to write applications for, thanks to the great work done by the Android SDK developers. For many applications, all they are really missing is connectivity to external peripherals. This is exactly where IOIO fits in: it enriches the inherent capabilities of the Android device with the ability to communicate with external circuits.
— Ytai Ben-Tsvi, "Meet IOIO - I/O for Android"54
Technical details
IOIO V1
The first-generation IOIO boards (known as IOIO V1) contain the following on-board features:5556 This generation only supports USB slave mode, and requires a USB master as the host (PC or newer Android phones).5758
The IOIO V1 is a 3.3 V logic level device, and features a 5 V DC/DC switching regulator and a 3.3V linear regulator.59 The 5 V regulator supports a 5–15 V input range and up to 1.5 A load.60 This facilitates charging a connected Android device as well as driving several small motors or similar loads.
Feature | Details | Description |
---|---|---|
USB connector | type A, female | Used to connect to the Android device. |
GND pins | 9 pins | Ground connection. |
VIN pins | 3 pins | Used for power supply to the board. Voltage between 5 and 15 V should be supplied. |
5 V pins | 3 pins | Normally used as 5 V output to user electronics, when the board is powered from VIN. Can be used as 5V input in case VIN is not connected. |
3.3 V pins | 3 pins | 3.3 V output to user electronics. |
I/O pins | 48 pins | General purpose I/O pins. Some have special functions, such as ADC, Input Capture, UART, PWM, Comparator or for programming the PIC MCU (ICSP). |
Power LED | Lights when the IOIO is getting power. | |
Stat LED | Lights briefly during power-up and then becomes under application control. | |
MCLR pin | Not normally used. Its purpose is for programming new bootloader firmware on the IOIO board. | |
Charge current trimmer (CHG) | Adjusts the amount of charge current supplied on the VBUS line of the USB to the Android device. Turning in the (+) direction increases charge current. |
IOIO OTG
The second-generation IOIO boards (known as IOIO-OTG) contain the following on-board features:616263 As the name suggests, a key feature of this generation is the introduction of USB-OTG, supporting USB master or slave mode. This enables the IOIO to connect to older Android phones that only support USB slave mode, in addition.6465
The IOIO-OTG is a 3.3 V logic level device, with some of the pins being 5 V tolerant. It features a 5 V DC/DC switching regulator and a 3.3 V linear regulator. The 5 V regulator supports a 5–15 V input range and up to 3 A load.66 This facilitates charging a connected Android device as well as driving several small motors or similar loads.
Feature | Details | Description |
---|---|---|
USB connector | micro-AB, female | Used to connect to host computer, an Android device or a Bluetooth dongle. |
Power jack | 2-pin JST, female | Used for power supply to the board. Voltage between 5–15 V should be supplied. |
GND pins | 10 pins | Ground connection. |
VIN pins | 3 pins | Used for outputting the supply voltage to your circuit, or as an alternative input to the power jack. |
5V pins | 3 pins | 5V output from the on-board regulator, which can be used in your circuit. |
3.3 V pins | 3 pins | 3.3 V from the on-board regulator, which can be used in your circuit. |
I/O pins | 46 pins | General purpose I/O pins. Some have special functions, such as ADC, Input Capture, UART, PWM, Comparator or for programming the PIC MCU (ICSP). |
PWR LED | red | Lights when the IOIO is getting power. |
STAT LED | yellow | General purpose on-board LED, under application control. |
MCLR pin | Not normally used. Its purpose is for programming new bootloader firmware on the IOIO board. | |
BOOT pin | Special pin used for getting the IOIO into bootloader mode on power-up. Note that this pin is shared with the stat LED. | |
Charge current trimmer (CHG) | Adjusts the amount of current supplied on the VBUS line of the USB when acting as a USB host. Typically used in battery-powered application with Android to prevent the Android from draining the battery quickly. Turning in the (+) direction increases charge current. | |
Host switch | In "A" mode, the IOIO-OTG will detect whether it should act as host or as device automatically, according to whichever USB connector is plugged in (micro-A or micro-B). To support non-standard USB cables or adapters that use micro-B type, move the switch to the "H" position to force host mode. |
See also
References
Lutz, Zachary (10 April 2011). "SparkFun intros IOIO for Android, a hack-free breakout box to get your mind spinning". Engadget. https://www.engadget.com/2011/04/10/sparkfun-intros-ioio-for-android-a-hack-free-breakout-box-to-ge/ ↩
IOIO Mint - Portable Android Development Kit, AdaFruit https://www.adafruit.com/products/885 ↩
SparkFun Hosts Android Development Class with IOIO, PRNewsWire, BOULDER, Colo., June 27, 2012 http://www.prnewswire.com/news-releases/sparkfun-hosts-android-development-class-with-ioio-160551585.html ↩
Lutz, Zachary (10 April 2011). "SparkFun intros IOIO for Android, a hack-free breakout box to get your mind spinning". Engadget. https://www.engadget.com/2011/04/10/sparkfun-intros-ioio-for-android-a-hack-free-breakout-box-to-ge/ ↩
IOIO Wiki, GitHub, "And this is the blog of Ytai, the inventor of IOIO" https://github.com/ytai/ioio/wiki ↩
Ytai Ben-Tsvi's Blog, Blogspot http://ytai-mer.blogspot.in/ ↩
IOIO for Android, DEV-10585, SparkFun https://www.sparkfun.com/products/retired/10585 ↩
SparkFun Hosts Android Development Class with IOIO, PRNewsWire, BOULDER, Colo., June 27, 2012 http://www.prnewswire.com/news-releases/sparkfun-hosts-android-development-class-with-ioio-160551585.html ↩
IOIO Android Interface Board Retail, SparkFun USA https://www.sparkfun.com/products/retired/11240 ↩
IOIO-OTG, DEV-12633, SparkFun https://www.sparkfun.com/products/12633 ↩
SparkFun Hosts Android Development Class with IOIO, PRNewsWire, BOULDER, Colo., June 27, 2012 http://www.prnewswire.com/news-releases/sparkfun-hosts-android-development-class-with-ioio-160551585.html ↩
O'Brien, Terrence (30 May 2012). "Second-gen IOIO in the works: embraces the wireless revolution, cuts cost". Engadget. https://www.engadget.com/2012/05/30/second-gen-ioio-in-the-works/ ↩
IOIO-OTG Beginners Guide, SparkFun https://www.sparkfun.com/tutorials/280 ↩
IOIO Java Library Basics, GitHub https://github.com/ytai/ioio/wiki/IOIOLib-Basics ↩
IOIO Mint - Portable Android Development Kit, AdaFruit https://www.adafruit.com/products/885 ↩
IOIO-OTG, DEV-12633, SparkFun https://www.sparkfun.com/products/12633 ↩
SparkFun Hosts Android Development Class with IOIO, PRNewsWire, BOULDER, Colo., June 27, 2012 http://www.prnewswire.com/news-releases/sparkfun-hosts-android-development-class-with-ioio-160551585.html ↩
Motor control, IOIO Wiki https://github.com/ytai/ioio/wiki/Motor-control ↩
IOIO Plotter and the Motor Control Library, MAY 14, 2013, Ytai Ben-Tsvi Blog http://ytai-mer.blogspot.in/2013/05/ioio-plotter-and-motor-control-library.html ↩
Motor control, IOIO Wiki https://github.com/ytai/ioio/wiki/Motor-control ↩
IOIO Plotter and the Motor Control Library, MAY 14, 2013, Ytai Ben-Tsvi Blog http://ytai-mer.blogspot.in/2013/05/ioio-plotter-and-motor-control-library.html ↩
Motor control, IOIO Wiki https://github.com/ytai/ioio/wiki/Motor-control ↩
IOIO Plotter and the Motor Control Library, MAY 14, 2013, Ytai Ben-Tsvi Blog http://ytai-mer.blogspot.in/2013/05/ioio-plotter-and-motor-control-library.html ↩
IOIO Mint - Portable Android Development Kit, AdaFruit https://www.adafruit.com/products/885 ↩
IOIO Mint - Portable Android Development Kit, AdaFruit https://www.adafruit.com/products/885 ↩
IOIO Manager, Google Play Store https://play.google.com/store/apps/details?id=ioio.manager&hl=en ↩
IOIO-OTG Bootloader and IOIODude, IOIO Wiki https://github.com/ytai/ioio/wiki/IOIO-OTG-Bootloader-and-IOIODude ↩
IOIO Mint - Portable Android Development Kit, AdaFruit https://www.adafruit.com/products/885 ↩
IOIO Mint - Portable Android Development Kit, AdaFruit https://www.adafruit.com/products/885 ↩
IOIO Java Library Basics, GitHub https://github.com/ytai/ioio/wiki/IOIOLib-Basics ↩
IOIODotNet, GitHub https://github.com/freemansoft/IOIODotNet/ ↩
IOIO, GitHub https://github.com/ytai/ioio/wiki ↩
Davies, Chris (8 April 2011). "IOIO for Android gets video demos: Geek's paradise!". Slashgear. http://www.slashgear.com/ioio-for-android-gets-video-demos-geeks-paradise-08145167/ ↩
Projects built with IOIO, Pinterest https://in.pinterest.com/ytaibt/ioio/ ↩
DIY Android-powered tank, Edwin Kee, 08/10/2011, Ubergeek http://www.ubergizmo.com/2011/08/diy-android-powered-tank/ ↩
DIY smartphone thermostat has us wondering what happened to Android@Home, 15 Oct 2012, Kevin Krause, Phandroid http://phandroid.com/2012/10/15/diy-smartphone-thermostat-has-us-wondering-what-happened-to-androidhome/ ↩
Breathing on the IOIO board for an Android Breathalyser, GadgetMaster, Electronics Weekly, 11 May 2012 http://www.electronicsweekly.com/gadget-master/sensors/breathing-on-the-ioio-board-fo-2012-05/ ↩
IOIO Mint - Portable Android Development Kit, AdaFruit https://www.adafruit.com/products/885 ↩
IOIO Inventor's Kit, RB-Spa-934 Archived 2015-07-12 at the Wayback Machine, RobotShop http://www.robotshop.com/en/ioio-inventors-kit.html ↩
SparkFun Inventor's Kit for IOIO, SparkFun https://www.sparkfun.com/products/11607 ↩
Joyce, John R. (13 November 2014). "Holiday Shopping? 25 Gifts Sheldon and Friends would Love". Scientific Computing. http://www.scientificcomputing.com/blogs/2014/11/holiday-shopping-25-gifts-sheldon-and-friends-would-love ↩
Snapdragon Micro Rover, Qualcomm https://developer.qualcomm.com/hardware/micro-rover ↩
MENDOZA, HANNAH ROSE (21 September 2014). "Qualcomm's 3D Printed Micro Rover Controlled by Smartphones". 3DPrint. http://3dprint.com/16042/3d-printed-rover-qualcomm/ ↩
Meyrav, Avner (9 April 2014). "Israeli Robot Reacts 'Emotionally' to How You Talk". ShalomLife. Archived from the original on 12 July 2015. Retrieved 11 July 2015. https://web.archive.org/web/20150712070240/http://www.shalomlife.com/business/22771/israeli-robot-reacts-emotionally-to-how-you-talk-video/ ↩
Davies, Chris (8 April 2011). "IOIO for Android gets video demos: Geek's paradise!". Slashgear. http://www.slashgear.com/ioio-for-android-gets-video-demos-geeks-paradise-08145167/ ↩
SparkFun IOIO for Android makes Arduino-style hacks simple, Android Community, April 7, 2011, Chris Davies http://androidcommunity.com/sparkfun-ioio-for-android-makes-arduino-style-hacks-simple-20110407/ ↩
IOIO for Android detailed: Project samples from USB breakout board, Android Community, April 8, 2011, Chris Davies http://androidcommunity.com/ioio-for-android-detailed-project-samples-from-usb-breakout-board-video-20110408/ ↩
"IOIO board gets I/O from an Android device's USB connection". Electronics Weekly. 19 August 2011. http://www.electronicsweekly.com/eyes-on-android/components/ioio-board-gets-io-from-an-android-devices-usb-connection-2011-08/ ↩
Joyce, John R. (13 November 2014). "Holiday Shopping? 25 Gifts Sheldon and Friends would Love". Scientific Computing. http://www.scientificcomputing.com/blogs/2014/11/holiday-shopping-25-gifts-sheldon-and-friends-would-love ↩
Davies, Chris (8 April 2011). "IOIO for Android gets video demos: Geek's paradise!". Slashgear. http://www.slashgear.com/ioio-for-android-gets-video-demos-geeks-paradise-08145167/ ↩
"Android phones hack their way with IOIO breakout board". Electronics Weekly, Gadget Master. 26 July 2011. http://www.electronicsweekly.com/gadget-master/controls/android-phones-hack-their-way-2011-07/ ↩
IOIO Android Interface Board Retail, SparkFun USA https://www.sparkfun.com/products/retired/11240 ↩
"Android phones hack their way with IOIO breakout board". Electronics Weekly, Gadget Master. 26 July 2011. http://www.electronicsweekly.com/gadget-master/controls/android-phones-hack-their-way-2011-07/ ↩
Meet IOIO - I/O for Android, Blog of Ytai Ben-Tsvi http://ytai-mer.blogspot.in/2011/04/meet-ioio-io-for-android.html ↩
Getting To Know The IOIO-V1 Board, IOIO Wiki https://github.com/ytai/ioio/wiki/Getting-To-Know-The-Board ↩
IOIO V1, SparkFun USA https://www.sparkfun.com/products/retired/10748 ↩
Lutz, Zachary (10 April 2011). "SparkFun intros IOIO for Android, a hack-free breakout box to get your mind spinning". Engadget. https://www.engadget.com/2011/04/10/sparkfun-intros-ioio-for-android-a-hack-free-breakout-box-to-ge/ ↩
IOIO for Android, DEV-10585, SparkFun https://www.sparkfun.com/products/retired/10585 ↩
"Reliance Electric FlexPak 3000 0-58770-420 | Automation Industrial". 0-58770-420.com. Retrieved 13 December 2023. https://0-58770-420.com/blog ↩
IOIO for Android, DEV-10585, SparkFun https://www.sparkfun.com/products/retired/10585 ↩
Getting To Know The IOIO-OTG Board, IOIO Wiki https://github.com/ytai/ioio/wiki/Getting-To-Know-The-IOIO-OTG-Board ↩
IOIO OTG, SparkFun USA https://www.sparkfun.com/products/12633 ↩
IOIO OTG, SparkFun USA https://www.sparkfun.com/products/retired/11343 ↩
IOIO-OTG, DEV-12633, SparkFun https://www.sparkfun.com/products/12633 ↩
O'Brien, Terrence (30 May 2012). "Second-gen IOIO in the works: embraces the wireless revolution, cuts cost". Engadget. https://www.engadget.com/2012/05/30/second-gen-ioio-in-the-works/ ↩
IOIO-OTG, DEV-12633, SparkFun https://www.sparkfun.com/products/12633 ↩