[自作キーボード] 基板からキーボードを作った
キーボードを自作してみた。
基板やケースの設計をするところからやった。

名付けてSlimorta。
「Slim」「Portable」という単語からPerplexityに名付けてもらった。
一丁前に名付けた割にはまだ試作みたいな段階のモノ。
INDEX
作ろうと思った背景
最近、iPadにキーボードを接続するとめちゃくちゃタイピングしやすいことに気づいた。
外でブログ書けるし、ぜひ持ち運びしやすいキーボードが欲しい。
ただ、良さげなキーボードが売ってない。
自分のキーボードのこだわりとして、スペースバー両隣のキーで英数・かなを切り替えたい。Macbook AirのJIS配列キーボードのような。
でもなかなかそういうキーボードが売ってない。
ついでに会社のWindowsでもそのキーボードが使えるとなお嬉しい。
となると、iOSとWindowsで同じ配列・操作感でキー入力したい。が、なおさらそんなキーボードは売ってない。
(WindowsのCtrlとMacのCmdを同じキーにしたい、とかね)
というわけで、もう作るしかない。
作るにあたって
「自作キーボード設計ガイド Vol1 設計入門編」を買って読んだ。
一連の流れを作業手順書みたいにまとめてあるから、これに従えばスムーズに作成できた。
KiCadもFusionも使えるしガイドがなくても作れると思っていたけど、あった方が着手しやすく作業時間短縮につながったので、買ってよかった。
ガイドがなかったら色々手戻りが発生してもっと時間がかかってたとかもあり得る。
作るキーボードの方針を決める
- 持ち運べることを意識して、なるべくスリムに
- オーソリニア
- 60%
- BLE Micro Pro Type-Cを使う
- キーボードの上部にマイコンとコイン電池を配置し、分解しなくても電池交換などができるようにする
- ロープロファイル
- ホットスワップ対応
- キーボード両端の好きな方にBMPを挿せる形
(有線でキーボードを使ったときに、ケーブルが左右どちらから出たほうが良いか決まらなかったので、左右どちらでも気分によって付け替えられるように) - トレー型ケース
- マイコンや電池の上にカバーをつける
- キーボードのカバーも作る
似たキーボード
Preonic Keyboard
https://drop.com/buy/preonic-mechanical-keyboard?mode=guest_open
この辺に書いてある無線接続対応のキーボード
https://qiita.com/chesscommands/items/247fd4c1bb3311a47c77#%E9%A1%9E%E4%BC%BC%E5%93%81
ただ、どれも無線対応してないし、あっても技適をとっているか怪しいものばかり。
レイアウト決め
Keyboard Layout Editorを使って考える。
ある程度作ったら、実寸大で印刷してタイピングしやすさを確認する。
本当は全部直交配列にするつもりだったが、最下段は一部1.25uを使った方が親指で打ちやすそうとわかったので、最下段は少し変則的に、それ以外を直交にするレイアウトにした。
回路設計
久々にKiCad使ったので、操作をだいぶ忘れている...
シンボルやフットプリントは先人が用意してくれているので、それを使ってあとは配置していくだけ。
左右分割じゃない場合、一つのPro Microでスキャンするキー数が多くなるので、Key matrixをどうするか悩んだ。
単純に列数+行数のピンを用意することもできたけど、万が一何か拡張したくなった時のために、下記のサイトを参考にしてピン数の節約を試みた。
単純に各列各行に1ピン割り当てると17ピン必要になるけど、2列を1ピンに割り当てる形にすると合計16ピンで済んだ。
BMPのドキュメントをよく読んだらインジケータLEDを搭載できるようだったので、載せてみることにした。
パターン設計
freerouteを使って一旦パターンを引いた。
アンテナのエリアに配線禁止エリアを設定してパターンを引き直したりしたので、なんだかんだ時間がかかってしまった。
コイン電池については、カバーを開けて上から交換できるような部品を使うことにした。
なんとなくビアの数を減らせるように配線を引き直したりしたけど、正直ビアの数と配線長どちらを優先すべきなのかイマイチ分からない...
ほんとはfreeroute使って数時間で終わらせるつもりが、凝りすぎて半日以上かかってしまった。
footprintは先人のgitにあるやつがイマイチ信用できなかったので(datasheetにある推奨レイアウトと違ったので)、結局いくつか作り直した。
後で思ったけど、先人のfootprintが推奨レイアウトと違うのは、試行錯誤してはんだ付けしやすいよう調整された結果だったのかもしれない。
スイッチプレートについては、キースイッチの穴だけだと回路とみなされず(特殊な工程を通ることになってしまって?)料金が上がってしまうケースがあるらしい。(Discordの会話参照)
ということで、LEDをつける気はさらさら無いが、LEDを光らせるダミー回路を追加しておいた。
このおかげかは分からないが、特に値上げされなかった。
基板の発注

