[Arduino]hacking keyboard(PS/2)

YouTube 動画


シリアルポート経由でキーを押すことができるPS/2キーボードです。

 番号 部品名    url
 U1 ATmega328P http://akizukidenshi.com/catalog/g/gI-03142/
 U2 USBシリアルモジュール http://akizukidenshi.com/catalog/g/gM-11007/
 CN1 mini DIN6pinオス 
  USB-PS/2変換アダプタ ヨドバシで780円で買いました

回路図
ArduinoとUSBシリアル変換モジュールを使います。PS/2キーボードに関するプログラム的な処理はDIY Keyboard(Nico Keyboard)をそのまま使っています。なので、DIY Keyboardからキーマトリックスを取り外しただけの回路とも言えます。


↑ 接続例です。
USBシリアル変換モジュールはキー操作側のパソコンに接続します。パソコン側からはCOMポートデバイスとして認識されます。「キー操作側」のデバイスはCOMポートを制御できる必要があります。ここでは、Windowsパソコンに接続して、「TeraTerm」を実行しています。通信設定は115200bps、データビット8、ストップビット1です。

「キーを操作される側」のデバイスにPS/2コネクタを接続します
最近のパソコンはPS/2ポートを搭載していないため、「USB-PS/2変換アダプタ」を使って接続します。ここではラズパイに接続しています。

キーボードのインターフェースの仕様はPS/2です。DATA、CLK、GNDの3本をPS/2コネクタにつなぐだけです。写真では4本つながってるように見えますが、VCC(赤い線)は接続していません。
PS/2キーボードはホスト側と双方向で通信します。そのため、信号の衝突を避けるための工夫が必要です。Highを出力する場合はポートを入力に設定してハイインピーダンス状態にして、プルアップ抵抗からHighを出力します。Lowの場合は普通に出力します。

プログラム
Arduino IDEで作成しています。

↑ 動作中の様子です。
操作側からTeraTermでキャラクターコードを送信すると、それがキーボードの入力となります。
操作される側はワープロソフトを実行しています。
「!」などのようにSHIFTキーが必要な文字は、「SHIFT」+「1」というキーコードが送られるので「!」が入力されます


既知の問題
・操作できないキーがあります。
・インターフェースがPS/2なので、古いです。

(関連)
Arduino Leonardoを使ったUSB版もあります
ċ
hackkeyboard-190511b.zip
(3k)
Matsubara Takuya,
2019/05/10 11:26
Comments