Skip to content

BluetoothChatでシリアル接続(SPP)を行う

by dietposter on 2月 17th, 2011

AndroidとArduinoとをBluetooth接続するためには、まずAndroidにサンプルソース「BluetoothChat」を入れることからはじめます。

Eclipseから「ファイル(F)」メニュー-「新規(N)」-「Androidプロジェクト」を選んで、以下のようにDemoサンプルのプロジェクトを作成してください。

新規Androidプロジェクト画面

手持ちのAndroidのバージョン(ここでは2.2)のデモを選ぶ

また、BluetoothChatについての解説は、以下のmhidakaさんのサイトに良い説明があります。

AndroidでBluetoothを使うには

(mhidakaさんですが、去年大阪の産業創造館で日高兄妹+cattakaさんのプレゼンをみて、うーん勉強になるなあ、すごいなあと感じた方です。)

通信プログラムは、以下の2点

  • byte[]配列を使うこと(ネットワークバイトオーダー)
  • ソケットを使って接続インスタンスを利用すること

とゆーことさえわかっていれば、ファイルの読み書きの様に使える、そう難しいプログラムではないハズなんです。が、Javaですので、手続きがちとめんどうです。

そのJavaらしい手続きを手際良く説明されていて、あーこれいいーと感心します(あとで自分でゆっくりソースを見るときの助けになります)。

ただ、上記の説明には無い部分がAndyにはあります。

Android同士ですと、サンプルソースそのままで接続可能⇒チャット開始となるんでしょうが、Arduinoはシリアル接続のため、SPPというプロファイルを利用して接続する必要があります。

そのために、BluetoothChatServiceクラス内のUUIDをSPP用の”00001101-0000-1000-8000-00805F9B34FB”という文字列に指定する必要があります。以後作成するAndy用のアプリはすべてこのUUIDに変更する必要があります。

このUUID文字列の経緯については、以下のAndroid-SDKグループにてディスカッションされています。このなかのN君はじつはAndyButtonなどを書いたウチの学生です。

BluetoothChatプロジェクトのsrcフォルダを開いて、BluetoothChatService.javaの中でのUUIDのstatic finalなUUIDの定数を探して下さい。
// Unique UUID for this application
private static final UUID MY_UUID = UUID.fromString("fa87c0d0-afac-11de-8a39-0800200c9a66");

これを以下のように書き換えます。

//SPP向け Unique UUID for  SPP application
private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");

このあと、プロジェクトのフォルダを右クリックして「実行」メニューから実機にインストールしてください。以下の様な画面が出ます。

BluetoothChat起動画面

BluetoothChatの起動画面

ArduinoとBluetoothモジュールがなくても、パソコンのBluetoothドングルなどで接続確認が可能です。つぎのブログでそのテスト方法をお伝えします。

No comments yet

Leave a Reply

Note: XHTML is allowed. Your email address will never be published.

Subscribe to this comment feed via RSS