2012年11月28日水曜日

Android Bluetooth テスト

スマホ(Android)からBluetooth経由でマイコンを制御したくなり、
Bluetoothモジュールを購入しました。

USBシリアル変換のようなお手軽な値段のものは少なくて、
モチベーションが下がりつつあると、、、格安モジュールがヒットしました!

SzParts.com SBT1-T-S 1950円(送料350円)


早速、USBシリアル変換モジュールをかまして、PCと接続。
仮想COMポートとして認識させて、スマホ(Android)からスキャンデバイス!

検出できました~。






次はスマホとTeraTermと通信テスト。

検出できたデバイス(BTCOM-SPPB)を選択すると、
パスワードを求められるので、初期パスワードを入力。
接続OK!

BTCOM-SPPBはスレーブですが、SPPの定義ではサーバとなるみたい。
通電すると、他デバイスから検出可能な状態で待機していて、
マスター(SPPではクライイアント)から接続されると通信可能状態になるらしい。
定義が逆の感じでややこしい。。
というわけで、スマホから入力した文字がPCにBluetoothで転送できました!


さて、接続して文字の転送をしたLogCatのログを追いかけよう。。

◆UUIDをSPPに変更前(接続失敗)

E/BluetoothChat(676): - ON PAUSE -                          // DeviceList画面に遷移
D/DeviceListActivity(676): doDiscovery()                    // デバイススキャン(サーバが存在するかをサーチ)
D/BluetoothChat(676): onActivityResult -1                   // Main画面に戻る(引数にMACアドレス)
D/BluetoothChatService(676): connect to: XX:XX:XX:XX:XX:XX  // BluetoothChatService#connect()呼び出し、ConnectThreadスレッド起動
D/BluetoothChatService(676): setState() 0 -> 2              // STATE_CONNECTINGに遷移
E/BluetoothChat(676): + ON RESUME +                         // Main画面に戻るとON RESUME
I/BluetoothChatService(676): BEGIN mConnectThread SocketType:Secure // ConnectThreadスレッド開始
I/BluetoothChat(676): MESSAGE_STATE_CHANGE: 2               // ActionBarにConnectingを表示
D/BluetoothChatService(676): start                          // おそらく、connectionFailed()が実行されている
D/BluetoothChatService(676): setState() 2 -> 1              // STATE_LISTENに遷移
I/BluetoothChat(676): MESSAGE_STATE_CHANGE: 1               // ActionBarにNotConnectedを表示
D/BluetoothChatService(676): Socket Type: SecureBEGIN mAcceptThreadThread[Thread-9961,5,main] // AcceptThreadスレッド(Secure)起動
D/BluetoothChatService(676): Socket Type: InsecureBEGIN mAcceptThreadThread[Thread-9962,5,main] // AcceptThreadスレッド(Insecure)起動
E/BluetoothChat(676): - ON PAUSE -                          // DeviceList画面に遷移(以降、繰り返し)



◆UUIDをSPPに変更後(接続成功)

E/BluetoothChat(3823): - ON PAUSE -                         // DeviceList画面に遷移
D/DeviceListActivity(3823): doDiscovery()                   // デバイススキャン(サーバが存在するかをサーチ)
D/BluetoothChat(3823): onActivityResult -1                  // Main画面に戻る(引数にMACアドレス)
D/BluetoothChatService(3823): connect to: XX:XX:XX:XX:XX:XX // BluetoothChatService#connect()呼び出し、ConnectThreadスレッド起動
D/BluetoothChatService(3823): setState() 0 -> 2             // STATE_CONNECTINGに遷移
I/BluetoothChatService(3823): BEGIN mConnectThread SocketType:Secure // ConnectThreadスレッド開始
E/BluetoothChat(3823): + ON RESUME +                        // Main画面に戻るとON RESUME
I/BluetoothChat(3823): MESSAGE_STATE_CHANGE: 2              // ActionBarにConnectingを表示
E/BluetoothChat(3823): - ON PAUSE -                         // パスワード入力画面表示?
E/BluetoothChat(3823): + ON RESUME +                        // Main画面に戻るとON RESUME
D/BluetoothChatService(3823): connected, Socket Type:Secure // 接続成功
D/BluetoothChatService(3823): create ConnectedThread: Secure // ConnectedThreadスレッド起動
I/BluetoothChatService(3823): BEGIN mConnectedThread        // ConnectedThreadスレッド開始、readブロックコール
D/BluetoothChatService(3823): setState() 2 -> 3             // STATE_CONNECTEDに遷移
I/BluetoothChat(3823): MESSAGE_STATE_CHANGE: 3              // ActionBarにConnectedとDevice名を表示、チャットクリア
                                                            // (以降、READ/WRITEでチャット可能)



ふぅ。。サンプルのBluetoothChatの動きは把握できたかな。。寝よ。。

0 件のコメント:

コメントを投稿