chroju.dev/blog

the world as code

電子工作初心者が Lily58 Pro を買ってから作って持ち運ぶまで

前回の記事 を Twitter に載せたところ予想外に RT と fav をちょいちょいいただきまして、もしその流れで「製作編」を楽しみにしていた方がいたらとても申し訳ないなと思っていて、何分前回書いた通り私は電子工作ビギナーもいいところで、今回もだいぶ危なっかしい手順踏みつつもなぜか完成してしまったぐらいの感覚でいるので、これから書くことは参考にはならないかと思います。というか参考にせず別のもっときちんとした方の教えを乞うてください、と予防線を張った上で、初心者が見よう見真似こんな感じでやってみたよ、という体験談として読んでいただければと。

前提を再度書いておきますが、中学校の授業以外でハンダ付けしたことがない超ビギナーが Lily58 Pro という自作キーボードを組み立てたお話です。このエントリーも Lily58 Pro で書きました。

買ったもの

お買い物ですが、キーボードキットは遊舎工房さんの実店舗、はんだ付け関連の工具は Amazon とダイソー(?!)を使いました。

キーボードキット

Lily58 Pro は必要なものがキットになった状態で売られていますので、それを買います。私はロープロファイルである Choc 用のものを買いましたが、 Cherry MX 軸用のバージョンもあります。基盤は共通で、キーソケットを変更することでどちらにも対応するようなキットになっています(一度キーソケットをはんだ付けしたら変更はできないです)。

他に必要なものはキースイッチ、キーキャップ、左右のキーボードを結ぶ TRRSケーブル 、パソコンと接続するための micro USB ケーブルです。いずれも遊舎工房さんに置いていて、店員さんが必要なものをピックアップしてくれたので助かりました。

キースイッチは、現在遊舎工房さんに取り扱いがあるのは赤軸(リニア)、茶軸(タクタイル)、白軸(クリッキー)の3種類で、私が行ったときには赤軸が在庫切れになっており、白軸はオフィスで使うには適さないため茶軸としました。結果的に快適に使えているので、他の軸に替える必要もなさそうです。荷重はいずれも 50g ですが、もっと重いものが欲しい場合には海外通販になりますが、 NovelKeys などで購入できます。

Kailh Switches
Experience an elevated standard in typing and gaming with our premium selection of custom keyboards as well as GMK ABS Double Shot and our own PBT dyesub keycaps. We stock switches from Cherry, Gateron, TTC, KTT, and more. We also offer artisans and deskpads.
Kailh Switches favicon https://novelkeys.xyz/products/novelkeys-x-kailh-low-profile-heavys
Kailh Switches

工具

Amazon で以下のものを購入しました。はんだごては温度調節機能があったほうがよいという話だったので、それを満たす上で高すぎないものとしています。作業マットは正直よくわからなかったものの、難燃性っぽいものを買っています。少しゴムの匂いが強くてしんどかったです。ボンドガン(グルーガン)については後述します。

白光 ダイヤル式温度制御はんだこて FX600
白光(HAKKO) (2012-01-18)
売り上げランキング: 145
goot はんだこて台 ST-11
goot はんだこて台 ST-11
posted with amazlet at 19.04.27
太洋電機産業(goot)
売り上げランキング: 343
エンジニア 卓上導電マット A4サイズ 230×330×2mm ZCM-05
エンジニア(ENGINEER)
売り上げランキング: 16,687
goot はんだ吸取り線 CP-2015
太洋電機産業(goot)
売り上げランキング: 2,543
SK11 ボンドガン ピタガン 木材 紙 皮革 プラスチック用 GM-100
SK11(エスケー11)
売り上げランキング: 3,044

はんだは、これがいいのかどうかわかんないんですけど、ダイソーにもあるという話を聞いて行ってみたら本当にあったので、それを使っちゃいました。練習用にだけ安いのを取りあえず使おうという魂胆だったんですが、練習しているうちに「意外になんとかなりそう?」という気持ちになり、そのまま本番でも使ってしまいました。はんだの良し悪しは自分にはわからないですけど、100均で本当によかったのかなというのは若干不安です。ちなみに 1.0mm 径を使っていますが、細かい部品もあるので 0.8mm 径のほうが使いやすかっただろうなと思ってます。

