IOIO

Last updated

IOIO
IOIOLogo.png
IOIO OTG Cropped.jpg
IOIO-OTG Board, with its trademark "all white" PCB
Release dateApril 2011;13 years ago (2011-04)
Introductory price$39.95 (IOIO-OTG) [1]
CPU Microchip PIC24FJ256 [1]
ConnectivityHost : USB/USB-OTG, Bluetooth
I/O : GPIO, PWM, I2C, SPI, UART, Input capture, Capacitive sensing
Website github.com/ytai/ioio/

IOIO (pronounced yo-yo) is a series of open source PIC microcontroller-based boards that allow Android mobile applications to interact with external electronics. [2] [3] [4] The device was invented by Ytai Ben-Tsvi in 2011, and was first manufactured by SparkFun Electronics. [2] [5] [6] [7] The name "IOIO" is inspired by the function of the device, which enables applications to receive external input ("I") and produce external output ("O"). [4]

Contents

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. [8] The board provides connectivity via USB, USB-OTG or Bluetooth, and is controllable from within an Android application using the Java API. [1] [4] [9] [10] [11]

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. [3] 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. [1] Some models also support the Google Open Accessory USB protocol. [4]

The IOIO motor control API can drive up to 9 motors and any number of binary actuators in synchronization and cycle-accurate precision. [12] [13] Developers may send a sequence of high-level commands to the IOIO, which performs the low-level waveform generation on-chip. [12] [13] The IOIO firmware supports 3 different kinds of motors; stepper motors, DC motors and servo motors. [12] [13]

Device firmware may be updated on-site by the user. [3] For first-generation devices updating is performed using an Android device and the IOIO Manager application available on Google Play. [3] [14] Second-generation IOIO-OTG devices must be updated using a desktop computer running the IOIODude application. [15]

The IOIO supports both computers and Android devices as first-class hosts, and provides the exact API on both types of devices. [3] First-generation devices can only communicate with PCs over Bluetooth, while IOIO-OTG devices can use either Bluetooth or USB. [3] PC applications may use APIs for Java or C# to communicate with the board; Java being the official API. [11] [16]

Applications

The IOIO hardware and software is entirely open source, [17] and enabled the creation of hundreds of DIY robotic projects around the world. [18] [19] [20] [21] [22]

The board has been featured in various learning kits, which aim to help students write Android applications that can interact with the external world. [3] [23] [24] [25]

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. [26] [27] 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. [28]

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". [18] [29] [30] [31] It featured as a recommended "gift for geeks" in a Scientific Computing article. [25]

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!", SlashGear [18] [32]

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", SparkFun [8] [32]

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" [33]

Technical details

IOIO V1

First-generation IOIO pinout/connection diagram IOIO V1 Pins.png
First-generation IOIO pinout/connection diagram

The first-generation IOIO boards (known as IOIO V1) contain the following on-board features: [34] [35] This generation only supports USB slave mode, and requires a USB master as the host (PC or newer Android phones). [2] [7]

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. [36] The 5 V regulator supports a 5–15 V input range and up to 1.5 A load. [7] This facilitates charging a connected Android device as well as driving several small motors or similar loads.

FeatureDetailsDescription
USB connectortype A, femaleUsed to connect to the Android device.
GND pins9 pinsGround connection.
VIN pins3 pinsUsed for power supply to the board. Voltage between 5 and 15 V should be supplied.
5 V pins3 pinsNormally 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 pins3 pins3.3 V output to user electronics.
I/O pins48 pinsGeneral purpose I/O pins. Some have special functions, such as ADC, Input Capture, UART, PWM, Comparator or for programming the PIC MCU (ICSP).
Power LEDLights when the IOIO is getting power.
Stat LEDLights briefly during power-up and then becomes under application control.
MCLR pinNot 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

IOIO-OTG pinout/connection diagram IOIO OTG Pins.png
IOIO-OTG pinout/connection diagram

The second-generation IOIO boards (known as IOIO-OTG) contain the following on-board features: [37] [38] [39] 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. [1] [9]

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. [1] This facilitates charging a connected Android device as well as driving several small motors or similar loads.