発注!
今回はALLPCBで発注した。
たまたまALLPCB内の通貨が余ってたから使い切りたかったというだけ。
研究や仕事では基板を発注したことあったけど、趣味の創作で発注するのは初めてだなぁ。
はんだ付け
なんだかんだ4時間前後かかった。
コイン電池ホルダーが思いのほか固くて、コイン電池が簡単に外れるように一部をやすりがけした。
スイッチソケットのこの穴は塞ぐべきなのかよく分からないが、なんとなくはんだを盛り盛りにした。
そのほうがなんとなく強度がある気がして。
基板の組み立て

キーボードっぽくなってきた。
本当はスイッチをつける前に、ピンセットを使ってキーマトリックスの動作確認をしたほうが良いっぽい。
とはいえ、今回の場合はまだファームウェアもできていないので、ファームを作ってからでないと動作確認プログラムが動かない。それが先だったか...?
以下、自分にしか伝わらないであろう余談。
キースイッチをスイッチプレートにはめるとき、スイッチとプレートががっちり固定されるわけじゃないので、スイッチプレートがずり落ちてうまくはめられないんじゃないのと思ってたけど、そんなことはなかった。
スイッチプレートにスペーサーをつけた状態なら、ソケットにスイッチをはめ込んだ後にスイッチを押し込むと、スイッチプレートにもうまくはまると分かった。(スイッチプレートはスペーサに支えられてるから、スイッチを押し込んでもずり落ちない)

