付加回路(Windows 10)

  接続方法の注意の所に書いてあるように、PICの電源を切る直前にPIC回路側からPCに切断命令を送ることができれば、PC側での「接続済み」状態(接続状態)から「ペアリング済み」状態(接続切断状態)への強制移行が実現できます。再接続時間を2秒程度に抑えられます。強制移行実現のための付加回路を考えました。なお、Android携帯には効果はありませんので要注意です

目次


PIC回路

  回路図と実際の回路を以下に示します。 基本回路に付加回路を追加したものです。基本回路には変更がありません。付加回路の詳細は付加回路をご覧ください。なお、デバック情報を得るためには「USB シリアル変換器」が必要になります。

注意:USBドングル(BSBT4D200)は3.1V以下になると動作しません。


開発環境

  MPLAB Code Configurator(Classic)をインストールしていない場合はMPLAB Code Configurator(Classic)の導入を参照ください。必要に応じて、Tera TermVisual Studio 2022をインストールします。また、PCとPCに差し込んだBluetooth USB(Ver 4.0)ドングル間を行き来するUSBデータをモニターしたければ、Free Device Monitoring StudioWiresharkをインストールします。



LEキーボード

  ファームウェアは、keyboardLE_MCC_Windows10_Disconnect.X.zipです。解凍して出てきたフォルダーはMCCインストール時に作られるMPLABXProjectsフォルダーに入れます。MPLAB Xで、このファームウェアをPICに書き込みます。「USB シリアル変換器」を使ってデバック情報をPCに(Tera Term画面上に)出力する場合は、main.cの中にある//#define DEBUG_MODEのコメント//を消してください。

PIC回路とPCを接続した後(接続方法は下記参照)、適当なテキストエディタ(メモ帳など)を開き、PICの2、3、6、7ピン(ファームウェアでプルアップしています)のいずれかをGNDに接続すると、それぞれ、a、b、A、Bなる文字がエディタ画面に現れます。


LEマウス

  ファームウェアは、mouseLE_MCC_Windows10_Disconnect.X.zipです。解凍して出てきたフォルダーはMCCインストール時に作られるMPLABXProjectsフォルダーに入れます。MPLAB Xで、このファームウェアをPICに書き込みます。「USB シリアル変換器」を使ってデバック情報をPCに(Tera Term画面上に)出力する場合は、main.cの中にある//#define DEBUG_MODEのコメント//を消してください。

PIC回路とPCの接続が完了すると(接続方法は下記参照)、マウスカーソルが円を描きます。


LE一般的HID

  ファームウェアは、generalLE_MCC_Windows10_Disconnect.X.zipです。解凍して出てきたフォルダーはMCCインストール時に作られるMPLABXProjectsフォルダーに入れます。MPLAB Xで、このファームウェアをPICに書き込みます。「USB シリアル変換器」を使ってデバック情報をPCに(Tera Term画面上に)出力する場合は、main.cの中にある//#define DEBUG_MODEのコメント//を消してください。

  パーソナル・コンピュータ用のアプリケーション・ソフトウェア(Visual Studio 2019でコンパイル、同2022でもコンパイル可)は、generalLE_MCC.X.zipを解凍して出てきたフォルダーの中のHOGP\Release\HOGP.exeです。PIC回路とPCを接続した後(接続方法は下記参照)、これを実行すると、2つのエディット・ボックスと1個のOKボタンを持つダイアログ(対話)・ウィンドウが現れます。 例えば上のエディット・ボックスに123と入れて、OKボタンをクリックすると、下のエディット・ボックスに223と現れれば、正常に動作しています。送信された文字列のうち、第1番目の文字だけが変わったもの(アスキーコードで1足されたもの)が現れるはずです。

アプリケーション・ソフトウェアはVisual C++用ですが、Visual C++/CLI用やC#用には、PIC32MX270F256B-50I/SP (HARMONY: v2.06)にあるutilities2017B.zipにて、vidとpicを与えているファイル中で、vidを04d8に、pidを003Fに変えるだけです。


注意事項

1.MCCでは、一般的ホストは提供されていませんので、CDCホストを手直しします。MCCで生成されるファイルの内、CDCに関係するusb_host_cdc_interface.husb_host_cdc_interface.cusb_host_cdc.husb_host_cdc.cusb_host_cdc_config.hの5つのファイルは、プロジェクトから除外(Exclude)します。削除(Remove)してはいけません。これら5つのファイルを削除すると、MCCで再度コード生成したときに、これら5つのファイルが新たに生成されプロジェクトに追加(Include)されます。そのままコンパイルするとエラーとなります。5つのファイルをプロジェクトから除外(Exclude)してもファイル自体は物理的に存在しますので、MCCで再度コード生成したとしても、これら5つのファイルが新たに生成・置換されることはありません。したがって、コンパイルエラーにはなりません。

