8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

自作キーボード「Arabica3/7」を設計した話

Last updated at Posted at 2019-08-24

こんばんは。CalciumNitrideです。
この記事では先日から販売しているキーボード「Arabica3/7」の設計思想や完成するまでの顛末を紹介していきます。これからキーボードを設計したいという方の助けになれば幸いです。

既存のキーボードへの不満

 昨年自作キーボードを始めてから長らくIrisを使っていました。Column-staggered、60%と、最近の流行り(小型化、フルカラーバックライトなど)から見ると比較的堅実な設計です。そんなIrisですが、長く使っていて気づいたこと。

 数字列いらなくね?

 twitterやDiscordで界隈に深く浸かっていたせいか、キー数縮小の流れで40%キーボードがほしくなってしまいました。
すると第一の選択肢として上がってくるのがcorneです。corneは魅力的な選択肢ですが、親指キーが3つしかないためモディファイアや特殊キーが足りなくなることが心配で手を出せないまま数ヶ月…

オリジナルキーボードを作ろう

 特に何も買わないまま2019年を迎えた矢先、自作キーボード専門の通販サイトとしてお世話になっていた遊舎工房の実店舗がオープン。もちろん開店初日に行ったわけですが、その際に購入したのがfoostanさんの自作キーボード設計入門です。それまでは自分でキーボードを設計するなど考えてもいなかったのですが、この本を読んで俄然やる気が出てしまい、自分でキーボードを設計することにしました。

設計思想

 まずは、既存のキーボードへの不満点を踏まえて、大まかな設計思想を決めます。

・Column-staggered
・片手6x3+親指キー
・pro microを使う
・コンスルー対応
・ソケット対応
・OLED対応
小指の付け根で押すキー

 大きな特徴となるのが、"小指の付け根で押すキー"です。以前から指先以外で押すキーというのを構想していて、これ以外にも、親指の付け根の肉で押すキー、手首で押すキー等の案がありましたが、最もコンパクトに配置できるという理由で小指キーを選択しました。
 この小指キーは、小指を意味する俗語"pinkie"と"key"をかけて「pinkey」と呼んでいます。ホームポジションに指をおいたまま手全体を外側に傾けて押すため、ホームポジションから遠いキーでありながら運指コストが低いのが特徴です。デフォルトキーマップではShiftが割り当てられています。

部品配置を決定する

 基板を設計する前に大まかな部品配置を決めます。具体的にはキーの配置とPro microの位置です。キー配置を考えるツールとしてKeyboard layout editorを利用しました。実寸大で印刷できるので実際に指をおいてみて打ちやすさを確かめることができます。
 さらにPlate&Case BuilderにKeyboard layout editorのRaw dataを貼り付けるとスイッチプレート用の穴を生成してくれます。

※Arabica3/7はあえてキーを傾けないデザインにしていますが、斜めのキーを使う場合は、Keyboard layout editorで回転の原点位置をずらすと、Plate&Case Builderで正しく読み込めないようです。デフォルトの左上原点では微調整が難しいので、その場合はPlate&CaseBuilderを使わず、Illustrator等で編集することをおすすめします。
Keyboardlayouteditor.png
PlateandCaseBuilder.png
 キー配置をもとに大まかな外形を考え、Pro microの設置場所を決定します。Arabica3/7ではOLEDが見えやすいようcorneやClaw44と同様に親指キーの上に配置しました。ほかにもIrisやLet's splitのように基板裏側に配置したり、Ergo42のように上部に張り出して配置したりすることもできます。

無限の可能性で試作しよう

 いきなり基板を作るのは少しハードルが高く感じたので、キー配置の撃ちやすさと回路・ファームウェアの確認を行うために無限の可能性をつかって試作機を作ることにしました。前章でダウンロードしたスイッチの穴のデータをもとにプレートを設計し、レーザーカッターでアクリル板を切り出してサンドイッチタイプのケースを作りました。回路設計についてはキー数が近しいcorneを参考にさせていただきました。
 無限の可能性の使い方については本家様が非常にわかりやすいのでこちらでは割愛します。
DSC09699.JPG
試作機を踏まえて、正規版では親指キーを内側に、Pinkeyを外側に移動しました。

 ちなみに天下一キーボードわいわい会Vol.2に持って行ったのもこの試作機です。

基板を作る

 KiCADというソフトを使って基板を設計します。先ほど紹介した自作キーボード設計入門ではこの部分がメインに解説されています。回路図を作る→部品を配置する→配線する、というのが大まかな流れになります。パーツのフットプリントは各所で公開されているので自分で作る必要はあまりありませんが、今回はkailh製PCBソケットと2Uキー用スタビライザーを使うので公開されているものを改変して使用しました。
フットプリント.png
 さらに、今回は基板素材を使ってケースを作ることにしました。金属よりも安価で強度があるので、ソケットを使う場合はよく使われる方法です。(キースイッチのツメはプレート厚1.6mm以下でないと引っかからないため、強度上2~3mm程度の厚さがいるアクリル板を使うとスイッチが抜けやすくなる)基本的にはIllustratorで作ってDXFファイルを出力してKiCADで読み込みます。

 基板の設計が完了したら、いよいよ発注です。JLCPCBという中国の業者を利用しました。KiCADで生成した製造ファイル(ガーバーファイル)群をzipでまとめてアップロードするだけです。デフォルト設定のままで大丈夫でした。ファイルをアップロードすると数日で審査が完了し、合格すると支払いをして製造が開始されます。製造開始から約一週間で届きました。

組み立てて動作確認しよう

 基板が届いたら早速組み立てます。

 

 ......
 

 
 組み立てました(全カット)組み立て方の詳細はbuild guideをご覧ください
2019-07-09 002.JPG

 回路とファームに問題が無いことは試作機で確認済みなので、組み立て後に不具合があった場合は基板設計上のミスか製造上の不具合を疑います。今回は幸いなことに問題なく動作しました。

キーマップ

 動作確認に用いたファームウェアはcorneから流用してつじつまを合わせただけの簡易的なものだったので、実際にキーボードを使いながら最適なキーマップを構築します。最終的にこのようになりました。

おわりに

 電子工作、自作キーボードともに初心者だったにもかかわらず、思いつきに近い形ではじめたオリジナルキーボード設計でしたが、なんとか無事に使えるところまで持って行くことができました。
 現在、Arabica3/7 v1.2は遊舎工房のレンタルボックスで販売中です。

現在販売しているのはv1.2ですが、現在v1.3を開発中です。v1.3では、    ・v1.2での干渉問題を解消  ・sk6812miniを利用したバックライトに対応  ・よりフィーリングや見た目にこだわったケースに変更  ・チルトに対応    などの仕様変更を予定しています。キーボードに関しては[twitter](https://twitter.com/CalciumNitride)で随時発進しているので、興味を持っていただけた方はフォローをよろしくお願いします。

11/04追記

2019年11月よりv1.3.1をリリースし、遊舎工房委託販売サービスでの販売を開始しました。
委託販売の通販ページはこちら

v1.3.1基板では一部仕様を変更し、sk6812miniとオリジナル詰め積層プレートに対応したほか、スイッチソケットと専用ハイプロプレートをキットに同梱しました。詳しい変更点については後日記事にまとめる予定です。

8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?