初めて 基板 を設計して、自作キーボードを作った話

こんにちは、ミツバです。 今回初めて基板の設計から自作キーボードを作成してみたので、それについてまとめようと思います。

自作キーボード歴

自分が自作キーボードを初めたきっかけは遊舎工房さん秋葉原にできたタイミングとほぼ同じで、Corne Chocolate を作成しました。記事を検索すると2019年4月の記事が出てくる。

mitubaex.hatenablog.com

そこから沼にハマり、キットを書い漁る時期が続きました。そして一度自作キーボードの設計をしていました。その時は分割キーボードを作成していて、当時のツイートが以下である。

記憶が怪しいが分割キーボードの左右の master slave 構成で上手く動いてくれなくて挫折してやめてしまいました。 多分ファームウェア側で何かしら制御すれば動くようになったのだろうけど、そこまで情熱が無かったのかもしれません。

そこからはまたキットを買う感じになり、HHKB7sPro というスタンダードな 60 % のキーボードに遷移し Lain という 分割されていないキーボードに出会います。分割されていないからこその取り回しの良さが凄く良かったキーボードで、ここで一体型の良さを知りました。しかしやはり HHKB の方がキー数が多く業務で利用するには楽だったので、普段は HHKB を利用する形になってしまいました。

そこからキャンプや自転車などにハマりだし、キーボードから少し離れていました。

そんなある日、ひょんなことで Durock Black Lotus に出会います。このキースイッチはルブされた状態で手に入り、使用感もオーソドックスな赤軸より重さがありしっかり打てるのが凄く良いと思った。軽いタクタイルのキースイッチを打っているような感覚だなと自分は思っています。

そこからこのキースイッチを利用して、 cocot46plus を作成しました。これも一体型でかつトラックボールが付いていて、一つでなんでもできる優れものです。そこから HHKB から cocot46plus に移行しました。

もっと小さく取り回しのしやすいキーボードを

46 キーのキーボードに満足してきて、もっと小さく取り回しの効くキーボードが無いかを探し nowt36 を見つけました。nowt36 は 36 キーの一体型キーボードです。そしてこれを利用してみて cocot46plus とのキーの傾きの違いなどがあると気付き、自分で作ってみようと思いました。nowt36 の 基板のデータは以下の repository にあり、参考にしやすいのもありがたかったです。

github.com

キーボードを作成する

layout を決める

keyboard layout editor で自分が使いたいキーボードの layout を作ってみました。使い心地などは実際に作ってみて判断する方針にして一旦この layout で作成することにしました。

keyboard のレイアウト

基板を設計する

基板設計は KiCad を用いて作成しました。

最初は雑に作りたいと思い、名刺キーボードの実装を参考に 基板の実装をしました。過去に名刺キーボードは作成したことがあり、このガイドが自分の中で実績のあるものだったため大変参考になりました。

github.com

KiCad 上でキーマトリクスを構築し、ProMicro に接続をした図が以下になります。

キーボードのキーマトリクスの図

キーボードのキーを PCB 上に配置をし、配線をすると以下のようなります。

PCB にレイアウト

PCB 上にレイアウトするために、adamws/kicad-kbplacer を利用し 自動で配置をしました。これによって位置をそこまで気にせずキーの配置をすることができました。利用してみて SW のナンバリングが配置後ズレてしまいイマイチ解決方法が分からなかったので次トライする時は良い感じに利用できるようになりたいと思いました。そして自動配線のツールとして freerouting/freerouting を利用してみたのですが KiCad 7 だと上手く動かなくて、とりあえず手動で配線を行いました。この配線が大変でとりあえず動くやつは作れるけど、綺麗な配線にするのは基板のサイズなどの兼ね合いなども考慮にいれないとダメでキーボード設計者の方は凄いんだなと感じました。

基板を発注する

基板発注は、PCB Prototype & PCB Fabrication Manufacturer - JLCPCB で行いました。

そして第一段として作成された基板が以下のようなものです。この基板は一旦表面に配線を集中させて基板も大きめにカットして配線の通り道を作るようにしました。そしてこの基板にダイオードをはんだ付けして動くことを確認し、ちゃんとしたキーボードに向けて基板を設計しました。

第一段階の試作基板

そして次に作成された基板が以下のようになります。トップ、ボトムプレートもセットで発注してキーボードとして形になるようにしました。

二回目の試作基板

キーボードを組み立てる

届いた基板の裏にダイオード、ソケットをはんだ付けしていきます。そしてはんだ付け後、トッププレート、ボトムプレートを組合せてキーボードを作成します。

基板の裏面

組み立てていく際に一つ問題が発生しました。それは ProMicro が入る隙間が無いということでした。 今回はトッププレート、ボトムプレートの間に基板を入れ込むサンドイッチ構成だったので、真ん中の基板に ProMicro を入れる必要がありました。 しかしこの ProMicroの入る隙間がありませんでした。他のキーボードも同じ問題を抱えそうだなと思い、 cocot46plus を見てみると良い感じに ProMicro の領域を設けていました。

cocot46plus の裏面、ProMicro が挿入できる領域が設けられている

とりあえずでボトムプレートを注文してしまったので、これじゃキーボードが完成しなくなってしまいます。ここでとりあえず動かすという力技として基板を割るという選択を取りました。 買ったのは、PカッターL型|オルファ株式会社 【公式サイト】 です。アクリルが割れるとのことでこれをチョイスしました。 そしてギコギコすることで無事割ることができ結果的に以下のような裏面になりました。

作成したキーボードの裏面、ボトムプレートを割りProMicro を挿入するスペースを設けた

これでようやく動く形になりました。

ファームウェアを作成する

キーボードを動かすために ProMicro に書き込むファームウェアを最初は Keyboard Firmware Builder で生成してみました。このソフトでソースコードも生成することができるので自分で一からファームウェアを作成する際に一応参考にすることができました。 そこから 今回作成した基板の元となった nowt36 の qmk firmware のコードを読み、それに合わせて実装をしました。 そして作成したファームウェアを以下に置いておきます。これで一応動く形にはなりました。キーボード名は nowt36 をリスペクトして vaut36 と名付けました。

github.com

完成

PCB のデータなどは以下のリポジトリに置いています。

github.com

終わりに

ひとこと、動いて良かったーという気持ちです。そして自分で作ったキーボードで色々な作業ができるようになって、楽しさが増しました。 分割キーボードも良いのですが、一体型で小さいキーボードも取り回しが良くて凄く好きになれたのは良かったなと思いました。 もっとコンパクトにしても良いのですが、配線やProMicro の位置とか凄く悩むんだろうなーと思いました。 Nomu30 を研究のために買いたい。