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を入れればよいのか。これならいけそう!
IchigoDyhookのPS/2キーボードからM5 ATOM Liteに入力できました!!やったー! pic.twitter.com/ab8UlXT6QK
— Nochi (@shikarunochi) June 11, 2020
さっそく、組んでみたところ、いけました!
手持ちに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を接続しています。(いつかサウンドも接続したいところですね。)