IchigoDyhook:PS/2キーボードをArduinoと接続

IchidoDyhookのPS/2キーボードがM5 Atom Liteから使えたらいいなー、と思っていたのですが、Arduino に PS/2 キーボードを接続するライブラリが公開されていました!ESP32にも対応しているとのこと!

PaulStoffregen / PS2Keyboard
https://github.com/PaulStoffregen/PS2Keyboard

まず最初に 5V駆動のArdino Mega 2560 で試してみたところ…なんの問題もなく認識!

IchigoDyhookの、KBD1 を CLOCK、KBD2をDATAとして接続。あとはGND接続です。

PS/2がこんなに簡単に使えるとは…。Raspberry Pi用のPS/2ドライバはほとんどなかったので、特殊なハードウェアが必要なのではないかとか思ってました。


ではいよいよ、IchigoDyhookキーボードと M5 ATOM Lite を PS/2 での接続に挑戦します。

PS/2は5V駆動、ESP32は 3.3V駆動なので、そのまま繋ぐわけにもいかず。キーボード自体を3.3V駆動させる手法もあるみたいですが、IchigoDyhook内部で電源接続されてるので今回はその手は使えず。

単純に分圧すればいいのかな、と思ってやってみたのですが。

これだと、認識してくれませんでした。(双方向なので単純に分圧するだけじゃダメなのかも…?)


接続の事例がないものか検索していると、ESP32にVGAとPS/2キーボードを繋げるFabGLに、PS/2を接続している回路図が載ってました!

fdivitto / FabGL
https://github.com/fdivitto/fabgl

なるほど、5Vを入れればよいのか。これならいけそう!

さっそく、組んでみたところ、いけました!
手持ちに120Ωの抵抗がなかったので100Ωを使いましたが大丈夫でした。

接続は全部GROVE端子経由で、5V/GND/G26/G32です。

PS/2キーボードライブラリは、Arduino IDEからインストールできるバージョンだと、ESP32未対応バージョンなので、GitHubから最新を取得する必要があります。

ソースはこちら。exsample の Simple_Test.ino に OLED 出力処理を追加しています。(ソースではPS/2接続端子は、本体側のG22/G19にしてあります。)


ブレッドボードでうまくいったので、基板で配線してみました。接続を、GROVE端子から本体側の 5V/GND/G22/G19に変更。

いい感じです!

PS/2のDATA(G22)/CLOCK(G19)と、VIDEO信号(G25)、GNDを接続しています。(いつかサウンドも接続したいところですね。)