趣味の電子工作と釣りについて。電子工作は、おもに変換器作成。釣りはおもにトラウトの管釣り。
1.基板作成
手順書をよーく読んでユニバーサル基板で作るとこんな感じになる。(裏面)

まずはキーマトリックス解析用のファームを書き込んでおく。
2.ベーシックマスター解体

ネジを外して蓋をあける。ケーブルを外さないと完全には開かない。


キーボードは3本のケーブルと1本のアース線で接続されているので、これを外す。
3.基板組み込み

ベーシックマスターは内部で金属シールドされているので、そのまま組み込むとショートして大変なことになるので何かで包むこと。
筺体がでかいので、マザーボードを抜かなくてもどうにか入るだろう。
4.ケーブル引き出し
電源ケーブルのところから引っ張りだしてみた。
5.キーマトリックス解析
PCにつなぐとUSBキーボードとして認識される。メモ帳を開いてキーを打ち込むと、打ち込んだ文字列ではなくキースキャンコードが入力される。どのキーがどのスキャンコードになっているかをメモする必要があるのだが、サンプル自体(keyboard.zip)がこれ用なので実は調べなくても良かったりする。
6.ファームウェア変更
キーマトリックス解析用ファームから通常のファームに変更する。
ジャンパーを閉じて、HIDBootLoader.exeで書き換えて、ジャンパを開放。
7.試しうち
キー入力してみる。今度は押したキーと同じ文字が入力されるはず。キーアサインが気に入らなければ、手順書をよく読んで書き換えに挑戦すべし。
8.箱を閉じる

