SlideShare a Scribd company logo
1 of 23
イチからはじめる
  USB Host API
           すずき
          @ksksue
でんもく会「イチからはじめる」シリーズ
   コンセプト:オープンスキル
    =オープンソース+オープンハードウェア
    と理解しました

裏コンセプト:技術教えるからおもしろいもの作ってボクを楽しませてよ
イチからはじめるUSB Host API
   Android 3.1(Honeycomb)から実装されたUSB Host
    APIの紹介
   USB Host APIとタイトル銘打ってますが、対象が広
    すぎるので、このプレゼンではUSBシリアルにしぼ
    る方向で
   デモ:
    GR-SAKURA
    シリアル通信で
    エコーバック
    させてAndroid
    で表示
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…
USB Host APIとADKの使い分け1
   給電方式による使い分け
       ADK :
        ○ Android端末の電源を持続させる
        ☓ 別電源が必要(ACアダプタorバッテリー)
           使用用途:長時間据え置き、ロガー
       USB Host API :
        ○ Android端末の電源を使える
        ☓ 長時間の使用には向いていない
           使用用途:短時間だけ使用するツール、デモ
   対象デバイスによる使い分け
       ADK : USB Host機能がついたAVR(Arduino)/PIC系のADK
        対応デバイス
       USB Host API : 大抵のデバイスOK(アイソクロナス転送
        以外)
USB Host APIとADKの使い分け2
   プログラミング難易度による使い分け
       ADK:アプリプログラミングがラク
       USB Host API : アプリプログラミング
        +USB基礎知識+USBプログラミング+USBデバッグ

   技術的な障壁が高い・・・

 →プロトコル部分をライブラリ化することでADK並
  にラクに開発できる環境になる
…ということで
 USBシリアル通信ライブラリ「FTDriver」を
  githubで公開
USB Host API クラス
Class                 Description
UsbManager            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.
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);
USB Host API(FTDriver)を使った事例紹介
~AndroidとArduinoでシリアル通信~
USB Host API(FTDriver)を使った事例紹介
   ~ フルカラーLED制御~ @juju_suuさん
                                             構成
                                             Androidタブレット



                                                  動画再生




                                                  フルカラー
                                                  LEDパネル



http://www.youtube.com/watch?v=ns4DKYXES_o
USB Host API(FTDriver)を使った事例紹介
~シリアルサーボ制御~ akagawaさん




