HCIレイヤー(PIC-PC間接続:Windows 7)

目次

はじめに

Microsoft社のBluetoothスタックの場合,Bluetooth-HIDプロファイルでのデータ転送速度はかなり遅いので,これを改善するため,同プロファイルの使用を止め,HCIレイヤーで通信を行うことにします.データ転送速度が遅くなる原因は次の様だと考えています.PICから送られてきたデータは,PCのバッファー・メモリに一時蓄えられますが,そのデータをアプリケーション・ソフトウェアで読むときに時間が掛かるようです. ところで,ここでは,Windows7(64ビット版)でも使用できるデバイス・ドライバとしてMicrosoft社のWinUSBを使用することにします.現時点で,PICからPCへのデータ転送速度は1000バイト/秒(8K bps)程度です.



PIC用ファームウェア

PIC24FJ64GB002に書き込むためのファームウェアはbluehost7.zipですが、以下の点につき、必要に応じて修正してから再コンパイルしてPICに書き込んでください。

1.4MHzのセラミック発振子を用いていますが、もし8 MHzのものを用いたければ, main.cの中の_CONFIG2 の中のPLLDIV_NODIV をPLLDIV_DIV2としてください。

2.RS232C基板を使用してデバック内容をPCに出力するためには、main.cの中の"//#define DEBUG_MODE"なる行のコメント(//だけ)を消してください。


デバイス・ドライバーのインストール

ドングルを制御するためのドライバソフトウェア(元々はマイクロソフト社のWinUSB)をパーソナル.コンピュータにインストールします.以下の作業を行うと,いままで使用してきたBluetooth機器がすべて使えなくなりますので注意.元に戻す方法は以下の[デバイス・ドライバーのアンインストール]以下を参照してください.

1.C:\Windows\System32\DriverStore\FileRepositoryの中にある、フォルダで、その名前がbtで始まるものすべてを取り出して,大切に保存しておいてください(以下の図を参照)。なお,Windoes7では,セキュリティのためフォルダを簡単に移動できなくなっていますので,所有者を変更した後、アクセス権を変更します. 変更後フォルダを移動します.コピーではなく移動です.

2.ドングルを差し込みます.そして,USBVIEW.EXEを使用して,ドングルのVIDとPIDの値を得てください.(PIC-PC間接続:Windows XP)も参照願います.

3.マイクロチップ・アプリケーション・ライブラリ Microchip Libraries for Applications をインストールして,その中のUSB\Device - WinUSB - High Bandwidth Demo\Driver and INFフォルダーをたとえばディスクトップ(好きなところで良い)にフォルダごとコピーします.このフォルダ(下図を参照)の中にある mchpwinusb.infの中身をテキストエディタ(メモ帳など)で,その中身を書き換えます.つまり,次のように使用するドングルのVIDとPIDを(今の場合VID=0x0a12でPID=0x0001)追加設定します.

[MyDevice_WinUSB.NTx86] %DESCRIPTION% =USB_Install, USB\VID_0a12&PID_0001,USB\VID_04d8&PID_0053,・・・・・

[MyDevice_WinUSB.NTamd64] %DESCRIPTION% =USB_Install, USB\VID_0a12&PID_0001,USB\VID_04d8&PID_0053,・・・・・

4.デバイスマネージャーを開きます(スタート->コンピュータを右クリック->プロパティ->デバイスマネージャーを選択).「不明なデバイス」と表示されていますので,そこを右クリック->ドライバーソフトウェアの更新を選択します.「コンピュータを参照してドライバーソフトウェアを検索する」を選択し,「コンピュータ上のドライバーソフトウェアを検索します」のところで「参照」ボタンを押下して,Driver and INFフォルダーのある場所を指定して,「次へ」ボタンを押します.「ドライバソフトウェアが正常に更新されました」と表示されたら”閉じる”ボタンを押して終了です.


アプリケーション・ソフトウェア

アプリケーション・ソフトウェアnewbluetooth7.zipを解凍して出てくるbluehost7フォルダの中のbluehost7Dlg.cppをメモ帳などで開いて、以下の行を、使用するbluetooth USB ドングルのVIDとPIDに合うように手直しして再コンパイルしてください。

#define MY_DEVICE_ID "Vid_0a12&Pid_0001"

さて、PIC基板を電源につなぎ、PC側でbluehost.exeを実行します。PICとPCとが無線でつながると(つながらない場合は,何回かつなぎ直してください)、2つのエディット・ボックスと1つの「送信」ボタンを持ったダイアログが現れます。上のエディット・ボックスに何か文字を入れ、「送信」ボタンを押すと、下のエディット・ボックスに文字列が現れる筈です。最初の1文字目だけが変わっていることに気が付くと思います。例えば、“123”と上のエディット・ボックスに記入してSENDボタンを押すと、下のエディット・ボックスに“223”と現れます。最初の文字は、アスキーコードで‘2’ = ‘1’ +1となっています。PIC側で1を足しています。



デバイス・ドライバーのアンインストール

1.デバイスマネージャーを開きます(スタート->コンピュータを右クリック->プロパティ->デバイスマネージャーを選択).「WinUSB Device」のところを右クリックして,サブメニューを出し,そこで削除を選択します.

2.C:\Windows\System32\DriverStore\FileRepositoryの中にある、フォルダで、その名前がbtで始まるものすべてを取り出して保存してあると思います.これをすべて元に戻してください.

戻る