完成!本体の上にモニターではなく本体を置いてみた。
LEDも完璧!
しかしこのキー配列、PC-8001系と似ていて、ものすごく打ちにくい。
手順書をよーく読んでユニバーサル基板で作るとこんな感じになる。(裏面)
まずはキーマトリックス解析用のファームを書き込んでおく。
2.ベーシックマスター解体
ネジを外して蓋をあける。ケーブルを外さないと完全には開かない。
キーボードは3本のケーブルと1本のアース線で接続されているので、これを外す。
3.基板組み込み
ベーシックマスターは内部で金属シールドされているので、そのまま組み込むとショートして大変なことになるので何かで包むこと。
筺体がでかいので、マザーボードを抜かなくてもどうにか入るだろう。
4.ケーブル引き出し
電源ケーブルのところから引っ張りだしてみた。
5.キーマトリックス解析
PCにつなぐとUSBキーボードとして認識される。メモ帳を開いてキーを打ち込むと、打ち込んだ文字列ではなくキースキャンコードが入力される。どのキーがどのスキャンコードになっているかをメモする必要があるのだが、サンプル自体(keyboard.zip)がこれ用なので実は調べなくても良かったりする。
6.ファームウェア変更
キーマトリックス解析用ファームから通常のファームに変更する。
ジャンパーを閉じて、HIDBootLoader.exeで書き換えて、ジャンパを開放。
7.試しうち
キー入力してみる。今度は押したキーと同じ文字が入力されるはず。キーアサインが気に入らなければ、手順書をよく読んで書き換えに挑戦すべし。
8.箱を閉じる
完成!本体の上にモニターではなく本体を置いてみた。
LEDも完璧!
しかしこのキー配列、PC-8001系と似ていて、ものすごく打ちにくい。
PR
1.改造点
初期状態では、PORTB4がファームウェア書き換えスイッチになっているが、
これだとキー押下して通電するとファームウェア書き換えモードになる可能性があり、まずい。
なので、機能的に貧弱でキースキャンに使いづらいPORTE3をファームウェア書き換えスイッチに変更した。
2.制約
このプログラムは、C18 student edition(期限切れ)ではビルドできない。
そこで、ビルドできるよう、無くてもどうにかなりそうなロジックを徹底的に削った。
リセットのロジックも削ったので、HIDBootLoader.exeからリセットすることはできない。
その他、いろいろ不具合はあるのかもしれないが、気にしないこと。
3.ビルド方法
hidbootldr.zipを解凍する。解凍先は、どこでもいい。
HID Bootloader - Firmware for PIC18 Non-J Devices LiteにあるHID Bootloader PIC18 Non J.mcpを起動。
ビルドすると、HID Bootloader PIC18 Non J.hexができる。
4.書き込み方法
PICKit2を使うのが一般的だが、秋月ライターでも書き込めるらしい。
とくに特殊なところはなし。
初期状態では、PORTB4がファームウェア書き換えスイッチになっているが、
これだとキー押下して通電するとファームウェア書き換えモードになる可能性があり、まずい。
なので、機能的に貧弱でキースキャンに使いづらいPORTE3をファームウェア書き換えスイッチに変更した。
2.制約
このプログラムは、C18 student edition(期限切れ)ではビルドできない。
そこで、ビルドできるよう、無くてもどうにかなりそうなロジックを徹底的に削った。
リセットのロジックも削ったので、HIDBootLoader.exeからリセットすることはできない。
その他、いろいろ不具合はあるのかもしれないが、気にしないこと。
3.ビルド方法
hidbootldr.zipを解凍する。解凍先は、どこでもいい。
HID Bootloader - Firmware for PIC18 Non-J Devices LiteにあるHID Bootloader PIC18 Non J.mcpを起動。
ビルドすると、HID Bootloader PIC18 Non J.hexができる。
4.書き込み方法
PICKit2を使うのが一般的だが、秋月ライターでも書き込めるらしい。
とくに特殊なところはなし。
1.特殊キー(OPT)対応
それだけで独立しているキーについては、通常5V押下時0Vとなるような回路で対応。
ただ、回路というほどのものではなく、一方を4.7KΩでプルアップしておいて、一方をGNDと接続するだけ。
サンプルのBREAKキーの作りこみを見れば理解できると思う。
特殊キーの割り当ては、keyboard.cの下記を編集する。
左端がUSBのスキャンコードで、そこしか使っていないので、それ以外を書き換えても無意味。
// EEPROM Map:Scancode for Option key
#pragma romdata eedata2_scn=0xf00080
ROM unsigned char eedata2_values[0x10] =
{
0x35,0xff,0xff,0xff,0xff,0xff,0xff,0xff ,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
};
#pragma romdata
2.Fnキー対応
keyboard.c の下記を書き換える。USBのスキャンコードではなく、キーボードのスキャンコードをセットする。
#define FN_KEY 0x68 // HHK like Fn key: 0x68=Caps Lock
Fnキーの対応表は、下記を書き換える。
Fn押下前USBスキャンコード、押下後USBスキャンコードの組み合わせで登録する。
ちなみに下記は、HHKライクな動きをするサンプル。
// EEPROM Map:HHK like Fn key
#pragma romdata eedata3_scn=0xf00090
ROM unsigned char eedata3_values[0x40] =
{
0x2f,0x52,0x34,0x4f,0x33,0x50,0x38,0x51,0x0F,0x49,0x37,0x4e,0x0e,0x4a,0x36,0x4d,
0x0c,0x46,0x12,0x47,0x13,0x48,0x2a,0x4c,0x2b,0x39,0x30,0x49,0x1e,0x3a,0x1f,0x3b,
0x20,0x3c,0x21,0x3d,0x22,0x3e,0x23,0x3f,0x24,0x40,0x25,0x41,0x26,0x42,0x27,0x43,
0x2d,0x44,0x2e,0x45,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
};
#pragma romdata
3.ゴーストキー対応
逆流防止ダイオードが埋め込まれていないキーボードの場合、ゴーストキーの対応をしておいたほうが誤入力が減る。
下記を1にすると有効になる。
#define GHOST_KEY_REDUCTION 1 // 0...Disabled 1...Enabled
ゴーストキーが発生しないのにゴーストキーリダクションが働くと困るので、キーがマトリックス上存在する・しないところを登録しておく。
それが下記。1になっているところはキーが存在する、0になっているところはキーが存在しない、を表す。
ただし、ビット順が表示の関係で実際のキーマトリックスと合わないように感じるので注意が必要。
// EEPROM Map:GHOST(Phantom) Key reduction
#pragma romdata eedata4_scn=0xf000D0
ROM unsigned char eedata4_values[0x10] =
{
0b00011111,0b00011111,
0b00011111,0b00011111,
0b00111111,0b00111111,
0b00111111,0b00111111,
0b00111111,0b00011111,
0b00011111,0b00011111,
0b00011111,0b00011111,
0b00011111,0b00011111
};
#pragma romdata
ちなみにビットの並び順は、すごくあたりまえなのだが
C7 C6 C5 C4 C3 C2 C1 C0 , C15 C14 C13 C12 C11 C10 C9 C8 となる。
C0 C1 C2 C3 C4 C5 C6 C7 , C8 C9 C10 C11 C12 C13 C14 C15 ではないので注意!!
4.LEDの吸い込み対応
FM-7のキーボードなど、LEDを吸い込みで制御する場合、下記のように変更する。
LATC=hid_report_out[0]&0b00000111;
↓
LATC=(~hid_report_out[0])&0b00000111;
それだけで独立しているキーについては、通常5V押下時0Vとなるような回路で対応。
ただ、回路というほどのものではなく、一方を4.7KΩでプルアップしておいて、一方をGNDと接続するだけ。
サンプルのBREAKキーの作りこみを見れば理解できると思う。
特殊キーの割り当ては、keyboard.cの下記を編集する。
左端がUSBのスキャンコードで、そこしか使っていないので、それ以外を書き換えても無意味。
// EEPROM Map:Scancode for Option key
#pragma romdata eedata2_scn=0xf00080
ROM unsigned char eedata2_values[0x10] =
{
0x35,0xff,0xff,0xff,0xff,0xff,0xff,0xff ,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
};
#pragma romdata
2.Fnキー対応
keyboard.c の下記を書き換える。USBのスキャンコードではなく、キーボードのスキャンコードをセットする。
#define FN_KEY 0x68 // HHK like Fn key: 0x68=Caps Lock
Fnキーの対応表は、下記を書き換える。
Fn押下前USBスキャンコード、押下後USBスキャンコードの組み合わせで登録する。
ちなみに下記は、HHKライクな動きをするサンプル。
// EEPROM Map:HHK like Fn key
#pragma romdata eedata3_scn=0xf00090
ROM unsigned char eedata3_values[0x40] =
{
0x2f,0x52,0x34,0x4f,0x33,0x50,0x38,0x51,0x0F,0x49,0x37,0x4e,0x0e,0x4a,0x36,0x4d,
0x0c,0x46,0x12,0x47,0x13,0x48,0x2a,0x4c,0x2b,0x39,0x30,0x49,0x1e,0x3a,0x1f,0x3b,
0x20,0x3c,0x21,0x3d,0x22,0x3e,0x23,0x3f,0x24,0x40,0x25,0x41,0x26,0x42,0x27,0x43,
0x2d,0x44,0x2e,0x45,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
};
#pragma romdata
3.ゴーストキー対応
逆流防止ダイオードが埋め込まれていないキーボードの場合、ゴーストキーの対応をしておいたほうが誤入力が減る。
下記を1にすると有効になる。
#define GHOST_KEY_REDUCTION 1 // 0...Disabled 1...Enabled
ゴーストキーが発生しないのにゴーストキーリダクションが働くと困るので、キーがマトリックス上存在する・しないところを登録しておく。
それが下記。1になっているところはキーが存在する、0になっているところはキーが存在しない、を表す。
ただし、ビット順が表示の関係で実際のキーマトリックスと合わないように感じるので注意が必要。
// EEPROM Map:GHOST(Phantom) Key reduction
#pragma romdata eedata4_scn=0xf000D0
ROM unsigned char eedata4_values[0x10] =
{
0b00011111,0b00011111,
0b00011111,0b00011111,
0b00111111,0b00111111,
0b00111111,0b00111111,
0b00111111,0b00011111,
0b00011111,0b00011111,
0b00011111,0b00011111,
0b00011111,0b00011111
};
#pragma romdata
ちなみにビットの並び順は、すごくあたりまえなのだが
C7 C6 C5 C4 C3 C2 C1 C0 , C15 C14 C13 C12 C11 C10 C9 C8 となる。
C0 C1 C2 C3 C4 C5 C6 C7 , C8 C9 C10 C11 C12 C13 C14 C15 ではないので注意!!
4.LEDの吸い込み対応
FM-7のキーボードなど、LEDを吸い込みで制御する場合、下記のように変更する。
LATC=hid_report_out[0]&0b00000111;
↓
LATC=(~hid_report_out[0])&0b00000111;
1.キーマトリックスの縦線、横線の確認
キーボードを解体してプリント基板のパターンを追いかけて、縦線と横線がどこに出ているか見つけます。
本数の多いのが縦線、少ないのが横線です。
あわせて、LEDの結線も確認します。LEDには極性がありますが、よく見ればどっちが+か判定できます(ここでは説明しません)。
解体できるキーボードが無い場合は、テスターを使って縦線、横線を見つける必要があります。
キーマトリックスを解析するのではなく、縦線、横線がどれか、だけを見つけ出します。
それでも最低2時間はかかるので、根気強く続けてください。
2.キーマトリックスの配線
以下、縦線をColumn、横線をRowと呼ぶことにします。
サンプル回路を見ながら作業しましょう。
ColumnをPICのC0~C15と結線してください。
RowをPICのR0~R7と結線してください。
BREAK等特殊キーは、必要に応じてOPT(オプション)と結線してください。
LEDは、必ず抵抗をかませてNumLk/CapsLk/ScrLKと接続してください。
LEDの-側をGNDと接続します。
LEDが吸い込みドライブの場合は、LEDの+側を5Vと接続するなど、回路の変更が必要です。
サンプル回路(既出)


