Amazonのアソシエイトとして、このブログは適格販売により収入を得ています。

回路エディタを使わずにキーボードを作った話

自作キーボード

キーボードが欲しかった。

・ロープロファイルのキースイッチである
・右Shiftの右にFnキーがある
・他は一般的な60%配列である
・QMKみたいなオープンソースのエディタツールが使える
・Bluetooth接続ができる

という条件を満たすキーボードの完成品やキットが無かったので、作るしかなかった。
森羅万象、欲しいものは作るしかないんだなあ。

表題にある、回路エディタを使わなかった理由

  • KiCADと和解できなかった
  • レジンが余ってたので3Dプリントしたかった
  • 手配線なら致命的なミスがあっても修正が容易だから
  • 手配線は人の温もりを感じるから(てきとう)

基板を用意しない、力技のゴリ押しでキーボードを設計しようというわけです。
データは配布するし、作るにあたってのソースも書いていくので
自作したい!けど回路エディタ分かんない!って同士(いるのか…?)の参考になれば幸いです。

知識前提

Fusion360がある程度使える。

Blenderとかでも良いと思うけど、3Dプリント用のデータを作るなら必要。
配布してるstlファイルをそのまま使うならこれは要らない。

最低限の電子工作やはんだ付けができる。

手配線するので、少なくともホットスワップのソケットとマイコンははんだ付けしなきゃいけない。
そもそも配線にあたって、電子工作の知識が要る。
どれくらい要るかと言えば、例えば乾電池でLEDを点灯させる回路を作れるとか、ArduinoでLチカできるとか、そういうのに毛が生えたレベルだと思う。

ざっくり自作キーボードの原理が分かってる。

1台でもキットを作った事があれば大丈夫だと思う。
マイコンとスイッチとダイオードが繋がってキーが入力される、みたいな。

用意したもの

必要な部品とかを書いていく。

・キースイッチ
GATERON KS-33 Low Profile 2.0 Banana Switch Setx2
なんでもいいと思うけど、今回は重めのタクタイルで。
1セット35個入りなので2セットの70個。

・ホットスワップソケット
GATERON Upgrade Low Profile switch Hot-swap PCB 2.0 Socketx1
1セット70個入り。
実際に届いたのは3個くらい多めに入ってた。不良見合いか?多いのはありがたい。

・スタビライザー
GATERON Low Profile Plate Mounted Stabilizer
2Uを3個と6.25Uを1個。
人によっては要らないと思うけど、せっかくなので買った。安いし。
このスタビライザーはプレートマウントなので、PCBを使わない設計にピッタリ。
マジで神なんじゃないかって思った。

・キーキャップ
143 Key White Black Low Profile Slim Keycap PBT Keycaps for Gateron Cheery MX Mechanical Keyboard with Work US and UK layout
ロープロファイルに対応してるCherry MX軸用のものなら何でも良いと思う。
んだけど、色々キーが入ってるやつで安いのがこれだった。
PBTダブルショットだしお得感ある。
143key入りがよし。

あと、普通にロープロファイル用のキーキャップ買おうとすると、6.25Uのスペースバーが入ってない事がある。
1.75UのShiftキーも無かったりする。
例えばNuphyのキーキャップはスペースバーついてるけど1.75UのShiftキーが無い。
変な配列が好きな人は要注意。

・マイコン
BLE Micro Pro Type-C版
何でもいいと思うんだけど、最終的にBluetoothでも繋ぎたかったので、手元にあったこれを。
有線ならPro MicroとかRaspberry Pi Picoとか色々選択肢はある。

・ダイオード
1N4148が定番らしいで、それのリードタイプを。秋月で100本入りを買うのが一番安い。
高速スイッチングダイオードなら何でもいいと思われる。

・Type-Cのコネクタ
1-10pcs USB 3.1 Type C Socket With Screw fixing plate Type-C USB Jack 3.1 Type-C 2Pin 4Pin 5Pin 6Pin Female Connector Jack
これはあってもなくても。一応見栄えのためにパネルマウントタイプのやつを使う。
Aliで買ったやつを使ってるけど、別にamazonでもなんでもいいと思う。

・その他
マイコンとキースイッチを直付けしたくなければコンスルーとか、
あと当然導線がいっぱい要る。10mくらいあれば余裕だと思う。
新規で買うならポリウレタン導線の0.25mmとかオススメだと思う。はんだの熱で被覆が溶けるタイプのやつ。絶対便利。
今回は手元にすずめっき線しか無かったので熱収縮チューブを大量に使ってゴリ押し。

・3Dプリンタ
うちにあるのはELEGOO Saturn S。
今回使ったレジンはSKの水洗い10Kと高靱性をチャンポンしたやつ。
(バット洗うのが面倒くさかったので混ぜた)(割れとか剥離とかなく普通に印刷出来るので神)
最近は高靱性の水洗いレジンが多く出回ってるので、そういうのが良いと思う。
メカレジンとか良さそうだなって思ってる。

データ

3Dプリント用のstlデータを配布します。

キーボードのメインとなるプレート
keyboard60per

プレートを受けるケース底面みたいなプレート
keyboard60per_base

プレートの蓋、カバーみたいなもの
keyboard60per_Futa

データを作るにあたって、GATERONのウェブサイトにある3Dデータを使用しています。
https://www.gateron.com/pages/products

配列の設計

Keyboard Layout Editorを使って作った。
特に言うことは何もないけど、一般的な60%配列。
HHKBで体に馴染んでるため、右Shiftの右にFnキーを置いてます。

プレートの設計

基本はGATERONの3Dデータを使って”結合-切り取り”で型抜きしたあと、表面を適当に均していった。
1キー分のデータを作っては出力し、適当に調整。


