ArticleslgStudy

engineering

IOIO

IOIO is a engineering topic covered in the lgStudy science library. This page brings together a partial reference excerpt, illustrations, worked examples, real-world applications and a short study plan, so you can understand IOIO rather than just read about it. In short: 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.

IOIO — main illustration
IOIO — illustration

Key takeaways

  • IOIO belongs to engineering; place it in that map before memorising details.
  • Learn the definition first, then one example that makes the definition concrete.
  • Connect IOIO to a quantity you can measure, compute or draw — that is where exam questions come from.
  • Reproduce the core statement of IOIO from memory before moving on to harder problems.

Reference excerpt

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. The board provides connectivity via USB, USB-OTG or Bluetooth, and is controllable from within an Android application using the Java API. 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. 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. 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. 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 motors 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. 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. 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:

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. 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. 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.

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 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: 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. 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. 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

Illustrations

IOIO illustration
IOIO illustration
IOIO: First-generation IOIO pinout/connection diagram
First-generation IOIO pinout/connection diagram
IOIO: IOIO-OTG pinout/connection diagram
IOIO-OTG pinout/connection diagram

Worked examples

Example 1 — a first encounter with IOIO

Start with the simplest possible case. Write down what IOIO claims or describes in one sentence, then invent the smallest concrete situation in which that sentence is true. In engineering, the smallest case is usually a single object, a single equation or a single measurement. Check that every symbol or term in your sentence has a meaning in that case.

Example 2 — changing one variable

Take the situation from Example 1 and change exactly one quantity: double it, halve it, or set it to zero. Predict what should happen to IOIO before you calculate. Comparing your prediction with the result is the fastest way to find out whether you understand the idea or only the words.

Example 3 — an exam-style question

Typical questions about IOIO ask you to (a) state it precisely, (b) apply it to given data, and (c) explain a limitation. Practise writing all three answers in under five minutes; the third part is what separates a full-mark answer from an average one.

Applications of IOIO

In research
IOIO appears in engineering research whenever the underlying quantities have to be modelled precisely. Papers usually cite it as a starting assumption and then explore where it breaks down.
In technology and industry
Engineering practice reuses IOIO in design rules, simulations and safety margins. Knowing the idea lets you read a specification sheet and understand why the numbers look the way they do.
In the classroom
IOIO is common in secondary-school and first-year university syllabi. It links to neighbouring topics Do it yourself, Microchip Technology hardware, Open-source hardware, so understanding it makes those chapters shorter.
In everyday life
Look for IOIO outside the textbook — in sport, cooking, traffic, electronics or the sky above you. An example you found yourself is remembered far longer than one you were given.

Affiliate

Preply — study more efficiently by working with a personal tutor. 50% off.

How to study IOIO in 20 minutes

  1. Read the reference excerpt below once, without taking notes.
  2. Close the page and write down what IOIO means in your own words.
  3. Compare your version with the excerpt and mark what you missed.
  4. Work through the three examples above with pen and paper.
  5. Explain IOIO out loud to somebody else — or to Teacher Smith in the lgStudy chat.

Frequently asked questions

What is IOIO in simple terms?

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.

Why does IOIO matter?

Because it connects several engineering ideas at once: it gives you a definition you can apply, a quantity you can calculate, and a way to check whether a result is plausible.

How should I study IOIO?

Read the excerpt, restate it from memory, then work through the examples and applications listed on this page. The five-step study plan above takes about twenty minutes.

What does this page cover?

It gives you a compact reference excerpt plus original lgStudy explanations, examples, applications and study material on IOIO.

Tags

  • Do it yourself
  • Microchip Technology hardware
  • Open-source hardware
  • Open-source robots
  • Robotics engineering
  • Single-board computers

Keep exploring