分割型キーボードの自作(2)

今回はPCBの設計についてあれこれと書いてみました。

分割キーボードの左右の通信ってどうやるの?

これまで複数のキーボード基板の設計をしてきたが、分割キーボードは作ったことがなかった。左右の通信はどうやったらいいのかわからなかったので調べてみると、左右の基板それぞれにMCUを配置してそれらをシリアル通信するらしい。

 

foostanさんの自作キーボード設計入門を読み返してみると、左右接続のシリアル通信は3線(GND、VCC、Data)がつながればよいみたい。3線だけつながればいいのでTRSでもいい気がするのだが、TRRSコネクタがよく使われるのはI2C通信でも対応できるようにするためなのかな?またこの本ではTRSケーブルにも対応できるようにピンの対応を決めるとよいということも書かれている。なるほど。

 

MCUはATmega32U4を使用する。これは以前買ってストックしておいた+昔作ったけど使っていないキーボードから剥がしたもの。最近は入手しづらく価格も上がっているので、このMCUでキーボードを作るのはこれで最後になるかもしれない。

 

USBコネクタとTRRSコネクタ

ほとんどの自作キットでは表面実装型のTRRSコネクタをキーボード基板につけている。ガスケットマウントにしたいと考えていて、そうするとケースとの高さ調整がシビアになる。なのでこれまで製作してきたものと同じように、キーボード基板とUSB、TRRSは別にし、それぞれをリード線でつなぐことにする。USBコネクタはちょうど以前つかったSparkFunのUSB基板が余っていたのを流用する。TRRSコネクタについては、秋月電子で販売されているパネルマウントのMJ-064Hを使うことにした。

 

ただ、このTRRSコネクタは全長が20mm以上でケース内で結構なスペースを取る。どうせ3線しかつながないのだから、もっとコンパクトにできないもんかとあれこれ考えたが、いいアイデアが浮かばなかった...。五月中に組み立てたいという時間的制約があったので、小さいコネクタにすることはあきらめて、このコネクタに合わせてケースを設計することにした。

 

これまでの設計してきた基板からの変更点

TRRSの接続部分以外はこれまで作ってきたキーボード基板の設計を流用すればすぐに出来上がるが、それでは面白くない。次の要素を今回導入することにした。

 

コンデンサ・抵抗などは1206(3216M)サイズのものを使うのが自分の定番になっていた。初めて基板を作ったときは何も考えずにコンパクトなサイズの0603(1608M)を使用したのだが、慣れていないこともあって手ではんだづけするのがとっても辛かった。そこであるときからはんだづけが優しい少し大きめのサイズを使うようにしていた。

 

まあPCBAでやればいいのだけれど、頒布とかしなくて基板1枚しか使わないことがほとんどなので、結局いつも手はんだになってしまう...。これは少し面倒ではあるけれど、手間をかけたほうが愛着がわくので普段使いするつもりなら手はんだするのも悪くない。

 

そういうわけでキーボード基板にMCUを含む素子を手はんだするというのを繰り返してきたのだが、おかげで小さい素子のはんだ付けにだいぶ慣れて心理的抵抗が無くなっていた。そこで今回はコンパクトにできる0603(1608M)サイズのものを使うようにした。

 

セラロックもコンパクトなこれをを使用する。以前導入したときは適当に部品を選定してしまったおかげでそれほど小さくなく、全然省スペース化になっていなかった。これならだいぶコンパクトになる。

 

電源ラインにTVSダイオードを入れて静電気対策を強化する。効果がどれくらいあるのか、そして実装のやりかたが合っているかはよくわからないけど、まあ最悪取れば今まで作ってちゃんと動ているキーボードと同じになる。とりあえず基板パターンに含めておくことにする。だた、部品を調達しようとしたら品薄で納期がすごいかかることがわかったので、結局実装はしていない。

 

KiCadを使った基板設計

KiCadを利用して基板を設計する。だいたいの部分はこれまでのものを流用すればいいが、外形などは新たに考える必要がある。このときにケースの設計もざっくりとしておく必要がある。ケース内部にキーボード基板、USB基板、TRRSコネクタを収めるのだが、TRRSコネクタが結構スペースを取る。いつもケースを考えるときはベゼルをできるだけ狭くしようとして四苦八苦するのだが、今回は逆に広いベゼルのケースを作ってみることにした。

 