うまくいったらそれを必要なキー数分並べてプレートにするだけ。
このプレートはホットスワップのソケットを嵌め込めるようにしてある。

スタビライザーもデータが配布されているので、2Uと6.25Uもそれで適当に作った。
スタビライザーのシャフトが逃げられるだけの隙間を作らないといけないので、↑のstlデータは2Uと6.25Uの裏面を大きめに抉ってある。

分かりづらいかもだけど、こういうところ

これも何度か出力して現物合わせ。
ズレが大きいとキーが押されたまま戻ってこないので、少し隙間を大きめに取るのがいいと思う。最後はヤスリで調整。

あと細かい点として、ホットスワップのソケット右上に四角い突起がついてるんだけど、
もともとダイオードをココに嵌め込もうと思っていた。
実際はタイトすぎて嵌めることができず、邪魔なので全部ニッパーで切り取った。
修正するの面倒だからデータはそのままだけど、これから出力する人は先に消しといた方がいい。

配線の設計

Keyboard Layout EditorのデータをKeyboard Firmware Builderに取り込んで作成。

BLE Micro ProはPro Microと同じくI/Oピンが18本なので、 60%キーボードの設計〜製作メモを参考に、Rowを10ピン、Columnを7ピンの合計17ピン使用することにした。

I/Oが19本出せるなら、Column14ピンのRow5ピンにするのが一番簡単だと思う。
マイコン選びの参考にしてほしい。

配線図はこんな感じ。

ちょっと分かりづらいけど、
Row(横軸)は左右に2つ分かれていて、5行ずつあるので合計10本。
Column(縦軸)も左右に分かれているように見せかけて、
右端の1列は真ん中ちょい左の1列と繋がっている。
詳しくは60%キーボードの設計〜製作メモを読んだ方が分かりやすい。

この配線方法にすることで、I/O17ピンで最大70キーまで認識させられる。
これ最初に考えた人は神だと思う。

ピンアサインも決めておく。

SETTINGSでLayout NameとBootloader sizeも入れておく。
Pro Microを使うなら4096KBって書いてあったので、その通りに。

ファームウェアを作る

実はここが一番詰まるポイントだった。
Keyboard Firmware Builderはかなり古いサイトらしく、ここで作れるQMK用のファイルはとても古い形式なんだと。
なので令和最新版にコンバートしなくてはいけない。
この方法がなかなか見つけられなくて、だいぶ時間を食った。

コンバートする手順

  1. まず、Keyboard Firmware BuilderのSave Configurationでjsonファイルを書き出す。
    これは平成版のjsonファイル。
  2. これを令和版のjsonファイルにするため、変換する環境を作る。
    QMK MSYSをインストール。
    QMK MSYSの初期設定まで終わらせる。
  3. 令和版への変換作業をする。
    QMK MSYS上で

    qmk import-kbfirmware <Keyboard firmware builderで作った平成版json>

    をする。
    QMKのkeyboardsフォルダの中にLayout Nameのフォルダが作られる。

  4. QMK環境で使用するなら、この中身をマイコンに書き込めば問題無く動くはず。

※Windows環境なのでQMK MSYSを使用した。
他OSは違う方法があると思うし、Windowsでも違う方法が使えるかもしれない。
あくまでもQMKを使用する一つの方法として。

今回はBLE Micro Proを使うので、更にもう一段階進める。

BLE-Micro-Pro/docs/v0/experimental.md
ここを参考に、bmp-vial-config-generatorを開き、QMKで変換した令和版のinfo.jsonを読み込み、出力したconfig.binをBLE Micro Proのストレージにコピーするだけ。

※config.binをコピーする前に、BLE Micro Proのブートローダーとファームウェアをv1以上にアップデートしとくこと。

一応、今回のキーボード用に作ったconfig.binデータを置いておく。
BLE Micro Proのvial対応ファームウェア用。
BMP.zip

config.bin以外のjsonファイルはどこで使うのかさっぱり分からなかった。
多分config.binと同様にコピーすれば反映されるんだと思うけどやってない。
最後にvialで設定すればいいだけなので…。

手配線する

手配線に関するアレコレはQMKのHand-Wiring Guideに詳しく書いてある。
困りそうなポイントはダイオード。
Keyboard Firmware Builderで設定したdiode directionで、特に何も触らなければColumn to Rowになっているはず。

これはColumnからRowへ信号が流れるので、ダイオードも列から行の方向に取り付ける。
QMKのHand-wiring GuideのSoldering the Diodesに書いてある画像と同じように取り付ければいい。
ざっくり書くとこんな感じ。
[Columnのピン]―[キースイッチ]―[▶|]―[Rowのピン]

実際に配線した様子。ソケットが綺麗に収まると気持ちが良い。
BLE Micro Proは一旦ユニバーサル基板に取り付けて、各列・行の線とはんだ付け。
USBはType-Cのオスメスで短いケーブルを作って取り付け。
CC1とCC2からGNDへ5.1kΩの抵抗をつけて、Type-C同士の接続時にデバイスとして認識できるようにしてある。

完成!

あとはvialのウェブサイトにアクセスしてキーボードの設定をすればおわり。
データ作り始めてから1週間くらいで完成したので、思ったより楽に出来たなと思った。
特にカーブドスカルプチャとか基板じゃ作りづらいはずなので、3Dプリンターでプレートを作るのも楽しいはず。
多少設計で失敗しても気合いで修正できるので、自作キーボード初心者も気軽にチャレンジしてほしい。

変な拘りが無ければNuphy Air60とかKeychronとか買った方が絶対楽だし簡単だとは思うんだけどね。オタクなので仕方ないね。

タイトルとURLをコピーしました