2015年6月27日土曜日

Bluetooth の実験をするハードウェアを準備する

Bluetooth の実験をするために、相互接続が可能なハードウェアと確認用のアプリケーションソフトを準備します。
Windows PC、Android 携帯、Bluetooth-TTLシリアル通信モジュールを SPP モードで相互通信できる環境を用意します。
自分でアプリケーションを作る前に、まずは用意したハード同士の互換性があることを既存のアプリで確認します。

Bluetooth ペアリングメモ
先に起動したほうをサーチ可能と設定し、後に起動したほうがサーチを実行する。互いのリストに出現したあとにペアリングをリクエストする、リクエストした側から暗証番号を設定、リクエストされた側が暗証番号を回答。
BT module 等キーボードを持たない機器は、あらかじめ回答する番号 0000 や 1234 を持っているようなので、それにあわせて暗証番号を発行する?
一度ペアリングすると Mac アドレスから Aveilable リストに出現するが、それは、相手の 電源、Bluetooth ON か否かを示すものではない。
エラーメッセージは、そもそも接続エラーの原因が多すぎるのであまり当てにならない。
タイムアウトあり?
機能が同じシリアルでも、SPPとダイヤルアップ、GPS等、目的でプロファイル名(ID)が違うと接続できない。 iOS による SPP 利用はあきらめる。
WindowsPhone8 には SPP 利用の可能性あり。

  • Windows7-64 setup
  1. USB-Bluetooth ドングルを接続、動作確認
    パソコンショップか通販などで、できれば Bluetooth 4.0 規格のものを購入しドライバをセットアップします。手元にある携帯電話などを接続し、どういう感じでペアリングをするかなど、少し慣れておくとよいと思います。 実際にリモコンやオーディオ関連のアプリなどで動作することを確認します。
  2. Terminal Software のインストール
    特に好みが無ければ、Tera Term がよいと思います。
    この実験の範囲では、COM ポートは適宜選びますが、設定はデフォルト 9600,n,8,1 で大丈夫です。
  • BT 通信モジュール setup
    ここでは、USB-BT 一体型ではなく USB-TTL Serial(UART)モジュールと TTL-Serial Bluetooth モジュールで構成します。ARM 評価ボードの TTL Serial UART の Rx Tx を使う前の段階です。
  1. USB-TTL Serial ドライバのセットアップ(WindowsPC)
    接続すれば一発認識されますが、この手のものを始めて接続するのであれば、FTDI の最新ドライバを事前にインストールしておけば問題ないはずです。
    JY-MCU usb-uart からは、3.3V も出力されており便利です。
  2. 接続
    JY-MCU usb-uart、USB-TTL Serial 変換君 と JY-MCU BT-Board TTL Serial - Bluetooth (SPP)モジュールを接続します。
    USBUSRT BT_Boad
    3.3V ----- Vcc →
    TXD ----- RXD →
    RXD ----- TXD ←
    GND ----- GND
  • Android 4.1.1 携帯 Alcatel onetouch 5020x setup
  1. Bluetooth Terminal アプリインストール(TBD)
    今は Bluetooth Terminal をインストールしていますが、このアプリ選びが大変です。類似のアプリが山ほどある上に、評判が良くても接続できなかったりします。Bluetoothにはまだ詳しくないので、どの機能が私の環境に適している、不適であるかが分かりません。ただ、いまのころ、このアプリでなら我慢できる程度に接続の確認ができています。これからもっと良いアプリ探しをするか。ともあれハードウェア OSレベルでの接続性を確認するという目的には使えています。

  • Android 携帯 と Bluetooth module のシリアル接続 connection
    モジュール側からは、電源リセット以外何もできないので、Android 側からすべて操作します。周囲の余計な BT機器は、できればすべて OFF にすると楽です。
  1. Bluetooth module を USB ポートに接続
    リセット状態です。うまくいかない時はここまで戻ります。
  2. Windows PC でターミナルソフトを起動
    TeraTerm を起動し Serial: USB-TTL serial アダプタの COM を開きます
  3. Android 側、Bluetooth ON
    Bluetooth Terminal アプリが起動していないことを確認します。
    Settings, Bluetooth [ON] ,Bluetooth をタップ
  4. デバイスサーチ search for devices
    念のため paired リストに載っているデバイスをすべて unpair した後、画面一番下の SEARCH FOR DEVICES を実行。
    Available list に HC-06 などモジュール名が出ることを確認
  5. ペアリング Pairing
    デバイス名をタップします
    PIN を要求されます、ここでは デフォルトの 1234 を入力します
    HC-06 が Paired devices に上がって来たことを確認します
  6. アプリケーションを起動
    Bluetooth Terminal アプリをタップし起動します
    右上 メニュー、Connect a device - Secure
    Paired deceives から HC-06 をタップ
    Connected: HC-06 と表示されれば成功
  7. 互いのターミナルウィンドウにタイプした文字が表示されることを確認。
  8. Connect: HC-06 と表示されない not connected と表示される場合。
    Bluetooth Terminal アプリの停止。
    Settings, Bluetooth, Paired devices から HC-06 を Unpair
    Bluetooth [OFF]
    Windows TeraTerm 閉じる
    Bluetooth Module を USBポートから抜いて 1から再試行
