IOIO (pronounced ''yo-yo'') is a series of
open source
Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized sof ...
PIC microcontroller-based boards that allow
Android
Android may refer to:
Science and technology
* Android (robot), a humanoid robot or synthetic organism designed to imitate a human
* Android (operating system), Google's mobile operating system
** Bugdroid, a Google mascot sometimes referred to ...
mobile applications to interact with external electronics.
[SparkFun Hosts Android Development Class with IOIO](_blank)
PRNewsWire, BOULDER, Colo., June 27, 2012 The device was invented by Ytai Ben-Tsvi in 2011, and was first manufactured by
SparkFun Electronics
SparkFun Electronics (sometimes known by its abbreviation, ''SFE'') is an electronics retailer in Niwot, Colorado, United States. It manufactures and sells microcontroller development boards and breakout boards. All products designed and produce ...
.
[IOIO for Android, DEV-10585](_blank)
SparkFun 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
Android is a mobile operating system based on a modified version of the Linux kernel and other open-source software, designed primarily for touchscreen mobile devices such as smartphones and tablets. Android is developed by a consortium of deve ...
running on a connected Android device.
The board provides connectivity via
USB,
USB-OTG
USB On-The-Go (USB OTG or just OTG) is a specification first used in late 2001 that allows USB devices, such as tablets or smartphones, to act as a host, allowing other USB devices, such as USB flash drives, digital cameras, mouse or keyboards ...
or
Bluetooth, and is controllable from within an Android application using the Java API.
[IOIO-OTG, DEV-12633](_blank)
SparkFun[IOIO Java Library Basics](_blank)
GitHub
In addition to basic
digital input/output and
analog input, the IOIO library also handles
PWM,
I2C
I, or i, is the ninth letter and the third vowel letter of the Latin alphabet, used in the modern English alphabet, the alphabets of other western European languages and others worldwide. Its name in English is ''i'' (pronounced ), plural ...
,
SPI
SPI may refer to:
Organizations
* Indian Protection Service (''Serviço de Proteção ao Índio''), Brazil
* Shotmed Paper Industries, an Egyptian paper manufacturers
* Simulations Publications, Inc., a former US board game publisher
* Sony P ...
,
UART,
Input capture
Input capture is a method of dealing with input signals in an embedded system.
Embedded systems using input capture will record a timestamp in memory when an input signal is received. It will also set a flag indicating that an input has been captu ...
,
Capacitive sensing and advanced
motor control
Motor control is the regulation of movement in organisms that possess a nervous system. Motor control includes reflexes as well as directed movement.
To control movement, the nervous system must integrate multimodal sensory information (both f ...
.
To connect to older Android devices that use
USB 2.0
Universal Serial Bus (USB) is an industry standard that establishes specifications for cables, connectors and protocols for connection, communication and power supply (interfacing) between computers, peripherals and other computers. A broad v ...
in slave mode, newer IOIO models use
USB On-The-Go to act as a host for such devices.
Some models also support the
Google Open Accessory USB protocol.
The IOIO motor control API can drive up to 9 motors and any number of binary actuators in synchronization and cycle-accurate precision.
[Motor control](_blank)
IOIO Wiki
MAY 14, 2013, Ytai Ben-Tsvi Blog Developers may send a sequence of high-level commands to the IOIO, which performs the low-level waveform generation on-chip.
The IOIO firmware supports 3 different kinds of motors;
stepper motors,
DC motor
A DC motor is any of a class of rotary electrical motors that converts direct current (DC) electrical energy into mechanical energy. The most common types rely on the forces produced by induced magnetic fields due to flowing current in the coil ...
s and
servo motors.
Device firmware may be updated on-site by the user.
For first-generation devices updating is performed using an Android device and the ''IOIO Manager'' application available on
Google Play.
Second-generation IOIO-OTG devices must be updated using a desktop computer running the ''IOIODude'' application.
The IOIO supports both computers and Android devices as first-class hosts, and provides the exact API on both types of devices.
First-generation devices can only communicate with PCs over Bluetooth, while IOIO-OTG devices can use either Bluetooth or USB.
PC applications may use APIs for
Java or
C# to communicate with the board; Java being the official API.
Applications
The IOIO hardware and software is entirely open source, and enabled the creation of hundreds of DIY robotic projects around the world.
The board has been featured in various learning kits, which aim to help students write Android applications that can interact with the external world.
[IOIO Mint - Portable Android Development Kit](_blank)
AdaFruit
The
Qualcomm Snapdragon
Snapdragon is a suite of system on a chip (SoC) semiconductor products for mobile devices designed and marketed by Qualcomm Technologies Inc. The Snapdragon's central processing unit (CPU) uses the ARM architecture. A single SoC may include mu ...
Micro Rover is a
3D printed
3D printing or additive manufacturing is the construction of a three-dimensional object from a CAD model or a digital 3D model. It can be done in a variety of processes in which material is deposited, joined or solidified under computer co ...
robot that leverages an
Android
Android may refer to:
Science and technology
* Android (robot), a humanoid robot or synthetic organism designed to imitate a human
* Android (operating system), Google's mobile operating system
** Bugdroid, a Google mascot sometimes referred to ...
smartphone and the IOIO to control the robot's motors and sensors. 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.
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".
It featured as a recommended "gift for geeks" in a
Scientific Computing article.
According to SlashGear, an online electronics magazine:
According to
SparkFun
SparkFun Electronics (sometimes known by its abbreviation, ''SFE'') is an electronics retailer in Niwot, Colorado, United States. It manufactures and sells microcontroller development boards and breakout boards. All products designed and produce ...
, the first manufacturer of the device:
According to Ytai Ben-Tsvi, the inventor of the device:
Technical details
IOIO V1

The first-generation IOIO boards (known as ''IOIO V1'') contain the following on-board features: This generation only supports USB slave mode, and requires a USB master as the host (PC or newer Android phones).
The IOIO V1 is a 3.3 V
logic level device, and features a 5 V DC/DC
switching regulator
A voltage regulator is a system designed to automatically maintain a constant voltage. A voltage regulator may use a simple feed-forward design or may include negative feedback. It may use an electromechanical mechanism, or electronic componen ...
and a 3.3V
linear regulator. The 5 V regulator supports a 5–15 V input range and up to 1.5 A load.
This facilitates charging a connected Android device as well as driving several small motors or similar loads.
IOIO OTG

The second-generation IOIO boards (known as ''IOIO-OTG'') contain the following on-board features:
IOIO OTG
SparkFun USA As the name suggests, a key feature of this generation is the introduction of USB-OTG
USB On-The-Go (USB OTG or just OTG) is a specification first used in late 2001 that allows USB devices, such as tablets or smartphones, to act as a host, allowing other USB devices, such as USB flash drives, digital cameras, mouse or keyboards ...
, supporting USB master or slave mode. This enables the IOIO to connect to older Android phones that only support USB slave mode, in addition.
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
A voltage regulator is a system designed to automatically maintain a constant voltage. A voltage regulator may use a simple feed-forward design or may include negative feedback. It may use an electromechanical mechanism, or electronic componen ...
and a 3.3 V linear regulator. The 5 V regulator supports a 5–15 V input range and up to 3 A load. This facilitates charging a connected Android device as well as driving several small motors or similar loads.
See also
* Arduino
* BeagleBoard
* Raspberry Pi
* PICkit
* Open-source robotics
* PIC microcontroller
References
{{Microchip Technology
Single-board computers
Robotics
Microchip Technology hardware
Do it yourself
Open-source robots
Open-source hardware