スマホ(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の動きは把握できたかな。。寝よ。。