ちょっとこの、失敗した後の再試行のあたりも何とかできるアプリがあればよいのですが、いまのところ、こんなことをしています。が、これで ハードウェア、OSとドライバレベルで SPP 接続に問題が無いことが確認されました。あとはきちんとしたアプリケーション。
  • Windows7-64 と Bluetooth module のシリアル接続 connection
    モジュール側からは、電源リセット以外何もできないので、Windows 側からすべて操作します。ドングルと USB-BTモジュールが同じ PC と同じターミナルソフトで確認しますが、PCが2台あったほうが手順を把握しやすいと思います。
    周囲の余計な BT機器は、できればすべて OFF にすると楽です。
  1. Windows PC の USB-BT ドングル接続
    USB-BT ドングル、写真では白い小さいほう以外は外す。
  2. Bluetooth module を USB ポートに接続
    リセット状態です。うまくいかない時はここまで戻ります。
  3. Windows側 Bluetooth 管理ソフトで BT module をサーチ
    管理ソフトもしくはBluetooth の場所、ですでに status pairedに表示、paired リストに載っていたら Unpair もしくは Disconnect し改めてサーチをかける。アイコンを削除して再度デバイスの検索をかけても良い。何かうまくいかない場合はお勧め。
  4. ペアリングする Pairing
    HC-06 をペアリングする。 passkey は 1234 を入力する
  5. BT管理ソフトで HC-06 のCOM ポートサービスを開始する
    管理ソフト上の HC-06 のアイコンをクリックすると COM ポートのアイコンがあるのでクリックする、PC のCOM ポートが割り当てられる。
  6. Windows 側ターミナルソフトを起動
    BT 管理ソフトの HC-06 デバイスのプロパティ、アイコン右クリックなどで COM番号を確認し、そのポートをTeraTerm で開く。これが PC側
  7. BT module 側ターミナルソフトを起動
    TeraTerm を起動し、USB-TTL Serial アダプタに割り当てられているポートを開く。
    これが Bluetooth module 側
  8. 互いのターミナルウィンドウにタイプした文字が表示されることを確認。
  9. うまくいかない場合
    デスクトップ上のすべてのBTおよびターミナル関連アプリケーションを正しく停止する
    BT管理ソフトで、モジュールを Un-pair、 Disconnedt する
    BT管理ソフト上で モジュールのアイコンを削除する。あとで再検索をかける
    タスクトレイの BTアイコンを使って Bluetooth を off にする (T)
    なにか詰まって反応しないアプリケーションに覚えがあれば、ログオフ、再起動する。
