ぶていのログでぶログ

思い出したが吉日

Let's split互換のキーボードHelixを作った

f:id:buty4649:20180207192244j:plain

最近電子工作を始めて、いろいろ記事を書いてきたが、次は自作キーボードだねみたいな謎の圧を感じながらも興味は持っていた。 そんな中、同僚がHelixのGroupBuyに申し込んでいるのを知ったので、私もそれに乗っかってみた!

HelixはLet's split(レツプリ)ベースのカスタムキーボードで、ロープロファイルのキーも選択できるのがウリです。また、開発者の方が日本人であるため、私みたいな自作キーボード初心者には安心して購入できるのも大きかったです!

GBは12月に行われ、実際に部品が来たのは2月頭くらいでした。そこから、組み立てて完成したのが冒頭の写真です。 完成後は、今まで使っていたトラックポイントキーボードを封印して使い始めています。 キー配列やレイヤーの概念になれず、PC初心者のような入力速度になっていますがw

Helixの組み立てやファームウェアについては、日本語ドキュメントが用意されていて自作キーボード初心者の私でも簡単に組み立てられました。 しかし、いくつかハマりどころがあったので以下にそれを備忘録がてら書いておきます。

組み立てについて

組み立ては半田付けが必須です。 電子工作を行なったことがあるなら、必要な機材は揃っていると思いますが、以下のような機材を用意しておくと良いと思いました。

  • 温度調整機能付き半田ごて
  • 半田吸い取り線
    • キースイッチのランドがはみ出したときに吸い取る
  • テスター
    • ダイオードの向きチェックとキースイッチのランドはみ出しチェック
  • ピンセット

パーツ実装については、ダイオードの半田付け、キースイッチの半田付けが終わった後間違っていないことをテスターを使って確認しました。 ダイオードの確認は、丸側のランドにテスターの+極を、四角側にー極を当てると確認しやすかったです。

f:id:buty4649:20180207203053p:plain

個人的には、キースイッチの半田付けがとても大変でした。。 Helixはロープロファイルとフルサイズのキーの両方が選択できるため、両方のランドがあります。 しかし、ロープロファイルのキースイッチの右側のランド(青矢印右側)と、赤矢印右側のランドの隙間がほとんど無く半田が少しでもはみ出すと短絡します。 しかも、このランドは、ロープロファイルキースイッチの反対側の端子にもつながっているので、短絡してしまうと常にキーが押されてしまう判定になってしまうのでした。 はみ出した場合は、半田吸い取り線で半田を吸い取り再度半田付けを行うことで、なんとか乗り切りました。

f:id:buty4649:20180207203917p:plain

ファームウェアについて

ファームウェアについても日本語ドキュメントが用意されています。 しかし、ここに書いてあるとおりqmkのソースコードをダウンロードして make helix:defaultしてもビルドできません。 ビルドするためには、ビルドツールをインストールする必要があります。 何をインストールするかはQMKのFAQに書いてあります。

Install Build Tools

この中でも、avr-gccのインストールが非常に遅く*1、私の環境では半田付けしている時間より長かったです。。。

ビルドツールをインストールしても、 make helix:defaultしただけでは、Pro Microのファームウェアはフラッシュされません。 ファームウェアのフラッシュを行うには make helix:default:avrdude する必要があります。 これも最初わからずハマりました。。

dockerを使ってビルドする

QMKのリポジトリにはdockerfileが含まれていて、ファームウェアのビルドをdockerで行うことができるようです。 私の環境で試したところ以下のようなコマンドでファームウェアのビルドができました。

$ docker build -t qmk .
-- -- snip -- --
$ docker run --rm -e keyboard=helix -e subject= -e keymap=default -v $(pwd):/qmk qmk

☆実行が完了するとhexファイルができているはず
$ ls -lh .build/helix_rev2_default.hex

ファームウェアのフラッシュはdockerからはできないので、これはPCでやる必要があります。 フラッシュにはavrdudeコマンドが必須なのでこれをインストールしておきます。 インストールが完了したら、Helixのリセットボタンを押して 7秒以内に*2以下のコマンドを実行します(macOS環境を想定)。

$  sudo avrdude -p atmega32u4 -c avr109 -P /dev/tty.usbmodem* -U flash:w:.build/helix_rev2_default.hex

なぜ時間制限があるかというと、リセットボタンを押すと数秒だけttyデバイスが生える仕様になっているためです。 最初これに気がつかず、手動フラッシュできなくて悩みました 😓 ちなみに、 make helix:default:avrdude では /dev/tty.usbmodem* が生えるまでsleep 1してループしているようです。

設定ファイル

私はLED Underglowが使えるような構成にしていたため、ファームウェアのソースを修正する必要がありました。 修正する部分はドキュメントに書いてあるので、それに従って修正するだけなのですが、修正を行う rules.mkが複数個あり間違ったファイルを修正していたため、Underglowが光らずかなりハマりました。。

最初私が修正したのは keyboards/helix/rules.mk でしたが、正解は keyboards/helix/rev2/keymaps/default/rules.mk です。。 どちらにも同じ設定が書かれていて、 git grep で変更対象の定数名を探したため最初に出てきたrules.mkを修正したみたいな感じでした。。 他のqmkプロジェクトがどうなっているかちゃんと見ていませんが、ここら辺は少しわかりづらいなぁっと思いました。

最後に

ハマりどころはありましたが、無事に完成して、そして、完動するキーボードができて感動しています! 初心者の私でも、簡単に作成出来る素晴らしいキーボードをこの世に出していただいいた製作者様には感謝しかありません 🙇‍♂️

先述したとおり会社で使っていますが、キーマップが手になじんでいません。。 しかし、自分の思い通りのキーマップに変更できるのも自作キーボードの強みだと思います! ガシガシファームウェアをカスタマイズして、自作キーボード沼にどんどん潜っていきたいと思います 😇

*1:avr-glibcのビルドがかなり重い

*2:正確には何秒かは知らない。7秒は実測値