トレードマークの「オールホワイト」PCBを備えたIOIO-OTGボード | |
| 発売日 | 2011年4月 (2011年4月) |
|---|---|
| 導入価格 | 39.95ドル(IOIO-OTG)[ 1 ] |
| CPU | マイクロチップPIC24FJ256 [ 1 ] |
| 接続性 | ホスト : USB / USB-OTG、Bluetooth I/O : GPIO、PWM、I2C、SPI、UART、入力キャプチャ、静電容量センシング |
| Webサイト | github |
IOIO(ヨーヨーと発音)は、 Androidモバイルアプリケーションが外部電子機器と対話できるようにするオープンソースのPICマイクロコントローラベースのボードシリーズです。 [ 2 ] [ 3 ] [ 4 ]このデバイスは2011年にYtai Ben-Tsviによって発明され、SparkFun Electronicsによって最初に製造されました。[ 2 ] [ 5 ] [ 6 ] [ 7 ]「IOIO」という名前は、アプリケーションが外部入力(「I」)を受信し、外部出力(「O」)を生成することを可能にするデバイスの機能に由来しています。[ 4 ]
IOIOボードには、USBホスト/ USBスレーブとして機能し、接続されたAndroidデバイス上で実行されているAndroidアプリと通信する単一のPIC MCUが搭載されています。 [ 8 ]ボードはUSB、USB-OTG 、またはBluetooth経由で接続を提供し、Java APIを使用してAndroidアプリケーション内から制御できます。[ 1 ] [ 4 ] [ 9 ] [ 10 ] [ 11 ]
IOIOライブラリは、基本的なデジタル入出力とアナログ入力に加えて、 PWM、I2C、SPI、UART、入力キャプチャ、静電容量センシング、高度なモーター制御も処理します。[ 3 ] USB 2.0をスレーブモードで使用する古いAndroidデバイスに接続するために、新しいIOIOモデルはUSB On-The-Goを使用してそのようなデバイスのホストとして機能します。[ 1 ]一部のモデルはGoogle Open Accessory USBプロトコルもサポートしています。[ 4 ]
IOIOモーター制御APIは、最大9個のモーターと任意の数のバイナリアクチュエータを同期してサイクル精度で駆動できます。[ 12 ] [ 13 ]開発者は、一連の高レベルコマンドをIOIOに送信し、IOIOはオンチップで低レベルの波形生成を実行します。[ 12 ] [ 13 ] IOIOファームウェアは、ステッピングモーター、DCモーター、サーボモーターの3種類のモーターをサポートしています。[ 12 ] [ 13 ]
デバイスのファームウェアは、ユーザーが現場で更新することができます。[ 3 ]第一世代のデバイスの場合、更新はAndroidデバイスとGoogle Playで入手可能なIOIOマネージャーアプリケーションを使用して実行されます。[ 3 ] [ 14 ]第二世代のIOIO-OTGデバイスは、 IOIODudeアプリケーションを実行しているデスクトップコンピューターを使用して更新する必要があります。[ 15 ]
IOIOは、コンピューターとAndroidデバイスの両方をファーストクラスのホストとしてサポートし、両方のタイプのデバイスに正確なAPIを提供します。[ 3 ]第一世代のデバイスはBluetooth経由でのみPCと通信できますが、IOIO-OTGデバイスはBluetoothまたはUSBのいずれかを使用できます。[ 3 ] PCアプリケーションは、 JavaまたはC#のAPIを使用してボードと通信できます。Javaが公式APIです。[ 11 ] [ 16 ]
IOIOのハードウェアとソフトウェアは完全にオープンソースであり、[ 17 ]世界中で何百ものDIYロボットプロジェクトの作成を可能にしました。[ 18 ] [ 19 ] [ 20 ] [ 21 ] [ 22 ]
このボードは、学生が外部世界と対話できるAndroidアプリケーションを作成できるようにするためのさまざまな学習キットに採用されています。[ 3 ] [ 23 ] [ 24 ] [ 25 ]
Qualcomm Snapdragon Micro Roverは、AndroidスマートフォンとIOIOを活用してロボットのモーターとセンサーを制御する3Dプリントロボットです。 [ 26 ] [ 27 ]イスラエルの発明家Guy Hoffman博士が率いるチームは、IOIOを利用してロボットのハードウェアを制御する、感情に敏感なロボットを開発しました。[ 28 ]
IOIOは「オタクの楽園」「AndroidデバイスのUSB接続からI/Oを簡単に取得する方法」「AndroidスマートフォンをスーパーArduinoのようなものに変えるUSB I/Oブレークアウトボード」など、様々な形で評価されています。[ 18 ] [ 29 ] [ 30 ] [ 31 ] Scientific Computingの記事では「オタクへの贈り物」として推奨されています。[ 25 ]
オンラインエレクトロニクス雑誌SlashGearによると:
Android用のIOIOと熱センサーをいくつか接続すれば、室温を測定し、熱くなりすぎたらメールで知らせてくれるアプリを簡単に作ることができます。デジタル入出力、PWM、アナログ入力、I2C、SPI、UART制御など、豊富なI/Oオプションが用意されているので、家庭用サーモスタットを接続して、温度に応じて暖房を自動調整することも可能です。
このデバイスの最初の製造元 であるSparkFunによると、次の通りです。
Androidデバイスの優れたコンピューティングパワー、インターネット/Bluetooth接続、タッチスクリーン、そして様々なセンサーに加え、周辺機器を簡単に追加して外部とやり取りできる機能も備えています。また、IOIOを使用するにはAndroidデバイスのハードウェアやソフトウェアを変更する必要がないため、保証期間が維持されるだけでなく、ハッカー以外のユーザーにも機能を利用できます。
この装置の発明者であるYtai Ben-Tsvi氏によると:
Androidスマートフォンは、インターネット接続と豊富な内蔵センサー(カメラ、GPS、IMU、タッチスクリーン)を備えた強力なモバイルコンピューターです。Android SDK開発者の素晴らしい取り組みのおかげで、Androidスマートフォン向けのアプリケーション開発も非常に容易です。多くのアプリケーションにとって、本当に不足しているのは外部周辺機器との接続性です。IOIOはまさにこの点で役立ちます。IOIOは、Androidデバイスの本来の機能を外部回路との通信機能によって強化します。
— Ytai Ben-Tsvi、「IOIO の紹介 - Android 用 I/O」[ 33 ]

