« HC-06 Bluetooth module のATコマンド | Main | ドアフォンの故障(此方の声が相手に聞こえない) »

12/06/2017

Bluetooth modules(HC-05、HC-06)のPairing設定

Bluetooth modules(HC-05、HC-06)が互いに通信するための条件設定は何かを調べてみたので、メモとして残しておく。
本件に関しては、「Arduinoを簡単にBluetooth無線化するHC-05/HC-06
」(2015年2月20日の記事)、「Connecting 2 Arduinos by Bluetooth using a HC-05 and a HC-06: Pair, Bind, and Link 」(2014年11月の英文記事)がとても参考になる。

Bluetooth module HC-05の特徴は、
 ・Bluetoothの親機としても使用できる。(マスターでもスレーブとしてでも使用できる。)
 ・通信はBluetoothで行うが、入出力端子はシリアルのRX/TXとなっているため、Arduinoのシリアル RX/TXに接続するだけで通常のSerial通信と変わらず使用できる。

Bluetooth module HC-06の特徴は、
 ・3.3Vデバイスなので、Arduinoと接続する際には、5V Tx信号を抵抗分圧で、3.3Vにレベルシフトする必要が有る。
 ・通常Arduinoとの接続時には、再起動される。
 ・HC-06は、他のBluetooth module とペアリングしていない場合、ATコマンドを受け入れる。
 ・ATコマンドは、シリアルモニタの下端にある窓の設定は、「改行なし(No line ending、キャリッジリターン (CR) とラインフィード (LF)が無い状態
)」とし、且つ 1秒以内に送信する必要が有り、この時間を越えるとコマンドは無視される。

 ・ディバイスの名前:HC-06
 ・Password: 1234(デフォルト)
 ・Baud: 9600baud(デフォルト)


Bluetooth module HC-05およびHC-06が相互に
通信するための設定手順

①両方のデバイスで同じボーレートを設定する。

  (例)HC-05およびHC-06で、ボーレートを9600に設定する。

②両方のデバイスで、パスワードが同じであることを確認する。

  (例)HC-05とHC-06のパスワードを同じにする。

③次に、HC-06のアドレスを見つける必要がある。

  HC-06のATコマンドでは、自分(HC-06)のアドレスを調べる事は出来ないので、
  Androidデバイスから、あるいはHC-05を使って調べる事が出来る。
  
  ここの手順は、
Connecting 2 Arduinos by Bluetooth using a HC-05 and a HC-06: Pair, Bind, and Link 」の『3. Find the address of the HC-06』 に詳しく記載されているので、ここを確認するのが良い。

  HC-05で行う場合、HC-05をATコマンドモードにして以下のように行う。

  a)以前にペアになったデバイスをすべて消去するために、
    AT+RMAAD

  b)HC-05をマスタモードにする。
    
AT+ROLE=1

  c)
HC-05をリセットする。
    AT+RESET

  ピン34をHIGHにして(ATコマンドモードにして)から

  d)HC-05を任意のデバイスに接続するように設定する

    AT+CMODE=0

  e)最大5台のデバイスを9秒間検索するを行う場合、下記のコマンドを入力する。
    AT+INQM=0,5,9

  f)SPPプロファイルを開始する。もしSPPが既にアクティブであれば、無視することができるエラー(17)が表示される。
    AT+INIT
  g)ここで、他のBluetoothデバイスを検索する。
    AT+INQ
   Bluetoothデバイスが複数ある場合には、上記の設定により、5台までのデバイスが表示される。
   AT+INQは3つの値を返します。
     最初の値はアドレスで、これがペアリングの為に必要な値です。
     2番目の値はデバイスのモード。
     3番目の値はRSSI信号の強さ。

④HC-05をHC-06とペアリングする。(所謂、電話番号の交換)
  ペアリングするには、AT+PAIR= <addr>、<timeout>コマンドを使用する。
  (例) "AT + PAIR = 3014,10,171179,9"(引用符なし)と入力する。

     上記の例で、HC
-05がHC-06と 9秒以内にペアリングできない場合、
     エラーメッセージが表示される。
     ペアリングが成功すると、「OK」が表示される。

HC-06をHC-05にのアドレスとしてバインド設定する。(所謂、通話すること)
  "AT + BIND = 3014,10,171179"を使用してバインドする

⑥ペアリングされた特定の1台のデバイスにのみ接続するようにHC-05を設定する。
   CMODEコマンド でこれを行う。
  
   "AT + CMODE = 1"

HC-06へのリンク(HC-05からリモートデバイスであるHC-06への接続)
  リンクコマンドAT + LINK = <addr>を使用する

  (例)前述からの流れで示すと・・・
   "AT + LINK = 3014,10,171179" として行う。

  すべてがうまくいけば、「OK」 の応答が得られる。


  HC-05のLEDは、毎秒1回点滅し、HC-06のLEDは点灯状態(点滅ではない)。
  これで、HC-05とHC-06が接続した。

  接続設定が完了すると、HC-05は電源を入れるたびに自動的にHC-06に接続する。


  接続が確立されると、HC-05は通信モードに切り替わる。



通信の確認
テストスケッチで(私のブログならばここを参考に)確認を行う。

①HC-05とHC-06が接続された2台のArduinoの電源を切る。


②先ず、
HC-06の電源を入れる。
  LEDは1秒間に5回点滅している筈で、これは、接続を待っているか、ペアになっていることを示す。

③次に、
HC-05の電源を入れる。
  最初にLEDが数回点滅し、その後、通常パターンの点滅に変わる。

④HC-06のLEDが常時点灯する(点滅はしない)。

⑤以上で、2台のモジュールが接続される。



シリアルモニタを開くと、入力したコマンド等は、もう一方のデバイス用のモニタに表示され、逆も同様に表示される。


モジュールの電源がONになるたびに、接続し直す必要がある。モジュール間で接続していないことがわかったら、Arduinoの電源を入れ直すこと。

場合によっては、HC-05が接続しようとしてスタックしていることがある。この場合、HC-05のLEDの状況は、下記のようである。


1)2秒間に3回の点滅をしている。

2)あるいは、1秒に2回点滅します。
これは通常、HC-05をリセットしないで HC-06の電源を切り再度ONにしたときに発生する。

« HC-06 Bluetooth module のATコマンド | Main | ドアフォンの故障(此方の声が相手に聞こえない) »

Arduino」カテゴリの記事

Comments

Post a comment

Comments are moderated, and will not appear on this weblog until the author has approved them.

(Not displayed with comment.)

TrackBack


Listed below are links to weblogs that reference Bluetooth modules(HC-05、HC-06)のPairing設定:

« HC-06 Bluetooth module のATコマンド | Main | ドアフォンの故障(此方の声が相手に聞こえない) »

August 2019
Sun Mon Tue Wed Thu Fri Sat
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

Recent Trackbacks

無料ブログはココログ