前書き

この記事では、自分だけのキーボードを設計してJLCPCBに基盤を発注するところまでを解説します。

この記事が「僕の考えたさいきょうのキーボード」を作りたい人の手助けになればと思います。

そうでない人も、自作キーボード界の先輩たちなどの多くのボランティアの方々によって様々な行程が簡略化されているので、是非この記事を読んでトライしてみてください。

今回使用させていただいたウェブサイト・ツール・OSS

Keyboard Layout Editor で配列を決める

Keybboard Layout Editor(以下KLE)では、独自の配列を決めてそれをKeyboard PCB BuilderKeyboard Firmware Builderで利用することができます。

配列を決めるにあたって、最初にいくつかコンセプトを決めましょう。コンセプトがぶれるとある程度工程を進めた後にやり直したくなってしまうかもしれません(1敗)。

  1. わざわざ1から設計するのだから、既製品にない配列に
  2. 旅先に彼女の代わりに連れていけるように小型に
  3. 最低限、日本語の文章をタイピングは快適に行えるように
  4. プログラミングも嗜むので記号の入力もまぁできなくない程度に
  5. できるだけ安く済ませる

私はこんな感じのコンセプトで制作しました。参考程度にどうぞ。

5.のできるだけ安く済ませるというコンセプトですが、多くの人が組み込む気がするのでもう少し具体的に書きます。

僕が思いついた方法は、

  1. キー数を抑える
  2. キーキャップをもとに配列を決める

です。

1.に関しては他のコンセプトと競合する可能性があるので万人向けではないですが、2.に関してはキーキャップにこだわる人以外の万人向けなうえに効果も絶大なのでおすすめです。

自由に配列を決めてしまうとそれに合うキーキャップが見つからず、バラで足りないものを購入するか、特殊な配列にも対応しているキーキャップを買うか、XDAプロファイルの(すべてのキーキャップが同じ高さをしている)キーキャップを買うか。いずれにしてもお金がかかってしまいます。

しかし、いらないメカニカルキーボードや、Aliexpressやメルカリなどで売られている格安のキーキャップの配列を元にそれを組み替えて配列を作ることで3000円程安く作ることができます。

ちなみに安くなくてもいいよって方でも、キーキャップのデザインにこだわりたい方はキーキャップをもとに配列を決めたほうが安牌です(2敗)。当たり前ですけどね。

KLEには、プリセットがいくつか登録されています。これらのうち "ANSI 104" という奴が所謂標準の英語配列なのでこれをもとにすれば安心です。

一つ一つキーを選択してプロパティで動かしてもいいですが、如何せんめんどくさいので、Raw dataタブから直接操作したほうが楽です。{}内のx: y: h: w: の値はそれぞれ,を挟んで次の""で表されているキーの左隣のキー、なければ0からのx軸の相対座標・上隣のキー、なければ0からのy軸の相対座標・高さ・幅になっています。

これは言葉で説明するより触ってもらったほうがわかりやすいと思います。5分くらい触ればすぐ理解できると思います。

僕の配列はこんな感じです。左手小指列を消して横幅を11Uに抑え、親指シフトを採用しました(左がShift右がFnになっていますが)。日本語入力のときによく使う記号はアルファベットとかぶらないようにしています。英語配列ですが、マクロを使って全角半角キーを搭載しています。結構いい線行ってると思います。

出来たら間違えて消す前にJSON形式でダウンロードしておきましょう。

KLEのRaw dataからKicadプロジェクトを生成する

前述の通り、KLEの配列はRaw dataをコピー&ペーストすることで他ツールで使用することができます。ここではKeyboard PCB Builderである程度出来上がったKicadプロジェクトを生成します。

Paste layout here...と書かれているところにKLEのRaw dataをペーストしてImportを押します。

WIRINGタブではその名の通りKicadプロジェクトの回路図での配線をどうするかという設定ができるのですが、特に変えなくて問題ないです。そのままCOMPILEタブからDownload .zipを押してダウンロードしましょう。ダウンロードが終わったら適当なところに展開しておいてください。

Kicadのインストール

いよいよKicadを使って基盤を設計していきます。ダウンロードページから自分のOSにあったものをダウンロードしてインストールしてください。他のソフトウェアと変わっているところは特にありません。

現在のKicadには、Microsoft IMEを使用している環境でCtrlやAltを使ったショートカットキーを使うとクラッシュしてしまうバグが存在しています。それを回避するためには、Microsoft IMEの設定で「以前のバージョンの Microsoft IME を使う」を有効にする必要があります。

キーマトリックスの仕組みについて

現代のキーボードはキーマトリックスという仕組みに基づいて動いています。これを理解しておくと、後の工程がスムーズにできると思います。

これは、前項で生成したKicadプロジェクトの回路図です。マトリックス(行列)の名の通り、いくつかの行と列で構成されています。K_xと名前がついているのがスイッチ、D_xと名前がついているのがダイオードです。

例えばK_0のスイッチが押されると、col0とrow0が導通します。K_1を押すとcol1とrow0がK_11を押すとcol0とrow1が導通します。

スイッチとrowの間にダイオードがないと、例えばK_0・K_1・K_11を同時に押したときに、col1の信号がK_0を逆流してcol0へ、K_11を経由してrow1へ流れてcol1とrow1が導通してしまい、K_12が押されたとマイコンが誤認識してしまいます。

ダイオードは電流を一方向に制限してくれるので、これを防いでくれます。

Kicadで配線する

