入力デバイスの一覧を取得する


20130605input_manager_sample_1

Android 4.1 (API 16) から InputManager が追加されました。
入力デバイスの一覧を取得するには、InputManager#getInputDeviceIds を使用します。

ソースコードは code.google にて公開しています。

参考
JBで追加されたFrameworkの機能InputManagerについて


Android に Bluetooth キーボード を接続する


20130603bluetooth_keyboard

Android 3.1 から、Bluetooth HID プロファイルに対応し、Bluetooth HID キーボードが使えるようになったらしい。
Android の公式記事のどこにもそういう記述がないが。

手持ちの端末で試してみた。
最初にペアリングが必要です。

いずれもOK
(1) ○ Arrows Tab F10D (3.2)
(2) ○ Galaxy S3 (4.1.2)
(3) ○ Galaxy Nexus (4.2.1)
(4) ○ Nexus 10 (4.2.2)

補足
(1) HID プロファイルの対応には、機種依存性があります。
Android OS搭載スマートフォン、タブレットへの対応情報

(2) SPP プロファイル のキーボードもあります。
エレコム、Androidで利用できる折りたたみ式Bluetoothキーボード

(3) アプリで独自に対応しているものあります。
BT接続できるSimeji

参考
Bluetoothマウスやキーボードを活用するとなかなか捗る!


Android端末からロボットを操縦する


LEGO MindStroms

LOGO社が販売している学習用のロボットのキットです。
これを使ったロボットのコンテストが世界中で開催されています。

Android の傾きセンサで LEGO MindStroms を操縦する
Android と MindStroms の間の通信には Bluetooth を使用した。
Android の傾きセンサーを使って、MindStroms の進む方向を制御する。
Android のプログラムには、JAVA ではなく、App Inventor を使用した。

Pololu m3pi

Pololu社が販売しているマイクロマウス型のロボットです。
マイコンにはNXP社のmbedを使用しています。
NXP社やARM社の展示会でもよくデモをしています。

Android 端末から pololu m3pi を操縦する
Android と m3pi の間の通信には Bluetooth を使用した。
Android のタッチパネルを使って、m3pi の進む方向を制御する。
Android のプログラムには、JAVA を使用した。


MINDdroid – Shooterbot


MINDdroid は、アンドロイドからマインドストームを操縦する LEGO の公式アプリです。

Shooterbot を傾きセンサで動かします。
Shooterbot controlled with MINDdroid
YouTube Preview Image

ソースコードが github で公開されています。

関連
・MINDdroid – Shooterbot
MINDdroid – MINDGameZ
MINDdroid – AlphaRex


ADK 2012


Google I/O 2012 にて、Android 4.1 と ADK 2012 が発表されました。
大きな特徴は下記のとおりです。
(1) ADK の protocol version が1から 2 にバージョンアップした。
(2) Bluetooth をサポートした
(3) 音楽を流せるようになった。

これに伴い、Android 4.1 と 従来の ADK の接続ができないという問題も出ています。

参考
Accessory Development Kit 2012 Guide
グーグル「ADK 2012」は出色のデザイン性
動画で見るADK 2012
ADK 1.0 devices fail to work with Jelly Bean, why?


アンドロイド から m3pi を操縦する


m3pi が届いた ので、アンドロイドから動かしてみた。
アンドロイドのアプリは、Bluetooth Chat をベースに作成した。
m3pi のプログラムは, m3pimyBlueUSB をベースに作成した。

ソースコードは code.google に置いています。

はまった点
Ouchi さんの記事 を参考にしたのですが。
全く繋がらなくて、あれこれ悩んでしまった。
理由は、通信 のプロトコルが違っていたためでした。
記事にある keyboard は HID で、アンドロイドは SPP なので、繋がらなくて、当たり前でした。
Robot No.8080 さんの記事 を参考に、SPP 用の Bluetooth スタックを入れて、無事動作しました。

気になる点
(1) myBlueUSB が不安定です。
(2) Bluetooth のコネクションがすんなり確立しないです。数回トライする必要があります。
(3) ペアリングが保持されないです。毎回 PIN を入力する必要があります。
(4) コネクションが一度確立すると、あとは安定に動作します。

YouTube Preview Image

参考
Ouchi: m3piをBluetooth keyboardでコントロールしてみました
Robot No.8080: Android端末とmbedをBluetooth SPPで接続する実験
wikipedia: Bluetooth
HID (Human Interface Device Profile)
マウスやキーボードなどの入力装置を無線化するためのプロファイル。
SPP (Serial Port Profile)
Bluetooth機器を仮想シリアルポート化するためのプロファイル。