FeatureDetailsDescription
USB connectormicro-AB, femaleUsed to connect to host computer, an Android device or a Bluetooth dongle.
Power jack2-pin JST, femaleUsed for power supply to the board. Voltage between 5–15 V should be supplied.
GND pins10 pinsGround connection.
VIN pins3 pinsUsed for outputting the supply voltage to your circuit, or as an alternative input to the power jack.
5V pins3 pins5V output from the on-board regulator, which can be used in your circuit.
3.3 V pins3 pins3.3 V from the on-board regulator, which can be used in your circuit.
I/O pins46 pinsGeneral purpose I/O pins. Some have special functions, such as ADC, Input Capture, UART, PWM, Comparator or for programming the PIC MCU (ICSP).
PWR LEDredLights when the IOIO is getting power.
STAT LEDyellowGeneral purpose on-board LED, under application control.
MCLR pinNot normally used. Its purpose is for programming new bootloader firmware on the IOIO board.
BOOT pinSpecial 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 switchIn "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

Related Research Articles

<span class="mw-page-title-main">AVR microcontrollers</span> Family of microcontrollers

AVR is a family of microcontrollers developed since 1996 by Atmel, acquired by Microchip Technology in 2016. These are modified Harvard architecture 8-bit RISC single-chip microcontrollers. AVR was one of the first microcontroller families to use on-chip flash memory for program storage, as opposed to one-time programmable ROM, EPROM, or EEPROM used by other microcontrollers at the time.

<span class="mw-page-title-main">Big Trak</span> Programmable toy created by Milton Bradley in 1979

BIG TRAK / bigtrak is a programmable toy electric vehicle created by Milton Bradley in 1979, resembling a futuristic Sci-Fi tank / utility vehicle. The original Big Trak was a six-wheeled tank with a front-mounted blue "photon beam" headlamp, and a keypad on top. The toy could remember up to 16 commands, which it then executed in sequence. There also was an optional cargo trailer accessory, with the UK version being white to match its colour scheme; once hooked to the Bigtrak, this trailer could be programmed to dump its payload.

<span class="mw-page-title-main">Arduino</span> Italian open-source hardware and software company

Arduino is an Italian open-source hardware and software company, project, and user community that designs and manufactures single-board microcontrollers and microcontroller kits for building digital devices. Its hardware products are licensed under a CC BY-SA license, while the software is licensed under the GNU Lesser General Public License (LGPL) or the GNU General Public License (GPL), permitting the manufacture of Arduino boards and software distribution by anyone. Arduino boards are available commercially from the official website or through authorized distributors.

<span class="mw-page-title-main">Robotics simulator</span> Simulator to create applications for physical robots

A robotics simulator is a simulator used to create an application for a physical robot without depending on the physical machine, thus saving cost and time. In some case, such applications can be transferred onto a physical robot without modification.

libusb

libusb is a library that provides applications with access for controlling data transfer to and from USB devices on Unix and non-Unix systems, without the need for kernel-mode drivers.

<span class="mw-page-title-main">BeagleBoard</span> Single board computer

The BeagleBoard is a low-power open-source single-board computer produced by Texas Instruments in association with Digi-Key and Newark element14. The BeagleBoard was also designed with open source software development in mind, and as a way of demonstrating the Texas Instrument's OMAP3530 system-on-a-chip. The board was developed by a small team of engineers as an educational board that could be used in colleges around the world to teach open source hardware and software capabilities. It is also sold to the public under the Creative Commons share-alike license. The board was designed using Cadence OrCAD for schematics and Cadence Allegro for PCB manufacturing; no simulation software was used.

<span class="mw-page-title-main">Single-board microcontroller</span> Microcontroller built onto a single printed circuit board

A single-board microcontroller is a microcontroller built onto a single printed circuit board. This board provides all of the circuitry necessary for a useful control task: a microprocessor, I/O circuits, a clock generator, RAM, stored program memory and any necessary support ICs. The intention is that the board is immediately useful to an application developer, without requiring them to spend time and effort to develop controller hardware.

<span class="mw-page-title-main">STM32</span> ARM Cortex-M based Microcontrollers by STMicroelectronics

