twitterよりちょっと長いの

せっかくだから書き残すよ。

MXスイッチソケットに対応したHelix(5/4行対応)を作った

MXスイッチソケットに対応したHelix(5/4行対応)のPCBを設計して作った話です。

f:id:AIN0204:20211214112022j:plain

素人の自分がPCBを設計して理想のキーボードを手に入れた体験談を通して、「やれば結構いけるやん?」って思ってもらえれば。

アドベントカレンダー

この記事は「キーボード #3 Advent Calendar 2021」の17日目の記事です。

adventar.org

16日目の記事はおおやけハジメさんの「自作キーボードデビューをした話」です。 ソケット化に挑戦していらっしゃいますね。 ソケットを使わなくても導電ゴムというアプローチもあるのですね。 digitalforhumanlife.blogspot.com

背景

何でやろうと思ったの?

ここ数年はロープロファイルのHelixを愛用していました。 はじめは5行でしたが、今は4行として使っています。 指を動かす範囲を小さくできるので楽です。

f:id:AIN0204:20211214112124j:plain
愛用のHelix。最上行はキーキャップを外して使っていた。

もともと5行として作っているので、キーキャップを外して疑似4行として使っていました。 しかし、なんというか美しくない。無駄なく敷き詰められた、4行Helixが欲しいのです。

また、パーツの新情報を仕入れていると「Holy Pandaがいい」とか「MMK Frogがいい」とか見かけて、日に日にMXスイッチへの興味が膨らんでいました。 MXスイッチはたくさん種類が出ていて、カスタマイズの幅も広いです。

f:id:AIN0204:20211214115335j:plain
装着予定はないのに増えるスイッチ

ここまでくると、気がつけばHelix betaと気になるMXスイッチを注文していました。仕方ないね。

しかし、スイッチを取り付ける段階で問題が発生しました。スイッチを1つに選べないのです。 スイッチは一度はんだ付けしてしまうと、交換は容易ではないので、組み上げ前にスイッチを選ばなければいけません。 選べない私は手が止まってしまいました。

ここで登場するのがソケットです。ソケットを使うことで組み上げ後もスイッチを簡単に交換できます。 PCBとスイッチの間にソケットを挟むことで、スイッチ自体にはんだ付けは不要になり、組み上げ後もスイッチを簡単に交換できます。

ここからはMXスイッチのソケット対応した4行Helixを手に入れるまでの道のりを話します。

世に出回っているHelix

現在、遊舎工房さんで取り扱われているHelixは、"Helix beta"と"Helix rev3 LP"の2種類です。 今までスイッチに直接はんだ付けするbetaしかありませんでしたが、ロープロファイルのソケットに対応したrev3 LPが発売されました。 ロープロファイルを使うのであればrev3 LPがいいのですが、今回はMXスイッチのソケットに対応してほしいので、こちらは要件を満たしません。

遊舎工房さん以外で海外で販売されているHelixとして"Helix Hotswap PCB Kit"もあります。 こちらはMXスイッチのソケットに対応しているので、要件を満たしそうです。 しかし、従来のHelixと異なり、五行目を切り離す機能がオミットされています。 私は4行が欲しいので要件を満たせません。

すでに出ているHelixのバリエーションでは私の要件に合うものはありませんでした。

ソケットの種類

要件を満たしているPCBはありませんでしたが、ソケット対応させる手段はあります。

ここまで、Kailh製ソケットを使う前提で話を進めていましたが、ソケットは他にもあります。 ソケットは大きく分けて二種類あります。

Kailh製ソケットは形状が特殊なので、対応したPCBにしか装着できません。 装着できるPCBが限られる反面、PCBに密着してスイッチを取り付けることができます。

Mill-Maxソケットは虫ピンのような形をしており、基本的にどのPCBにも取り付けることができます。 ただ、構造的にPCBからチョットだけ飛び出てしまい、直接はんだ付けしたときに比べて少しだけ高さが出ます。 なお、この高さについては改良版の3305が登場して、いくらか良くなりました。 もうひとつだけ問題があります。値段がチョットタカイ。

f:id:AIN0204:20211214155941j:plain
Mill-MaxはPCB表面から少し出る(少し大げさ目に書いてるが)

