はじめに
プログラミング不要でキーボードを作ることができると話題のHT82K629Bを使って,プログラマブルキーボードのように好きなキーを入力できるデバイスを作ってみました。
RaspberryPiでGPIOを制御する方法については本記事では割愛します。RaspberryPiのGPIOはPythonやNode-REDなど様々な方法を使って制御することが可能です。
HT82K629Bとスイッチのみでキーを入力する
HT82K629BはUSBケーブルでPCと接続し,入力の端子の組み合わせをショートするだけで対応するキーを入力することができるICです。HT82K629Bを基板に実装して販売されているモジュールもあります。
今回は基盤として販売されている「キーボード実験基板(表面実装版・完成品)【MR-KEYBOARDV2】」を使用しました。使い方は非常に簡単でUSB端子をケーブルでPCにつないだうえでC列とR列の端子をショートさせるだけで対応するキーが入力されます。
端子とキーの組み合わせはマニュアルに記載があります。
HT82K629BをRaspberryPiで制御する
RaspberryPiのHigh/Lowの信号を使ってHT82K629BのC列とR列の端子をオープン/ショートを制御することで,RaspberryPiを使ってキー入力の操作ができます。
High/Lowの信号をオープン/ショートに変換するためにはアナログスイッチを使用します。
複数のキーを同時に入力する
HT82K629BはC列とR列の複数の端子の組み合わせをショートさせることで複数のキーを同時に入力することが可能です。例えば「Ctrl + C」はC0-R6とC3-R4,「Ctrl + P」はC0-R6とC11-R0をショートさせます。ショートさせるタイミングはキーボードを抑えるときと同様に①C0-R6をショート(Ctrlキー押下)②C3-R4をショート(Cキー押下)の順番で制御します。
RaspberryPiを使って全てのキーを入力するには
このモジュールはC列が20端子,R列が8端子あるので入力可能なキーの組み合わせはトータル160個になります。一方でRaspberryPiで使用できるGPIOの数は26個なので各GPIO1つでそれぞれの1つのキー入力を制御しようとすると,最大26個のキーしか同時に制御できません。
そこで,ラッチ回路とデコーダを使用することで少ないGPIOで多くのキーの組み合わせを制御することができるようになります。
以下は回路構成例になります。
他にもシフトレジスタを使う方式で制御が可能です。
あとはスイッチの入力をRaspberryPiのGPIOに接続することで,スイッチを押すと特定のキーを押すプログラマブルキーボードを作ることができます。
作ってみた
今回はHT82K629BとRaspberryPi,ロジックICを使ったプログラマブルキーボードの作り方を紹介しました。このプログラマブルキーボードのメリットは,接続したPCには専用のプログラムなどをインストールする必要なく,HT82K629Bがキーボードとして認識されれば使用できる点です。
この回路ではキーの同時押しだけでなく,
①「Win」キーを押下
②文字列を入力してアプリケーションを検索
③実行(「Enter」キー押下)
のような連続したキー操作も可能です。
また,上記構成で実際には組み上げた回路が以下写真になります。(これは「A」キーと「Shift」キーのみを制御する回路です。160個のキーを同様に制御すると回路はもっと巨大になります。)動画は小文字の「a」と大文字の「A」を交互に打ち続けるように設定したときのものです。