キーボード #2 Advent Calendar 2020 - Adventar 6日目の記事です。
昨日はTakeshi Nishioさんの自キ活1年目で出来たものと、総当たりマトリクスのご紹介(ダイジェスト版) | 勢いだけでやるページ on GitHubでした。
明日はF_YUUCHIさんの2020年にやったこと/できなかったこと&これからの話 - ゆーちログです。
2020年の自作キーボード活動
2019年、自作キーボードについては、いろいろやりつくした感があったけれど、こうやってまとめてみると、まったくやりつくしてなかったと言わざるをえない。 今年もキーレイアウト遊びをふくめていろいろ試してみた。 2020年は、エンドゲームに近づいたのか?
今年作ったキーボード
- Caravelle
積んでいるキーボード
- SPACE65:CyberVoyager
- NumATTACK16
設計したキーボード
- X68 Treadstone配列風の68キー一体型
- Gullwing エルゴノミック配列一体型BLEキーボード
- 742BLE Ortholinear7x4分割BLEキーボード
- 742 Ortholinear7x4分割キーボード
配列
- QMK薙刀式の更新 https://github.com/eswai/qmk_firmware/tree/master/keyboards/crkbd/keymaps/naginata_v13
- 英字配列 SRLBY配列
- 英字配列 Colevrak配列
- かな入力アナライザー https://keyboard-analyzer.vercel.app/
742キーボード
さて、アドカレ記事の本題として742キーボードの設計制作過程を5ステップに分けて振り返ってみたいと思います。 7行4列で左右2あるので、プロジェクト名を742と名付けてそのまま今に至ります。
Phase 1 Plan and Define Program
2018年に自キ入門してから、 いろいろな配列を試してみて、 Ortholinearが自分に一番あうことは、だいたいわかってきました。 自作キーボードらしいcolumn staggeredも最初は大好きでしたが、 どのキーも満遍なく押しやすい、キー位置を把握しやすく、アルペジオしやすいのはOrtholinearだと思います。 一方、一体型のOrtholinearは手が意外と窮屈で、Ortholinearなら左右分割が ベストだと思っています。
キー数は40%でもなんとかはなるのですが、もうすこし多い50キーくらいあると安心というのが、今の感覚です。 これまで、Ortholinearは何個も作りましたが、親指1Uは指が迷う、押し間違えることが多かったので、2Uにしたら非常に安定しました。 親指2Uが、今年最大の発見かもしれません。
2018年時点で、HelixやErgo42というほぼ自分のエンドゲームに近いキーボードがあったのですが、 それに気づくだけの知識と経験を得るのに2年かかったということでしょう。 沼は深いです。
実はCaravelleをベースに、いきなり742のBLE版を最初につくって、これはエンドゲームか、と思ったのですが、 BLEは複数端末とのペアリング切り替えが安定しなかったし、最初は快調だったのに、数か月すると動作も安定しなくなってきました。 QMK薙刀式も、nrf用QMKで動作するには、それなりに変更が必要で、機能に制限もあり、有線版と同時にメンテしていくのは得策ではないと思いました。 私にはBLEは難易度が高すぎたようです。 そこで、この有線版742キーボードをつくります。 チップを全部PCBに実装するのはあこがれますが、BLEで苦労したので、今回はPro Microでかたくいきます。 Pro MicroやケーブルのレイアウトはErgo42を踏襲させていただきました。
英字配列は自作のColevrak配列です。 これはキーキャップにColevrakキットという、Dvorak配列とColemak配列の両方に対応できるキーキャップがありますが、 そのキーキャップと標準のQWERTYキットの範囲でできる英語専用の配列を目指しています。 配列屋さんからすると、そんなしばり意味ないと思いますが、 自キ勢のこだわりとして導入してみました。
かな配列は、もちろん、QMK薙刀式かな入力を搭載します。 今回はじめてOLEDを載せてみました。 QMK薙刀式はキーボード内で、英字入力とかなと入力のモードを切り替えるので、ここには入力モードの表示をやろうと思っていました。
だいたい仕様がきまりました。
Phase 2 Product Design and Development
設計に入ります。
ケースとプレートは3Dプリンタでつくるのが安くて手っ取り早いので、最近の定番です。 3D CADとの親和性は高いし、 すばやく試行錯誤でき、自宅で作れるメリットは大きいです。 3Dプリンターでつくるプレートもやわらかくて好きです。 Ortholinearなんでキーレイアウトの設計はほぼなしです。 Column Staggeredなんかだと、KLEで悩むんですが。
各部品のレイアウトが決まったら、最初にKiCADでPCBの設計に入ります。 この段階でケースの2Dレイアウトはおおむねやっておきます。
そして、KiCADでPCB設計、KiCADからSTEP形式でPCBをエクスポート、Fusion360へインポートしてケースを設計し、不具合をまたKiCADへフィードバックする、というサイクルを2、3周して設計をすすめます。 設計というのは、手戻りなく一発で決めよう、と思わないほうがいいと思っています。 CADは清書ツールじゃなくて、思考ツールですから。 さらに3Dプリンタでモックアップを作成し、実際にキースイッチやキーキャップもつけてみて、レイアウトやデザインの確認をします。
OLEDはケースと隙間なく取り付けたかったので、ケースのパネルにはめ込んでから、取り付けるようにしました。
だいたい納得できたら、PCBをオーダーするタイミングです。 PCBは安くて速いJLCPCBを使いました。 1週間から10日くらいで到着するので、文句なしです。 PCBを待つ間に、もう1回モックアップをつくって寸法を調整しました。
薙刀式ロゴについては作者の大岡さんに使用許可をいただきました。権利は大岡さんに帰属します。 動画では英数と漢字で表示していましたが、直感的でないので、その後ABCと表示するように変更しました。
Phase 3 Process Design and Development
製造プロセスの設計も大切です。
PCBは上述のように外注しますので、プロセスというと3Dプリンタでケースを作るのと、はんだ付け、組み立てが、自宅製造プロセスです。
特に組み立てできるのかは、よく考えておかないといけません。 OLEDを先にPCBに取り付けると、ケースにひっかかって組み込めないこととがわかったので、 OLEDは最後にとりつけるように設計しなおしました。 おかげで、上記のようにOLEDをケースにピッタリつけることもできました。
ケースには60mmくらい橋渡しになる形状があり、3Dプリンタでサポートが必要な形状ですが、 サポート除去はめんどうですし、除去跡も美しくありません。 やってみると空中ブリッジ印刷で問題なくできたので、最終的にサポートはまったく不要でした。 ここは個人的に満足度の高いポイントです。
3DプリントケースのTipsとして、ケース底面の角などアンダーになるところは角Rではなく面取り、面取りは45度よりすこし大きめの角度にするときれいに印刷できます。 ねじ穴はインサートをはんだごてでいれるのが一般的ですが、最近はねじでセルフタッピングしてます。 外形2mmの六角形の穴をあけておけばM2ねじがいい感じで入ります。 頻繁につけ外ししないから、これでいいや、という感じです。
Phase 4 Product and Process Validation
実際に作って動作検証します。
PCB待ちのあいだにケースを3Dプリントします。 左右1セットの印刷に12時間くらいかかりました。
実際に組み立ててみると、モックアップまで作っているので大きな間違いはなかったのですが、OLEDの表示範囲が上下対称ではなかったので、左右対称の窓をあけると表示がきれてしまうことがわかりました。
OLEDの表示はすこし苦労しました。 だいたいglcdfont.cの一部にロゴをいれて、文字列としてロゴを表示するというのが一般的なようですが、同じようにやっても、うまくいったりいかなかったり。
キースイッチはKailh Box Silent Pinkを使ってみました。 がたつきが少なく、標準で比較的軽いのでこれも好きです。 スペース、エンター、レイヤーキーなど同時押しするキーは、25gに交換しました。
2Uキーにはスタビをつけてみましたが、25gのスプリングだとスタビが重くてキーが持ち上がりませんでした。 これは失敗。
Phase 5 Feedback, Assessment and Corrective Action
問題の修正にうつります。
OLEDの表示位置問題ですが、本来はPCBを直したいところですが、ケースを非対称に変更して、とりあえず修正しました。 3Dプリンターなので、不具合はすぐに直せます。 CADで悩むより、つくって試すほうが早い時もありますね。
OLEDの表示は、すこし富豪的ですが、画面サイズとおなじ128x32ドットの画像を3枚(かな、ABC、薙刀式ロゴ)用意して、 oled_write_raw_P関数で表示するというのが一番シンプルで思い通りに動作しました。
スタビはなしでつかうことにしました。 そもそもスプリングが軽いので、スタビなしでも問題はないんです。
成果物をこちらにおいておきます。
- PCB、ケース https://github.com/eswai/742_keyboard
- ファームウェア https://github.com/eswai/qmk_firmware/tree/master/keyboards/eswai/742
まとめ
ことしも自作キーボードをエンジョイしました。 しばらく742で満足できそうな気がします。 これはハード面でも、ソフト面でも、エンドゲームに近づいたのではないかという気もしています。 しかし、だいたい頂上が見えてからがつらいのは、ご存じのとおりです。 2021年も、また一歩エンドゲームにちかづけるように精進したいと思います。
最後に、本記事はもちろん742キーボードと薙刀式で書きました。