S1でPS/2キーボードを使う
前回の回路でキー入力は出来るようになりましたが、ケーブルが多くて取り回しが大変なうえ、マーク5のキーボードを使っているので肝心のマーク5が使えなくなるという問題もありました。
今回は、家に余っているPS/2キーボードをマイコンを使ってS1用に変換するモジュールを作ってみます。
マイコンいじりはほぼ初めてなので、まず、ネットで下調べ。するとPS/2キーボードを変換するといった記事がいくつか見つかり、それらの記事で使用しているマイコンがAtmel社のAVRというもの。なので、AVRを使ってみることにします。
まずは、マイコンのプログラム開発環境とマイコンにプログラムを書き込むライタが必要ですが、プログラム開発環境はAtmel社のページから無償で手に入りました。ライタ(USB-ISPというもの)は電子パーツショップなどで4000円ぐらいからあります。
使用するマイコンは参考にしたページやピン数、お値段などからATtiny2313Aにしました。
一通り買い揃えたら、ブレッドボード上に回路を組みいろいろ試していきます。マイコン用のプログラムはC言語で開発もできますが、今回は勉強も兼ねてアセンブラを用いました。プログラムができたらISPでマイコンに転送して動作テストします。マイコンのIOポートの状態確認にはロジックアナライザを使用しました。
S1とも接続して試した結果、以下のように実装することにしました。
- キーボードからのキーコードデータはUSARTを用いて受信し、これをS1のキーコードに変換する。
- キーボードへの送信はUSARTではうまくできなかったのでソフトウェアで処理する。
- ただキーボードLEDは切り替えに失敗することがあるのでマイコン側にも別途LEDを接続することにした。
- S1からのHPP信号で8ビットカウンタ0をカウントアップし、同時にPCINT0割込みでキーON/OFF状態を更新する。
プログラムもでき回路も決まったので、あとはユニバーサル基板上に配線。すると、こんなかんじになりました。
まとめ
前回と比べると、ICが1つだけとなりコンパクトになりました。PS/2変換アダプタがあるUSBキーボードでも動作しましたので、応用すればUSBキーボードを直接つなぐこともできそうです。キーボード側のLEDを変更する際にエラーで変更されなかったり、まれにキーリピートが止まったりなど、まだまだ改良の余地がありますがとりあえずこれで完成とします。(おわり)
ソースコード・ダウンロード
ps2keyboard4s1_030_source.zip (15 KB)
[MD5:BB08E2DEB94AA6CC9419386B0DAA3BB3]
※試される方は自己責任でお願いします。
◆関連ページ◆