グラつき防止のためにできるだけスイッチをPCBに密着させたいのでKailh製ソケットを使いたいところです。

じゃ、どうするよ。

残念ながら自分の要件を満たすものはありませんでした....

じゃ、どうするかって?

作りましょう。

完成までの道のり

さて、回路設計したことがない自分がPCBを自作できるのでしょうか。

Helixは設計データを公開してくれています。覗いてみましょう。 github.com

...覗いてみましたが、わかりませんでした。まずは初歩知識の習得からですね。

PCB設計方法の調査

設計方法をまとめてくれている本があるので読みました。 foostanさんの「自作キーボード設計入門」が設計からPCB注文まで一通り説明してくださっていて分かりやすかったです。 booth.pm

仕入れた情報の中でも、今回に関係あるものとしては以下の通りです。

  • 設計はKiCadというソフトで設計する
  • KiCadでは回路を設計して、その後にフットプリント(部品の取り付けスペース)をドラッグ&ドロップで配置することでPCBを設計できる
  • 基本的にはフットプリントについては先人がライブラリとして公開してくれているので、それを配置することで設計できる
  • KiCadで設計したデータを使って業者に発注するとPCBができる

特に「既存のものを改良する方法」にも触れており、この一冊で「やれそう」という手ごたえを得ました。

PCBの設計

フットプリントのライブラリを覗いてみると、Kailh製ソケットに対応したフットプリントがありました。 github.com

f:id:AIN0204:20211214114047j:plain
このフットプリントが使えそう

Helixの「既存スイッチのフットプリント」を「ソケット対応しているスイッチのフットプリント」に交換するだけで対応できそうです。

あまり大きくは変えず、Helixの仕様をそのまま残したPCBを目指します。 互換性を残すことで既存のHelixのパーツ(ステンレスプレートとか)をそのまま使える旨味があります。

ソケット対応しているスイッチのフットプリントに置換

置換に関しては全スイッチ、一度にできました。

f:id:AIN0204:20211214113856j:plain
「フットプリントを変更」から一括置換

f:id:AIN0204:20211214142553j:plain
置換完了。すべてのフットプリントがソケット対応のフットプリントに置き換わっている。

各フットプリントの微調整

ソケット対応しているフットプリントは元のフットプリントよりも専有面積が大きいです。 スペース的に配線が厳しいので、省スペース化のために以下の調整をしました。

  • ダイオードを表面実装のみのフットプリントに置換
  • あまり使わなさそうなネジ穴(四行目右下)を2つオミット
  • LEDとスイッチの間に配線を通すために、少しだけLEDを上に移動
  • Underglowのテープが干渉するので、テープの装着位置を移動

なんだかんだ、結構なフットプリントの位置調整をしました。

配線を引き直し

フットプリントが別物になったので配線は引き直しです。実はこれが一番大変でした。

Helixは同じPCBで左右対応しているので左手用の配線と右手用の配線を限られたスペースに納めないといけないので難しいですね。 交差していい部分。どこを通すか。線を引いては消し、引いては消し。まるでパズルです。

特にHelix特有の話として、4行目と5行目は切り離せるように接続面積が限られているので、限られた面積に配線が密集して配線が難しかったです。

注文

PCBの設計は完了したので、次は注文です。 やることは単純でKiCadのデータをアップロードして、基板色とかを指定して注文完了です。

PCBを作ってくれる業者はいくらかありますが、今回は「自作キーボード設計入門」の例で出されていたELECROWさんで注文しました。 www.elecrow.com

コロナが流行ってたり、国慶節と重なったりしたので「結構待つかな?」って思いましたが、注文から2週間くらいで届きました。

f:id:AIN0204:20211214115900j:plain
届いたのがこちら

注文数を増やすと単価が減るので、ちょっと多めに注文しました。 10枚(最小5枚から)頼んで6000円くらいでした。

組み立て検証

届いたブツが正しく動くのかはまだ分かりません。組んでみましょう。 いくつかバリエーションがあるので組み合わせを考慮して2パターン組みました。

  • 5行 + バックライト対応
  • 4行 + Underglow対応

完成

なんとか無事動くものが完成しました。 これが望んでいた4行Helixです。