(キースイッチ、想像で描いたけど実物と見比べたら全然違うな...)
ファームウェア作成
まずはQMK firmware用のファームウェアを用意し、それをBMP用に変換する形でファームウェアを作成した。
また、Lily58の時にBMPを使ったファームウェアを作ってあったので、それも活用した。
QMK firmware用のファームウェア
QMK firmwareのリポジトリに登録したので、そっちを見てほしい。
プルリク投げてからマージされるまでに1ヶ月くらいかかった。気長に待つべし。
ちなみに、VID/PIDの決め方はVIAのドキュメントが参考になった。
BMP用のファームウェア
GitHub参照。
今回はBMPのインジケータLEDを使えるようにしている。
下記のコードをconfig.jsonに追加したうえでbmp-vial-config-generatorでCONFIG.BINを生成し、BMPに上書きしたら無事にLEDが光るようになった。(参考にしたDiscordの会話)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | { "config": { (中略) "led": { "pin": 0, "num": 1 }, "reserved": [ 0, 1, // ここにLEDが接続されているピン番号を指定する 2, // オートスリープの設定もついでに入れている 不要なら0でよい 0, 0, 0, 0, 0 ] } } |
ケース設計
カバーを固定する機構の試作
カバーをスライドさせて本体にカチッと固定する方式にしたかった。ただ、どういう形にすればよいか調べても意外と見つからない。
Perplexityに聞いて、Click stopとかDimpleとかの用語を絡めて検索するとよいと出たけど、全然それっぽいページが見つからない...シンプルな構造なはずなのになんで?
あまりにも資料がなかったので、手元の道具で似た構造のものを探した。
手元にあったUSBメモリのキャップは0.2mm程度のでっぱりで脱着できるようになっていた。
これを参考に、とりあえず適当なデコボコをつけた箱を作って試しにプリントしてみる。
ついでに5mmの厚さってどのくらいの強度があるのかを確認してみる。
実際にプリントしたものがこれ。
PLAでプリントした感じ、
- 5mmって結構強度ある。1~2mm削っても十分そうな感じ。
- 0.5mmのでっぱりで十分そう。1mmのでっぱりだと固すぎ。
完全に固定して外さないなら1mmもありな感じだけど、脱着するなら0.5mmでよさそう。何ならもっと薄いでっぱりでも...という印象。あとフィレットのつけ方でも脱着のしやすさが変わりそう。奥が深い。 - カバーがガタつかない かつ 脱着しやすい構造は何回か繰り返さないと正解が見つからなさそう。
ケース全体の設計
とりあえずカチッと固定する機構ができたので、ケースを作る。
基板や諸々の端子と干渉しないように作っていく。
トレイケース構造でボトムマウント(ボトムトレーに基板をねじ止めする)というシンプルな方式。ガスケットマウントとかもいいなぁと思ったけど、そこまで作り込む余裕はなかった...
まぁ初めてだし簡単な構造でいいでしょう。次作るときはマウント方式をもっと凝りたい。
ケースの発注
会社の3Dプリンタだと小さすぎたので、JLCPCBに発注してみた。
設定はこんな感じ↓
| 3D Technology: SLA(Resin) Material: 9600 Resin Colors: Matte White Surface Finish: Sanding-General Sanding |
発注してから5日で発送された。
本当はもう少し早く発送される予定だったんだけど、Quality Checkで数日引っかかってたみたい。
後述するけど造形に失敗してたので、多分プリントし直したりしてたんだと思う。
一旦完成! ただ...
ケースが届いたので、基板を取り付けて一旦完成!
本体のケースは特に問題なかった。
スイッチや端子の穴についてもズレていない。
ただ、カバーが造形にめちゃくちゃ失敗していた...
どちらのカバーも反ってしまい、スライドして取り付けられない。
隙間から中が見えちゃうくらい大きく反っている。
こういう造形が反りやすいのは分かってたけど、JLCPCBみたいなところに発注しても反っちゃうのか...
モデルを工夫するとどうにか反らずに造形できるものなのかなぁ?
手元に3Dプリンタがないとこの辺の試行錯誤がしづらい。
CNCで切削するとかだと反らないんだろうか?うーん、作り直さなければ...
製作費
ここまでにかかった費用は下記の通り。
| 品目 | 費用(円) | 備考 |
| 基板 | 70$ (1$=145円として約10150円) | 円高の時にALLPCBに50$近く入金しておいたお陰で、実際はもう少し安く済んでいる |
| キースイッチ | 3528 | |
| キーキャップ | 2580 | |
| スイッチソケット | 1122 | |
| BLE Micro Pro | 4950 | |
| ねじ・スペーサ | 747 | 385+242+120 買ったネジ全てを使ったわけではないが、面倒なので計算に入れてしまう |
| コイン電池ホルダー | 460 | |
| その他部品 | 876 | 180+465+231 |
| ケース | 5964 | |
| 合計 | 30377 |
大体3万円。高級キーボードが買えちゃうね!
しかもまだ完成には至ってないので、もっともっと費用はかかりそう笑
終わりに
とりあえずキーボードとして動くものができてよかったよかった。
ただ、キースイッチやキーキャップは安いのを仮で取り付けたにすぎないので、静音のキースイッチや良さげなキーキャップへ交換したい。
ケースについてはまた作り直さないとだけど、それはまた次回。
ハードウェア的な設計ファイルは下記にまとめたのでご参考まで。




















この記事へのコメントはこちら