3.キーマトリックスの解析
キーマトリックス解析用のファームをPICに書き込みます。
keyboard.cのKMX_MONITORを1に変更してビルドして、PICに書き込んでください。
#define KMX_MONITOR 0 // 0...Operation 1...Matrix Monitor
メモ帳を開いてください。
キーボードを繋いで、キーを押してください。メモ帳にスキャンコードが表示されますので、これをメモしてください。
ここで注意点があります。ゾロ目のスキャンコードは、1文字で表示されることがあります。(例:33→3、77→7)
スキャンコード3や7は、03や07と表示されますので、識別できます。
4.変換テーブルの書き換え
keyboard.cのKMX_MONITORを0に戻します。
#define KMX_MONITOR 0 // 0...Operation 1...Matrix Monitor
※動作が不安定な場合は、下記の遅延の値を大きくするなどして調整する
// Delay100TCYx(1); // 0.05us x 4 x 100 = 20us = 0.02ms
Delay1KTCYx(1); // 0.05us x 4 x 1000 = 200us = 0.2ms
調べたスキャンコードをもとに、keyboard.cの下記(キーボードスキャンコード→USBスキャンコード)を書き換えます。
USBのスキャンコードは、"usb scancode"でググって調べましょう。
// EEPROM Map:KEY MATRIX to USB SCANCODE
#pragma romdata eedata1_scn=0xf00000
ROM unsigned char eedata1_values[0x80] =
{
0x29,0x26,0x12,0x0f,0x37,0xff,0xff,0xff ,0x60,0x5f,0x63,0x5d,0x5a,0xff,0xff,0xff,
0x61,0x2a,0x53,0x5e,0x5b,0xff,0xff,0xff ,0x55,0x89,0x28,0x56,0x57,0xff,0xff,0xff,
0x2c,0x24,0x18,0x0d,0x10,0x3a,0xff,0xff ,0x52,0x21,0x15,0x09,0x19,0x3b,0xff,0xff,
0x35,0x23,0x1c,0x0b,0x11,0x3c,0xff,0xff ,0x50,0x25,0x0c,0x0e,0x36,0x3d,0xff,0xff,
0x51,0x27,0x13,0x33,0x38,0x3e,0xff,0xff ,0x4f,0x2e,0x30,0x32,0x54,0xff,0xff,0xff,
0xe0,0x2d,0x2f,0x34,0x87,0xff,0xff,0xff ,0xe1,0x20,0x62,0x5c,0x59,0xff,0xff,0xff,
0xff,0xff,0x14,0x04,0x1d,0xff,0xff,0xff ,0x39,0x22,0x17,0x0a,0x05,0xff,0xff,0xff,
0x2b,0x1e,0x1a,0x16,0x1b,0xff,0xff,0xff ,0xe2,0x1f,0x08,0x07,0x06,0xff,0xff,0xff
};
#pragma romdata
あと、Fnキー、GHOSTキーの設定項目がありますが、ややこしいのでここでは無効にしておきます。
#define FN_KEY 0xFF // HHK like Fn key: 0x68=Caps Lock
#define GHOST_KEY_REDUCTION 0 // 0...Disabled 1...Enabled
同様に、特殊キーもここでは放置します。
変更が終わったら、ビルドして書き込みます。
5.動作確認
ジャンパピン短絡が外れているのを確認して、基板を接続してください。
メモ帳を開いて、キーを押してください。
キーボードを解体してプリント基板のパターンを追いかけて、縦線と横線がどこに出ているか見つけます。
本数の多いのが縦線、少ないのが横線です。
あわせて、LEDの結線も確認します。LEDには極性がありますが、よく見ればどっちが+か判定できます(ここでは説明しません)。
解体できるキーボードが無い場合は、テスターを使って縦線、横線を見つける必要があります。
キーマトリックスを解析するのではなく、縦線、横線がどれか、だけを見つけ出します。
それでも最低2時間はかかるので、根気強く続けてください。
2.キーマトリックスの配線
以下、縦線をColumn、横線をRowと呼ぶことにします。
サンプル回路を見ながら作業しましょう。
ColumnをPICのC0~C15と結線してください。
RowをPICのR0~R7と結線してください。
BREAK等特殊キーは、必要に応じてOPT(オプション)と結線してください。
LEDは、必ず抵抗をかませてNumLk/CapsLk/ScrLKと接続してください。
LEDの-側をGNDと接続します。
LEDが吸い込みドライブの場合は、LEDの+側を5Vと接続するなど、回路の変更が必要です。
サンプル回路(既出)
3.キーマトリックスの解析
キーマトリックス解析用のファームをPICに書き込みます。
keyboard.cのKMX_MONITORを1に変更してビルドして、PICに書き込んでください。
#define KMX_MONITOR 0 // 0...Operation 1...Matrix Monitor
メモ帳を開いてください。
キーボードを繋いで、キーを押してください。メモ帳にスキャンコードが表示されますので、これをメモしてください。
ここで注意点があります。ゾロ目のスキャンコードは、1文字で表示されることがあります。(例:33→3、77→7)
スキャンコード3や7は、03や07と表示されますので、識別できます。
4.変換テーブルの書き換え
keyboard.cのKMX_MONITORを0に戻します。
#define KMX_MONITOR 0 // 0...Operation 1...Matrix Monitor
※動作が不安定な場合は、下記の遅延の値を大きくするなどして調整する
// Delay100TCYx(1); // 0.05us x 4 x 100 = 20us = 0.02ms
Delay1KTCYx(1); // 0.05us x 4 x 1000 = 200us = 0.2ms
調べたスキャンコードをもとに、keyboard.cの下記(キーボードスキャンコード→USBスキャンコード)を書き換えます。
USBのスキャンコードは、"usb scancode"でググって調べましょう。
// EEPROM Map:KEY MATRIX to USB SCANCODE
#pragma romdata eedata1_scn=0xf00000
ROM unsigned char eedata1_values[0x80] =
{
0x29,0x26,0x12,0x0f,0x37,0xff,0xff,0xff ,0x60,0x5f,0x63,0x5d,0x5a,0xff,0xff,0xff,
0x61,0x2a,0x53,0x5e,0x5b,0xff,0xff,0xff ,0x55,0x89,0x28,0x56,0x57,0xff,0xff,0xff,
0x2c,0x24,0x18,0x0d,0x10,0x3a,0xff,0xff ,0x52,0x21,0x15,0x09,0x19,0x3b,0xff,0xff,
0x35,0x23,0x1c,0x0b,0x11,0x3c,0xff,0xff ,0x50,0x25,0x0c,0x0e,0x36,0x3d,0xff,0xff,
0x51,0x27,0x13,0x33,0x38,0x3e,0xff,0xff ,0x4f,0x2e,0x30,0x32,0x54,0xff,0xff,0xff,
0xe0,0x2d,0x2f,0x34,0x87,0xff,0xff,0xff ,0xe1,0x20,0x62,0x5c,0x59,0xff,0xff,0xff,
0xff,0xff,0x14,0x04,0x1d,0xff,0xff,0xff ,0x39,0x22,0x17,0x0a,0x05,0xff,0xff,0xff,
0x2b,0x1e,0x1a,0x16,0x1b,0xff,0xff,0xff ,0xe2,0x1f,0x08,0x07,0x06,0xff,0xff,0xff
};
#pragma romdata
あと、Fnキー、GHOSTキーの設定項目がありますが、ややこしいのでここでは無効にしておきます。
#define FN_KEY 0xFF // HHK like Fn key: 0x68=Caps Lock
#define GHOST_KEY_REDUCTION 0 // 0...Disabled 1...Enabled
同様に、特殊キーもここでは放置します。
変更が終わったら、ビルドして書き込みます。
5.動作確認
ジャンパピン短絡が外れているのを確認して、基板を接続してください。
メモ帳を開いて、キーを押してください。
1.部品配置の決定
配線ができるだけ短いほうがいいのですが、高周波ではないのでそれほど気を使わなくても大丈夫。
組み立てやすさを最重要視して配置しましょう。
2.基本パーツの確認
18F4550の動作確認wするために最低限必要なパーツの組み立てをします。
下記パーツがあることを確認します。
程よい大きさのユニバーサル基板
ジャンパピン(1X2ピンヘッダ)
PIC18F4550(DIP)※HID bootloader(改)書込済
40ピンICソケット
20MHzセラロック
2X2ピンヘッダ(L型)
積セラ104(0.1μF)
抵抗4.7KΩ~10KΩ:2本(プルアップ用)
ハンダ:少々
線材:それなり
3.基本パーツの組み立て
サンプル回路(回路図、ボード図)や組み立て例をを参考に、キーボードマトリックス接続以外を組み立ててください。
ケース内USBケーブルを2X2ピンヘッダに接続してください。5V(VCC),GND(VSS),D+,D-を間違えないように。
ジャンパピンを短絡してください。
組み終わったら、テスターなどで5V、GND間の抵抗を測定して、ショートしていないか確認してください。
確認は必須ではありませんが、ショートしていればPCに接続した瞬間にPCが落ちます(体験済み)。運が悪ければ二度と起動しません。
↓組み立て例