無駄なく格子配列で敷き詰められていて美しい。 スイッチも取り替え放題で満足です。

f:id:AIN0204:20211214114516j:plain
4行Helix

f:id:AIN0204:20211214114537j:plain
裏面。Kailhのソケットが装着されている。

f:id:AIN0204:20211214114613j:plain
もちろん5行としても組める。

失敗談

ここまでで話していないことが1つあります。

実はPCBを注文したのは"2回目"なんです。

1回目の注文では失敗しています。 届いたPCBで動作確認してみると5行目のLEDが点きませんでした。 ほんのり光ってて通電してそうな雰囲気はあるのですが...

f:id:AIN0204:20211216175543j:plain
5行目から光らない。左下LEDをよく見るとほんのり緑に点灯している。

さて、何が問題だったのでしょう。 オチとしては「5行目のLEDのグランドが接続されておらず、十分な電圧が出ていない」ことが原因でした。 電圧が足りないものの、通電はしているので、ほんのり光ってたんですね。

f:id:AIN0204:20211214112241p:plain
実は5行目のグランドが接続されていない。

原因特定

原因特定のためには以下のトラブルシューティングを試みました。

  • テスタを使って通電しているか確認
    • 回路的な始まりからどこまで通電してるか確認
  • テスタを使って電圧の確認
    • 部品単体での電圧と回路全体の電圧とか測る個所によって変わるので、色々探ってみるとよさそう
  • 原因っぽい個所がわかったらジャンパ線か何かで繋いでみて治るか確認

電気に強い友人に相談にのってもらい、なんとか問題発見できました。圧倒的感謝。 自分ひとりだったら迷宮入りしていましたね...ムツカシイ....

なんでそんなことが起きちゃったの?

問題の原因は分かったのですが、何でグランドが繋がっていなかったのでしょうか。 原因は以下にあります。

  • KiCadの回路チェックで不要な警告と重要な警告が混ざっており、重要な警告を見逃していた。
    • 不要なフットプリントを残していた。
  • 最終過程の回路塗りつぶしで全てのグランドが繋がると思っていた。まぁ、繋がっていなかった。
    • PCB切断のために4行目と5行目の接続面積が限られており、配線が一か所に集中して塗りつぶしでフォローしきれてなかった。

学んだ教訓

それを踏まえて2回目の設計では以下を気を付けました。

  • 不要なフットプリントを排除して、回路チェックで警告が出ないようにした。確実に警告0にして注文。
  • 塗りつぶしをあんまりあてにせずに、全てのグランドを配線で繋いだ。

こうして、2回目の注文で届いたPCBでは正常に動作しました。 それにしても、PCB注文代金と検証に使ったパーツ代金が痛い...

話せば単純な未接続事案ですが、次から自分は塗りつぶしの前に手で配線してしまおうと思います。

今後の課題

今回、自分がやってないこととしては以下があります。

今後、ケース設計もやってみたいです。 アクリルの積層ケースとかおしゃれですよね。 こういった木目のあるケースも作ってみたいです。 talpkeyboard.net

他にも作成物の頒布もやってみたいです。 ただ、自作したものの品質担保をどうするかが課題です。 機能の検証はしていますが、頒布していいのか自信が無いです。 みなさんはこういう場合どうしてらっしゃるのでしょうか? (あと、需要も気になる)

感想とまとめ

MXスイッチソケットに対応した4行Helixを作ることができました。 この記事も、そのキーボードで書いています。 ソケットのおかげで、気になったスイッチをとっかえひっかえです。 リニア軸がこんなにいいとは。MMK Frogはいいぞ。

さて、「やれば結構いけるやん?」と思っていただけたでしょうか? 先人のおかげで開発の地固めはされており、設計のためのまとまった情報も設計のためのフットプリントも用意されています。 基本的な部品で構成されるキーボードであれば挑戦しやすいように思いました。

開発費は結構かかりましたが、開発を実践したことで自作キーボードをより近く感じられるようになってよかったです。

f:id:AIN0204:20211214143653j:plain
なんだかんだ、いっぱい作った。不完全なものも含めると5代目。

最後に。 グランドは繋ごうネ!!!