2.一般的ホストに関しては、たとえばMicrochip Libraries for Applications(MLA)のv2013-06-15の中のmicrochip_solutions_v2013-06-15\USB\Host - MCHPUSB - Generic Driver Demoが参考になると思います(私はこれよりかなり古いバージョンのものを参考にしています)。CDCに関係する上記5つのファイルの代わりに、このDemoからmain.cusb_host_generic.husb_host_generic.c(usb_host_config.cと名前を変える)、usb_config.h(usb_host_config.hと名前を変える)、usb_config.cをプロジェクトに付け加え編集を行えば良いと思います。



接続方法

1.最初の接続は、PIC回路にて、タクトスイッチ(SW1)を押しながらスライドスイッチ(SW2)をON側にします。スライドスイッチ(SW2)をON側にした後、タクトスイッチは2秒程度押したままにします。その後はタクトスイッチを放してもかまいません。

2.パーソナル・コンピュータ(PC)から接続します。PCのタスクバーに、Bluetoothアイコンがありますので、これをマウスでクリックします。すると、以下のような「Bluetoothとその他のデバイス」画面が現れます。

この画面で、「Bluetoothまたはその他のデバイスを追加する」と書かれた場所をクリックすると、次のような画面が現れます。

この画面で、「Bluetooth」と書かれた場所をクリックすると、次のような画面が現れます。この画面に接続したいデバイスのアイコンが表示されますので、そのアイコンをクリックします。接続が完了すると、画面下方にある「キャンセル」ボタンが「接続」ボタンに変わります。そして、PIC回路上のLED(D1)が点灯します。

また、「Bluetoothとその他のデバイス」画面の中に、接続完了とともに、次のような画面が現れます。なお、最初の接続では電池残量を100%に設定しています。

ところで、もしBluetoothアイコンがタスクバーになければ、ウィンドウ・メニューから「設定」を選び、そのホーム画面から「デバイス(Bluetooth、プリンタ、マウス)」を選択して、「Bluetoothとその他のデバイス」画面を出します。この画面の右側にある関連設定で「その他のBluettothオプション」を選びます。オプションタブにて「bluetoothアイコンを通知領域に表示する(N)」というチェック・ボックスにチェックを入れます。これで、Bluetoothアイコンがタスクバーに現れます。

3.接続を終了するためには、スライドスイッチ(SW2)をOFF側にします。PIC回路上のLED(D1)が消灯します。 そして、PC側では「接続済み」状態(接続状態)から「ペアリング済み」状態(接続切断状態)になります。

4.2回目以降の接続(再接続)は、タクトスイッチ(SW1)を離したまま、PIC回路のスライドスイッチ(SW2)をON側にするだけです。2秒程度で再接続できます。 接続が完了すると、PIC回路上のLED(D1)が点灯します。

なお、PCの電源を切って、再度電源を入れた後、再接続を行うと、次のように電池残量が50%と表示されるよう設定しています。各ファームウェアのmain.cで、ケース文case GATT_BATTERY_NOW_RE_RES:の中に、buf[11]=0x32;なるコードがありますが、この0x32(10進数で50)が電池残量50%を意味します。


付加回路

  基本回路に付加した回路の回路図を以下に示します。基本回路には変更はありません。

追加した回路部品は、SW2(1回路2接点スライドスイッチ)、PチャンネルMOSFET(DMG3415U:秋月電子通商から入手)、R3(保護抵抗)、R4(ゲート・ソース間抵抗)の4点です。

以下の写真は、MOSFET周りの部品配置例です。

  動作原理

  付加回路の目的は再接続時間を抑えることです。そのために、PICの電源を切る直前にPIC回路側からPCに切断命令を送ります。単にPICの電源を切ったら切断命令を送ることができません。

1.SW2をON側にするとMOSFETのゲートがLになり、ソース・ドレイン間が導通状態になります。結果としてドレイン電圧はほぼ3.3Vとなります。これをVCC電圧としてPICやBluetooth LE USBドングルに電源を供給します。

2.PICが動作したら、そのRB5(14番ピン)をLにします。MOSFETのゲートはLとなるので、ソース・ドレイン間が導通状態のまま保持されます。

3.次に、SW2をOFF側にした場合を考えます。SW2をOFF側にしても、上項目2のためにPICやBluetooth LE USBドングルにはVCCが供給されたままとなります。PICのRA4(12番ピン)は、PICの内部で弱いプルアップ状態にしてあります。SW2をOFF側にすると、PICのRA4(12番ピン)はHからLになるので、PICはこれを検知してInterrupt-on-Change (IOC)割り込みを掛けPCに対して切断命令を出します。具体的には、main.cの中のcase L2CAP_DISCONNECT_REQ:を実行することにより切断命令を出しています。

4.切断命令がPCに受け取られたのを確認して、PICはそのRB5(14番ピン)を出力ピンから入力ピンに変更してMOSFETのゲートをオープン状態にします(具体的には、main.cの中のcase PROG_END:の所でRB5(14番ピン)を入力ピンに変更しています)。すると、ソース・ドレイン間が閉じるので、PICやBluetooth LE USBドングルの電源が断たれます。

注意:SW2がON側の状態で、もしPICのRB5(14番ピン)を間違ってH状態にしてしまったら、R3がなければショート状態になります。このショート状態を避けるために保護抵抗R3を入れています。


戻る