robo8080のブログ

ロボット製作や電子工作など。

Android端末とmbedをBluetooth SPPで接続する実験(BTstack編)

2012年12月06日 | mbed LPC1768

 Android端末とmbedをBluetooth SPPで接続する実験をしましたので、その手順をまとめてみました。

 以前使っていた”myBlueUSB”は、最近うまくコンパイルできなくなってしまったようなので、”Norimasa Okamoto”さんが公開してくださっている”BTstack”を使ってみました。

 この記事は、ある程度Androidやmbedの開発経験がある方を対象にしていますので、ツール類の操作方法の細かい説明は省略しています。

1.必要なもの

 ・mbed側

(1)mbed NXP LPC1768

  

(2)StarBoard Orange または、USBコネクタ(Aタイプ メス )

 StarBoard Orangeではなく、USBコネクタ(Aタイプ メス )だけでも良いです。こちらで詳細に解説されていますので参考にしてください。

   

    

(3)BTstack 

 mbedでBluetoothを使えるようにするライブラリです。

 詳細はこちら

(4)Windows serial port driver

 mbed側の動作確認をするのに便利です。

(5)USB Bluetoothドングル

 私が動作確認したのはこれです。

  iBUFFALO Bluetooth4.0+EDR/LE対応 USBアダプタ ブラック BSHSBD08BK

 ・Android端末側

(1)Android端末

 私が動作確認したのは以下の二つです。

  Google Nexus 7

  acer ICONIA TAB A500

(2)Android開発環境

  Android SDK

(3)GetBlue

 Android開発環境を作るのが面倒なときは、これの無料版でも実験できます。

 

2.mbed側の準備

(1)Windows serial port driverをインストールし、シリアル端末が使えるようにしておきます。

  mbedが出力するログが見れるので、あると便利です。ログの通信速度は921600bpsです。

(2)BTstackのインポート

 BTstackをコンパイラにインポートします。

  "spp_demo.cpp"を使用するので、以下の修正をします。(2014.03.12 追記)

 ”mouse_demo.cpp”の1行目  #if 1  ーーー> #if 0

   "spp_demo.cpp"の1行目      #if 0  ーーー> #if 1

(3)コンパイル&ダウンロード

 コンパイルしてmbedにダウンロードしておきます。

 

3.Android端末側の準備

 ・Android開発環境を使う場合。

 Android SDK付属のBluetoothChatを使用します。

 ここを参考に"BluetoothChatService.java"のUUIDを書き換えてから端末にダウンロードしておきます。

 私が使ったBluetoothChatはAndroid2.2用です。

 A500はAndroid3.0ですが、Android3.0用BluetoothChatは、UUIDの定義部分がちょっと異なっているのでAndroid2.2用を使いました。

 ・GetBlueを使う場合。

  GetBlueを端末にダウンロード&インストールしておきます。

 

4.接続実験

 ペアリング、SPP接続する前に、Android端末のBluetooth設定で”検出可能”にしておきます。

 ・Nexus 7のとき

 

 ・ICONIA TAB A500のとき

 

 

 ・Android開発環境を使う場合。

(1)まずAndroid端末とmbedをペアリングします。

 PINコードを聞かれてきたときは”0000”です。

(2)つぎにBluetoothChatを起動します。

(3)メニューボタンを押すと、”connect a device”と表示されるのでこれを選択し、先ほどペアリングしたmbedを指定します。これでmbedと接続できるはずです。

(4)mbedとの接続がうまくいっていれば、Android端末から送信したものがエコーバックされてきます。

 

 ・GetBlueを使う場合。

(1)まずAndroid端末とmbedをペアリングします。

 PINコードを聞かれてきたときは”0000”です。

(2)つぎにGetBlueを起動します。

(3)メニューボタン->settings->Datasource(Input)->Bluetoothを選択し、先ほどペアリングしたmbedを指定します。メニュー画面を抜けてスタートボタンを押すとmbedに接続できるはずです。

 注意:Datasink(Output)には何も設定しません。

(4)mbedとの接続がうまくいっていれば、Android端末から送信したものがエコーバックされてきます。

 

5.補足1

 Windows PCと接続したい場合。

 mbedとPCをペアリングするとPC側にCOMポートが割り当てられるので、あとはそれを普通にシリアルポートとして”Tera Term”等で開けは通信できます。

 

6.補足2 (2014.03.12 追記)

 Windows PCとのSPP接続について。

 Win7の時はうまく接続できていたのに、Win8にしてからうまくいかなくなってしまいました。

 ペアリングはできるのですが、TeraTermから接続しようとするとエラーになります。

 Bluetoothのドライバは、Win7の時はドングル付属の物、Win8ではWin8標準の物を使用してます。

  ドングル付属のWin7用ドライバをWin8で試したのですがドライバが正常に動作しませんでした。

 Win8でもドングル付属のWin8用ドライバがあればうまくいくのかもしれませんが試していません。

 Auduino + USBホストシールドでも試しましたがこれもNG。

 SBDBTのSPPはWin8でもうまくいきました。

 

― 以上 -


関連する記事

Android端末とmbedをBluetooth SPPで接続する実験(myBlueUSB編)

 


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。