4.基本動作確認
HIDBootLoader.exeを起動してください。これは"C:\Microchip Solutions\USB Device - Bootloaders\HID - Bootloader"に置いてあります。
起動すると、"Device not detected. Verify device is in bootloader mode."と表示されるはずです。
この状態で、組み立てた基板を接続してください。ピポッと音がして、"Device attached."と表示が変われば正常に動作しています。
5.keyboard2.zipのコンパイル
"C:\Microchip Solutions\USB Device - HID - Keyboard2\Firmware"にある"USB Device - HID - Keyboard- C18 - PICDEM FSUSB.mcp"を起動します。
Project -> Build All でビルドしてください。USB Device - HID - Keyboard- C18 - PICDEM FSUSB.hex ができていればO.K.です。
6.ファームウェア書き込み
HID Bootloaderで、Open Hex Fileをクリックします。もちろん、"Device attached"の状態でないといけません。
"C:\Microchip Solutions\USB Device - HID - Keyboard2\Firmware"にある"USB Device - HID - Keyboard- C18 - PICDEM FSUSB.hex"を選んでください。
Erase/Program/Verify Completed Successfullyと表示されればO.K.です。
途中で止まった場合はプロセスが異常動作していますので、タスクマネージャから強制停止するかPCを再起動してください。
7.キーボードとしての動作確認
デバイスマネージャを起動してください。キーボードのところを確認しておいてください。
ジャンパピン短絡を外してください。
基板を接続してください。キーボードに"HID キーボードデバイス"が追加されていればO.K.です。
配線ができるだけ短いほうがいいのですが、高周波ではないのでそれほど気を使わなくても大丈夫。
組み立てやすさを最重要視して配置しましょう。
2.基本パーツの確認
18F4550の動作確認wするために最低限必要なパーツの組み立てをします。
下記パーツがあることを確認します。
程よい大きさのユニバーサル基板
ジャンパピン(1X2ピンヘッダ)
PIC18F4550(DIP)※HID bootloader(改)書込済
40ピンICソケット
20MHzセラロック
2X2ピンヘッダ(L型)
積セラ104(0.1μF)
抵抗4.7KΩ~10KΩ:2本(プルアップ用)
ハンダ:少々
線材:それなり
3.基本パーツの組み立て
サンプル回路(回路図、ボード図)や組み立て例をを参考に、キーボードマトリックス接続以外を組み立ててください。
ケース内USBケーブルを2X2ピンヘッダに接続してください。5V(VCC),GND(VSS),D+,D-を間違えないように。
ジャンパピンを短絡してください。
組み終わったら、テスターなどで5V、GND間の抵抗を測定して、ショートしていないか確認してください。
確認は必須ではありませんが、ショートしていればPCに接続した瞬間にPCが落ちます(体験済み)。運が悪ければ二度と起動しません。
↓組み立て例
4.基本動作確認
HIDBootLoader.exeを起動してください。これは"C:\Microchip Solutions\USB Device - Bootloaders\HID - Bootloader"に置いてあります。
起動すると、"Device not detected. Verify device is in bootloader mode."と表示されるはずです。
この状態で、組み立てた基板を接続してください。ピポッと音がして、"Device attached."と表示が変われば正常に動作しています。
5.keyboard2.zipのコンパイル
"C:\Microchip Solutions\USB Device - HID - Keyboard2\Firmware"にある"USB Device - HID - Keyboard- C18 - PICDEM FSUSB.mcp"を起動します。
Project -> Build All でビルドしてください。USB Device - HID - Keyboard- C18 - PICDEM FSUSB.hex ができていればO.K.です。
6.ファームウェア書き込み
HID Bootloaderで、Open Hex Fileをクリックします。もちろん、"Device attached"の状態でないといけません。
"C:\Microchip Solutions\USB Device - HID - Keyboard2\Firmware"にある"USB Device - HID - Keyboard- C18 - PICDEM FSUSB.hex"を選んでください。
Erase/Program/Verify Completed Successfullyと表示されればO.K.です。
途中で止まった場合はプロセスが異常動作していますので、タスクマネージャから強制停止するかPCを再起動してください。
7.キーボードとしての動作確認
デバイスマネージャを起動してください。キーボードのところを確認しておいてください。
ジャンパピン短絡を外してください。
基板を接続してください。キーボードに"HID キーボードデバイス"が追加されていればO.K.です。