STM32 is a family of 32-bit microcontroller integrated circuits by STMicroelectronics. The STM32 chips are grouped into related series that are based around the same 32-bit ARM processor core: Cortex-M0, Cortex-M0+, Cortex-M3, Cortex-M4, Cortex-M7, Cortex-M33. Internally, each microcontroller consists of ARM processor core(s), flash memory, static RAM, debugging interface, and various peripherals.

OpenXC is a hardware and software API for automobiles developed by Ford Bug Labs and proposed as an open standard.

ISEE is a European multinational company that designs and manufactures small computer-on-modules (COMs), single-board computers, expansion boards, radars and other embedded systems. The abbreviation of ISEE refers to Integration, Software & Electronics Engineering. Their products are based on the IGEP Technology, the ISEE Generic Enhanced Platform using Texas Instruments OMAP processors.

<span class="mw-page-title-main">Intel Edison</span> Computer-on-module by Intel

The Intel Edison is a computer-on-module that was offered by Intel as a development system for wearable devices and Internet of Things devices. The system was initially announced to be the same size and shape as an SD card and containing a dual-core Intel Quark x86 CPU at 400 MHz communicating via Bluetooth and Wi-Fi. A later announcement changed the CPU to a 500 MHz Silvermont dual-core Intel Atom CPU, and in September 2014 a second version of Edison was shown at IDF, which was bigger and thicker than a standard SD card.

<span class="mw-page-title-main">Salvius (robot)</span> Open source humanoid robot

Salvius is an open source humanoid robot built in the United States in 2008, the first of its kind. Its name is derived from the word 'salvaged', being constructed with an emphasis on using recycled components and materials to reduce the costs of designing and construction. The robot is designed to be able to perform a wide range of tasks due to its humanoid body structure planning. The primary goal for the Salvius project is to create a robot that can function dynamically in a domestic environment.

<span class="mw-page-title-main">Arduino Uno</span> Microcontroller board

The Arduino Uno is an open-source microcontroller board based on the Microchip ATmega328P microcontroller (MCU) and developed by Arduino.cc and initially released in 2010. The microcontroller board is equipped with sets of digital and analog input/output (I/O) pins that may be interfaced to various expansion boards (shields) and other circuits. The board has 14 digital I/O pins, 6 analog I/O pins, and is programmable with the Arduino IDE, via a type B USB cable. It can be powered by a USB cable or a barrel connector that accepts voltages between 7 and 20 volts, such as a rectangular 9-volt battery. It has the same microcontroller as the Arduino Nano board, and the same headers as the Leonardo board. The hardware reference design is distributed under a Creative Commons Attribution Share-Alike 2.5 license and is available on the Arduino website. Layout and production files for some versions of the hardware are also available.

<span class="mw-page-title-main">Micro Bit</span> Single-board computer designed by the BBC for use in computer education

The Micro Bit is an open source hardware ARM-based embedded system designed by the BBC for use in computer education in the United Kingdom. It was first announced on the launch of BBC's Make It Digital campaign on 12 March 2015 with the intent of delivering 1 million devices to pupils in the UK. The final device design and features were unveiled on 6 July 2015 whereas actual delivery of devices, initially planned for September 2015 to schools and October 2015 to general public, began on 10 February 2016.

<span class="mw-page-title-main">ESP8266</span> System-on-a-chip microcontroller model with Wi-Fi

The ESP8266 is a low-cost Wi-Fi microcontroller, with built-in TCP/IP networking software, and microcontroller capability, produced by Espressif Systems in Shanghai, China.

<span class="mw-page-title-main">ESP32</span> Low-cost, low-power SoC microcontrollers with Bluetooth and Wi-Fi

ESP32 is a series of low-cost, low-power system-on-chip microcontrollers with integrated Wi-Fi and dual-mode Bluetooth. The ESP32 series employs either a Tensilica Xtensa LX6 microprocessor in both dual-core and single-core variations, an Xtensa LX7 dual-core microprocessor, or a single-core RISC-V microprocessor and includes built-in antenna switches, RF balun, power amplifier, low-noise receive amplifier, filters, and power-management modules. Commonly found either on device specific PCBs or on a range of development boards with GPIO pins and various connectors depending on the model and manufacturer of the board.

<span class="mw-page-title-main">Comparison of single-board microcontrollers</span>


Comparison of Single-board microcontrollers excluding Single-board computers