Image from Gyazo

またこれ以外に、ピンセットとプラスドライバーは家にあるもの(何年か前にミニ四駆やったときに買った)を使っています。 Lily58 Pro はリード線を切るような機会はないため、ニッパーは不要です。

はんだ付け

ぶっつけ本番はさすがに嫌だったので、はんだ付け練習キットのようなものがあればと思い Amazon で探したのですが、そこまで親切に(例えば説明用冊子が付いているとか)なっているものは見つけられず、コンデンサーや抵抗器がじゃらじゃら突っ込んであるセットがいくつかあったので、その中から適当なものを選びました。

ネットでいくつか資料を読んで、基板に適当に何度かはんだ付けを試しました。どれぐらいはんだを流し込めばいいのか、多くは 1〜2 mm と書かれているのですが目測でいまいちよくわからないし、感覚を掴むまで少し苦労しました。とりあえず盛り盛りにする必要はないししても意味はないということと、はんだを流し終えて離したあとも1, 2秒程度はこてを当てている必要があり、長く当てすぎてもよろしくないということを学びました。中学の頃にはんだが白くくすんだようになることが多かったんですが、その理由が「熱し過ぎによる酸化」であることを初めて知るなどしました。

参考にした資料は以下のものです。

組み立て

そして組み立てなのですが、なんかですね、はんだ付け練習してたらフロー状態に入ってしまったというか、なんかもうこのままイケるのでは????という謎の自信と早く作りたいという欲求で頭が満たされてしまい、ろくに写真も撮らずにガリガリ進めてしまったので製作工程の様子とかほぼ写真ないんですよね。無事に組み上がったからいいけど、はんだ付け練習したその日によく組み上げたな自分とは思ってます。使っているうちにボロが出るかもしれない。。。

基本的にはビルドガイドがありますので、それに沿ってやるだけではあります。なお、このレポジトリの中に Pro ではない Lily58 のビルドガイドも入ってますので、間違えないように注意が必要です。 Qiita にログを残してくれている方もいたので、そちらの記事も合わせて参考にしました。

つまずいたポイントとしては最初から少しつまずきまして、ダイオードに向きがあるということをはじめは飲み込めませんでした。暗い写真しか残ってなかったので説明しづらいですが、この下の写真の、両端に端子が付いた四角い小さな部品がダイオードなわけですが、小さい上に黒い表面にグレーの線で向きが示されているので、最初はそれを目視できず何分か悩みました。完全に電子工作初心者丸出しです。視力に自信がなければルーペがあってもいいかと思います。

Image from Gyazo

あとは「ジャンパ」という単語の意味がわからなかったり(はんだで複数の端子を繋げることみたいです)。 OLED 取り付けの手順はオプション故か端折られていたので、以下の記事を参考にさせてもらいました。

Pro Micro の固定

1つビルドガイドにない手順として、先の Qiita 記事に言及がある、 Pro Micro の micro USB 端子固定作業を追加で行いました。固定は記事をそのまんま参考にしてグルーガンを使いましたが、普通の強力接着剤でも良いような気がしています。不安だからと盛りすぎると、他のパーツに干渉して組み立てが難しくなるので注意です。自分は少しだけやすりで削る羽目になりました。

同じパーツをいくつもはんだ付けしていくので途中集中力も切れかけましたが、休憩を入れながら5〜6時間ほどで組み立てはおわりました。

ファームウェアの書き込み

組み上がったらファームウェアを自分で書き込む必要があります。多くの自作キーボードでは qmk/qmk_firmware: keyboard controller firmware for Atmel AVR and ARM USB families というものを使っているようで、 Lily58 Pro の場合もこれを使います。コマンドとしてはレポジトリを git clone してきて cd し、以下を打つだけです(前提として必要になるライブラリを brew install しておかなくてはならないので、それについては qmk_firmware のマニュアルを参照してください)。

$ make lily58/rev1:default
$ make lily58/rev1:default:avrdude

最初のコマンドでファームウェアをビルドし、2つ目のコマンドで書き込みます。従って2つ目のコマンドを打つ際にはキーボードを接続してある必要があります。2つ目のコマンドを打つと、以下のように reset 待ちになるので、キーボードのリセットボタンを押せばファームウェアが書き込まれます。左右それぞれで書き込み作業を行う必要があります。

