本稿はKOBA789さんが設計されたRustyKeysのビルドログです。参考までに活用していただければ幸いです。
また、RustyKeysのコミュニティがGitHub Discussionsで作られていますので、このキットについての質問や依頼はこちらにコメントを残すと幸せになれると思います。
KOBA789さんのYouTube Liveを観て面白そうなキットだなぁと思い、ゴールデンウィークのお供にと購入しました。 販売開始前から全裸待機していたら無事に買えました。1分で売り切れたようです。やば。
買えました。良かった / 「RustyKeys (初回版(再販予定なし))」を Bracket Works で購入しました! https://t.co/sJ5Cxk5byM #booth_pm
— へいほぅ (@h3y6e) April 25, 2022
最大の特徴は、ビルドガイドが組込みRustをサポートしており、既存のファームウェアには対応していない、という所でしょう。
勿論6キーのマクロパッドとしても利用可能ですが、組み立て・プログラミング自体を楽しむことを目的として開発されている為、組み込みRust入門・はんだ付け入門・キーボード自作入門に最適なキットとなっています。
ビルドガイドは rusty-keys.koba789.com です。 作業の前に、必ず一読するようにしましょう。
内容物は以下のようになっています。
基板: 1枚
Raspberry Pi Pico: 2個
2つのRaspberry Pi Picoのうち1つはキーボード用、もう1つはデバッグアダプタ用です。
1N4148(ダイオード): 6個
L字ピンヘッダ(3P): 1個
ジャンパ線(ソケット-ソケット3P): 1本
ピンヘッダ(40P): 1個
ゴム足: 4個
Cherry MX互換キースイッチ: 6個
今回はKailh BOX Silent Pinkを用いました。 また、キースイッチをはんだ付け無しで取り外し(ソケット化)出来るようにするMill-Max Socketが余っていたのでこれを使いました。
キーキャップ: 6個
キーキャップにはTEX ADA -Film Never Dies-を使いました。フィルムカメラがモチーフのノベルティキーキャップセットです。プロファイルはADAという、DSAよりも更に窪んだ形状をしており、打鍵音は低めで小さいように感じます。
USB micro-Bケーブル: 2本
片方がmicro-Bプラグであれば何でも良いです。
Macで開発するのでもう片方がUSB Type-Cプラグのものを使っています。 2本用意します。
RustyKeysを始め、自作キーボードキットの組み立てにははんだ付けが必要です。
必要な工具を1つずつ購入するのが面倒な方は、遊舎工房さんで購入可能な工具セット(全部入りセット)を買うのが良いでしょう。
2万円弱もかけて工具を一式揃えるのはちょっと...という学生に朗報です。
僕の所属している京都の学生ITコミュニティCAMPHOR-では、CAMPHOR- Makeというちょっとしたメイカースペースがあります。
上で紹介した工具は勿論、
温調ステーション型はんだごて
はんだ吸煙器
絶縁断熱マット
マルチテスター
など、自作キーボードに便利な工具が揃っています。
お近くにお住まいの方は是非お越しください。開館スケジュールはこちらになります。
お待ちしております!
RustyKeys本体の組み立てを行います。
ダイオードのリード線を曲げます。 今回は6個なので1つずつ曲げてもそれほど時間はかかりません。
大量のダイオードを曲げることがあるなら、Thingiverse等でDiode benderと検索してダイオードをいい感じに曲げてくれる君の3Dモデルを手に入れ、3Dプリンタ[1] で印刷すると良いでしょう。
基板に印刷された白い帯とダイオードに印刷された黒い帯が合うように、向きを確認して差し込みます。
マスキングテープ等で固定することで、はんだ付けがやり易くなります。
ダイオードのはんだ付けを行います。
リード線の余った部分をペンチで切り落とします。切った際にどこかに飛んでいかないように、テープで繋げておくと良いです。
[1] | 先程紹介したCAMPHOR- Makeには積層方式と光造形方式の3Dプリンタがあるので、是非ここで印刷してみては如何でしょうか。 |
今回用いるKailh BOX Silent Pinkは押下圧が軽めで軸のぐらつきが少ない静音リニア軸です。 値段もそこまで高く無いので、安定して静音なキースイッチを求めている方にはお勧めです。
そのままでも静かなのですが、ルブることで更にノイズを軽減することが出来るので、やっておきます。 使用する潤滑剤は、リニアMXスイッチ用であるKrytox GPL 205 G0です。
以下の3つを買っておけばとりあえずルブは出来ます。使用するキースイッチがリニア軸でない場合はTribosys 3204が汎用的でお勧めです。
スイッチオープナーを用いてキースイッチを分解し、それぞれの部品で他の部品と擦れる場所にルブをしていきます。 今回は6つしかキーが無いので楽ですね。
Mill-Max Socketをはんだ付けします。まずは全てのキースイッチにソケットを以下のように嵌めます。
キースイッチを基板に差し込み、裏返してはんだ付けします。
キースイッチを外すとこんな感じになります。
L字ピンヘッダ(3ピン)をはんだ付けします。
固定せずにはんだ付けした為、ちょっと曲がってしまいました。ここもダイオードと同様にマスキングテープで固定しておくのが良さそうです。
Raspberry Pi Picoのはんだ付けを行います。本キットでは端面スルーホールではんだ付けを行うのですが、付属のピンヘッダを半分に切って差し込み、位置合わせを行います。
以下の図ように、手前は下から差し込み、奥は上から差し込むと、Raspberry Pi Picoがしっかりと固定されてはんだ付けしやすかったです。
片側がはんだ付け出来たら、ピンヘッダを外してもう一方とデバッグ用ピンのはんだ付けを行います。
裏面にゴム足を取り付けます。四隅に白円が印刷されているので、それに合わせて貼り付けます。
キースイッチとキーキャップを取り付け、本体の組み立ては完了です。
本体が組み立てられたので、次はデバッグアダプタを組み立てます。組み立てと言ってもピンヘッダをはんだ付けするだけです。
デバッグに用いるピンは GND
, GP2
, GP4
の3ピンのみなので、その部分(と固定のための GP0
,GP15
)をはんだ付けしておきました。
これでデバッグアダプタの組み立ては完了です。はんだ付けのフェーズは以上になります。
現在、多くの自作キーボードキットはQMK Firmwareというファームウェアに対応しています。 他に有名な設定ツールとして、QMK Firmware派生のVIA, Remap, Vialなどがあります。 Raspberry Pi PicoのようなRP2040チップであれば、CircuitPythonで記述出来るkmk_firmwareやPicoRubyで記述出来るprk_firmwareなどを使えばキーボードとして動作します。
RustyKeysキットではこれらの既存のファームウェアを用いることなく、組み込みRustで開発します!
2022/5/2現在、作者様の名前が入力可能な最高のキーボードまではビルドガイドに含まれていますのでそこまでやってみましょう。
自分の開発環境は以下の通りです。
❯ uname -a
Darwin mbp2019.local 21.4.0 Darwin Kernel Version 21.4.0: Fri Mar 18 00:45:05 PDT 2022; root:xnu-8020.101.4~15/RELEASE_X86_64 x86_64
ビルドガイド通りに作業していればもう済んでいることかと思いますが、必要な環境及びツールはビルドガイドを参考にインストールしておきましょう。
# Install Rust
❯ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# ...or Update Rust
❯ rustup update
# Add thumbv6m-none-eabi target
❯ rustup target add thumbv6m-none-eabi
# Install probe-run
❯ cargo install probe-run
# Install flip-link
❯ cargo install flip-link
# Install elf2uf2-rs
❯ cargo install elf2uf2-rs
rust-dapをデバッグアダプタに書き込みます。 デバッグアダプタ用のRaspberry Pi Picoと開発用PCをUSBケーブルで接続し、以下を実行します。
❯ git clone https://github.com/ciniml/rust-dap.git
❯ cd boards/xiao_rp2040
❯ cargo run --release
ジャンパ線で本体とデバッグアダプタを接続します。対応は以下です。
本体側ピン | デバッグアダプタ側ピン |
---|---|
SWDIO | GP4(GPIO4) |
GND | GND |
SWCLK | GP2(GPIO2) |
デバッグアダプタ -> 本体の順に、2本のUSBケーブルで開発用PCに接続します。
ファームウェアのサンプルコードはrusty-keysの firmware
下に用意されているので、cloneします。
❯ git clone https://github.com/KOBA789/rusty-keys.git
❯ cd rusty-keys
デバッグ出力に Hello, world!
を出力するサンプルコードです。
❯ cd firmware/hello/
❯ cargo run
Finished dev [unoptimized + debuginfo] target(s) in 35.00s
Running `probe-run --chip RP2040 target/thumbv6m-none-eabi/debug/rusty-keys-hello`
(HOST) INFO flashing program (6 pages / 24.00 KiB)
(HOST) INFO success!
────────────────────────────────────────────────────────────────────────────────
Hello, world!
└─ rusty_keys_hello::__cortex_m_rt_main @ src/main.rs:21
────────────────────────────────────────────────────────────────────────────────
(HOST) INFO device halted without error
表示されたことが確認出来ました。probe-run
凄い...。 動作を見ると分かりますが、書き込みはprobe(デバッグアダプタ)を通して行われているようですね。
USBキーボードのサンプルコードです。
src/bin/sample.rs
に k
o
b
a
7
8
9
や修飾キーなどが入力出来るようになるサンプルコードがあります。
❯ cd ..
❯ cd keyboard/
❯ cargo run --release --bin simple
Finished release [optimized + debuginfo] target(s) in 33.94s
Running `probe-run --chip RP2040 target/thumbv6m-none-eabi/release/simple`
(HOST) INFO flashing program (8 pages / 32.00 KiB)
(HOST) INFO success!
────────────────────────────────────────────────────────────────────────────────
作者様の名前が入力可能な最高のキーボードが完成しました🎉
RustyKeysできた。Mil-Max Socketが余っていたのでホットスワップ化した pic.twitter.com/TLHjC9G9Fi
— へいほぅ (@h3y6e) May 1, 2022