<span class="mw-page-title-main">Webduino</span>

The BPI Bit is an ESP32 with Xtensa 32bit LX6 single/dual-core processor based embedded system

<span class="mw-page-title-main">RP2040</span> ARM-architecture microcontroller by the Raspberry Pi Foundation

RP2040 is a 32-bit dual ARM Cortex-M0+ microcontroller integrated circuit by Raspberry Pi Ltd. In January 2021, it was released as part of the Raspberry Pi Pico board. Its successor is the RP2350 series.

References

  1. 1 2 3 4 5 6 IOIO-OTG, DEV-12633, SparkFun
  2. 1 2 3 Lutz, Zachary (10 April 2011). "SparkFun intros IOIO for Android, a hack-free breakout box to get your mind spinning". Engadget.
  3. 1 2 3 4 5 6 7 IOIO Mint - Portable Android Development Kit, AdaFruit
  4. 1 2 3 4 SparkFun Hosts Android Development Class with IOIO, PRNewsWire, BOULDER, Colo., June 27, 2012
  5. IOIO Wiki, GitHub, "And this is the blog of Ytai, the inventor of IOIO"
  6. Ytai Ben-Tsvi's Blog, Blogspot
  7. 1 2 3 IOIO for Android, DEV-10585, SparkFun
  8. 1 2 IOIO Android Interface Board Retail, SparkFun USA
  9. 1 2 O'Brien, Terrence (30 May 2012). "Second-gen IOIO in the works: embraces the wireless revolution, cuts cost". Engadget.
  10. IOIO-OTG Beginners Guide, SparkFun
  11. 1 2 IOIO Java Library Basics, GitHub
  12. 1 2 3 Motor control, IOIO Wiki
  13. 1 2 3 IOIO Plotter and the Motor Control Library, MAY 14, 2013, Ytai Ben-Tsvi Blog
  14. IOIO Manager, Google Play Store
  15. IOIO-OTG Bootloader and IOIODude, IOIO Wiki
  16. IOIODotNet, GitHub
  17. IOIO, GitHub
  18. 1 2 3 Davies, Chris (8 April 2011). "IOIO for Android gets video demos: Geek's paradise!". Slashgear.
  19. Projects built with IOIO, Pinterest
  20. DIY Android-powered tank, Edwin Kee, 08/10/2011, Ubergeek
  21. DIY smartphone thermostat has us wondering what happened to Android@Home, 15 Oct 2012, Kevin Krause, Phandroid
  22. Breathing on the IOIO board for an Android Breathalyser, GadgetMaster, Electronics Weekly, 11 May 2012
  23. IOIO Inventor's Kit, RB-Spa-934 Archived 2015-07-12 at the Wayback Machine , RobotShop
  24. SparkFun Inventor's Kit for IOIO, SparkFun
  25. 1 2 Joyce, John R. (13 November 2014). "Holiday Shopping? 25 Gifts Sheldon and Friends would Love". Scientific Computing.
  26. Snapdragon Micro Rover, Qualcomm
  27. MENDOZA, HANNAH ROSE (21 September 2014). "Qualcomm's 3D Printed Micro Rover Controlled by Smartphones". 3DPrint.
  28. 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.
  29. SparkFun IOIO for Android makes Arduino-style hacks simple, Android Community, April 7, 2011, Chris Davies
  30. IOIO for Android detailed: Project samples from USB breakout board, Android Community, April 8, 2011, Chris Davies
  31. "IOIO board gets I/O from an Android device's USB connection". Electronics Weekly. 19 August 2011.
  32. 1 2 "Android phones hack their way with IOIO breakout board". Electronics Weekly, Gadget Master. 26 July 2011.
  33. Meet IOIO - I/O for Android, Blog of Ytai Ben-Tsvi
  34. Getting To Know The IOIO-V1 Board, IOIO Wiki
  35. IOIO V1, SparkFun USA
  36. "Reliance Electric FlexPak 3000 0-58770-420 | Automation Industrial". 0-58770-420.com. Retrieved 13 December 2023.
  37. Getting To Know The IOIO-OTG Board, IOIO Wiki
  38. IOIO OTG, SparkFun USA
  39. IOIO OTG, SparkFun USA