Keyboard PCB Builderからダウンロードして展開したKicadプロジェクトのフォルダを見ると、keyboard.proというファイルがあると思います。それがKicadプロジェクト本体になりますので、ダブルクリックして開いてください。

Keyboard PCB Builderで生成したKicadプロジェクトは5.x系統のものなので現在主流の6.x系統のものに変換する必要があります。

PCBエディターを開くと自動的に変換されますので、Ctrl+Sを押すか、右上のフロッピーのアイコンを押して保存して一旦閉じましょう。回路図に関しても同様ですが、開こうとするとプロジェクトのシンボル ライブラリーの...と警告が出るので、キャッシュファイルなしでロードを押して開きましょう。

5.x系で作業するのも一つの手ですが、配線の時の挙動が6.x系の方が圧倒的にスムーズなので僕は6.x系をお勧めします。

keyboard.pro, kayboard.schは5.x系のファイルになりますので削除してしまっても構いません。

再度PCBエディターを開くとこんな画面にが出てくると思います。細い白い線がキースイッチやダイオードから伸びていると思いますが、これは回路図から算出された繋げなければならない場所を表しています。これをほかの配線や穴と干渉しないように配線していくのがKicadを使ったメインの作業になります。

とりあえず現時点で出ている白い線を解決しましょう。

右の方のレイヤーという項目にF.Cu, B.Cuとあると思いますが、これが銅レイヤつまり配線を書くレイヤーになります。F.CuはFrontのFなので表面B.CuはBackのBなので裏面になっています。

縦に通す配線は表面、横に通す配線は裏面と決めてやるとピア(表面と裏面をつなぐポイント)が少なくて済みます。

右側の配線ツールボタンを押して白線の始点と終点をつないでいきます。

マイコンを追加する

PCBエディターを眺めていて何かに気づきませんか?そうですマイコンがありません。どのキーが押されているかを判断してPCに伝えてくれる仲介役が必要です。

私は何も考えずSperkfunのPro Micro互換機で制作しましたが、昨今はPro Microが品薄らしく、Raspberry Pi Picoで制作するのが流行りらしいです。

Pro MicroRaspberry Pi PicoのKicad用のライブラリー(アドオンのようなもの)が公開されているのでこれを見ながら入れてください。

Kicadで回路図を開いてシンボルを追加ツールをクリック、マイコンを回路図に追加して保存しておいてください。とりあえずRowとかColumnはつなげなくて大丈夫です。

マイコンをダブルクリックしてReferenceがU_?となっているところをU_1など番号をつけてあげてください。そうしないと次の工程でエラーが出ます。

PCBエディターを開いてF8を押して基盤を更新しましょう。するとマイコンがPCBエディター上に出てくるので、好きな位置に配置してください。

基盤外形はEdgeというレイヤーにあります。いちばん外側のグレーの線ですダブルクリックすることで開始位置、終了位置を変更できます。

僕は右下のキーを何個か削ってそこにマイコンを配置しました。

次に回路図でマイコンの各ピンにRow, Columnを繋いでいきます。マイコンから遠いRow, Columnから順に繋いでいくと良いです。

アクリル板などで挟む場合はネジ穴をあけます。配線と被らないように、フットプリントを追加ツールでHoleと検索してサイズが合うものを追加します。

ガーバーファイルを出力する

JLCPCBなどの基板製造会社にデータを渡す際に、ガーバーファイルという形にする必要があります。

KicadのPCBエディターのファイル→製造用出力→ガーバー (.gbr)...から保存できます。9個くらいのファイルが出力されるので、新しくフォルダを作ったほうが良いです。

ドリルファイルも出力します。こちらは名前の通り、穴をあける位置を記録しているファイルです。KicadのPCBエディターのファイル→製造用出力→ドリルファイル (.drl)...から保存できます。ガーバーファイルと同じところに出力してください。

出力したファイルをすべて選択して右クリック→送信→圧縮(zip 形式)フォルダーを押して圧縮しておいてください。

JLCPCBに発注する

JLCPCBにアクセスして圧縮したファイルをAdd gerber fileのところにドラッグ&ドロップするかクリックしてエクスプローラーで選択してアップロードします。

するとこんな画面になるのでお好みでオプションを変更します。

なぜかFR-4よりアルミ基盤の方が安いです。あと無料で変更できるオプションはPCB Colorとかです。僕は白にしましたが黒とか紫もいいと思います。

JLCPCBのGerber Viewerで基盤を見たとき、ドリルの位置がずれていてどこか間違えたかと焦ったのですが、Kicadで見たときは間違っていなかったのでJLCPCBのチャットで確認したところ、オンラインのGerber Viewerはあくまでざっと確認するようで信頼度はそんなにないらしく、製造前に社員の方が一応確認してくれるので大丈夫ということ。もしそれでも不安なら、Confirm Production fileをYesにするとよいとのことでした。

私は不安だったので、一応Confirm Production fileと、私のキーボードは基盤むき出しで利用する予定だったので見た目のために、Remove Order NumberをYesにしました。

あとは、カートからCheckoutボタンを押し、指示されるがままに住所や支払情報を入力すれば終わりです。

後書き

僕が制作したキーボードはgithubにあげてあります。参考にどうぞ。ガーバーファイルもアップロードしてあるので、よかったら作ってみてください。こんな記事を最後まで読んでくれてありがとうございます。もし僕がお力になれることがあれば全力でお助けしますので、@m_dev672のDMまでお越しください。