Your SlideShare is downloading. ×
イチからはじめるUSB Host API
イチからはじめるUSB Host API
イチからはじめるUSB Host API
イチからはじめるUSB Host API
イチからはじめるUSB Host API
イチからはじめるUSB Host API
イチからはじめるUSB Host API
イチからはじめるUSB Host API
イチからはじめるUSB Host API
イチからはじめるUSB Host API
イチからはじめるUSB Host API
イチからはじめるUSB Host API
イチからはじめるUSB Host API
イチからはじめるUSB Host API
イチからはじめるUSB Host API
イチからはじめるUSB Host API
イチからはじめるUSB Host API
イチからはじめるUSB Host API
イチからはじめるUSB Host API
イチからはじめるUSB Host API
イチからはじめるUSB Host API
イチからはじめるUSB Host API
イチからはじめるUSB Host API
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

イチからはじめるUSB Host API

8,560

Published on

※【訂正】資料 p.4のMicrobridgeのデバイス給電の項目は「Android→デバイス」になっていますが正しくは「デバイス→Android」です (@kumadasu さんthx)

※【訂正】資料 p.4のMicrobridgeのデバイス給電の項目は「Android→デバイス」になっていますが正しくは「デバイス→Android」です (@kumadasu さんthx)

Published in: Technology
0 Comments
10 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
8,560
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
21
Comments
0
Likes
10
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. イチからはじめる USB Host API すずき @ksksue
  • 2. でんもく会「イチからはじめる」シリーズ コンセプト:オープンスキル =オープンソース+オープンハードウェア と理解しました裏コンセプト:技術教えるからおもしろいもの作ってボクを楽しませてよ
  • 3. イチからはじめるUSB Host API Android 3.1(Honeycomb)から実装されたUSB Host APIの紹介 USB Host APIとタイトル銘打ってますが、対象が広 すぎるので、このプレゼンではUSBシリアルにしぼ る方向で デモ: GR-SAKURA シリアル通信で エコーバック させてAndroid で表示
  • 4. Androidと外部機器を有線接続させる方式まとめ USB Host API ADK MicroBridge特徴 様々なデバイスに 通信プロトコルを すべてのバージョ 対応可。自由度が Googleがサポート。 ンのAndroidに繋が 高い。 るAndroid対応バー 3.1以降 2.3.4以降 すべてジョンデバイス選択幅 広 限定 限定デバイス給電 Android→デバイス デバイス→Android Android→デバイスプログラミング難 高 中 中易度対象デバイス例 Arduino, USBシリ ADK2012, Arduino Arduino + USBホス アル, マイコン, ADK トシールド Midi, Kinect,etc…
  • 5. USB Host APIとADKの使い分け1 給電方式による使い分け  ADK : ○ Android端末の電源を持続させる ☓ 別電源が必要(ACアダプタorバッテリー)  使用用途:長時間据え置き、ロガー  USB Host API : ○ Android端末の電源を使える ☓ 長時間の使用には向いていない  使用用途:短時間だけ使用するツール、デモ 対象デバイスによる使い分け  ADK : USB Host機能がついたAVR(Arduino)/PIC系のADK 対応デバイス  USB Host API : 大抵のデバイスOK(アイソクロナス転送 以外)
  • 6. USB Host APIとADKの使い分け2 プログラミング難易度による使い分け  ADK:アプリプログラミングがラク  USB Host API : アプリプログラミング +USB基礎知識+USBプログラミング+USBデバッグ 技術的な障壁が高い・・・ →プロトコル部分をライブラリ化することでADK並 にラクに開発できる環境になる…ということで USBシリアル通信ライブラリ「FTDriver」を githubで公開
  • 7. USB Host API クラスClass DescriptionUsbManager Allows you to enumerate and communicate with connected USB devices.UsbDevice Represents a connected USB device and contains methods to access its identifying information, interfaces, and endpoints.UsbInterface Represents an interface of a USB device, which defines a set of functionality for the device. A device can have one or more interfaces on which to communicate on.UsbEndpoint Represents an interface endpoint, which is a 6つ以上のクラス, communication channel for this interface. An interface 数十メソッド can have one or more endpoints, and usually has input and output endpoints for two-way communication with (めんどくさい!) the device.UsbDeviceConnection Represents a connection to the device, which transfers data on endpoints. This class allows you to send data back and forth sychronously or asynchronously.UsbRequest Represents an asynchronous request to communicate with a device through aUsbDeviceConnection.UsbConstants Defines USB constants that correspond to definitions in linux/usb/ch9.h of the Linux kernel.
  • 8. FTDriver https://github.com/ksksue/FTDriver USBシリアル通信用Androidライブラリ  コンセプト:Arduinoライクなシンプルなインタフェース でシリアル通信しよう ArduinoとFTDriverのシリアル通信リファレンス比較 Arduino FTDriver(Android) Serial.begin(9600); Serial.begin(9600); Serial.end(); Serial.end(); readByte = Serial.read(readBuf); Serial.read(); Serial.write(writeBuf); Serial.write(writeBuf);
  • 9. USB Host API(FTDriver)を使った事例紹介~AndroidとArduinoでシリアル通信~
  • 10. USB Host API(FTDriver)を使った事例紹介 ~ フルカラーLED制御~ @juju_suuさん 構成 Androidタブレット 動画再生 フルカラー LEDパネルhttp://www.youtube.com/watch?v=ns4DKYXES_o
  • 11. USB Host API(FTDriver)を使った事例紹介~シリアルサーボ制御~ akagawaさんhttp://www.youtube.com/watch?v=QZOVAMQilCg
  • 12. 対応状況(2012/10/6現在)FTDI 機種 OK/NG/?・FT232RL・FT232H Arduino UNO OK・FT2232C/D/HL Arduino MEGA OK・FT4232HL Arduino ADK OK・FT230X Arduino Leonard NG mbed NXPラトックシステム ? LPC11U24・REX-USB60F/MI mbed NXP OK LPC1768 NXP LPC1769 OK GR-SAKURA OK PSoC ? Arduino OK Duemilanove 秋月FT232RL Harpy nano OK USBシリアルモジュール
  • 13. イチからはじめるUSB Host API FTDriver ゴール:USBシリアルを使ってAndroidとマイコンを つなげエコーバックさせてみよう
  • 14. USBシリアル接続に必要な小道具 USB A type ⇔ micro B type 変換コネクタ USB A type ⇔ micro B type 変換コネクタ
  • 15. /*GR-SAKURA Sketch Template Version: V1.01*/ 接続先:GR-SAKURA #include <rxduino.h> #define INTERVAL 10 void setup() { Serial.begin(9600); pinMode(PIN_LED0,OUTPUT); pinMode(PIN_LED1,OUTPUT); digitalWrite(PIN_LED0, 1); } void loop() { if(Serial.available() > 0) {シリアル受信した文字をそのまま送信 digitalWrite(PIN_LED1, 1); Serial.write(Serial.read()); delay(INTERVAL); digitalWrite(PIN_LED1, 0); } else { delay(INTERVAL); } }
  • 16. FTDriver チュートリアル Androidアプリhttps://github.com/ksksue/FTDriverbegin(), end(), read(), write()を使ったUSBシリアルプログラミングのチュートリアル 1. Beginで接続 2. Writeで書き込み 3. Readで読み込み 4. Endで切断 Readボタンタップすると エコーバックを表示
  • 17. FTDriver Tutorial 1 のソースコードif(mSerial.begin(FTDriver.BAUD9600)) { /* オープンが成功したときの処理 */} else { /* オープンが失敗したときの処理 */}/* 一度に最大4096byte受信可能 */byte[] rbuf = new byte[4096];/* 受信したバイト数が戻り値 */len = mSerial.read(rbuf);String wbuf = "FTDriver Test.";/* Stringをbyte配列に変換して渡す */mSerial.write(wbuf.getBytes());mSerial.end();
  • 18. 自分のAndroidはUSB Host API対応? 1/4 ソースコード・アプリを公開していると ときどき質問がくる エクアドル 「ぼくのタブレット、USBキーボードはうごくのに、キミのアプリはうごかないってどういうことさ?」(エクアドル在住アンドレスさん)
  • 19. 自分のAndroidはUSB Host API対応?2/4 AndroidのUSBホスト機能はLinux USBホスト機能と USB Host APIの2種類存在 Linux USB ホスト USB Host API目的・用途 エンドユーザがUSBキー 開発者がUSBホスト機能を ボード/マウス/USBメモ 使ってアプリケーション開 リを使える。 発できる。Androidバージョン Android3.1以前でも動作 Android3.1以降対応内容 USB2.0の USB 2.0 USB Mass Strage アイソクロナス転送を除く Class(USBメモリ)、USB 3種類の転送方式に対応。 HID Class(USBキーボー プロトコルがわかれば開発 ド、USBマウスなど) 者の手でUSBデバイスに対 応可 ※「Linux USB ホスト」という名称はUSB Host APIと区別しやすくするため 勝手につけた名称です
  • 20. 自分のAndroidはUSB Host API対応?3/4 ややこしいところ Android3.1以降であっても端末によってはサポートされ ていない アンドレスさんのケース  中華Padは非サポートが多い  Galaxy Nexus(Android 4.0)は日本版だけサポートされていな かった。後のアップデートでサポート 自分のAndroidは対応しているかどうか どうやってチェックすればいいの?  Web情報(少ない)  Android アプリ「USB Host Viewer」,「USB Device Info」をイ ンストール、デバイスを接続して情報が表示されるかチェック (これがイチバン確実)  そもそも上記アプリがインストールできない場合はアウト
  • 21. 自分のAndroidはUSB Host API対応? 4/4 …という内容を踏まえて返信 エクアドル 「中華Pad乙。m9」
  • 22. まとめ USB Host APIのとくちょう USB Host APIを使ったライブラリでぐっと開発効率 がよくなる FTDriverでできること紹介 FTDriverでGR-SAKURAからのエコーバック表示 自分のAndroidは対応してる?
  • 23.  ご清聴ありがとうございました

×