Androidを利用した外部機器の制御

23,236 views

Published on

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

No Downloads
Views
Total views
23,236
On SlideShare
0
From Embeds
0
Number of Embeds
257
Actions
Shares
0
Downloads
100
Comments
0
Likes
14
Embeds 0
No embeds

No notes for slide

Androidを利用した外部機器の制御

  1. 1. Androidを利用した 外部機器の制御 情報電子技術関連講習会2013年3月25日 広島市工業技術センター 工学院大学 機械創造工学科 金丸 隆志 1
  2. 2. 目次第一部:Androidの概要 Androidの歴史、Androidがオープンであるとはどういうことか第二部:Androidでハードウェア制御(概要) 4つの手法を動画で紹介第三部:Androidでハードウェア制御(詳細) 4つの手法を順に詳しく解説第四部:応用事例 学生との共同研究である「Androidで操作するスマートカーテン」 「Androidと連携するスマート白杖」の紹介 2
  3. 3. 第一部:Androidの概要 3
  4. 4. Androidとは2007年11月 Open Handset Alliance が発表したスマートフォン用OS (Google, Qualcomm, T-Mobileなど)Linuxベースのモバイル用オープンソースOS(電話帳などのアプリも含む)スマートフォンだけではなく、タブレットなどにも適用範囲を広げている最近では回路や外部機器との連携なども盛ん 4
  5. 5. Androidの歴史 2007.11 2008.10 2009.7 2010.10 Android SDK T-Mobile G1 HT-03A Galaxy Tab 2011.10 公開 発売(米国) 発売(日本) (SC-01C)発表 Samsungスマート Android 1.x Android 2.x Galaxy Nexus 発表フォン 統合 Android 4.x 早期から日本では コミュニティが発達 タブレット Android 3.x 2008.2 2011.1 完全解説Android Motorola 発売 XOOM 発表2007.1 2008.7 2010.1 バージョン乱立iPhone 発表 の傾向はある iPhone 3G発表 iPad 発表(米国) (米国、日本) (日本は5月) 1.x 2013.2における Android 4.x バージョン毎のシェア 2.x 2008.9 (Android Developers) 日本Androidの会 5 発足 3.x
  6. 6. Androidがオープンであるとはどういうことか Googleが提供するアプリケーション(非オープン)Googleによるプロプライエタリなアプリケーション 一般に、”Android”と聞いてイメージする 機能はこの部分が多いGmail、Google Play、カレンダー、マップなど、 Googleのアカウントと連携するもの全て この部分を端末に乗せるには Android CTS という互換性テストをパスし、 Googleによる認証を受けねばならない これにより“Android 互換”を名乗ることができる プロプライエタリなドライバ (Wifi, Bluetooth, NFC, Graphics, etc…) バイナリのみで提供される各種ドライバ(非オープン) この部分のソースが全て提供されている(オープン) (アセンブリ言語、C、C++、Java) Android Open Source Project (AOSP) により提供 ライセンスに基づけば自由に 改変して利用可能 KernelやLinux由来: GPL v2 Webkit: LGPL v2 ※図はWikipediaより その他の大部分: Apache 2.0 6
  7. 7. オープンなAndroid(AOSP部)を利用した展開(1) TOSHIBA dynabook AZ (2010.6) ノートPCにAndroid2.2を搭載 (クラウドブック) CTS認証を通していないので、 Googleアプリは非搭載 (当時はCTSはスマートフォン 専用だったため。 初めて非スマートフォンでCTSに 通ったのは2010.10サムスンの タブレットSMT-i9100)http://dynabook.com/pc/catalog/cloud/100621az/ そのため、現在は公式サイトに 「Android」の記載なし 「改変AOSP + 独自マーケット」という構成 (中国産の安価なタブレットも同様の構成が多い) 7
  8. 8. オープンなAndroid(AOSP部)を利用した展開(2) docomo らくらくスマートフォン(2012夏モデル) docomoによるアプリケーション Googleサービス非搭載 Google Play Gmail プロプライエタリなドライバ マップ docomoのサービス押した感触のあるタッチパネル ※図はWikipediaより良く使うボタンを大きく配置オープンであることを利用した、独自性のある端末の作成 8
  9. 9. オープンなAndroid(AOSP部)を利用した展開(3) Amazon Kindle Fire (2011.9) amazonによる電子書籍 プロプライエタリなドライバAndroid 2.3ベースの、電子書籍用デバイスCTS認証を受けていない AOSP + amazon によるサービス(電子書籍)Googleサービスを載せずに何故Androidを使うのか? ※図はWikipediaより ハードウェア管理にAndroidの機能を使うことができる (Wifi、電源管理、グラフィック管理etc) 9
  10. 10. オープンなAndroid(AOSP部)を利用した展開(4) 様々なデバイス SII製電子辞書DF-X9000 (2012.11) タッチ操作可能 電子書籍が読める Wifiとブラウザでネットにつながるhttp://www.sii.co.jp/cp/products/english/dfx9000/ Android 搭載腕時計 I’m Watch (2012.7) スマートフォンとBluetoothで接続 メール、スケジュール、twitter、Facebookの通知 音楽が聴ける 回転ずしや居酒屋の 注文用タブレット http://www.aska-t3.co.jp/product/emenu.html 10
  11. 11. オープンなAndroid(AOSP部)を利用した展開(5) 開発者用デバイス もちろん、オープンなAOSP部だけで動作させることも可能 (主に開発者向け) 第三部で少し登場しますAtmark Techno社 Armadillo 500fx Pandaboard + 外部ディスプレイ (Hanwha HM-TL7T) 11
  12. 12. 第二部 Androidでハードウェア制御 (概要) 12
  13. 13. Androidとハードウェアの連携Android LED モータ 何らかの 仕組みAndroidとハードウェアを 外部センサ 連携するメリット Androidの持つ機能が使える • ネット接続機能 外部カメラ • タッチパネル • 傾きセンサ • 音声認識 • 顔認識 ロボットなど • 高い計算能力 13
  14. 14. Androidとハードウェアはホットな話題(1)2012年にたくさんの教科書が発売された Android ADK プログラミング Android ADK で学ぶ PICで楽しむ &電子工作バイブル(2012.5) ハードウェア制御(2012.5) Androidアクセサリの自作(2012.5) Android ADK 組込みプログラミング Android×Arduinoでつくる 完全ガイド(2012.8) クラウド連携デバイス(2012.9) 14
  15. 15. Androidとハードウェアはホットな話題(2)技術系の雑誌による特集も増えている Smartphone World vol.3 (2012.4) トランジスタ技術 (2012.9) Android×Arduino速攻プログラミング サッ!と取り出してピッ! Androidとマイコン・ボードをつなぐテクニック スマホ×電子回路!つないでI/O 15
  16. 16. ハードウェアを動かす様々な方法 カスタムAndroid:有線が多い 開発基板についているシリアルポートを使う Androidを通常のPCのように使う(例:USBデバイス) Bluetooth:無線 Androidとマイコン付きの回路とをBluetooth経由で通信 ADK:有線 Androidとマイコン付きの回路とをUSBアクセサリモードで有線接続 USB Host:有線 AndroidとデバイスをUSBホストモードで有線接続 カスタムAndroidと異なり、こちらは公式サポート 16
  17. 17. カスタムAndroidの例 まずは動画で「何ができるか」をざっとつかみますRIC Android : 株式会社アールティ、株式会社ブリリアントサービス RIC Android 2010.9.28 Google Developer Day@東京国際フォーラム動画はRyosei Kaiさんによる http://www.youtube.com/watch?v=jclyrynrsMk 17
  18. 18. Bluetoothの例(1)Android時代のミニ四駆デモ http://www.youtube.com/watch?v=5tAC35rKptQ ひでゆきたけいさん 2010.3 アップロード マイコンはAVR (Arduinoに使われているもの) 18
  19. 19. Bluetoothの例(2)Androidでプラレールを操作Controlling toy train (plarail) via Bluetooth with android smartphone neuralassembly(私) 2012.10アップロード http://www.youtube.com/watch?v=fumv9p0_vWo 19
  20. 20. ADKの例 株式会社アールティがADKを用いて作成したロボット(2011.5サンフランシスコ)Google I/O 2011 - Connecting Android to Real World Robotics using Open Accessory tempusmasterさん アップロード http://www.youtube.com/watch?v=8cMHRvV9bg4 20
  21. 21. USB Hostの例(1)Android + Full-color LED panels JuJu Su-uさん 2012.7アップロード USBシリアル変換 の利用 http://www.youtube.com/watch?v=ns4DKYXES_o 21
  22. 22. USB Hostの例(2)Android USB Camera Development Kit "AndCam-Kit F1" infinitegraさん 2013.2アップロード 外部カメラの利用 http://www.youtube.com/watch?v=GiYBtaSbiCk 22
  23. 23. 第三部 Androidでハードウェア制御 (詳細) 23
  24. 24. カスタムAndroidの詳細(1)RIC Android (2010.9)はどのような仕組みで動いていたか? ココに開発基板 Armadillo 500FX が搭載されている Linuxプリインストール Freescale i.MX31(ARM1136JF-S)搭載 128MB LPDDR SDRAM, 32MB NOR FLASH Android のオープン版(AOSP)をソースからビルドして インストール可能 24
  25. 25. カスタムAndroidの詳細(2) 開発基板 オープンなのはココ。ビルドして搭載可能 この開発基板にはシリアルポートがついている ・(権限変更により)Androidから利用可能 →シリアル通信でロボットを動かしていた カーネルや上位層を改変(カスタム)すれば、 ・PCで使えるUSBデバイスが利用可能この部分(カーネル)はLinux PCと同じ カーネルはハードウェアの管理を担当 25
  26. 26. カスタムAndroidの詳細(3)Target tracking with USB webcam and android (PandaBoard ES) 同様に、オープンな Androidから シリアル通信で モーターを動かす例http://www.youtube.com/watch?v=7u0yi1WPaAcneuralassembly(私)アップロード(2012.3) 26
  27. 27. カスタムAndroidの詳細(4)Android スマートフォンで外部カメラを利用Usage of USB webcam with customized Galaxy Nexus (android 4.0.3) USB カーネルと上位層を変更して外部のUSBカメラを接続 http://www.youtube.com/watch?v=fCN6VUyUl9o neuralassembly(私) (2012.2アップロード) 27
  28. 28. カスタムAndroidのまとめPCと同様にシリアル通信やUSB接続でハードウェアを制御する手法カスタムAndroid長所 PCと同様に自由度が高い 面白い機能をすぐに試せるのでデモには良いカスタムAndroid短所 作成したアプリは、カスタムしたAndroidでしか 動かない(正規端末では動かない) この方法でしか動かないものもあるが、 そうでなければ現在は別の方法を試すのが無難 28
  29. 29. Bluetooth接続法の詳細(1) 紹介動画では、Androidでラジコンのように ミニ四駆を操作していた 無線 モーター、LED、センサを扱うには別途回路が 必要 ArduinoやPICを用いるのがメジャー LEDBluetooth Bluetoothモジュール Arduino モータ PICマイコン Bluetoothドングル 29 など 外部センサ
  30. 30. Bluetooth接続法の詳細(2) BluetoothでArduinoに接続 Bluetooth: 数m~数十m程度の近距離無線通信規格 AVRマイコン Arduino 入出力ポートつき基板 Bluetooth C言語風Arduino言語 統合開発環境 Bluetoothモジュール (様々なものが入手可能) Android マイコン用のアプリケーション スマートフォン (ファームウェア)作成(C言語) スマートフォン用の アプリケーション作成(Java) スマートフォンと回路の両方に サンプルはインターネット上に アプリケーションを書く必要がある 参考になるものがある例えば gclue, AndroDocs: ArduinoとAndroidをBluetooth連携 30 https://sites.google.com/a/gclue.jp/android-docs-2009/bluetoothdearduinoto-lian-xie
  31. 31. Bluetooth接続法の詳細(3)BluetoothでPICに接続 PICマイコン Bluetooth microchip 社製の Bluetooth マイクロコントローラ ドングル スマートフォン用の マイコン用のアプリケーション アプリケーション作成(Java) (ファームウェア)作成(C言語)サンプルはインターネットなどに参考になるものがある例えば hrdakinori氏のBT_DROID とDroidControlやPIC24F_btstack https://github.com/hrdakinori/BT_DROID (PICマイコン用サンプル) https://github.com/hrdakinori/DroidControl (Android用サンプル) https://github.com/hrdakinori/PIC24F_btstack (PICマイコン/Android用別サンプル)雑誌では 原田明憲「1Mbpsが数十m飛ぶ!Bluetooth対応のワイヤレスPICマイコンI/O基板」 トランジスタ技術2012年9月号 (btstackを用いる解説) 31
  32. 32. Bluetooth接続法を用いた商品 LEGO Mindstorms (レゴマインドストーム): マイコンつきユニット+レゴブロックでロボット作成 PCでプログラミングを行い、操作可能 スマートフォンからもBluetooth経由で操作可能に LEGO Mindstorms EV3: NextGen Robotic Programming | TCTV News対象年齢10歳からといわれているが、大学の演習でも使われるレベル techcrunchさんアップロードhttp://www.youtube.com/watch?v=cTTCzY6b20c 32
  33. 33. Bluetooth接続法まとめ無線(Bluetooth)でマイコンに接続し、マイコンがハードウェアを制御する手法 Bluetooth接続法長所 無線なので、自由に端末(スマートフォン、タブレット)を取回せる Bluetooth接続法短所 無線であるがゆえ、信頼性の問題はある (多数のデバイスがあったときの無線の干渉の問題、遅延の問題など) 無線を使うので技適を通ったデバイスを使用する必要がある 総務省により定められた、 ・技術基準適合証明(電波法令上の特定無線設備に対する認証) ・技術基準適合認定(電気通信事業法令上の端末機器) のいずれかあるいは両者の認証がなされていることを表示するマーク 33
  34. 34. ADKによる方法の詳細(1) ADKとはAccessory Development Kitの略 スマートフォン 2011年5月にGoogleにより発表された、比較的新しい手法 「カスタムAndroid」と「Bluetooth」は比較的 初期のAndroidから用いることができた手法 ADKはバージョンの制限あり Android 2.3.4以降または3.1以降 マイコンボード 2012年にたくさん教科書が出たのはこの方式 LED 電力供給 Arduino モータUSBアクセサリモード PICマイコン 有線接続※さきほどのBluetooth 34とは↑ココが違う など 外部センサ
  35. 35. ADKによる方法の詳細(2)Googleによる公式なサンプルアプリケーションがあり、ADKの機能を一瞥できるGoogle IO Android ADK (Arduino) 入力:ジョイスティック ボタン 静電容量センサ 光量センサ 温度センサ 出力:LED サーボモータ Jeffrey Sambellsさん 2011.05アップロード http://www.youtube.com/watch?v=XEe3dYBj7RE 注:これらの機能は基本的には回路が実現しているので、 同様のデモを先ほどのBluetooth接続法でも行える 35
  36. 36. ADKによる方法の詳細(3) ADKとはAccessory Development Kitの略 ADK2011とADK2012とがあり、本日お話しているのはADK2011 Android端末と回路をUSB接続するが、通常のUSB接続と異なる一般的なUSBデバイスの接続 USBホスト USBデバイスADKのアクセサリモードによるUSB接続 USBホスト USBデバイス(アクセサリ) 電力 スマートフォン ADK回路 36ADKの回路からスマートフォンへ電力供給(充電)しなければならない
  37. 37. ADKによる方法の詳細(4)ADK回路からAndroid端末へ電力を供給する長所 長所であり、 スマートフォンのバッテリーを消費しない 短所でもある短所 ADK回路の電源はスマートフォンの充電も考慮しなければならない スマートフォンの充電クレードルのように 室内で使うこと前提の商品に向いている 屋内での実験装置のモニタリングなどに向いているかも 屋内なので電力供給も問題ない 場所も固定なので有線で問題ない 37
  38. 38. ADKを用いた商品Android対応早押しボタンfourbeat(合同会社ピグマル)FourBeat http://pigmal.com Yuan Itoさんアップロード 38 http://www.youtube.com/watch?v=z9ZqvaW_g_I
  39. 39. ADKによる方法まとめ USBによって回路と有線接続。回路がハードウェアを制御 回路からスマートフォンへ電力を供給する必要があるADKの長所 スマートフォンのバッテリーを消費しない 有線なので、信頼性が必要な用途には向いている(干渉や遅延の問題が少ない)ADKの短所 ADK回路の電源はスマートフォンの充電も考慮しなければならない 39
  40. 40. USB Hostによる方法の詳細(1)ADKのアクセサリモードによるUSB接続(先ほどの話) USBホスト USBデバイス(アクセサリ) ADK回路 電力 スマートフォンUSB HostモードによるUSB接続 USBデバイス(など) USBホスト 電力 USB-シリアルデバイス スマートフォン この手法が 良く知られている USB-シリアルモジュールFT232RL パソコンでUSBデバイスを用いるようにスマートフォンを用いる方法 40 ただし、パソコンのように何でもつなげばOK、とはいかない(自分でドライバを書く)
  41. 41. USB Hostによる方法の詳細(2) USBホスト USB-シリアルデバイス USB-シリアルモジュール 電力スマートフォン FT232RL USB Hostによる方法が難しいのは、androidでUSB機器を制御するための ドライバを自分で書かねばならないため デバイスの知識だけではなく、USBプロトコルの知識etcが必要上記のUSBシリアルデバイスに関しては、ドライバを作成して公開してくださっている方がいるので、それを使えば取扱いが容易 ksksueさんのFTDriver https://github.com/ksksue/FTDriver FTDI公式androidドライバ http://www.ftdichip.com/Android.htm usb-serial-for-android https://code.google.com/p/usb-serial-for-android/ 41
  42. 42. USB Hostを用いた商品USB-シリアルコンバータ RATOC REX-USB60MIhttp://www.ratocsystems.com/products/subpage/usb60mi.html 各種RS-232C機器を制御可能 Android用のプログラムはksksueさんのFTDriverを用いる 42
  43. 43. RATOC REX-USB60MIの利用USB to serial converter with stock android in USB host mode neuralassembly(私) 2013.4アップロード http://www.youtube.com/watch?v=vY8nviGw49E 43
  44. 44. USB Hostによる方法まとめ USBによって回路と有線接続。回路がハードウェアを制御 スマートフォンから回路へ電力を供給USB Hostの長所 有線なので、信頼性が必要な用途には向いている(干渉や遅延の問題がない) USB-シリアル変換はドライバを公開してくださっている方がいるUSB Hostの短所 新たなデバイスを対応させようとするとドライバを書かねばならず、大変 USB Host機能に対応していないスマートフォンもある 44
  45. 45. 以上の分類で取り扱わなかった内容(1) Wifi or Wifi 有線ネット インター ネット 各種マイコンなど Androidでラジコンを 広いところで操縦してみた android remote Ctrl Car iwata naokiさん 2010.11アップロード http://www.youtube.com/watch?v=VTiG3RqJQqQ 45
  46. 46. 以上の分類で取り扱わなかった内容(2) Bluetoothシリアル変換 RATOC REX-BT60 Bluetooth RS-232C 各種RS- 232C機器 Wifiシリアル変換 RATOC REX-WF60 Wifi Wifi インター RS-232C ネット 各種RS- 232C機器RS-232C機器(バーコードリーダーなど)をBluetooth、Wifi経由で操作可能 マイコンを使っても同じことはできるが、マイコンプログラミングが不要 46
  47. 47. 以上の分類で取り扱わなかった内容(3) 無線カメラ無線(Wifi)カメラ Wifi Wifi 遠隔にある外部カメラの インター ネット 映像を見ることができる Trek Ai-Ball Planex CS-W07G-CYControlling toy train (plarail) via Bluetooth with android smartphone neuralassembly(私) 2012.10アップロード (Bluetoothの例で紹介した 動画再掲) プラレールの先頭にカメラが ついている 47詳細はブログに http://neuralassembly.blogspot.jp/2012/12/androidwifimjpeg.html
  48. 48. 第四部 応用事例 48
  49. 49. 応用事例1:androidで開閉するスマートカーテン(1) 2012年度4年生6人の作品 neuralassembly(私)Smart curtain controlled by android smartphone 2013.3アップロード リモコン機能 音声認識 タイマー機能 SNS連携 http://www.youtube.com/watch?v=l_hWr2YgS0U 49
  50. 50. 応用事例1:androidで開閉するスマートカーテン(2) 基本的なアイディア Bluetooth モーター制御 Arduino + Bluetoothモジュール テグスが張ってある 上からの図 横からの図 ここにモーター 50
  51. 51. 応用事例1:androidで開閉するスマートカーテン(3)機構的な仕組み プーリー ワイヤー加工機によるアルミ加工 既存のカーテンレールに後付け可能 51
  52. 52. 応用事例1:androidで開閉するスマートカーテン(4)3次元CADによる設計図 52
  53. 53. 応用事例1:androidで開閉するスマートカーテン(5)モーターの正転・反転 モーターの正転、反転がカーテンの開閉に対応する モータードライバ モーター MP4212 Bluetooth 等価回路 0/1の 組み合わせを モーターへ モータドライバに 加える 53
  54. 54. 応用事例1:androidで開閉するスマートカーテン(6)カーテンの自動停止 カーテンが開ききった(閉じきった)時、過負荷がかかるため 回路の電流量増大→そのタイミングでモーターを止める モーター Bluetooth 電流値を見て 過電流なら ASC712 モーター停止 電流センサモジュール 54
  55. 55. 応用事例1:androidで開閉するスマートカーテン(7)まとめ 6人をスマートフォン、回路、機械設計の3グループに分け役割分担 各自が自分の得意なことorやりたいことを担当できた 回路はArduinoを使ったが、プログラミングを手取り足取り教える必要がなかった ネットの情報をもとに、多くを独力で実現(=Arduinoはとてもシンプル)スマートフォン(情報) 回路(電気電子) ものを動かす(機械) Bluetooth モーター正転反転 過電流チェックBluetooth機能タッチパネル機能音声認識機能タイマー機能インターネット機能(twitter) 55
  56. 56. 応用事例2:androidと連携するスマート白杖(1)視覚障碍者の方が用いる白杖にセンサを取り付け、白杖にぶつかる前に障害物の情報を知らせるスマートフォンは通知のほか、センサから得たデータをもとにした複雑な計算を担当(回路は実数演算を苦手としているので) 通知 加速度センサ 超音波センサ 反射波 障害物 送信波 56
  57. 57. 応用事例2:androidと連携するスマート白杖(2) スマートフォン 前方上部センサ右側面センサ 左側面センサ Bluetooth 前方センサ 白杖に実装 PICマイコン Bluetooth 57 超音波センサ 加速度センサ
  58. 58. 応用事例2:androidと連携するスマート白杖(3)考えたいシチュエーション(1) 前方に障害物があるとして、正面、左、右のどちらかを判別したい 障害物 ? ? ? 超音波センサは広がりを持つので、そのままでは上記すべてを 「前方に障害物あり」と判定してしまう 方向が知りたい 58
  59. 59. 応用事例2:androidと連携するスマート白杖(4)考えたいシチュエーション(1)解決方法 加速度センサで左右の振りの状況を取得 障害物への 距離 7 4 3 6 2 加速度(m/s2) 5 1 距離 (m) 4 0 -1 3 -2 2 -3 距離 -4 1 加速度 加速度 -5 0 -6 7 9 11 13 15 17 時間 (s) 障害物の位置によって、加速度と距離に相関が現れる 59 相関を計算することで、障害物が左右どちらかを判定 (この場合左)
  60. 60. 応用事例2:androidと連携するスマート白杖(5)考えたいシチュエーション(2) (杖から見て)前方には障害物はないが、前方上部に障害物がある場合 前方上部 前方 前方上部方向の障害物検知 60
  61. 61. 応用事例2:androidと連携するスマート白杖(6)考えたいシチュエーション(3) 左右どちらかの壁に沿って歩く「沿い歩き」をする際に 左右の壁までの距離がわかると便利 左側面 右側面 左右側面の距離検知 61
  62. 62. 応用事例2:androidと連携するスマート白杖(7) 2012年度修士2年生の作品A smart white cane with sensors that works with android smartphoneneuralassembly(私) http://www.youtube.com/watch?v=jZ2EdwdeN-M2013.3アップロード 62
  63. 63. 応用事例2:androidと連携するスマート白杖(8) PICマイコン 白杖に実装 Bluetooth 超音波センサ 加速度センサ視覚障碍者はスマートフォンを使えるのか? 対策を考えている方々がいる(日本アンドロイドの会福祉部など)スマートフォンの役割 センサの相関から左右方向の特定(複雑な実数演算) スマホなしで すべて白杖に実装 音による利用者への通知 でも可かも? 振動による利用者への通知 柔軟にベストな方法を探ってゆく 63
  64. 64. おわりご清聴ありがとうございました 64

×