分割キーボード間の接続について

筐体間の接続

分割キーボードを作るにあたって、分割した左右のキーボードを接続するかを考える必要がありました。キースイッチへの配線はキーマトリクスになっているので、そのまま分けると結構な本数線が左右の接続に必要になります。ErgoDoxの回路図を参考にするとI2Cを使って片側にマイクロコントローラ、もう片側にIOエキスパンダ(拡張)を装着し、左右間をI2Cに必要な4芯のケーブルで接続していることがわかりました。I2Cは本来は筐体の外に引き回すような用途ではないと思っていたので、この手法にはちょっと驚きました。

最初にPIC版を作ったときに使用していたコントローラ基盤のIOが少ないため、片方にはマイクロコントローラ+IOエキスパンダ、もう片方にはIOエキスパンダを装着しました。I2Cの接続は

  • 筐体A:の基盤内でマイクロコントローラ~IOエキスパンダ
  • 筐体B:コネクタ~ケーブル~コネクタを経由してIOエキスパンダ

とすることにしました。

f:id:hrhg:20170408062404j:plain

ArduinoのProMicro版は、マイクロコントローダだけで16ピンを確保できたので、IOエキスパンダは片方だけにしかついていません。

ちなみにI2Cは並列を複数接続でき、今回使ったIOエキスパンダは、ハードウェアアドレスとして3ビットあるので最大8個接続できます。IOエキスパンダ1個あたりのIO数は16あるので、8x8のキーマトリクスを作った場合、64個のキースイッチが接続できます。それが8個接続できるので理論上512個のキースイッチを制御できそうです。

google 日本語入力 ドラムセットバージョン を作ることも不可能でなさそうです。 japan.googleblog.com

また、確かUltra Hacking KeyboardはI2Cではなく、シリアルで左右の通信をしていたような気がします。他の市販の分割型キーボードはどうやっているかが気になります。

2017/05/01 追記
Ultra Hacking Keyboardの初期段階ではシリアル(UART)のようでしたが、最近はI2Cのようです。 きせのんさんから指摘をいただきました。ありがとうございました。

コネクタ

I2Cの接続は4芯でまかなえるので、コネクタの選定をしました。ErgoDoxではあまり入手が容易でないと思っていた4ピンのケーブルを使っていましたが、4芯といえば電話等でよく使われているRJ11(本当は6線まである)が思いついたので、最初は以下のRJ11を使いました。 akizukidenshi.com

しかし思ったよりコネクタの高さがあり、薄型の筐体を作りたかったことから以下の4ピンのコネクタのものに作り替えました。 akizukidenshi.com

f:id:hrhg:20170408062049j:plain

コネクタについては、cho45さんの 自作用の汎用コネクタ - 氾濫原 の情報が大変参考になります。

ケーブル

最初は以下のプラグを使っていました akizukidenshi.com

が、よりコンパクトにしたかったので、以下のプラグに変更しました。 oyaide.com

より小さな2.5mm版の方が良かったのですが、メス側は取り扱っていないとのこで採用を断念しました。 oyaide.com

はんだ付けは予備はんだををして以下のような感じです。 f:id:hrhg:20170408062030j:plain