タブレットを無線で動かして何か面白いことできないかなと思い、とりあえず作るものは決まってないけど無線モジュール買っちゃいました(๑≧౪≦)てへぺろ
秋月電子通商でポチったのはこちら。
RN-42使用Bluetooth無線モジュール評価キット
それでは使い方を覚えながら何か作ってみたいと思います。
初期設定
まずはBluetoothモジュールをPC(Windows7)に繋いで動かすところまでやってみたいと思います。
接続手順は付属のマニュアルに書いてあるので、補足程度に書きます。
1.FTDI社のUSBデバイスドライバをインストール
FTDI社のダウンロードページに行き、VCPドライバをダウンロードします。
#ちなみにVCPとはVirtual COM Portの頭文字で、USBデバイスをシリアルポート(RS232)として使用するためのエミュレータだそうです。
PCのUSBポートにBluetooth評価モジュールを指すとドライバが見つかりませんとなるので、、ダウンロードして解凍したフォルダからドライバをインストールします。
(2回聞かれます)
正常にインストール出来るとデバイスマネージャーに新しいデバイスが2個追加されます。
2.COMポートの設定
デバイスマネージャーで“USB Serial Port(COM*)”を右クリック→プロパティを開いて、マニュアル通りの設定に変更する。
3.ターミナルソフトと接続
Tera Termを起動して[File]-[New Connection]をクリック。
Serialから対象ポートCOM*を選択してOK。
別Windowが開いたら、[Setup]-[Serial Port]をクリック。
デバイスマネージャーの時と同じ設定にする。
4.無線モジュールをコマンドモードに遷移
Tera Termで
$$$
を入力。
ターミナル上に「CMD」が表示され、無線モジュールのLEDの点滅が早くなったらコマンドモードに移行成功です。
コマンドモードから抜ける時は
---(Enter)
を入力。ターミナルに「END」が表示されコマンドモードから抜けることができます。
以上で無線モジュールとの接続は完了です。
これで、シリアル通信でモジュール制御ができるようになりました。
RN42無線モジュールの制御方法
Microchip RN42にデータシートやユーザーズガイドがあるのでそちらを参照。
#日本語のマニュアルはなさそうなので取り敢えず使いそうなところだけ
#といっても英語が得意な訳でもBluetoothに詳しい訳でもないので適当なこと書いてたらすいません
動作モード変更
動作モードはコマンドモードでSMコマンドを送信すると変更できます。(一部DipSWでも設定可)
モード | コマンド | 説明 |
---|---|---|
スレーブモード | SM,0 | スレーブとして動作させます |
マスターモード | SM,1 | コマンドモードでコネクトコマンド(C)を受けた時に接続を開始します。このモードでは直接してされたリモートアドレスかペアリング済みのアドレスにしか接続しません(探索はしない)。 |
トリガーモード | SM,2 | シリアル通信から文字を受信したタイミングで接続を開始します。切断のタイミングはSTコマンドやSOコマンドで設定ができる。 |
オートコネクトマスターモード | SM,3 | モジュール電源On時、接続が切れたときに自動的に接続を開始します。ペアリング済みアドレスがない場合は設定されたCODと一致するデバイスを探索します。 |
オートコネクトDTRモード | SM,4 | 動作はオートコネクトマスターモードと同じ。DipSW3(GPIO6)で自動接続/切断の切り替えができます。 |
オートコネクトANYモード | SM,5 | 動作はオートコネクトDTRモードと同じ。ただし、ANYモードではペアリング済みのアドレスを使用しないし、接続したデバイスも保持しません。毎回探索するよ。 |
ペアリングモード | SM,6 | ペアリング済みのアドレスとのみ接続を試みます。よって、事前にSRコマンドで設定しておく必要があります。 |
DipSW設定
デフォルトは全てOFFで使用する。
Switch | 機能 | 説明 |
---|---|---|
1 | 工場出荷状態に戻す | スイッチONした状態でモジュール電源を入れ、スイッチをON-OFF-ON-OFF-ONと操作すると設定が工場出荷状態に戻ります。 |
2 | オートディスカバリー | SW3と組み合わせて使います。 [SW3-ON]スイッチONすると自動的に他のRovingNetworks製の特殊デバイス(CoD:0x55AA?)を探索&接続します。 [SW3-OFF]スイッチONすると特殊デバイスのスレーブとして動作します。 |
3 | オートマスター | スイッチONした状態でモジュール電源をいれると、Auto-Connect Master Modeで動作します。 また、Auto-Connect DTR Modeで動作させている場合は、スイッチのOn-Offで自動接続-切断を切り替えることができます。 |
4 | ボーレート設定 | ONにすると強制的に9600bpsになります |
#SW3,4はマニュアル読んでも今イチ理解できなかったので間違ってるかも・・・
主要コマンド
SA,<value>
認証モードの設定
0:Openモード。暗号通信に対応していない古いデバイスとの接続に使用する。
1:SSP Keyboard I/Oモード。6桁の認証コードを表示しての一致確認モード。ですが、RN42モジュールはディスプレイがないため常にYESを返す。アンドロイド端末で使用。
2:SSP “just works”モード。人間による確認はなしのモード。iOSとか最近のPCとかで使用。
4:Pin Codeモード。4桁のPINコードを入力することにより確認するモード。Bluetooth2.1以前のデバイスで使用。
SC,<value>
SD,<value>
Class of Device(COD)の設定。
参考
Bletooth Class of Device/Servic(CoD) Generator
Bluetooth SIG
例:CODを0x1F0123にする場合
SC,001F
SD,0123
SE,<value>
UUIDの設定
例:シリアル通信をする場合
SE,0000110100001000800000805F9B34FB
SM,<value>
動作モードの切り替え(上記参照)
SN,<value>
デバイス名の設定。最大20文字。
SP,<value>
PINコードの変更。
S~,<value>
プロファイルの設定。
0:SPP
1:DUN-DCE
2:DUN-DTE
3:MDM SPP
4:SPP and DUN-DCE
5:APL
6:HID
D
デバイスの基本的な設定を表示する。
E
デバイスの詳細な設定を表示する。
GB
デバイスのアドレスを表示する。
C,<address>
指定したリモートアドレスへ接続を試みる。
H
ヘルプを表示する。
I,<value1>,<value2>
デバイスを探索する。
value1:探索時間。10-48秒。
value2:COD。0にするとすべてのクラス。
K,
現在接続中のデバイスとの接続を切る。
R,1
モジュールをリブートする。
Note:モジュールの設定を変更した後はリブートしないと反映されません
Bluetoothキーボードにしてみる
デバイス制御の練習としてPCをBluetoothキーボードとして作動させてみます。
Tera Termで、コマンドモードに移行してデバイスの設定を変更します。
SM,0 //スレーブモードにする S~,6 //プロファイルをHIDに変更 SH,0200 //HID Flag RegisterのDescriptor typeをKeyboardにする R,1 //モジュールをリブート
後は、スマホとかでBluetoothを有効にして探索すると、無線モジュールをBluetoothキーボードとして認識するはずです。
ペアリング後、Tera Termに入力するとスマホ側にも入力されることが確認できると思います。
あとがき
英語のマニュアル読むだけでかなり集中力を消耗したのでここまで。
次回はアンドロイド端末と通信させるところまで行きたいと思います。
→続きは『RN-42 Bluetoothモジュールの使い方2』
keyboardのプロファイルは0220ではなくて、0200だと思います。0220はマウスです。
ご指摘ありがとうございます。
ご指摘の通りキーボードは0200ですね。修正しました。
SAコマンドでPin Codeモードの値は「3」ではなくて「4」ですよ。0,1,2,4で3だけ無いみたいです
ご指摘ありがとうございます。
PinCodeモードは”4″ですね。修正しました。
ちなみに、”3″を書き込むと「SSP “just works”モード」で動作するようです。
SAコマンドで書き込むことが出来るのは0〜7(3bit)で、上位ビットが優先されるっぽいです。
質問よろしいでしょうか?
1番のUSBポートにBluetooth評価モジュールを差すと「ドライバが見つかりません」と表示されるはずが何も出ずRN‐42はライトが点滅しています。
VCPドライバをダウンロードして解凍しても新しいデバイス2つとも追加されていません。
ご返信下さい。