【備忘録】自作キーボードを試作!-ハード構造、ソフト構造、発注先のメモ
自作キーボードに興味が沸いたので作ってみました。
今回はキーボードを設計するときに、必要となって調べた情報を備忘録としてまとめます。
前提(私の基本スペック)
自作キーボード固有の知識/技術は、初めて作るためもちろんゼロです。
ただし、下記の基本的技術は会得していますので、多少端折って説明しています。(備忘録なので許してください)
詳しく知りたい場合はググっていただくか、この記事のコメントやTwitterのDMで問い合わせください。
電子回路
回路図が読めたりタイマーICを使ったPWM調光回路を書けたりする程度。
ただし、自作キーボードにおいては大した知識は必要ありませんでした。
はんだ付け
64pin 0.5mmピッチのQFNのはんだ付けや、マゾ時計を作れる程度には得意と言えます。
その道のプロからしたらまだまだ初心者です。
自作キーボードでは技術的には大したことはありません。しかし、キー数に比例してはんだ付け箇所が増えるため、根気は必要です。
また、キーボードは打鍵による振動に日々曝されることになるので丁寧なはんだ付けが必要になります。
ソフトウェア
本業は組み込み屋なので、一般人から見てプロとして名乗れる程度には。
自作キーボードにおいては大した知識は必要ないです。(C言語の配列、マクロ、基本的な構文さえ知っていればOK)
検討
どんなキーボードを作っていくか、検討していきます。
コンセプト検討
今回作った試作品のコンセプトは以下のように検討しました。
JIS配列であること
自作キーボードキットはほとんどUS配列ですが、慣れ親しんだJIS配列でないと仕事ができません。
こう言うと「いや、US配列に慣れたほうがいいよ!」という方がいます。
しかし、いつでもどこでもUS配列のキーボードがあるわけではありませんし、日本にいる限りはJIS配列の環境のほうが圧倒的に多いです。
私は仕事柄、色んなPC、キーボードを触るため、少数派のUS配列で慣れるわけにはいかないのです。
左右分離キーボードであること
左右分離キーボードの最大の特徴は肩を開いたまま打鍵できるので肩こりが減ることです。
デスクワークをしている方なら分かるかと思いますが、毎日キーボードを触っていると万年肩こりになってしまいます。
左右分離型ならその点を解消できます!素晴らしいですね!
予備キー(マクロキー)を設ける
キーの数を絞って洗練されているものもいいですが、余っているキーにマクロを設定できた方が良いと考え、予備キーを設けます。
例えばCtrl+C,Ctrl+Vなどの組み合わせキーを1キーで出来ると地味に便利だったりします。
他にも、一瞬で電卓アプリを起動したり、一瞬でウィンドウを隠したり…便利な機能を予備キーに割り当てることでPC操作全体がちょっと楽になります。
筐体を金属でつくる
重いキーボードのほうが打鍵音が低くなり高級感がでると考えられます。
今回は筐体に金属部品を採用することで重くすることと、金属の見た目で高級感を出します。
キー配置の検討
キー配置を自分で決めれるのが自作キーボードの醍醐味ですよね!
手書きで適当に検討してもいいのですが、Keyboard Layout Editorという便利なWebサービスがあります。
ここで好きなようにキー配置を検討したら、Plate & Case Builderでプレート用のCADファイルを自動で出力もできます。
今回は下図のような配置にしました。
特徴としては左側5つ、ファンクションキー列に1つ、最下段に沢山、予備キーがあることです。
私の場合は音楽の再生停止、音量の上下、Del、電卓の起動といった機能を割り当てて使っています。
情報収集の方法
自作キーボードを作るに当たって必要な情報を収集していきます。
もちろん初めて作るので、知識はゼロです。
「自作キーボード 作り方」といった単語でググったり、
Twitterで界隈の人をフォローしたり、
Self-Made KeyboardsというDiscordサーバーに入ったり、
BOOTHで実際に販売されている自作キーボードキットを見たりして情報を集めました。
集めた情報の中から、試作品を作るときに必要になった情報を備忘録として記します。
情報収集(ハード編)
筐体の構造
自作キーボードの筐体ってどんな構造をしているのか?
そこがまず分かりませんでした。
既製品のキーボードのような筐体を設計すること自体は可能ですが、個人には製作が無理です。
(個人でやっている人は、趣味のレベルを超えた資金も情熱も無限にある変態です。)
調べた結果、実現できそうな構造はいくつかありましたが、私が採用したのは下記のような構造です。
プレートでサンドイッチする構造であれば、立体的な形状の部品が無いため個人でも作れます。
また、「トッププレート」、「キープレート」と言っているのは私が勝手に言っているだけで、人によっては意図するものが異なる可能性があります。
そしてトッププレートは最悪無くても問題ありません。
実際、多くの自作キーボードキットでは省かれています。
今回はコンセプトの通り、重量感と見栄えのために金属のプレートを取り付けます。
PCB設計時の部品(KiCADでのシンボルやフットプリント)
PCBの設計はKiCADで行います。
幸い、自作キーボードでは部品の種類自体はかなり少ないので、
回路図エディタで使うシンボルや、回路設計で使うフットプリントは自作でも大した苦労ではないですが、
誰かが作った実績のあるものを使ったほうが楽ですよね。
そこで、Githubに公開されているProMicroやスイッチのシンボル/フットプリントのリポジトリを探しました。
基本的には下記の2つのリポジトリがあれば事足ります。
https://github.com/7-rate/kbd | ※foostanさんのリポジトリを私がフォークしたものになります MX互換スイッチやロープロファイルスイッチ、ダイオードやProMicroなど、自作キーボードで使いそうなフットプリントがまとまっています。 そこに追加でマイコン内蔵フルカラーLED(WS2812C)のフットプリントを追加したり、TRRSジャックのピン配置を変更したりしています。 |
https://github.com/daprice/keyswitches.pretty | MX互換スイッチ、2uスタビライザのフットプリントがあります |
KiCADへのライブラリのインポート方法は各自ググってください。
(シンボルライブラリはファイルがローカルにある必要がありますが、フットプリントライブラリはネットワーク経由(Github)でもOKなところがややこしいところですね…)
情報収集(パーツの入手先編)
自作キーボードのパーツはどこで購入できるかを調べました。
キースイッチの種類、入手先
自作キーボードで使われるキースイッチは、基本的にはメカニカルスイッチです。
メカニカルスイッチは大きく分けて2種類あります。
Cherry社のMXシリーズ(と、他社が出しているその互換品)と、それ以外です。
互換品というのは、Cherry MXシリーズと同じ寸法のスイッチということです。
要はパチモンなのですが、特許が切れたため他社が同じ寸法のスイッチを互換品としてリリースしているというわけです。
また、パチモンだから品質が悪いというわけではなく、それぞれに特徴があり、良い悪いは個人の好みによるところです。
例としてはKailh BOXやGateronなどなど…これらはCherry MXシリーズ用に設計された基板でも、基本的にはそのまま使えます。
また、MX互換品以外にはロープロファイルと呼ばれるキーストロークが短いものがあり、こちらはCherry MXシリーズ用に設計された基板では使用できません。(基板の穴位置が違う&キーキャップの取り付け機構が違うため)
入手先としては遊舎工房が有名なようです。
その他にはAmazonやAliexpressでも入手できますが、遊舎工房さんは自作キーボード専門店というだけあって安いです。
余程特殊なキースイッチでない限りは遊舎工房さんで購入することをお勧めします。
ちなみに今回の試作品ではコスパに優れたkailh BOXの茶軸を使います。
キースイッチについては詳しい方が散々解説しているサイトがあるため、そちらを参照ください。
キーキャップ(キートップ)の入手先
次にキーキャップの入手先を探します。
キーキャップは見栄えに影響するところなので拘りたいポイントです。
キーキャップの入手先は色々あり、全部は書ききれませんので有名所を記しておきます。
→やはり遊舎工房です。ただし、JIS配列のセットは2020/07/20現在、販売していません。
→何でも揃うAmazon、キーキャップも豊富に出品されています。
→ダイヤテックさんはFILCOブランド、Majestouchシリーズを販売していることで有名なキーボードの会社さんです。
その通販サイトでMajestouchのキーキャップセットが販売されており、私が確認した限りJISキーキャップセットが購入できる唯一のショップです。
その他パーツの入手先
電子パーツやケーブル類などの入手先を探します。
→電子パーツを販売している国内老舗の通販サイトです。
ダイオードやマイコン、LEDなどの汎用的な部品はほぼほぼここで揃います。
→キーボードに使いそうなパーツは大体揃っているのが遊舎工房のいいところです。
スタビライザやProMicroなどは遊舎工房で揃えるのが便利です。
→中国の通販サイト。商品の種類は豊富で大体のものが安く手に入りますが、はっきり言って品質、納期はゴミです。(ものによりますが)
→試作用途かつ、急ぎでなければ良い選択肢です。
例えば黄銅のスペーサーなんかはこんな感じの品質です。
PCBの発注先
PCBとは電子回路がプリントされた基板のことです。
KiCADやEagleといったPCB CADで電子回路を設計し、そのデータを元に作ってくれる会社さんを探します。
私が過去に利用したことがあるのは、FusionPCBとelecrowです。
どちらも中国の業者であり、使っているマシンも同じなのか品質も価格もほぼ同じです。
今回は見積もりの結果、elecrowのほうが安かったためそちらに発注しました。
発注からおおよそ1週間前後で届きます。
プレート類の発注先
トッププレートは見栄えに関わる部分なので金属でかっこよく作ります。
今回はアルミとステンレスで2セット作ってもらいました。
アルミはスペインの会社のLaserBoostに依頼し、ステンレスは国内の切断堂に依頼しました。
LaserBoostは送料込み約6700円、切断堂は送料込み約4500円でした。
結論から言えば、国内で、比較的安く品質も高いので切断堂のほうが良さそうです。
本記事下部にLaserBoostと切断堂の比較を行っていますので併せて参照ください。
キープレートとボトムプレートは一番安く仕上げるため、
素材はアクリルにし、加工は石川県 加賀市のものづくりラボで行いました。
ものづくりラボではレーザー加工機が無料で利用できるのがいいですね!石川県民でなくても利用が可能です。
下記の記事も参照ください。
情報収集(ソフト編)
ベースソフトウェア(QMK firmware)の構造
ベースソフトウェアにはQMK firmwareというものがあります。
ProMicroをPCにキーボードとして認識させるためのファームウェアです。
このファームウェアをベースとしてソフトを作っていくのですが、どこを弄ればいいのかが分かりませんでした。
結論としてはdocsディレクトリにあるドキュメントに全て書いてある(一部ドキュメントは日本語訳もありました)ので、それを読めば分かります。
ここでは簡単に各ディレクトリの説明を行います。
ルートディレクトリ | 【知らなくてOK】コンパイル用のmakeファイルなどがあります |
bin | 【知らなくてOK】qmkコマンド用のバイナリがあります |
docs | 各種ドキュメントがあります。こんな機能ある?どうやって機能を有効にするの?等の疑問があればググる前にこのフォルダを見ましょう |
drivers | 【知らなくてOK】アナログデバイスやOLED、IOエキスパンダ等のドライバーがあります |
keyboards | メインで触るところになります キーボードの種類毎にフォルダがあります |
layouts | 【知らなくてOK】デフォルトのキーレイアウトがあるようですが正直よくわかりません |
lib | 【知らなくてOK】コンパイル等に使用されるライブラリーです |
quantum | 【知らなくてOK】キーマトリクスからキーを読み取る処理やバックライトの明滅などなど、様々な機能が実装されています |
tests | 【知らなくてOK】ソースコードをテストするための実装があります |
tmk_core | 【知らなくてOK】qmk firmwareのベースとなるtmk firmwareのコア部分があります |
users | 【知らなくてOK】正直よくわかりません。(推測ではユーザーが複数のキーボードを作るとき、ベースとなるキーマップ等をここに置けてインクルードできるのかな?と思っていますが…) |
util | 新しいキーボードを追加するためのスクリプトや、ビルドするためのスクリプトが置いてあります |
QMK firmwareの弄り方
QMK firmwareはLinux環境を前提としていますのでWindows環境で弄るには下記の何れかの方法で行います。
・Virtual Box等の仮想化ソフト上にLinux OSをインストール
・MSYSをインストール
・WSL(Windows Subsystem for Linux)を使う
仮想環境の用意は少し大変だし、MSYSをインストールするとmingwなどの環境がぐちゃぐちゃになりそうなのでやりたくありません。
今回はお手軽なWSLを使って行います。環境構築方法は各自ググってください。
QMK firmwareをカスタマイズする
QMK firmwareに自分のキーボードを追加して、専用のソフトを作る方法を記します。
まずはkyeboardsフォルダに自分のキーボードを追加します。
./util/new_keyboard.sh [自分のキーボードの名前]
これでkeyboardsフォルダ内にフォルダが作成され、その中にいくつかのファイルが自動で生成されています。
各ファイルの概要は以下の通りです。
keymaps/default/config.h | 【触らなくてOK】keymap固有のconfigをオーバーライドするためのヘッダーファイルのようです キーマップ毎にconfigを変える必要が無ければ触らなくてOK |
keymaps/default/keymap.c | キーマップを記述するところです それ以外にもLEDの光らせ方などの実装があったりします |
keymaps/default/readme.md | 【触らなくてOK】キーマップの概要とか注意書きとかを書くところです |
[キーボードの名前].c | 【触らなくてOK】キーボード固有の特殊機能等を実装するところのようです |
[キーボードの名前].h | キーマップを記述しやすくするためのマクロを記載するところです |
config.h | キーボードのハードをポーティングしたり、各種機能を設定したりするところです |
info.json | 【触らなくてOK】Keyboard Layout Editorで読み込むためのファイルのようです |
readme.md | 【触らなくてOK】キーボードの概要とか注意書きとかを書くところです |
rules.mk | キーボードで使うマイコンの種類や、使う機能のON/OFFなどを設定するところです |
※触らなくてOKとなっているところは、「とりあえずキーボードとして動かすためには、触る必要はない」という意味です。
QMK firmwareにPRを行う際には丁寧に記載が必要になります。
特殊なことをやろうとしない限り、他のキーボードの実装を雰囲気で真似すればとりあえずキーボードとして動きます。
ビルド方法
qmk firmwareのルートディレクトリで下記コマンドにてビルドできます。
make [自分のキーボードの名前]:default
ビルドが完了したらqmk firmwareのルートディレクトリに[自分のキーボードの名前]_default.hexというファイルが出来上がります。
書き込み方法
windowsやMacユーザーはQMK Toolboxから書き込むことができます。
QMK Toolboxの使い方は簡単です。
①下図のようにビルドで生成されたhexファイルを選択し、Auto-Flashにチェックを入れます
②キーボードを繋ぎ、ProMicroをリセットします(基本的にはPCB側にリセットスイッチが設けられています)
③QMK Toolboxのログに書き込みが完了した旨の表示がされたらOK!
左右分離キーボードの場合は片方ずつ、同じことを2回やります。(基本的には左右分離キーボードでも同じhexファイルを書き込めば良いです)
おまけ(LaserBoostと切断堂の比較)
トッププレートはLaserBoostと切断堂の二社にそれぞれ依頼しました。
材質や条件が違う為、フェアな比較ではありませんがそれぞれの出来栄えを見てみましょう。
総じて切断堂に分があることが分かると思います。
LaserBoost
アルミ 1mm ヘアライン加工
良い点
・ウェブからDXFファイルをアップロードするだけなので見積もりが楽。
・自作キーボード界隈の方が良く(?)利用されているらしく、ホームページでもその実績をアピールしているので安心感がある。
・メールのレスポンスが早い。
悪い点
・やり取りは英語になります。が、Google翻訳を使えば問題無いでしょう。
・仕上がりに関してはまずは全体的に角が丸いです。レーザーでスパッと切ったエッジがカッコいいのに..仕上げの品質が微妙です。
アルミのレーザーカットは結構難しいのは知っていますが、プロということで期待していただけに残念。
・一部小穴が潰れていいます。ねじが入らないほど。自分でドリルで仕上げました。
・ヘアライン加工が美しくない…
・致命的なミスがありました。実はこの画像、設計図通りに穴が開いていません。(一番右側に左側のような長穴が必要になりますが、なぜか開いていません。)
連絡したら返金の対応になりましたが、期待していただけに残念です…
切断堂
SUS304-HL 1.5mm
組付け後の写真ですみません。。撮るのを忘れていました。
良い点
・国内なので届くのが早い。
・安い。
・切断箇所はしっかりと角が立っており、カッコいい。
・ヘアライン加工も丁寧でカッコいい。
・最近は国内の自作キーボード界隈の方からの受注があるため、安心感がある。
悪い点
・見積もりはお問合せフォーム、メールから行う為、若干敷居が高い?
・ピアシング時の痕が目立つ箇所がある。
・小穴付近に微小ながらスパッタが残っていた。まぁ問題にはならない程度。
おまけ(完成写真)
終わりに
シンプルな構成であれば、思っていたよりも容易に設計~製作までできます。
とくにベースのソフトウェアの存在には感動しました。
ハードウェア部分はやろうと思えば無限に拘れてしまう沼のような楽しさがあり危険ですが、様々な設計を妄想するだけでも楽しめます!
また、今回試作したものを一部改良してキット販売も予定しています。
販売予定はTwitter @7_rateのツイートをウォッチください。
ディスカッション
コメント一覧
まだ、コメントがありません