フットキーボード Version 1.0.0 (フットキーボード本体編)

ガジェット製作

今までの作業をまとめて、フットキーポードのVersion 1.0.0にしようと思います。

いままでのまとめとしてのVersion1.00

ササッ、と作れるかな、と思っていたんですが、進み方が遅くて随分時間がかかってしまいました。

とりあえず、固定キー割当であれば今までの作業内容で完成しますので、まずはVersion1.0.0としてまとめようと思います。

すみません、フットキーポートに接続してあるLEDを制御するMacプログラムはこの次のエントリでプログラムをアップいたします。

 

Version 1.0.0の仕様

Google ReaderやFeedlyの記事を読むために、スペースとshift+スペースで読もうとしていたのですが、実際に足で操作してみるとjとkのキーもあった方がよさそう、ということがわかりました。そこで、とりあえず初期バージョンとしては、jとkのキーも加えた7個のキーとしました。

また、キー割当の変更は次のバージョンでの対応にすることにしました。(まずはどこかで一度仕様確定しないとダラダラしてしまいそうなので…言い訳ではないですよ。うん、言い訳ではないですよね…)

項目 仕様
使用PICマイコン PIC16F1459
スイッチ数 7個(10個まで増設可能)
キー割り当て 固定方式
割り当てキー スペース、shift+スペース、j、k、v、command+w、s
(PICプログラム変更により割り当てキー種類変更可能)

 

ビルド環境

PICマイコン(16F1459)に書き込むプログラムは以下の環境でビルドできます。

項目 バージョン
MPLABX Version 1.60以降
XC8コンパイラ Version 1.2以降
Libraries for Application Version 2012-10-15以降

 

回路図

とりあえず初期バージョンはキーの数を7個、ということで、スイッチを2個追加して、それらをRB6とRB7に割り当てることにしました。

回路は以下のようになります。

Foot keyboard schematic v100

この回路図のEAGLEのファイルも置いておきますね。

 

組み立て

今までと同じように、RB6とRB7のピンにスイッチをつけるだけです。早速つけてみました。

Foot keyboard v100

と、追加して思ったんですが、なんか

カオスw


っぽくなってきました。

まぁ、スイッチの数が多くなってきたので仕方ないですかね。

 

PICマイコンプログラム

スイッチ2個追加に合わせて、PIC16F1459のプログラムも変更しました。今までのスイッチと同様にswitch6とswitch7を追加しただけです。

プログラムはこちらです。

なお、この前回のエントリをご覧の方はこのプログラムを上書きいただけれぱOKです。

もしこのプログラムをご自分の環境で初めてビルドされる方は、作業が必要です。本当にすみません。正直なところ、かなり根気がいります。こちらの記事を参考にされてください。

フットキーボード用のプログラムをビルドする

動作確認まで行っていますので、ビルドできれば動作すると思います。

なお、Macのプログラムから32バイトのデータを受け取るようにしています。この32バイトのデータを受け取ったとき、先頭バイトが0x01であれば、LEDをOn/Offトグル動作するように仕込んであります。

該当の部分は void Keyborad(void) 関数の

if(!HIDRxHandleBusy(lastOUTTransmission))
{
    if(hid_report_out[0] == 0x01)
    {
        mLED_1_Toggle()
    }
     lastOUTTransmission = HIDRxPacket(HID_EP,(BYTE*)&hid_report_out,HID_INT_OUT_EP_SIZE);
}

という部分です。MacからのUSB経由で送られてきたデータは hid_report_out[] に格納されますので、この最初のバイトを確認しています。また、LEDのOn/Offトグル制御は、Microchip社提供のHardwareProfile.hに、mLED_1_Toggle()が定義されていましたので、素直にそれを使用してみました。

ところで、USBでin、out、という言葉がでてきますが、これはホストを基準にした表現で統一されているみたいです。キーポード側からすると、データをもらうんだから直感的にinという感じがしますが、ホストはMacなので、Macを基準に考えて、Macに入ってくるデータがin、Macから出て行くデータがoutとなります。キーポードに入ってくるデータ = Macから出て行くデータ = out、となります。正直、まだ慣れてない感じ。。。

それでは、次回、Macから32バイトのデータ(先頭バイトが0x01)を送るプログラムをアップいたします。(といっても以前からそのような実装なので、ほとんど同じです。でも同じだとつまらないのでちょっと変更してみました)

 

変更履歴

 

日付 変更内容
2013.4.13 初版

« »