第一世代のIOIOボード(IOIO V1として知られる)には、以下のオンボード機能が搭載されている。[ 34 ] [ 35 ]この世代はUSBスレーブモードのみをサポートしており、ホストとしてUSBマスター(PCまたは新しいAndroidスマートフォン)が必要である。[ 2 ] [ 7 ]
IOIO V1は3.3Vロジックレベルデバイスで、5V DC/DCスイッチングレギュレータと3.3Vリニアレギュレータを備えています。[ 36 ] 5Vレギュレータは5~15Vの入力範囲と最大1.5Aの負荷をサポートします。[ 7 ]これにより、接続されたAndroidデバイスの充電や、複数の小型モータなどの負荷の駆動が可能になります。
| 特徴 | 詳細 | 説明 |
|---|---|---|
| USBコネクタ | A型、女性 | Android デバイスに接続するために使用されます。 |
| GNDピン | 9ピン | アース接続。 |
| VINピン | 3ピン | ボードへの電源供給に使用します。5~15Vの電圧を供給してください。 |
| 5Vピン | 3ピン | 通常、ボードがVINから電源供給されている場合、ユーザー電子機器への5V出力として使用されます。VINが接続されていない場合は、5V入力として使用できます。 |
| 3.3 Vピン | 3ピン | ユーザーの電子機器への 3.3 V 出力。 |
| I/Oピン | 48ピン | 汎用I/Oピン。ADC、入力キャプチャ、UART、PWM、コンパレータ、PIC MCU(ICSP)のプログラミングなど、特殊な機能を持つものもあります。 |
| 電源LED | IOIO に電源が供給されているときに点灯します。 | |
| ステータスLED | 電源投入時に短時間点灯し、その後アプリケーションの制御下になります。 | |
| MCLRピン | 通常は使用されません。IOIOボードに新しいブートローダーファームウェアをプログラミングするために使用されます。 | |
| 充電電流トリマー(CHG) | AndroidデバイスへのUSB VBUSラインに供給される充電電流の量を調整します。(+)方向に回すと充電電流が増加します。 |

第2世代IOIOボード(IOIO-OTGとして知られる)には、以下のオンボード機能が搭載されています。[ 37 ] [ 38 ] [ 39 ]その名の通り、この世代の重要な特徴はUSB-OTGの導入であり、USBマスターモードとスレーブモードをサポートしています。これにより、IOIOはUSBスレーブモードのみをサポートする古いAndroidスマートフォンにも接続できるようになりました。[ 1 ] [ 9 ]
IOIO-OTGは3.3Vロジックレベルデバイスで、一部のピンは5Vトレラントです。5V DC/DCスイッチングレギュレータと3.3Vリニアレギュレータを搭載しています。5Vレギュレータは5~15Vの入力範囲と最大3Aの負荷をサポートします。[ 1 ]これにより、接続されたAndroidデバイスの充電や、複数の小型モーターなどの負荷の駆動 が可能になります。
| 特徴 | 詳細 | 説明 |
|---|---|---|
| USBコネクタ | マイクロAB型、女性 | ホスト コンピュータ、Android デバイス、または Bluetooth ドングルに接続するために使用されます。 |
| 電源ジャック | 2ピンJST、メス | ボードへの電源供給に使用します。5~15Vの電圧を供給してください。 |
| GNDピン | 10ピン | アース接続。 |
| VINピン | 3ピン | 回路への供給電圧を出力するため、または電源ジャックへの代替入力として使用されます。 |
| 5Vピン | 3ピン | オンボード レギュレータからの 5V 出力。回路で使用できます。 |
| 3.3 Vピン | 3ピン | オンボード レギュレータからの 3.3 V を回路で使用できます。 |
| I/Oピン | 46ピン | 汎用I/Oピン。ADC、入力キャプチャ、UART、PWM、コンパレータ、PIC MCU(ICSP)のプログラミングなど、特殊な機能を持つものもあります。 |
| 電源LED | 赤 | IOIO に電源が供給されているときに点灯します。 |
| ステータスLED | 黄色 | アプリケーション制御による汎用オンボード LED。 |
| MCLRピン | 通常は使用されません。IOIOボードに新しいブートローダーファームウェアをプログラミングするために使用されます。 | |
| BOOTピン | 電源投入時にIOIOをブートローダモードにするために使用される特別なピンです。このピンはステータスLEDと共有されていることに注意してください。 | |
| 充電電流トリマー(CHG) | USBホストとして動作している際に、USBのVBUSラインに供給される電流量を調整します。通常、Androidを搭載したバッテリー駆動のアプリケーションで、Androidのバッテリーの急激な消耗を防ぐために使用されます。(+)方向に回すと充電電流が増加します。 | |
| ホストスイッチ | 「A」モードでは、IOIO-OTGは接続されているUSBコネクタ(micro-Aまたはmicro-B)に応じて、ホストとして動作するかデバイスとして動作するかを自動的に検出します。micro-Bタイプの非標準USBケーブルやアダプタをサポートするには、スイッチを「H」の位置に切り替えてホストモードを強制します。 |