はじめに
PIC24FJ64GB002はUSBホストコントローラを内蔵しています。PIC18F2550やPIC18F14K50のUSBコントローラはクライアントでした。ここでは、Bluetooth USBドングルを介してPIC24FJ64GB002とパーソナルコンピュータ(PC:Windows XP SP3、Vista Business 32bit SP2、Windows 7 64bit Professional)などをHCIレイヤー、bluetooth-HIDプロファイル、RFCOMMレイヤーで無線接続してみましょう。使用したドングルは、PLANEX社のBT-MicroEDR1Xを2個です(同社のBT-Micro3E1X、BT-Micro3E2X、あるいはプリンストンテクノロジー社のPTM-UBT6でも可)。1つはPC用に、他の1つはPIC24FJ64GB002用に使用しています。PC用のドングルは適当なもので良いと思います(実際無名のドングルでも、きちんと働きます)。ただ、PIC24FJ64GB002用のドングルは、HUB構造を持たないものに限ります。PIC24FJ64GB002にマイクロチップ社が用意しているファームウェア(ここでも利用します)がHUBをサポートしていないからです。HUB構造を持っているか否かは、後ほどでてくる"USBVIEW.EXE"を実行するとすぐ判別できます。ところで、ドングルに付いてくるCDは使用しないでください。
初めての方は、まず、PIC回路(電源は3.3V)を作成して、Bluetooth-HIDプロファイル節にあるファームウェア(hid_mouse4.zip)をPICに書き込み、同節のPC用Bluetoothスタック(Microsoft)にしたがってパーソナル・コンピュータと無線接続してみると良いと思います。マウスカーソルが、ディスプレイ上で、ゆるりと円を描きます。
また、wiiリモコンを持っていましたら、PIC回路(電源は3.3V)を作成して、Bluetooth-HIDの応用例(wiiリモコン)にあるファームウェア(hid_wii2.zip)をPICに書き込み、wiiリモコンとPIC回路を無線接続してみてください。wiiリモコンで、いろいろな物を無線制御できるようになります。アイデアしだいです。
私が行っていることは、石川恭輔氏のWebサイトできる周波数ホッピングで紹介されているRS232C-Bluetooth用のソフトウェアやファームウェアを、Bluetooth USBドングル用に直すことに端を発しています。同氏のファームウェアの公表が2002年ですから、如何に先駆的な仕事であったか理解できると思います。
ファームウェアをコンパイルするためには、あらかじめMPLAB IDE v8.89(MPLAB X IDEではありません。サイトページの下の方のDownloadsの中にあります。)をインストールした後、MPLAB C Compiler for PIC24 and dsPIC v3.31 (サインインが必要です)をインストールしておいてください。
Bluetoothのマニュアルについては、 Core v2.1 + EDR.pdf を御覧ください。
Bluetooth機器を開発するときに、 Windows OS 上で働くモニタープログラムがあると便利です。もし、wiiリモコンなどを持っていましたら、USBTrace (15日間無料;集録データ容量制限あり “usbtrace.zip” と “WCDecoder.zip”)をダウンロードしてください。 HCIコマンド、HCIイベント、ACL形式のデータの送受信がモニターできます。Bluetoothデータだけを選別できるので助かります(csv形式で保存してMicrosoft Excelでデータにフィルタをかける)。
Windows Vistaや7では、レジストリを消去するのが難しくなりました。現在Registrar Registry Manager を使っています。ダウンロードの際、電子メール・アドレスの入力は不要です。
目次
解説
トピックス:Bluetooth USBドングル(プロトコルスタックを内蔵したBluetoothモジュールではない)
をPICで直接制御。以下、Wiiリモコンを用いた例ですが、Wiiリモコンをお持ちでない場合は、PIC24FJ64GB002 (USB HOST: Bluetooth)の項目の中のHCIレイヤー(PIC-PIC間接続)節を参照すると、もっと簡単に、安価に制御可能になります。
簡単な例1:Bluetooth USBドングルを用いて、サーボモータをWiiリモコンで制御
簡単な例2:BlueWiiカー:Bluetooth USBドングルを用いてDCモータをWiiリモコンで制御
BGMには、フリー音楽素材 Senses Circuitを使いました。