完全自作キーボード「Voyage75」を作ってみた

はじめに

「Voyage75」、という完全自作キーボードを作ってみました。

スペック

キーキャップ Akko Silent
キースイッチ Durock Silent Linear Dolphin
配列、キー数 US配列、79個
hotswap 対応
インターフェース USB (Type-Cコネクタ)
サイズ 縦130mm x 横297 mm x 高さ23 mm
(高さはキーキャップ・スイッチは含めない)
質量 650 g

部品代、製造代諸々含め、4万円程度になりました。

打鍵音

静音リニアということもあり、実際に聴くとすごく静かです。 オフィスでも周りの目を気にせずに打てます。

なぜ作ったのか

これまで、下記の2つの自作キーボードを製作しました。 これらはKBDfans社が出しているDZ60KBD75のPCBを使用しました。

しかし、普段仕事でFnキーをよく使うために、FnキーのないDZ60で組んだキーボードは使いにくい問題がありました。 KBD75で組んだキーボードは右端列のHomeやPage up/downのキーを普段使うことがなく、誤って押してしまうこともあるため、邪魔でした。

そのため、次に自作するキーボードは自分が普段使いする必要最低限のキーで構成したものにしたく、下記の要求仕様としました。

  1. DZ60で組んだUSキーボードの最上段にFnキーの列があるもの (つまり、13インチ程度のLaptopのUSキーボード配列。こういうの)
  2. カニカルキーボード&Hotswap対応

最初はこの要求仕様を満たす市販の自作キーボードキットやPCBを探したのですが、これが全然見つからず・・・

じゃあ全部自分で作るしかないじゃん、というわけです。

ケース

ハードウェアの設計はガチ初心者なので、そんな初心者でも手が出しやすく低コストなアクリルサンド構成でケースを作りました。

アクリルサンドの構成は下図の通りです。

MXスタビライザー用の切り抜き穴の寸法はこちらを参考にしました。 アクリル板の加工は遊舎工房のレーザー加工サービスを利用しました。一部は不揃い品でのレーザー加工サービスを利用し、値段を抑えることができました。

  • 遊舎工房レーザー加工 :
    • 押出クリア, 450x300, 1.5mm, 1枚, 4,700円
    • 押出クリア, 450x300, 3.0mm, 1枚, 5,900円
  • 遊舎工房レーザー加工クリアランスセール
    • 押出クリア / 300x70 / 5mm, 1枚, 1,260円

アクリル代合計:11,860円

そのほか使用した部品は下記の通りです。

部品名 用途 個数
MXスイッチスタビライザー - 1
9mm M2 丸型スペーサ キープレート固定用 4
4mm M2 丸型スペーサ PCB固定用 4
低頭M2ネジ 5 mm キープレート固定用 4
低頭M2ネジ 3 mm PCB固定用 4
M2ネジ 5mm スペーサ固定用 1
M2ネジ 7mm スペーサ固定用 2
M2ネジ 10mm スペーサ固定用 5
M2金属ワッシャー PCB固定用 4
M2シールワッシャー PCB固定用スペーサの高さ調整用 4
ゴム足(100均) キーボード滑り止め用 4

他部品代合計(概算):3,000円

PCB

Kicadで設計し、PCB製造および部品実装の大半はJLCPCBで発注しました。

マイコンSTM32G0B1CBT6を選定しました。選定理由としてはLCSCに在庫があり安かったからです。

最低限キーボードとして動けばいいと思ったので、回路面で特徴のあるものはないです。

値段を抑えるため、基板製造数は最小の5枚、うち2枚を実装し、運送はOCSの最安プランを選びました。 家にあった部品を実装してるので総額は出せませんが、JLCPCBでの費用のみだと日本円で12,242円でした。

発注してから4日で発送され、そこから6日後に届きました。JLCPCB仕事が早くて好き。

ただ一部の部品は未実装状態で発注したため、それらは手半田で実装しました。 特に1005サイズの部品の実装は不器用な私にとって何もメリットがありませんでした。 素直に全部品LCSCで選定し、JLCPCBで実装してもらえばよかったと後悔しています。

FW

一般的に自作キーボードといえばQMK firmwareを使うことが多いですが、自称組み込み園児にあなので自分で作った回路のFWは自分で作ったほうが早いなと思い、QMK firmwareは使いませんでした。

USB HIDの実装はこちらの記事を参考に、STM32CubeIDEのCustomHIDを使うことで簡単にできました。

ただ、実装し始めたときはG0のHALドライバのバージョンが古いものを使っていたため、このバグにハマってしまい、USBデバイスとして認識されない問題に悩まされました。

既に修正済みのライブラリがリリースされていたため、最新に更新することで解決しました。

また、今回作成した基板はBOOT0ピンを使ってスイッチによりBootモードを切り替えられるようにしましたが、STM32G0のOption bytesのnBOOT_SELがデフォルトでチェックが入っていたために、最初はBootモードの切り替えができずST-Link経由しかFWを書き込むことができませんでした。

チェックを外すことで正常にDFU経由でFWの書き込みもできるようになりました。

反省点

PCBの固定を考慮できてなかった

なぜ設計のときに気づかなかったのか、当時の自分を恨みます。

PCBの四隅以外の穴径をネジ穴サイズにするつもりが、誤ってスペーサを貫通するサイズにしてしまいました。

組立時にこの問題に気づき、急遽ボトムプレートーPCB間にL4 mmのスペーサとワッシャーを入れてPCBを固定するように対応しました。

スタビライザーの高さを考慮できていなかった

最初はキープレートの厚さを3 mmで設計・発注してましたが、設計時にスタビライザーの高さを考慮できておらず、実際に組み立てるとスタビライザー付近のスイッチがPCBから外れる状態になっていました。

マウントプレートの厚さ変更と使用するスペーサのサイズ変更だけの修正で済んだのが救いでした。

その代わり6,000円失いました。

固定穴が足りず、キープレート・PCBが撓む

KBD75で組んだキーボードは、PCBの固定箇所が8個ありました。

一方製作したものはキープレートの固定が四隅の4個、PCBの固定が4個ですが、実際に組み立てると想像していたよりも固定が甘く、PCBが撓んでいました。

使用上は特に問題ないですが、側面からの見た目が少しダサくなってしまいました。

角が思っていたより痛い

R1.0 mmは普通に指に刺さって痛いです。

おわりに

一部設計ミスはありましたが、普段使いできる理想的なキー配列のキーボードを0から作ることができました。

ただ面白みに欠けるものになってしまったので、次回作では色々なデバイスを載せたいと思います。