TRRSコネクタは側面に向けるか、背面に向けるかという選択肢がある(上面に向けるという選択肢もなくはないけど…)。分割キーボードの利点の一つは左右の間にものを置くスペースを作れるということ。であれば左右を繋ぐケーブルはその邪魔にならないほうが良いだろうと考えて背面側に向けることにした。ケース奥側のベゼルを広く取り、コネクタをこのスペースに配置することにした。

 

ケースベゼルが広ければキーボード基板を頑張ってコンパクトにする必要もなくなる(だったら小さい素子をつかう意味はないのだけれど...)。そこで以前からやりたいと思っていたダイオードを一列に並べる、というのをやってみることにした。こうするとはんだ付けがとっても楽になる。キーボード奥側のUSB/TRRSコネクタが来ない空いているスペースにダイオードを一列に配置する。規則的に並んでいるダイオードの配置に合わせて配線するので配線パターンがきれいになる傾向があると思う。

ダイオードを一列に並べて配置する

部品はすべてPCBの底面側にすべて実装することにした。ケース内でそちらのほうがスペースがあるのでケースとの干渉を気にしなくて済む。はんだづけ時にわかったが、左右のシリアル通信のためのリード線をはんだ付けする3つのスルーホールは、間隔が狭くてはんだ付けがちょっとしんどかった。USBコネクタと線でつなげるための4つのスルーホールくらい間隔をあけておいたほうが良い。

MCU周りの配線

シリアル通信のDataをつなぐMCUのピンは左右でそろえておくのがファームウェアの点で良いみたい。意識していなかったけどたまたま左右で同じピンを使っていたのでQMK_Firmwareで特に苦労せずにファームウェアを構築できた。左右でピンが違ってもできないことはないと思うが、ファームを書くのが大変かもしれない。

 

キースイッチはホットスワップ用ソケットは使わずにはんだづけでスイッチを固定することにした。以下がその理由。

  • スイッチをはんだづけすることに心理的抵抗がなくなっている
  • ソケットとスイッチプレートがいらないのでこれらの費用がかからない
  • ポロンフォームをつかったガスケットマウントと打鍵音の点で相性が良い(自分の好み)
  • 大量に使っていないスイッチがあるのでスイッチをケチる意識がなくなっている

まあでも費用の点が一番かな。デメリットは3ピンのスイッチは使えないこと(頑張れば使えるけどはんだ付け時に何かしらの位置決め治具が要る)。

 

これまで自作してきたガスケットマウントのキーボードでは、高級カスタムキーボードに倣ってスイッチプレートや基板にタブをつけてそこにポロンフォームを貼り付けていた。今回はガスケットとなるポロンフォームでキースイッチ部をぐるっと囲うように1周させる。こうするとスイッチ部底面を半密閉状態にさせることになるので、打鍵音に影響があるかなぁと思ってこのようにしてみた。5mm幅の粘着付きフォームを貼ることにして、基板の両面には貼付ける部分をシルクで描いておく。

 

あとは念のためPCBだけでキーボードとして使えるように、四隅に穴を空けておく。スペーサーを介して余っている基板を底板としてつければケースが無くても使えるはず。加えて雑にMCU付近にもコネクタ固定用の穴も空けておく。もしケース設計に失敗してもこれらの穴を利用すれば基板だけでキーボードとして使えるようになる(はず)。

 

最後にDRCを確認し、シルクを整えて完成。基板は以下のようになった。キースイッチからの配線は結構きれいにできたと思う。これだけ基板にスペースの余裕があるとだいぶ設計が楽になる。

右手基板

左手基板

基板の発注

左右のPCBをマウスバイトでつなげて1枚のPCBとして発注するか、分かれた基板としてそれぞれ発注するか迷ったが、結局分けて発注した。

  • 1枚にしても安くなるわけではない
  • マウスバイトで切り離したあとでやすりがけするのが面倒
  • もし片方の基板でミスがあった場合、最初から分けてあった方が修正が楽

というのが理由。

 

基板はJLCPCBに発注。3Dプリントサービスで作るケースと一緒に発注して送料を浮かせたいという考えだったが、3D プリントは別送になるようで結局基板とケースは別々に発注することになった。それぞれ送料がかかるけどまあしょうがない。基板の色はこれまで選んだことのない紫にしてみた。

 

基板が来た

実際に届いた基板の写真がこれ。

到着した基板の写真

最近は面倒なのでGNDベタを全体に入れないのだが、そうすると色がだいぶ渋い。配線パターンやGNDベタの部分は割と明るい色になっている。明るい色にしたい場合にはGNDベタを入れたほうが良いと思う。

 

次回の記事はケースの設計について書こうかなと考えています。

 

この記事は自作分割キーボードopyc3437で書きました。