2021/11/10 13:21

moduloアーキテクチャについて語る前に、一般的なキーボードの回路について説明する必要があるので、そこからはじめます。


キーボードのスイッチは文字通り接点を繋ぐ(ON)か離す(OFF)かを行っており、それをMCU(Micro Controller Unit)のI/Oピンで検知することで、どのキーが押されたか(あるいは放されたか)を検知します。

といっても、MCUに用意されているI/Oピンは、それほど多くない(十数本)なので、圧倒的に足りません。

そこで、考えられた方法の1つが、数本のピンを行としてOutputに使い、数本のピンを列としてInputに使うマトリクス構成です(行と列の役割が反対の場合もあります)。
この場合、特定の行のピンをHI状態にして、特定の列がHI状態であれば、そこに該当するキーが押されていると判定します。

それに対してmoduloアーキテクチャ(KbD C95 2018 DECEMBER にて@biaccco42 さんによって提唱されました)では、I/Oエクスパンダを使ってスイッチ自体を増やしてしまうという解決策です。I/Oエクスパンダは、MCUに代わってスイッチのON/OFFを検知します。MCUでは、I2C(Inter-Integrated Circuit)というインターフェースを使って、I/OエクスパンダからON/OFFの状態を取得します。

また、moduloアーキテクチャでは、MCUを持つ部分をPendant moduleというデバイスとし、キーボード本体をInput moduleとして、TRRSケーブル(I2C用の信号を載せる)を用いて繋ぐという構成になります。このときInput moduleが複数であってもTRRSケーブルで数珠つなぎにすることで、一体のキーボードとして扱えます。
これは、全く出自の異なるInput moduleでも、それぞれがmoduloアーキテクチャに則っていればそれを組み合わせて使うこともできるということを意味します。

といっても、moduloアーキテクチャのInput moduleが増えなければ、絵に描いた餅なので、このショップで必要なパーツを入手できるように努めています。