【製品の種類】
マイクロチップ社が提供している旧Roving Network社のBluetooth
モジュールには下記のような種類があります。
最近Bluetooth Low EnergyのRN-4020が追加されました。
【モードの切り替え方】
Bluetoothモジュールのシリアルインターフェースは、通常の無線で送受するデータ転送モードと、
各種設定用のコマンドモードの2種類のモードを持っていて、コマンドモードに切り替えると
多くの動作設定や、設定確認ができるようになっています。その切り替えは下図のようにします。
UART側から「$$$」という文字コードを送るとモジュールがコマンドモードになり、
コマンドモード中に「---\r」を送るか、「R,1\r」を送るとデータ転送モードに戻ります。
ただし、デフォルトのままでは、「$$$」はモジュールの電源をオンまたはリセットしてから
60秒以内だけ有効で、それを過ぎると無効となりコマンドモードには入れなくなり、
通常の転送データとして扱われます。
この設定切り替えは、モジュールがスレーブの場合はBluetooth経由でHost側から
行うこともできます。
この場合も、やはりモジュールの電源をオンとしてから60秒以内のみ可能で、
以降は無視され通常の転送データとして扱われます。
【コマンド種類と設定内容】
RN-xxモジュールには非常に多くのコマンドが用意されていて、大別すると、
次の5種類となります。
(1) SETコマンド
ボーレート、名称、動作モードなど多くの設定をするためのコマンドで、
この設定は内蔵のフラッシュメモリに保存され、電源オン時に毎回適用されます。
(2) GETコマンド
フラッシュメモリに保存されている設定内容を読みだすためのコマンドです。
(3) CHANGEコマンド
ボーレートやパリティ有無などの設定を一時的に変更するためのコマンドです。
フラッシュメモリに設定内容は保存されず、ボーレート等がすぐ変更されデータ
転送モードとなります。
(4) ACTIONコマンド
接続、切り離し、リブートなどモジュールの動作を指示するコマンドです。
(5) GPIOコマンド
汎用の入出力ピンを操作するコマンドです。
それぞれのコマンドにはたくさんの種類がありますが、通常使用する代表的なコマンドは
下表のようなものとなっています。
それぞれのコマンドの最後には復帰コードが必要です。
種別 コマンド 設定・機能内容 Set SF,1\r 工場出荷状態に初期化する SM,<n>\r 動作モードの設定(nの値により下記モードとする)
0:スレーブ、1:マスタ、2:トリガ、3:自動、4:DTR、5:ANYSN,<name>\r モジュールに名前を付ける(nameは20文字以下)
≪例≫ SN,AnalyzerSO,<text>\r 接続、切り離し時に下記メッセージをローカル側に出力する
(デフォルトは出力しない設定となっている)
接続時:<text>CONNECT
切り離し時:<text>DISCONNECTSP,<pin code>\r セキュリティ用PINコードの設定 pin codeは20文字以下
≪例≫ SP,1234 (これがデフォルトの設定)SR,<address>\r 接続するリモートのMACアドレスを12ケタの16進数で指定する
≪例≫ SR,00A053112233ST,<time>\r コンフィギュレーションタイマの設定 timeは0〜255sec(デフォルトは60sec)
ただし 0:タイマ設定なし(常時リモートコマンド受付禁止)
255:タイマ無限(常時リモートコマンド受付許可)Get D 基本設定内容を読みだす E 拡張設定内容を読みだす Action $$$ コマンドモードにする --- コマンドモードを終了しデータ転送モードとする + コマンドのローカルエコーを表示する/表示しない(トグル切り替え) C,<address>\r MACアドレスを指定してリモートと接続を開始する
接続後自動的にデータ転送モードに切り替わる
CのみとするとSRコマンドで設定し記憶されているアドレスと接続するI,<time>\r 端末探索をtime秒だけ実行し、発見した端末のリストを返送する K,\r 現在の接続を切り離す R,1\r リブートする(電源オン時と同じ動作)
【実際の設定例】
RN42モジュールの実際の設定例が下記となります。
最初にコマンドを文字列として定義しておき、それを順番に出力するように
しています。出力ごとにモジュールから応答が返ってきますので、1秒の
間隔を入れて応答を無視するようにしています。
さらに$$$の前後には念のために無通信の時間を1秒間ずつ挿入しています。
モジュールを初期化して再起動するとUARTの設定が途切れますので、
USARTの再設定をしています。(\nは省略可能です)