Windows の場合もなにせ、パーミッションを奪ったまま落ちたアプリなどがあるとすべて詰まってしまいますし、Fail の状態のデータも残っているとそれを使おうとするので、ディスコネクト、削除、停止、Bluetooth 通信機能自体の OFF を含む再起動が近道です。ちょっと製品として納入するのは怖くなるレベルです。
  • Windows7-64 と Android 携帯のSPPシリアル接続 connection
    BT モジュールは、デフォルトで周囲のデバイスから検索可能になっていますが、その他のちょっとスマートデバイスは、隠れるようになっています、なっていることがあります、ので、スマートなもの同士を探すときは、探される側が自身を検索可能にし、検出される準備が必要です。
    BTモジュールは、PIN を 1234 と自動で回答しますが、スマートなデバイスはペアリング時に同じPIN(任意)の入力を両方の端末で求められます。
    ペアリングができれば、どちらからでもシリアル接続のリクエストができそうなものですが、Windows 側の BT 管理ソフトは android の場合 BT通信モジュールのときのように SPP サービスを自動で検出できません。オーディオやらヘッドセットサービスは見つかりますが、SPPは検出されません。そのためペアリングした後に、Android 携帯の Bluetooth tarminal App 側からシリアル通信サービスの要求をします。
    周囲の余計な BT機器は、できればすべて OFF にすると楽です。
  1. Windows PC に BT-USB ドングルを接続
    すっきり試したい場合は、BT管理ソフトから Android 携帯のペアリング情報、アイコン自体も削除して始めるとよいと思います。
  2. Android 携帯の検索にかかるよう可視化
    Settings, Bluetooth [ON],Bluetooth, Cellphone name (Visoble to all nearby Bluetooth devices)にする。(windows が被検索側でもよいです)
  3. Windows PC から Android 携帯を検索 
  4. タスクトレイ、Bluetooth アイコンから、BT接続管理ソフトを起動しデバイスの検索をかけます。ここで見つかると、デバイスの検出、名前の更新が行われます。
  5. Windows PC から Android 携帯をペアリング
    BT接続管理ソフトの Android 携帯のアイコンをクリックし「ペア」します
    PC (リクエスト側)で 4桁の数字の PIN 入力(任意)を求められます。
    Android (被呼側)で 4桁の数字の PIN 入力 (リクエスト時に入力した任意の数字)します。
    Windows 側で Android 携帯の BTサービスの検索を行っても、Android にシリアル SPP が有効とは出ません
  6. Android 側 Bluetooth Tarminal を起動 SPP 通信をリクエスト
  7. アイコンをタップ、右上 menu, Connect a device - Secure, Select Windows PC, で PC を選ぶ。Windows PC 側に シリアル通信サービス許可をも求める Window が開くので許可する。このときの COM ポート番号を記録
  8. Windows PC ターミナルソフト TeraTerm で SPPの COMポートを開く
    前項の COM ポート 画像では COM15 を TeraTerm で開く
  9. 通信の確認
    双方のターミナルウィンドウにタイプした文字が表示されることを確認します。
  10. うまくいかない場合
    いつものように、どんどんディスコネクト、削除再検索して再接続します。
私の Bluetooth ドングルを接続すると、COMポートが 2つあるのですが、それがなぜか受信専用で、こちらに Android からの通信が割り当てられると、PC からの送信ができません。ここのところをもう少しはっきりさせたい、新しい双方向のポートに確実にアサインされる設定が欲しい、のですが、私が買ったドングル固有の問題かもしれませんし BTの問題とはちがうので、も少し一人でごにょごにょするつもりです。


Bluetooth 感想
いままでほとんど無視してきた Bluetooth ですが、もう枯れた技術だろう、ペアリングとか言うのをしてターミナルソフト起動すればシリアル通信できるんでしょ?とか思っていましたが、けっこう大変でした。
SPP というプロファイルを使えば、とか、だから、プロファイルって何?そもそもホスト-デバイスみたいな定義があるのか、検索?ペアリングの手順? 30秒タイムアウト、思わぬディスコネクトからの復旧、またユーザーによるローレベルな手順の制御が必要で、いろいろおどろきました。
いまだに USB からモジュールを引き抜いたり ディスコネクトボタン連打、アプリの再起動、BT ON/OFF の繰り返しです。慣れるまでまだしばらくかかりそうです。どっちを先に電源入れてとか、今どっちがサーバ?とかまだはっきり自信がありません 笑
いまだ(私の知識不足により)不安定ではありますが、ハードウェア、OS、ドライバレベルでは、相互に接続が可能な物がそろったところです。






0 件のコメント: