RustyKeys ビルドログ

2022-05-02
#keyboard #buildlog
  1. はじめに
  2. RustyKeysの特徴
  3. ビルドガイド
  4. 内容物の確認
  5. 自分で用意するもの
  6. 工具
    1. CAMPHOR- Make
  7. 本体の組み立て
    1. ダイオードのはんだ付け
    2. キースイッチのルブ
    3. ソケットのはんだ付け
    4. L字ピンヘッダのはんだ付け
    5. Raspberry Pi Picoのはんだ付け
    6. ゴム足の取り付け
    7. キースイッチ、キーキャップの取り付け
  8. デバッグアダプタの組み立て
    1. ピンヘッダのはんだ付け
  9. ファームウェアの書き込み
    1. 必要なツールのインストール
    2. デバッグアダプタのファームウェア
    3. 本体のファームウェア

はじめに

本稿はKOBA789さんが設計されたRustyKeysのビルドログです。参考までに活用していただければ幸いです。

また、RustyKeysのコミュニティがGitHub Discussionsで作られていますので、このキットについての質問や依頼はこちらにコメントを残すと幸せになれると思います。


KOBA789さんのYouTube Liveを観て面白そうなキットだなぁと思い、ゴールデンウィークのお供にと購入しました。 販売開始前から全裸待機していたら無事に買えました。1分で売り切れたようです。やば。

買えました。良かった / 「RustyKeys (初回版(再販予定なし))」を Bracket Works で購入しました! https://t.co/sJ5Cxk5byM #booth_pm

— へいほぅ (@5ebec) April 25, 2022

RustyKeysの特徴

最大の特徴は、ビルドガイドが組込みRustをサポートしており、既存のファームウェアには対応していない、という所でしょう。

勿論6キーのマクロパッドとしても利用可能ですが、組み立て・プログラミング自体を楽しむことを目的として開発されている為、組み込みRust入門・はんだ付け入門・キーボード自作入門に最適なキットとなっています。

ビルドガイド

ビルドガイドは rusty-keys.koba789.com です。 作業の前に、必ず一読するようにしましょう。

内容物の確認

内容物は以下のようになっています。

キット

自分で用意するもの

今回はKailh BOX Silent Pinkを用いました。 また、キースイッチをはんだ付け無しで取り外し(ソケット化)出来るようにするMill-Max Socketが余っていたのでこれを使いました。

キースイッチ

キーキャップにはTEX ADA -Film Never Dies-を使いました。フィルムカメラがモチーフのノベルティキーキャップセットです。プロファイルはADAという、DSAよりも更に窪んだ形状をしており、打鍵音は低めで小さいように感じます。

キーキャップ

片方がmicro-Bプラグであれば何でも良いです。
Macで開発するのでもう片方がUSB Type-Cプラグのものを使っています。 2本用意します。

USB micro-Bケーブル

工具

RustyKeysを始め、自作キーボードキットの組み立てにははんだ付けが必要です。

必要な工具を1つずつ購入するのが面倒な方は、遊舎工房さんで購入可能な工具セット(全部入りセット)を買うのが良いでしょう。

この他には作業マット、マルチテスターもあると良いです。

CAMPHOR- Make

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字ピンヘッダのはんだ付け

L字ピンヘッダ(3ピン)をはんだ付けします。
固定せずにはんだ付けした為、ちょっと曲がってしまいました。ここもダイオードと同様にマスキングテープで固定しておくのが良さそうです。

L字ピンヘッダ

Raspberry Pi Picoのはんだ付け

Raspberry Pi Picoのはんだ付けを行います。本キットでは端面スルーホールではんだ付けを行うのですが、付属のピンヘッダを半分に切って差し込み、位置合わせを行います。

以下の図ように、手前は下から差し込み、奥は上から差し込むと、Raspberry Pi Picoがしっかりと固定されてはんだ付けしやすかったです。

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

本体のファームウェア

ジャンパ線で本体とデバッグアダプタを接続します。対応は以下です。

本体側ピンデバッグアダプタ側ピン
SWDIOGP4(GPIO4)
GNDGND
SWCLKGP2(GPIO2)

デバッグアダプタ -> 本体の順に、2本のUSBケーブルで開発用PCに接続します。

ファームウェアのサンプルコードはrusty-keysfirmware 下に用意されているので、cloneします。

❯ git clone https://github.com/KOBA789/rusty-keys.git
❯ cd rusty-keys

firmware/hello

デバッグ出力に 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(デバッグアダプタ)を通して行われているようですね。

firmware/keyboard

USBキーボードのサンプルコードです。

src/bin/sample.rsk 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

— へいほぅ (@5ebec) May 1, 2022