SlideShare ist ein Scribd-Unternehmen logo
1 von 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は対応してる?
   ご清聴ありがとうございました

Weitere ähnliche Inhalte

Was ist angesagt?

rsyncのちょっとイイ話
rsyncのちょっとイイ話rsyncのちょっとイイ話
rsyncのちょっとイイ話
Kazuhiro Oinuma
 
FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎
ken_kitahara
 
Androidの入力システム
Androidの入力システムAndroidの入力システム
Androidの入力システム
magoroku Yamamoto
 

Was ist angesagt? (20)

過去の変遷から考えるDevOps型大規模ゲーム開発
過去の変遷から考えるDevOps型大規模ゲーム開発過去の変遷から考えるDevOps型大規模ゲーム開発
過去の変遷から考えるDevOps型大規模ゲーム開発
 
【B-4】オープンソース開発で、フリー静的解析ツールを使ってみる
【B-4】オープンソース開発で、フリー静的解析ツールを使ってみる【B-4】オープンソース開発で、フリー静的解析ツールを使ってみる
【B-4】オープンソース開発で、フリー静的解析ツールを使ってみる
 
iOSアプリ UIテスト自動化入門
iOSアプリ UIテスト自動化入門iOSアプリ UIテスト自動化入門
iOSアプリ UIテスト自動化入門
 
4bit-CPU : TD4の解説
4bit-CPU : TD4の解説4bit-CPU : TD4の解説
4bit-CPU : TD4の解説
 
Androidの新ビルドシステム
Androidの新ビルドシステムAndroidの新ビルドシステム
Androidの新ビルドシステム
 
rsyncのちょっとイイ話
rsyncのちょっとイイ話rsyncのちょっとイイ話
rsyncのちょっとイイ話
 
ソーシャルアプリにおけるRedisの活用事例とトラブル事例
ソーシャルアプリにおけるRedisの活用事例とトラブル事例ソーシャルアプリにおけるRedisの活用事例とトラブル事例
ソーシャルアプリにおけるRedisの活用事例とトラブル事例
 
USB3.0ドライバ開発の道
USB3.0ドライバ開発の道USB3.0ドライバ開発の道
USB3.0ドライバ開発の道
 
Android binder-ipc
Android binder-ipcAndroid binder-ipc
Android binder-ipc
 
FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎
 
ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!
 
Multipeer connectivityを使った 動画のリアルタイム端末間共有
Multipeer connectivityを使った 動画のリアルタイム端末間共有Multipeer connectivityを使った 動画のリアルタイム端末間共有
Multipeer connectivityを使った 動画のリアルタイム端末間共有
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門
 
PHPの今とこれから2023
PHPの今とこれから2023PHPの今とこれから2023
PHPの今とこれから2023
 
CEDEC2021 プランナーもハックしよう 業務効率化、ローコード開発とテクニカルプランナー
CEDEC2021 プランナーもハックしよう 業務効率化、ローコード開発とテクニカルプランナーCEDEC2021 プランナーもハックしよう 業務効率化、ローコード開発とテクニカルプランナー
CEDEC2021 プランナーもハックしよう 業務効率化、ローコード開発とテクニカルプランナー
 
分解のススメ 第14回 ローエンド中BT Audio SoC華BT Audio SoCLowEndChineseBTAudioSoC.pdf
分解のススメ 第14回 ローエンド中BT Audio SoC華BT Audio SoCLowEndChineseBTAudioSoC.pdf分解のススメ 第14回 ローエンド中BT Audio SoC華BT Audio SoCLowEndChineseBTAudioSoC.pdf
分解のススメ 第14回 ローエンド中BT Audio SoC華BT Audio SoCLowEndChineseBTAudioSoC.pdf
 
Androidの入力システム
Androidの入力システムAndroidの入力システム
Androidの入力システム
 
クラウド環境下におけるAPIリトライ設計
クラウド環境下におけるAPIリトライ設計クラウド環境下におけるAPIリトライ設計
クラウド環境下におけるAPIリトライ設計
 
GitLabのAutoDevOpsを試してみた
GitLabのAutoDevOpsを試してみたGitLabのAutoDevOpsを試してみた
GitLabのAutoDevOpsを試してみた
 
技術を本にして売る、という仕事
技術を本にして売る、という仕事技術を本にして売る、という仕事
技術を本にして売る、という仕事
 

Andere mochten auch

USB Host APIで遊んでみた
USB Host APIで遊んでみたUSB Host APIで遊んでみた
USB Host APIで遊んでみた
Makoto Yamazaki
 
Java fx勉強会lt 第8回
Java fx勉強会lt 第8回Java fx勉強会lt 第8回
Java fx勉強会lt 第8回
Taiji Miyabe
 
Androidを利用した外部機器の制御
Androidを利用した外部機器の制御Androidを利用した外部機器の制御
Androidを利用した外部機器の制御
Takashi Kanamaru
 
BlueZで遊んでみる - BLE大阪勉強会
BlueZで遊んでみる - BLE大阪勉強会BlueZで遊んでみる - BLE大阪勉強会
BlueZで遊んでみる - BLE大阪勉強会
Shinji Kobayashi
 
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみたJavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
Satoshi Takami
 

Andere mochten auch (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上で動くアプリを試してみた
 

Ähnlich wie イチからはじめるUSB Host API

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大垣
三七男 山本
 
Androidロボットサミットin愛媛
Androidロボットサミットin愛媛Androidロボットサミットin愛媛
Androidロボットサミットin愛媛
Kenichi Yoshida
 
Androidロボットサミットin京都
Androidロボットサミットin京都Androidロボットサミットin京都
Androidロボットサミットin京都
Kenichi Yoshida
 
Google I/O 2011 HowToADK
Google I/O 2011 HowToADKGoogle I/O 2011 HowToADK
Google I/O 2011 HowToADK
Masahiro Hidaka
 

Ähnlich wie イチからはじめる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...
 

Kürzlich hochgeladen

Kürzlich hochgeladen (11)

Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 

イチからはじめる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. ご清聴ありがとうございました