http://www.youtube.com/watch?v=QZOVAMQilCg
対応状況(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シリアルモジュール
イチからはじめるUSB Host API FTDriver
   ゴール:USBシリアルを使ってAndroidとマイコンを
    つなげエコーバックさせてみよう
USBシリアル接続に必要な小道具
   USB A type ⇔ micro B type
    変換コネクタ




                                USB A type ⇔ micro B type
                                      変換コネクタ
/*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);
                      }
                    }
FTDriver チュートリアル Androidアプリ
https://github.com/ksksue/FTDriver
begin(), end(), read(), write()を使った
USBシリアルプログラミングのチュートリアル
                              1. Beginで接続

                            2. Writeで書き込み

                            3. Readで読み込み

                               4. Endで切断

   Readボタンタップすると
     エコーバックを表示
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();
自分のAndroidは
USB Host API対応? 1/4

         ソースコード・アプリを公開していると
         ときどき質問がくる



                      エクアドル



  「ぼくのタブレット、USBキーボー
ドはうごくのに、キミのアプリはうごか
ないってどういうことさ?」
(エクアドル在住アンドレスさん)
自分の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と区別しやすくするため
     勝手につけた名称です
自分のAndroidは
USB Host API対応?3/4
   ややこしいところ
    Android3.1以降であっても端末によってはサポートされ
    ていない                  アンドレスさんのケース
       中華Padは非サポートが多い
       Galaxy Nexus(Android 4.0)は日本版だけサポートされていな
        かった。後のアップデートでサポート
   自分のAndroidは対応しているかどうか
    どうやってチェックすればいいの?
       Web情報(少ない)
       Android アプリ「USB Host Viewer」,「USB Device Info」をイ
        ンストール、デバイスを接続して情報が表示されるかチェック
        (これがイチバン確実)
       そもそも上記アプリがインストールできない場合はアウト
自分のAndroidは
USB Host API対応? 4/4

               …という内容を踏まえて返信




                        エクアドル



  「中華Pad乙。m9」
まとめ
   USB Host APIのとくちょう
   USB Host APIを使ったライブラリでぐっと開発効率
    がよくなる
   FTDriverでできること紹介
   FTDriverでGR-SAKURAからのエコーバック表示
   自分のAndroidは対応してる?
   ご清聴ありがとうございました

More Related Content

What's hot

カスタムROM開発者の視点から見たAndroid
カスタムROM開発者の視点から見たAndroidカスタムROM開発者の視点から見たAndroid
カスタムROM開発者の視点から見たAndroidandroid sola
 
Implementing generic JNI hardware control for Kotlin based app on AOSP
Implementing generic JNI hardware control for Kotlin based app on AOSPImplementing generic JNI hardware control for Kotlin based app on AOSP
Implementing generic JNI hardware control for Kotlin based app on AOSPCheng Wig
 
1075: .NETからCUDAを使うひとつの方法
1075: .NETからCUDAを使うひとつの方法1075: .NETからCUDAを使うひとつの方法
1075: .NETからCUDAを使うひとつの方法NVIDIA Japan
 
Android組み込み開発テキスト pandaboard es編
Android組み込み開発テキスト pandaboard es編Android組み込み開発テキスト pandaboard es編
Android組み込み開発テキスト pandaboard es編OESF Education
 
Deep-Dive into Scriptable Build Pipeline
Deep-Dive into Scriptable Build PipelineDeep-Dive into Scriptable Build Pipeline
Deep-Dive into Scriptable Build PipelineHaruto Otake
 
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspectiveAndroid graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspectiveBin Chen
 
Android audio system(audioflinger)
Android audio system(audioflinger)Android audio system(audioflinger)
Android audio system(audioflinger)fefe7270
 
Android起動周りのノウハウ
Android起動周りのノウハウAndroid起動周りのノウハウ
Android起動周りのノウハウchancelab
 
Making a Headless Android Device
Making a Headless Android DeviceMaking a Headless Android Device
Making a Headless Android DevicePatricia Aas
 
Learning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device DriverLearning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device DriverNanik Tolaram
 
Android for Embedded Linux Developers
Android for Embedded Linux DevelopersAndroid for Embedded Linux Developers
Android for Embedded Linux DevelopersOpersys inc.
 
Android OTA updates
Android OTA updatesAndroid OTA updates
Android OTA updatesGary Bisson
 
U boot porting guide for SoC
U boot porting guide for SoCU boot porting guide for SoC
U boot porting guide for SoCMacpaul Lin
 
GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...
GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...
GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...Igalia
 
Android カスタムROMの作り方
Android カスタムROMの作り方Android カスタムROMの作り方
Android カスタムROMの作り方Masahiro Hidaka
 
Q4.11: Porting Android to new Platforms
Q4.11: Porting Android to new PlatformsQ4.11: Porting Android to new Platforms
Q4.11: Porting Android to new PlatformsLinaro
 

What's hot (20)

カスタムROM開発者の視点から見たAndroid
カスタムROM開発者の視点から見たAndroidカスタムROM開発者の視点から見たAndroid
カスタムROM開発者の視点から見たAndroid
 
Implementing generic JNI hardware control for Kotlin based app on AOSP
Implementing generic JNI hardware control for Kotlin based app on AOSPImplementing generic JNI hardware control for Kotlin based app on AOSP
Implementing generic JNI hardware control for Kotlin based app on AOSP
 
1075: .NETからCUDAを使うひとつの方法
1075: .NETからCUDAを使うひとつの方法1075: .NETからCUDAを使うひとつの方法
1075: .NETからCUDAを使うひとつの方法
 
Android組み込み開発テキスト pandaboard es編
Android組み込み開発テキスト pandaboard es編Android組み込み開発テキスト pandaboard es編
Android組み込み開発テキスト pandaboard es編
 
Embedded Android : System Development - Part II (HAL)
Embedded Android : System Development - Part II (HAL)Embedded Android : System Development - Part II (HAL)
Embedded Android : System Development - Part II (HAL)
 
Deep-Dive into Scriptable Build Pipeline
Deep-Dive into Scriptable Build PipelineDeep-Dive into Scriptable Build Pipeline
Deep-Dive into Scriptable Build Pipeline
 
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspectiveAndroid graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
 
Android audio system(audioflinger)
Android audio system(audioflinger)Android audio system(audioflinger)
Android audio system(audioflinger)
 
Embedded Android : System Development - Part II (Linux device drivers)
Embedded Android : System Development - Part II (Linux device drivers)Embedded Android : System Development - Part II (Linux device drivers)
Embedded Android : System Development - Part II (Linux device drivers)
 
Android起動周りのノウハウ
Android起動周りのノウハウAndroid起動周りのノウハウ
Android起動周りのノウハウ
 
Making a Headless Android Device
Making a Headless Android DeviceMaking a Headless Android Device
Making a Headless Android Device
 
Learning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device DriverLearning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device Driver
 
AndroidとSELinux
AndroidとSELinuxAndroidとSELinux
AndroidとSELinux
 
Android Things : Building Embedded Devices
Android Things : Building Embedded DevicesAndroid Things : Building Embedded Devices
Android Things : Building Embedded Devices
 
Android for Embedded Linux Developers
Android for Embedded Linux DevelopersAndroid for Embedded Linux Developers
Android for Embedded Linux Developers
 
Android OTA updates
Android OTA updatesAndroid OTA updates
Android OTA updates
 
U boot porting guide for SoC
U boot porting guide for SoCU boot porting guide for SoC
U boot porting guide for SoC
 
GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...
GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...
GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...
 
Android カスタムROMの作り方
Android カスタムROMの作り方Android カスタムROMの作り方
Android カスタムROMの作り方
 
Q4.11: Porting Android to new Platforms
Q4.11: Porting Android to new PlatformsQ4.11: Porting Android to new Platforms
Q4.11: Porting Android to new Platforms
 

Viewers also liked

USB Host APIで遊んでみた
USB Host APIで遊んでみたUSB Host APIで遊んでみた
USB Host APIで遊んでみたMakoto Yamazaki
 
組込みAndroid入門実習
組込みAndroid入門実習組込みAndroid入門実習
組込みAndroid入門実習ksk sue
 
GPUを用いたSSLリバースプロキシの実装についての論文を読んだ
GPUを用いたSSLリバースプロキシの実装についての論文を読んだGPUを用いたSSLリバースプロキシの実装についての論文を読んだ
GPUを用いたSSLリバースプロキシの実装についての論文を読んだy_uuki
 
見よう見まねでJavaFX!
見よう見まねでJavaFX!見よう見まねでJavaFX!
見よう見まねでJavaFX!_denko
 
JavaFX 8 に関する 7 つのこと
JavaFX 8 に関する 7 つのことJavaFX 8 に関する 7 つのこと
JavaFX 8 に関する 7 つのことYuichi Sakuraba
 
Midi with android
Midi with androidMidi with android
Midi with androidkshoji
 
JavaFX 8って何だ!! - JavaFX最新情報 -
JavaFX 8って何だ!! - JavaFX最新情報 -JavaFX 8って何だ!! - JavaFX最新情報 -
JavaFX 8って何だ!! - JavaFX最新情報 -Yuichi Sakuraba
 
Java fx勉強会lt 第8回
Java fx勉強会lt 第8回Java fx勉強会lt 第8回
Java fx勉強会lt 第8回Taiji Miyabe
 
iBeaconを使ってみよう!気軽に使える近距離無線通信
iBeaconを使ってみよう!気軽に使える近距離無線通信iBeaconを使ってみよう!気軽に使える近距離無線通信
iBeaconを使ってみよう!気軽に使える近距離無線通信yuki0211s
 
Androidを利用した外部機器の制御
Androidを利用した外部機器の制御Androidを利用した外部機器の制御
Androidを利用した外部機器の制御Takashi Kanamaru
 
BlueZで遊んでみる - BLE大阪勉強会
BlueZで遊んでみる - BLE大阪勉強会BlueZで遊んでみる - BLE大阪勉強会
BlueZで遊んでみる - BLE大阪勉強会Shinji Kobayashi
 
iOS7アプリ同士の近距離通信どれがいい?
iOS7アプリ同士の近距離通信どれがいい?iOS7アプリ同士の近距離通信どれがいい?
iOS7アプリ同士の近距離通信どれがいい?Norihiro Arita
 
Bluetoothl-Low-Energy入門講座-part1
Bluetoothl-Low-Energy入門講座-part1Bluetoothl-Low-Energy入門講座-part1
Bluetoothl-Low-Energy入門講座-part1edy555
 
Arduino / ArduBlock の簡単なプログラムと回路の例
Arduino / ArduBlock の簡単なプログラムと回路の例Arduino / ArduBlock の簡単なプログラムと回路の例
Arduino / ArduBlock の簡単なプログラムと回路の例mitunaga
 
ブレッドボードの使い方と Arduino に簡単な回路をつける例
ブレッドボードの使い方と Arduino に簡単な回路をつける例ブレッドボードの使い方と Arduino に簡単な回路をつける例
ブレッドボードの使い方と Arduino に簡単な回路をつける例mitunaga
 
Arduino 入門
Arduino 入門Arduino 入門
Arduino 入門mitunaga
 
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみたJavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみたSatoshi Takami
 

Viewers also liked (19)

USB Host APIで遊んでみた
USB Host APIで遊んでみたUSB Host APIで遊んでみた
USB Host APIで遊んでみた
 
組込みAndroid入門実習
組込みAndroid入門実習組込みAndroid入門実習
組込みAndroid入門実習
 
GPUを用いたSSLリバースプロキシの実装についての論文を読んだ
GPUを用いたSSLリバースプロキシの実装についての論文を読んだGPUを用いたSSLリバースプロキシの実装についての論文を読んだ
GPUを用いたSSLリバースプロキシの実装についての論文を読んだ
 
見よう見まねでJavaFX!
見よう見まねでJavaFX!見よう見まねでJavaFX!
見よう見まねでJavaFX!
 
JavaFX 8 に関する 7 つのこと
JavaFX 8 に関する 7 つのことJavaFX 8 に関する 7 つのこと
JavaFX 8 に関する 7 つのこと
 
Midi with android
Midi with androidMidi with android
Midi with android
 
JavaFX 8って何だ!! - JavaFX最新情報 -
JavaFX 8って何だ!! - JavaFX最新情報 -JavaFX 8って何だ!! - JavaFX最新情報 -
JavaFX 8って何だ!! - JavaFX最新情報 -
 
Java fx勉強会lt 第8回
Java fx勉強会lt 第8回Java fx勉強会lt 第8回
Java fx勉強会lt 第8回
 
Glibc malloc internal
Glibc malloc internalGlibc malloc internal
Glibc malloc internal
 
iBeaconを使ってみよう!気軽に使える近距離無線通信
iBeaconを使ってみよう!気軽に使える近距離無線通信iBeaconを使ってみよう!気軽に使える近距離無線通信
iBeaconを使ってみよう!気軽に使える近距離無線通信
 
Androidを利用した外部機器の制御
Androidを利用した外部機器の制御Androidを利用した外部機器の制御
Androidを利用した外部機器の制御
 
BlueZで遊んでみる - BLE大阪勉強会
BlueZで遊んでみる - BLE大阪勉強会BlueZで遊んでみる - BLE大阪勉強会
BlueZで遊んでみる - BLE大阪勉強会
 
iOS7アプリ同士の近距離通信どれがいい?
iOS7アプリ同士の近距離通信どれがいい?iOS7アプリ同士の近距離通信どれがいい?
iOS7アプリ同士の近距離通信どれがいい?
 
Unity ゲーム開発
Unity ゲーム開発Unity ゲーム開発
Unity ゲーム開発
 
Bluetoothl-Low-Energy入門講座-part1
Bluetoothl-Low-Energy入門講座-part1Bluetoothl-Low-Energy入門講座-part1
Bluetoothl-Low-Energy入門講座-part1
 
Arduino / ArduBlock の簡単なプログラムと回路の例
Arduino / ArduBlock の簡単なプログラムと回路の例Arduino / ArduBlock の簡単なプログラムと回路の例
Arduino / ArduBlock の簡単なプログラムと回路の例
 
ブレッドボードの使い方と Arduino に簡単な回路をつける例
ブレッドボードの使い方と Arduino に簡単な回路をつける例ブレッドボードの使い方と Arduino に簡単な回路をつける例
ブレッドボードの使い方と Arduino に簡単な回路をつける例
 
Arduino 入門
Arduino 入門Arduino 入門
Arduino 入門
 
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみたJavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
 

Similar to イチからはじめるUSB Host API

プロペラブForth発表osc愛媛
プロペラブForth発表osc愛媛プロペラブForth発表osc愛媛
プロペラブForth発表osc愛媛titoi2
 
Androidロボットサミットin名古屋
Androidロボットサミットin名古屋Androidロボットサミットin名古屋
Androidロボットサミットin名古屋Kenichi Yoshida
 
イチからはじめるADK北海道支部勉強会発表資料
イチからはじめるADK北海道支部勉強会発表資料イチからはじめるADK北海道支部勉強会発表資料
イチからはじめるADK北海道支部勉強会発表資料Kenichi Yoshida
 
Make: Ogaki Meeting 2012 Androidロボットサミットin大垣
Make: Ogaki Meeting 2012 Androidロボットサミットin大垣Make: Ogaki Meeting 2012 Androidロボットサミットin大垣
Make: Ogaki Meeting 2012 Androidロボットサミットin大垣三七男 山本
 
12.06.16 日本橋勉強会資料 公開用
12.06.16 日本橋勉強会資料 公開用12.06.16 日本橋勉強会資料 公開用
12.06.16 日本橋勉強会資料 公開用Miwa Iwatsuki
 
Androidロボットサミットin愛媛
Androidロボットサミットin愛媛Androidロボットサミットin愛媛
Androidロボットサミットin愛媛Kenichi Yoshida
 
USB over RDP over SSH
USB over RDP over SSHUSB over RDP over SSH
USB over RDP over SSHkoedoyoshida
 
Androidロボットサミットin京都
Androidロボットサミットin京都Androidロボットサミットin京都
Androidロボットサミットin京都Kenichi Yoshida
 
Intel edison edison向け基板のご紹介
Intel edison edison向け基板のご紹介Intel edison edison向け基板のご紹介
Intel edison edison向け基板のご紹介Takehiko Tomiyama
 
2016年11月19日 AITCシニア技術者勉強会 第1回「Arduinoを使ってみる」
2016年11月19日 AITCシニア技術者勉強会 第1回「Arduinoを使ってみる」 2016年11月19日 AITCシニア技術者勉強会 第1回「Arduinoを使ってみる」
2016年11月19日 AITCシニア技術者勉強会 第1回「Arduinoを使ってみる」 aitc_jp
 
Android-controlled robot,Original PCB to work as a bridge between Android-pho...
Android-controlled robot,Original PCB to work as a bridge between Android-pho...Android-controlled robot,Original PCB to work as a bridge between Android-pho...
Android-controlled robot,Original PCB to work as a bridge between Android-pho...Yasuhiro Ishii
 
Hacking with x86 Windows Tablet and mobile devices on Linux #FOSSASIA
Hacking with x86 Windows Tablet and mobile devices on Linux #FOSSASIAHacking with x86 Windows Tablet and mobile devices on Linux #FOSSASIA
Hacking with x86 Windows Tablet and mobile devices on Linux #FOSSASIANetwalker lab kapper
 
Google I/O 2011 HowToADK
Google I/O 2011 HowToADKGoogle I/O 2011 HowToADK
Google I/O 2011 HowToADKMasahiro Hidaka
 
Android端末と組み込み機器が連携する Android Make Days
Android端末と組み込み機器が連携する Android Make Days Android端末と組み込み機器が連携する Android Make Days
Android端末と組み込み機器が連携する Android Make Days Yasuhiro Ishii
 
Androidでロボットを動かそう・すまべん関西201003
Androidでロボットを動かそう・すまべん関西201003Androidでロボットを動かそう・すまべん関西201003
Androidでロボットを動かそう・すまべん関西201003cat sin
 
ドライバハッキング。UMPC、Windowsタブレット にLinux、*BSDを入れて遊ぼう  2017年度京都版 #osckyoto
ドライバハッキング。UMPC、Windowsタブレット にLinux、*BSDを入れて遊ぼう  2017年度京都版 #osckyotoドライバハッキング。UMPC、Windowsタブレット にLinux、*BSDを入れて遊ぼう  2017年度京都版 #osckyoto
ドライバハッキング。UMPC、Windowsタブレット にLinux、*BSDを入れて遊ぼう  2017年度京都版 #osckyotoNetwalker lab kapper
 
Android-controlled robot,Original PCB to work as a bridge between Android-pho...
Android-controlled robot,Original PCB to work as a bridge between Android-pho...Android-controlled robot,Original PCB to work as a bridge between Android-pho...
Android-controlled robot,Original PCB to work as a bridge between Android-pho...Yasuhiro Ishii
 
.NET Gadgeteerでプロトタイピングする EnOceanエネルギーハーベスティング システム
.NET GadgeteerでプロトタイピングするEnOceanエネルギーハーベスティングシステム.NET GadgeteerでプロトタイピングするEnOceanエネルギーハーベスティングシステム
.NET Gadgeteerでプロトタイピングする EnOceanエネルギーハーベスティング システムAtomu Hidaka
 
Beginner for install Android applications in Xiaomi MiReader  はじめてのXiaomi MiR...
Beginner for install Android applications in Xiaomi MiReader  はじめてのXiaomi MiR...Beginner for install Android applications in Xiaomi MiReader  はじめてのXiaomi MiR...
Beginner for install Android applications in Xiaomi MiReader  はじめてのXiaomi MiR...Netwalker lab kapper
 

Similar to イチからはじめるUSB Host API (20)

プロペラブForth発表osc愛媛
プロペラブForth発表osc愛媛プロペラブForth発表osc愛媛
プロペラブForth発表osc愛媛
 
Androidロボットサミットin名古屋
Androidロボットサミットin名古屋Androidロボットサミットin名古屋
Androidロボットサミットin名古屋
 
イチからはじめるADK北海道支部勉強会発表資料
イチからはじめるADK北海道支部勉強会発表資料イチからはじめるADK北海道支部勉強会発表資料
イチからはじめるADK北海道支部勉強会発表資料
 
Make: Ogaki Meeting 2012 Androidロボットサミットin大垣
Make: Ogaki Meeting 2012 Androidロボットサミットin大垣Make: Ogaki Meeting 2012 Androidロボットサミットin大垣
Make: Ogaki Meeting 2012 Androidロボットサミットin大垣
 
150130 edison-ug
150130 edison-ug150130 edison-ug
150130 edison-ug
 
12.06.16 日本橋勉強会資料 公開用
12.06.16 日本橋勉強会資料 公開用12.06.16 日本橋勉強会資料 公開用
12.06.16 日本橋勉強会資料 公開用
 
Androidロボットサミットin愛媛
Androidロボットサミットin愛媛Androidロボットサミットin愛媛
Androidロボットサミットin愛媛
 
USB over RDP over SSH
USB over RDP over SSHUSB over RDP over SSH
USB over RDP over SSH
 
Androidロボットサミットin京都
Androidロボットサミットin京都Androidロボットサミットin京都
Androidロボットサミットin京都
 
Intel edison edison向け基板のご紹介
Intel edison edison向け基板のご紹介Intel edison edison向け基板のご紹介
Intel edison edison向け基板のご紹介
 
2016年11月19日 AITCシニア技術者勉強会 第1回「Arduinoを使ってみる」
2016年11月19日 AITCシニア技術者勉強会 第1回「Arduinoを使ってみる」 2016年11月19日 AITCシニア技術者勉強会 第1回「Arduinoを使ってみる」
2016年11月19日 AITCシニア技術者勉強会 第1回「Arduinoを使ってみる」
 
Android-controlled robot,Original PCB to work as a bridge between Android-pho...
Android-controlled robot,Original PCB to work as a bridge between Android-pho...Android-controlled robot,Original PCB to work as a bridge between Android-pho...
Android-controlled robot,Original PCB to work as a bridge between Android-pho...
 
Hacking with x86 Windows Tablet and mobile devices on Linux #FOSSASIA
Hacking with x86 Windows Tablet and mobile devices on Linux #FOSSASIAHacking with x86 Windows Tablet and mobile devices on Linux #FOSSASIA
Hacking with x86 Windows Tablet and mobile devices on Linux #FOSSASIA
 
Google I/O 2011 HowToADK
Google I/O 2011 HowToADKGoogle I/O 2011 HowToADK
Google I/O 2011 HowToADK
 
Android端末と組み込み機器が連携する Android Make Days
Android端末と組み込み機器が連携する Android Make Days Android端末と組み込み機器が連携する Android Make Days
Android端末と組み込み機器が連携する Android Make Days
 
Androidでロボットを動かそう・すまべん関西201003
Androidでロボットを動かそう・すまべん関西201003Androidでロボットを動かそう・すまべん関西201003
Androidでロボットを動かそう・すまべん関西201003
 
ドライバハッキング。UMPC、Windowsタブレット にLinux、*BSDを入れて遊ぼう  2017年度京都版 #osckyoto
ドライバハッキング。UMPC、Windowsタブレット にLinux、*BSDを入れて遊ぼう  2017年度京都版 #osckyotoドライバハッキング。UMPC、Windowsタブレット にLinux、*BSDを入れて遊ぼう  2017年度京都版 #osckyoto
ドライバハッキング。UMPC、Windowsタブレット にLinux、*BSDを入れて遊ぼう  2017年度京都版 #osckyoto
 
Android-controlled robot,Original PCB to work as a bridge between Android-pho...
Android-controlled robot,Original PCB to work as a bridge between Android-pho...Android-controlled robot,Original PCB to work as a bridge between Android-pho...
Android-controlled robot,Original PCB to work as a bridge between Android-pho...
 
.NET Gadgeteerでプロトタイピングする EnOceanエネルギーハーベスティング システム
.NET GadgeteerでプロトタイピングするEnOceanエネルギーハーベスティングシステム.NET GadgeteerでプロトタイピングするEnOceanエネルギーハーベスティングシステム
.NET Gadgeteerでプロトタイピングする EnOceanエネルギーハーベスティング システム
 
Beginner for install Android applications in Xiaomi MiReader  はじめてのXiaomi MiR...
Beginner for install Android applications in Xiaomi MiReader  はじめてのXiaomi MiR...Beginner for install Android applications in Xiaomi MiReader  はじめてのXiaomi MiR...
Beginner for install Android applications in Xiaomi MiReader  はじめてのXiaomi MiR...
 

Recently uploaded

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 

Recently uploaded (7)

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 

イチからはじめるUSB Host API

  • 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 Description UsbManager 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);
  • 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/FTDriver begin(), 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. ご清聴ありがとうございました