Image from Gyazo

キーマップ

qmk_firmware の中にキーマップを定義しているファイルがあるので、これを書き換えることでキーマップを変更できます。ファイルは keyboards/lily58/keymaps/default の中にあるので、これをコピーします。

$ cp -R keyboards/lily58/keymaps/{default,chroju}

中に keymaps.c があるので、これを書き換えれば OK です。ソフトウェアエンジニアであれば、中を覗けば察しはつくと思います。指定できるキーコードは Keycodes - QMK Firmware を参考にします。私が大きく変更した点としては、 Delete をフルキーボードのように右上に配置したのと、 Lower のときに 1 を F1 、 2 を F2 という形でわかりやすいように割り当てたあたりでしょうか。記号キーについてはまだ模索しています。

ビルドと書き込みについては、先のコマンドの default をコピー後のディレクトリ名に替えるだけです。

$ make lily58/rev1:chroju
$ make lily58/rev1:chroju:avrdude

OLED

Image from Gyazo

OLED ですが、デフォルトだと入力したキーがそのまま表示されるようになっており、パスワード入力中など困りそうだったので、少し表示する内容を変更しました。 Lily58 Proのディスプレイ表示(OLED)を改造してみる - エンジニアの醤油漬け を大いに参考にさせていただき、1分あたりのタイプ数をタイプスピードとして表示するようにしています。C言語は初めて書いたんですが、 Pro Micro というか Pro Micro が互換性を持つ Arduino が sprintf で float の表示に対応していないこと を知らず、1時間ぐらいハマったりしました。

#include <stdio.h>
#include "lily58.h"

char typespeed_msg[64];
uint32_t type_count = 0;

void set_typespeed(void){
    type_count++;

    uint32_t uptime_millsec = timer_read32();
    uint32_t minutes = uptime_millsec / 60000;
    if (minutes == 0) {
      minutes = 1;
    }
    float type_speed = (float)type_count / minutes;

    char str_type_speed[12];
    dtostrf(type_speed, 6, 2, str_type_speed);

    snprintf(typespeed_msg, sizeof(typespeed_msg), "Speed: %s keys/m", str_type_speed);
}

const char *read_typespeed(void) {
  return typespeed_msg;
}

また右側の OLED は HelixのOLED表示を簡単にカスタマイズするサービスを作った - Qiita を使ってカスタマイズし、黒地に白で表示してカッコよさそうなもの、というところでパッと思い浮かんだロゴを表示してます。 UNDERTALE は2周しただけでそこまで思い入れがあるわけでもないので、いいアイデアが浮かべばまた変更します。こういうカスタムができるので OLED 付きのキーボードにしたのは正解でした。本当は日付とかも表示したいんですけど、 Arduino がクロック持っていないので仕方ないとこですね。。

Image from Gyazo

完成

Image from Gyazo

ちゃんと動かない可能性は多少覚悟していたんですが、思ったよりあっさりと動いてほっとしました。何日か使って仕事にも使ってみましたが、いまのところ特に問題はないです。というか打ち心地もよくて素晴らしいです。めちゃくちゃ気に入ってます。キー数が減ったのでタイポはまだ多く、慣れが必要だと感じています。

Image from Gyazo

Image from Gyazo

Barocco MD600 と比べるとだいぶ薄くなりました。ところで左の親指のところにまさかの Caps Lock がハマっていますが、 2U の無刻印キーキャップを持っていないだけで、実際はスペースキーです。

Image from Gyazo

持ち運びには無印良品のナイロンブック型ポーチを使っています。コードを収納できるポケットもあり、メッシュポケットに片側を入れられるので、2つのキーボードが擦れあってアクリルが傷つく心配もなく、 Lily58 のために作られたのではないかと思うぐらいピッタリでびっくりしました。

以上、ビルドログでした。なかなか作業は大変でしたが、仕上がったとき、実際動いたときの満足感は最高に気持ちよかったですし、出来上がりにもとても満足しています。もう1個、2個と作りたいかと言うとどうだろうなーという感じではあるんですけど。