秋月電子通商さんのUSBマイコンボードキットとブレッドボードで「じぶんキーボード」の試作をしてみました。
試作の概要
最終的には回路図を作成して、その回路図を元にプリント基板まで作ってみようと思いますが、まずはブレッドボードで試作してみたいと思います。
ブレッドボードはハンダ付けが必要ないとはいえ、配線もそれなりに面倒なので、試作はちょっと楽をしてみようと思います。秋月電子通商さんに、PIC18F14K50を使ったUSBの動作確認ができるマイコンボードがありますので、今回はこれを使ってみました。
結構小さいですが、2.54mm間隔のピンヘッダ、PICKIT接続用のピンなど一通り揃っていますので、ブレッドボードでの試作にちょうどいい感じです。今回はこのキットを使ってカスタマイズ可能なキーボードを試作してみます。
以下の項目で説明を進めます。
- PIC18F14K50マイコンボードで使用できるピンの確認
GPIOとして使用できるピンの数などを確認してみます。 - キーの構成
キーをどのように構成するか検討してみます。 - 試作版の回路図
マイコンボードキットを使用した回路図を作成します。 - 試作版
キースイッチとしてタクトスイッチを使用して、ブレッドボードで試作してみます。 - 動作確認
Microchip社のサンプルコードをベースにカスタマイズして動作確認してみます。すみません、プログラムはまだ整理できていないので、後の公開とさせてください。 - この後の予定
今後の予定を考えてみます。
PIC18F14K50マイコンボードで使用できるピンの確認
秋月電子通商さんで売っているこのキット、ちょっと値段が高いですが、USBコネクタや水晶発振子もついているので、ちょっとしたことの動作確認には便利です。このキットで使えるピンを確認してみます。
(PIC18F14K50USBマイコンボードキット説明書より引用・加工)
PIC18F14K50のピン名でいうと、RCポート(RC0〜RC7)の8本と、RBポート(RB4〜RB7)の4本が使えます。さらに、PICKIT接続用のコネクタの「VPP」端子はRA3として使えますので、合計13本のピンが使えることになります。
ということで、13本のピンを入力ピンにして、スイッチを接続して最大13個のキーを接続できるカスタマイズキーボードを作ってみます。
キーの構成
最大13個の入力ピンの使い方ですが、13個全部にキーを割り当ててもいいですが、もうちょっと拡張できるように、12個のキーは通常キーとして割り当て、残りの1個のキーはシフトキーに使いたいと思います。つまり、シフトキーを押してない時は12種類のキー割り当て、シフトキーを押した場合は、別の12種類のキーの割り当てができるようにして、合計24種類のキー入力ができるようにしたいと思います。
実際に例で確認したほうがわかりやすいと思いますので、先に試作版で作成したものを説明します。
まずこのように、13個のキーを12個の通常入力キーと、1個のシフトキーにします。例えば、シフトキーを押してない場合は、
このようにテンキーのようにキーを割り当てて、シフトキーが押された場合は、
このように、Command + x、Command + c、Command + vを割り当てて、カット・コピー・ペーストが簡単にできるように割り当てる、という使い方を想定してみました。
試作版の回路図
ということで試作版の回路図ですが、マイコンボードキットを使いますので、マイコンボードにキーを接続するだけです。PIC18F14K50の内部プルアップ/プルダウンはRBポートしか用意されていませんので、今回はすべてのポートに外部のプルアップ抵抗をつけます。
なお、シフトキーはVPP/RA3ポートに接続することにしました。
(PIC18F14K50USBマイコンボードキット説明書より引用・加工)
ということで、あとはひたすらプルアップ抵抗付きのスイッチをつけるだけです。回路図としては簡単ですが、こんな感じです。
試作版
ということで、あとはひたすらブレッドボードに回路を組んでいきます。なお、VPP/RA3ポートは90度曲がっているピンヘッダを基板上側につけていますので、動作させる場合は、別途ジャンパワイヤでタクトスイッチに接続します。
先ほど、キーの割り当てを説明するときにお見せしてしまいましたが、こんな感じで作ってみました。
動作確認
Microchip社から、「Microchip Libraries for Applications」というライブラリ(フレームワーク)とサンプルコードが提供されていますので、今回はそれをベースに最初の例で説明したようなキー割り当てで動作確認用のプログラムを作ってみました。
プログラムですが、サンプルコードのまま、必要な部分のみ追加して必要ない部分はそのままで、それはとても汚いプログラムですので、すみません、公開は後ほどとさせてください。
ということで、動作確認の画像もなかなか難しいものがありますが、とりあえず動作しました!
この後の予定
PIC18F14K50を使って、12個のキー + シフトキーの構成で、キーの割り当てと動作確認ができました。ただ、今回はタクトスイッチ13個を入力キーとしましたが、実際には足で操作するフットキーを接続したり、入力を簡単にするためにタッチセンサーを使ったキーなども接続できるようにしたいと思います。
また、接続するキーは電気的にON/OFFができるものであればいいので、自作のキーで独自の入力方法を作ってもいいかもしれません。
キーの数も12個あるので、例えば8個を手で入力するキー、残りの4個を足で操作するフットキーを接続する、という使い方もできそうです。
ただその場合、今回試作した回路では、ちょっと問題があります。
一つは、ノイズの問題です。今回の試作版はスイッチとマイコンの間の接続線が比較的短いためノイズはあまり考えなくて良いですが、例えばフットキーを接続するためにPICマイコンとフットスイッチを長い電線で接続する場合は、その電線がノイズを拾って誤動作したり、場合によってはPICマイコンが壊れてしまう可能性があります。実際の制御ボードはその対策が必要です。
もう一つは、スイッチのチャタリング問題です。チャタリング問題は、このサイトの「MacでPICマイコン入門 第27回」で説明していますので、ご存じない方はご参考にされてみてください。PICマイコンのキーボードプログラムはそれほどチャタリングを意識する必要はない構成ですが、チャタリング時間が長い場合はやはり対策をしておいた方が安全だと思います。ということで、実際にプリント基板を作る時はチャタリング対策の回路を入れておこうと思います。ただ、部品点数が多くなるので、長い電線を接続しない場合向けに、チャタリング対策をしていないプリント基板も作ろうかと思います。
ということで、今後は以下の作業を進めていこうと思います。
- チャタリング・ノイズ対策なしのミニ版じぶんキーボードのプリント基板作成
- チャタリング・ノイズ対策をしたフル版じぶんキーボードのプリント基板作成
- 最低限動作する公開用のプログラム作成
- タッチキーの作成
- Macからキー割り当てを変更できるプログラム作成
ということで、上の順番通りになるかわかりませんが、引き続き製作を続けていきます!