User Tools

Site Tools


ioio_shield_adapter_isa

IOIO Shield Adapter (ISA)

ISA with an attached IOIO-OTG.
ISATestV1.apk for testing the Shield Adapter.

Purpose

The ISA Board is an adapter board allowing developers to use Arduino style shields with the IOIO. It is a consumer spinoff of the Cylon HAB Dock Board. The idea is to connect a IOIO to a standard Arduino shield by plugging one into each side. The ISA board does not have the connections for an altimeter and TNC that the Cylon HAB Board has.

Quickstart Guide

Compatability

The Website ShieldList.org is the best consolidated source for Arduino Shield information. My Compatibility List is a starting point to verify if a shield should work with the IOIO adapter. Keep in mind, that I have verified the shields on the list for pin compatability only. Some shields may not work due to USB latency issues inherent in the IOIO design. Also, many shields probably aren't very useful with a IOIO, so those are going to be the last to be checked.

Powering the Board

The Vin Bus on the board takes power from either the screw terminals or the JST connector. Connect 5-15 VDC to either one. To send this power to the attached shield, attach a shunt to the jumper marked Vin.

Assembly

So you bought a kit and need to do some serious soldering. Learn from my mistakes and follow The ISD Assembly Guide.

Plugging in the IOIO

This is important- There are two types of IOIO's out there the original IOIO and the IOIO-OTG. They have slight, but important differences in the pin configuration.

Notice pins are soldered to the inner pads on the power and ground pins.
Notice all of the pins are on the outer ring of solder pads.

IOIO-OTG

  • Solder headers to your IOIO-OTG along the outer ring.

IOIO Original

  • Solder headers to I/O Pins 1-46.
  • Solder headers to inboard most power pins only.

Choosing a Shield

  • Verify the power requirements for your shield.
    • Each power bus (Vin, 5V, and 3.3V) can be selectively coupled to the Shield. Ground is always coupled. You may want to power your shield separately if it requires more power than the IOIO can supply.
    • After verifying that the regulators on-board the IOIO can handle the current draw of your shield, place a shunt across the headers marked 5V or 3.3V.
  • Remember: when you shunt the headers, the power buses will be coupled between the IOIO and the shield, make sure you don't have competing voltage regulators if you're using multiple power sources.

Using Analog Inputs

  • Analog Arduino Pins 0-5 are connected to IOIO pins 40-45.
  • Pins 4 and 5 on the Arduino function as A/D and serial I/O, so jumpers must be used to select their function.
  • The 6 position DIP switch will activate a scaling circuit that will scale a 5V analog signal from the Shield to a 3.3V signal.
    • The “ON” position will pass the voltage without scaling.
    • The “OFF” position will scale the signal.

Using i2c

  • There are two i2c Busses on the board.
    • The first connects to Shield A/D pins 4 and 5 through a jumper.
    • The second is connected to screw terminals and has pull up resistors that can be activated by switching on the 2 position dip switch.

Testing

  • ISA Test App for android allows you to test your shield adapter by reading Analog Inputs and providing a interface to toggle Digital Outputs.
  • Alternately, you can download the zip archive of the project here and compile it in eclipse.

Programming in Eclipse

  • The most recent pin mapping is available in a java class.
    • Download ISA.java.zip
    • Unzip it and move ISA.java to the src/(your package name)/ directory of your project.
    • Don't forget to change the package declaration at the top to match your package.
    • If you want to access a pin, use ISA.ARDUINO_(pin). For example:
      • Relay1 = ioio_.openDigitalOutput(ISA.ARDUINO_4);

Pin Mapping

Mapping Pins from the IOIO to the Shield Connector must take 3 considerations into account:

  • Differing and future Arduino Designs.
  • Ability to plug Arduino and shield combo into IOIO (faster processing with direct uC control)
  • IOIO pin capabilities.
  • Arduino pin capabilities.

As much as possible I would like to map pins 1-1 so Arduino 13 goes to IOIO 13, but it's more important to match function. Unfortunately, the pin mapping is a work in progress as I flesh out problems. Here are the pin mappings for the various ISDs:

Download the ISA Pinout Class and add it to your project so you don't have to worry about looking it up.

Design

Power Connector

I want to use a power connector that is universally available, rigid, and polarized. The current front-runner is a polarized Molex connector.

  • Deans connectors are prevalent in the R/C world, but have limited options and are proprietary.
  • Barrel connectors are common, but you never know what the voltage is going to be, and they're always the wrong size.
  • Molex connectors are everywhere from computer power supplies to R/C, and batteries. They're polarized, easy to trouble shoot, and since they use .1“ spacing, you can hack it easily.

Power Monitor

Common LiPo batteries can overheat if discharged too much. Therefore, the ability to monitor Vin is necessary. Vin can range from 5V-15V, but the IOIO can only read from 0-3.3V. Version 1 will implement a simple voltage divider to scale the 15V max down to 3.3V. Future boards may incorporate a scale/shift to translate 5-15V to 0-3.3V

DIP Switches

It's great to have scaling for A/D's and pull-ups on the i2c lines, but sometimes you don't need it, want it, or it would get in the way. Rather than have users scratch traces or remove components, I use DIP switches to cut out those functions if needed.

Scaling Resistors

The Arduino has 5V A/D converters, thus any shield designed for the Arduino should have analog signals that take advantage of that entire range. The IOIO A/D Converters require a 3.3V signal, so scaling is provided via 5.1k and 10k resistors. If you develop your own shield and you are using 3.3V signals, the DIP switches can be used to route any signal on the Analog Pins directly to the IOIO.

Screw Terminals

Screw Terminals break out IOIO Pins 20-31. 10k Pull-Up resistors are provided on DA2 and CL2 for the i2c bus. These can be cut out with the lower two DIP switches.

i2c Busses

The IOIO has 3 i2c busses.

Parts List

[[Version 1 Parts List]]

Version 2 Parts List

Description Digikey Part Number Quantity
Shunt A26228-ND 5
10k Resistors P10KGTR-ND 16
3 Pin Male Headers Row of 12S1211E-12-ND
21 pin Female HeaderS7054-ND 2
11 Pin Female HeaderS7044-ND 1
4 Pin Female HeaderS7037-ND 1
2 Pin Female HeaderS7035-ND 1
2 Position DipCT2192LPST-ND 1
6 Position DipCT2196LPST-ND 1
15 Position Screw Terminal277-1732-ND 1
13 Pin Female HeaderS7046-ND 1
8 Pin Female HeaderS7041-ND 2
JST Connector455-1749-1-ND 1
5.4kP5.36KHTR-ND 1
1k SMD ResistorP1.0KGTR-ND 6
1.5k Resistor Array (7)4608X-1-152LF-ND 1
ioio_shield_adapter_isa.txt · Last modified: 2014/11/04 11:03 by admin