アンドロイド の傾きセンサで マインドストーム を動かす


YouTube Preview Image

この記事は 日本 App Inventor ユーザー会 Advent Calendar 2011 という企画の1つのエントリです。

以前、書籍 30分でつくれるAndroidアプリ に紹介されている方法で、アンドロイドからマインドストームを動してみました
それは、タッチパネル上のボタンを押すと、マインドストームが前進するというものでした。

今回は、アンドロイドの傾きセンサを利用してみました。
きっかけは、日本App Inventorユーザー会 のMLで下記のようなやりとりがあったことです。

機械電気科 都島工業
このプログラムの場合ボタンを押したら指定時間(もしくは距離?)進むのですが、そうでは無くボタンを押している間だけ進むと言う形に変えたいと思っています。

大和田 (私)
ボタンを押している間だけ走るという方が自然なので僕も挑戦したのですが、現在の App Inventor のButtonコンポーネントのイベントではボタンを押した時しか分からず、ボタンから指を離したイベントがないのです。

つれもて
本屋さんで立ち読みをしていたら マインドストームを加速度センサーで操作って掲載されていました。これの方がスマートフォンらしいですね。

AppInventor の 傾きセンサコンポーネント を調べてみたら、pitch(前後の傾き) roll(左右の傾き)が取得できるようです。
そこで傾きが10以上なら半速前進、20以上なら全速前進、としてみました。

ソースコードは code.google に置いています。

スクリーンショット

デザイナー (Designer)

ブロックエディタ (Blocks Editor)
AppInventor の ifコンポーネント には elseif がないので、else の中に ifコンポーネントを置くという不格好な構成になってしまいました。

動かしてみる。 上段のビデオ。

関連
アンドロイド から マインドストーム を動かす

参考
2011年 オクトバ大忘年会 アフターレポート!
マインドストームを持込んだところ、記事に掲載して頂きました。


アンドロイド から マインドストーム を動かす


YouTube Preview Image

マインドストームが届いた ので、アンドロイドから動かしてみた。
アンドロイドにプログラムには App Inventor を使用した。
App Inventor には マインドストーム を動かすための専門のコンポーネントLEGO MINDSTORMS が用意されています。
これらは、書籍 30分でつくれるAndroidアプリ にて詳しく説明されています。

書籍に載っていた見本を少し改良しました。
(1) 見本では、ブルーツースで接続するマインドストームを毎回デバイス一覧から選択するようになっていた。
今回は、一度選択したら記憶するようにして、次回からデバイス一覧を表示しないようにした。
TinyDB コンポーネントを使用した。

(2) 見本では、右回転、左回転には、時間制限がなく、ず~と回っていた。
今回は、だいたい1回転する時間の5秒後に停止するようにした。
Clock コンポーネントを使用した。

スクリーンショット

デザイナー (Designer)

ブロックエディタ (Blocks Editor)

ダウンロード (バーコード)

動かしてみる。 上段のビデオ。


App Inventor による Bluetooth 制御


昨日のハッカソン で作った App Inventor のアプリです。
アンドロイド端末を Bluetooth 機器に接続して、コマンドを送って機器を制御するもの。
Bluetooth 機器には、横浜ロボット部で作った タッパウェア型ドロイド君 を使いました。
アンドロイド端末の [LED On] ボタンを押すと、ドロイド君の LED が点灯します。

製作時間は1時間ほど。
半分以上は、Bluetooth の使い方についてネットで検索していた時間です。

昨日の成果発表会
ohwada 撮影 @You_name_is_YU

スクリーンショット
screenshot

デザイナー (Designer)
designer

ブロックエディタ (Blocks Editor)
blocks editor

参考
Bluetooth Client – App Inventor Idea Book
App InventorによるBluetooth送受信のテスト – CPUを作ろう


横浜ロボット部 ロボット製作実習


2011年6月26日(日) アンドロイド 横浜ロボット部 に参加した。

http://atnd.org/events/16685

今日は、簡単な電子工作をして、アンドロイド端末から制御する実習。

完成イメージ

robot sample

組み立て前

robot parts

組み立て後

robot final

アンドロイド・アプリをビルドして、端末の転送する。

端末から、ブルーツース経由を接続して、LEDを点灯する。

トラブルもなく無事 に動作した。 (^o^)