AK62 (60% Apple Keyboard M0116)
はじめて基板(PCB)の設計からキーボードを自作してみた。
去年の秋から自作キーボードに興味を持ち、ErgoDash mini、Corne Cherry、Nomu30のキットを購入して組み立てた。
次は何を組もうかな、と思ってインターネットを彷徨っていると、AppleのM0116というキーボードの存在を知った。
M0116ことApple (Standard) Keyboardは、1987年にMacintosh IIと同時に発売されたキーボードである。キーキャップの印字や左下のCmdキーのリンゴマーク、そして逆L字のreturnキーがとてもアイコニック。
このM0116を元にした60%キーボードが欲しいけど、すぐに入手できるキットはなさそうだ。じゃあ自分で作るか!
せっかくなので名前もつけた。シンプルに「AK62(キーの数が62のApple Keyboard)」とした。
ちなみにAppleのキーボードをベースにした自作キーボードはすでに色々あって、例えば以下。見つけられてないだけで他にもあるかも。
- [IC] Lunar AEK 65% – 100% Complete. Extra A-stock available.
- [GB] TMK Alps64 – 60% PCB for Alps [RESTOCK Mar-01]
- DIY Alps PCB (Y62)
- [IC] ASK55 – Alps 14.5u Keyboard (NEW RENDERS)
どれも、まだGroup Buyが開始していなかったり、すでに売り切れていたり、もしくはキットとして販売してなかったりと、入手性が低い。やはり自分で作ろうということになった。
キーボードの設計方針
まず、こういうキーボードにしたいな、というのをざっくりリストアップした。
- M0116キーボードをベースにする
- 60%(テンキー・Fキーレス)
- マイコンボードはProMicro
- Corne CherryやNomu30のように、真上から見たときに筐体が見えないデザイン
- PCBをトッププレートとボトムプレートで挟む
- スペーサーやネジの長さはNomu30を踏襲する
- 初めての設計なので、あまり凝ったことはしない(ホットスワップ対応、LED対応、左右分離型にする、など)
Keyboard Layout Editorでイメージを作ってみた。M0116から、上の電源ボタンと右のテンキーをばっさり省いた形。
基板の設計
基板の設計は、foostanさんの「自作キーボード設計入門」を参考にした。ほぼこの本しか参考にしてないかも。おすすめです。
回路図を作る
本を参考にKiCadで回路図を作る。
このとき、ProMicroだとピンが足りなくて62キーが収まらないように思えて悩んだ。
キー配列の通りにキーをマトリクス状に配置していくと、14列x5行になる。ProMicroでキースイッチ用に使えるピンは(ぎりぎりまで接続するものを減らせば)最大で18と思われるが、14+5=19で、1ピン足りない。
しかしよくよく考えると、キー配列と回路図は一致してなくてもいい。例えばキー配列では1行目のキーが、回路図では5行目にあっても、ファームウェアで「5行目のこのキーは1行目のこのキーやで」とマッピングしてあげれば問題ない、と気づいた。
14列目のキーは1行目のDeleteキーと2行目のReturnキーだけだったので、この2つを5行目に移動して、13列x5行のマトリクスが完成。これでProMicroでも62キーがおさまった。
フットプリントの割り当て
各シンボルにフットプリントを割り当てる。基本的には本の通りにfoostan/kbdをフットプリントライブラリに追加すれば問題ない。
ところでM0116は自作キーボードでよくあるCherry MX互換のキースイッチではなく、ALPSキースイッチである。ALPSスイッチについては以下が参考になる。
MXスイッチとはピンの場所が違うので、ALPSスイッチ用のフットプリントライブラリとして、ai03-2725/MX_Alps_Hybridを使わせていただいた。リポジトリ名の通り、MX/ALPSのどちらにも対応した基板にすることが可能らしいけど、今回はAlps_Onlyを割り当てた。
基板を作る
Pcbnewを起動して、フットプリントをレイアウトしていく。
パーツによってグリッドを切り替えて、場合によってはパーツのプロパティを開いて座標を手打ちして、正確にレイアウトしていく。Pcbnewの独特の操作方法やレイヤーの概念に最初は戸惑ったけど、触っていくうちになんとなく理解できてきた。
M0116はスペースバーとReturnキーのスイッチの場所が独特なので、上に挙げたY62キーボードのデータを参考にする。Geekhackのスレッドから「Y62.dwg」をダウンロード。PcbnewにDWGファイルをインポートできなかったので、Fusion 360をインストールして、DWGファイルを読み込み、DXFファイルにエクスポート。それをPcbnewで読み込んで、ようやく図形が表示できた。
Y62のプレートの図形から、キースイッチの位置を割り出して配置した。
基板外形を描く
基板の形を描いていく。2mmほど角丸にした長方形。
Y62のプレートを参考に、スタビライザー用の穴もあけた。が、ALPSスイッチのスタビライザーはPCBではなくトッププレートに取り付けるので、PCBに穴をあける必要はなかった。設計段階ではM0116が手元になかったので、気づかなかった……。
まぁ、不要な穴があいていても動作に問題はない。
配線する
配線!まったく分からん。ということでググったら、freeroutingという自動配線ソフトというものを見つけた。
これらの記事を参考に自動配線してみたところ、少なくとも初心者の僕が手動で配線するよりもずっと良く見えた。
あとは、GNDの塗りつぶしをおこない、基板の設計は終わり。
プレートの設計
Pcbnewで、Edge.CutsレイヤーをSVGでエクスポートする。それをIllustratorで開き、不要な要素を削除。
キースイッチをはめる穴と、スタビライザー用の穴の位置は、Y62のプレートデータを読み込んで、それを参考にパスを引いた。
トッププレートとボトムプレートが完成。
PCBとプレートの発注
ElecrowにPCBとアクリルプレートを発注した。
発注から1週間ほどで到着。実際に物を手に取るとテンションが上がる。テスターで導通チェックをしてみたけど、無事に配線したとおりに電気が流れていて、感動した。
その他のパーツの調達
基板とアクリルプレート以外にも、以下のパーツが必要。
- Pro Micro
- コンスルー
- ダイオード
- リセットスイッチ
- M2スペーサー(3mm)
- M2スペーサー(5mm)
- M2ネジ(8mm)
- M2ネジ(4mm)
- クッションゴム
M0116の分解
さて、いよいよ組み立て!……の前に、M0116を分解して、キースイッチ、キーキャップ、スタビライザを入手する必要がある。
eBayで入手したM0116。クリーニング済みということで、年代相応の古さはあるものの、思っていたよりもずっと綺麗。
M0116は筐体もかわいいので忍びないけど、分解して基板を取り外す。はんだごてとはんだ吸い取り機で地道にキースイッチのはんだを除去していく。吸い取り機のバネを押す左手が腱鞘炎になるんじゃないかと思った。
いくつかのキースイッチは脚を折ってはんだ付けされていたので、ラジオペンチなどで折られた脚を起こす必要がある。
慎重かつ豪快にキースイッチを基板とプレートから外す。
キースイッチとキーキャップとスタビライザをゲット!
キーボードの組み立て
ようやく全てのパーツが揃ったので、今度こそ組み立てることができる。
リードベンダーでダイオードを折り、方向に気をつけてはんだ付け。
Pro Microとコンスルーをはんだ付けして、リセットスイッチをはんだ付け。
トッププレートにキースイッチを嵌めて、PCBの上に載せる。裏返してキースイッチをはんだ付け。
ProMicroを取り付け、スペーサーを取り付けて、ボトムプレートをネジ留め。ゴム足も貼る。
表面に戻り、スタビライザとキーキャプを取り付けたら、完成!
ファームウェアの作成と書き込み
https://github.com/ryonakae/qmk_firmware/tree/ryonakae/ak62/keyboards/ak62
QMKファームウェアを作成。そして、Pro MicroにQMK Firmwareを書き込んで、完了!
組み立ててから分かったこと
いざ組み立ててみて、設計時には気づかなかったことがいくつかあった。
ALPSスイッチのスタビライザーはPCBではなくトッププレートに取り付ける
既に書いたけど、ALPSスイッチのスタビライザー用の穴はトッププレートにだけあいていればいい。
Pro Microの近くにはダイオードを置かない
Pro Microをキースイッチの真下に配置したが、キースイッチ近くに配置したダイオードとPro Microが接触してしまい、動作不良を起こしてしまった。テープで絶縁して事なきを得たけど、設計段階でパーツの場所をもっと吟味すべきだった。
ネジ穴の場所はよく考える
当初、13本のネジでトッププレート・PCB・ボトムプレートを固定しようと思っていた。
フットプリントだけを見ると、キースイッチとキースイッチの間にM2ネジ用のネジ穴を配置できそうだったのでそうしたけど、いざ組み立ててみて、キースイッチの穴よりもキースイッチの方が大きいということに気づいた。当たり前だけど。
結局、キースイッチ間のネジ穴にネジを通すのは諦めて、ネジが通る箇所だけネジ留めした。動作には問題ないけど、何の役にも立たない穴を眺めるのは悲しいので、これも設計時によく考えるようにしましょう。
トッププレートの厚さを間違えた
トッププレートは、何も考えずに、ボトムプレートと同じ厚さ2mmのアクリルプレートを発注した。しかし、ALPSスイッチはトッププレートが厚さ1.2mmでないといけない(ちなみにMXスイッチは厚さ1.5mm)。
それを知らずに、いざ組み立ててからスイッチやスタビライザーがプレートに全然固定されずに困った。結局、あとでLaserBoostに1.2mmのアルミプレートを発注して、なんとかなった。
なので、完成写真はトッププレートがアクリルになっているけど、実際はアルミです。
初めてだったので色々と大変で、失敗もしたけど、なんとか世界でひとつだけの、自分で作ったキーボードが完成した。
そして、AK62での失敗点をふまえて、改善した次回作もすでに作った。
今度はそれについて書きます。