ErgoDash Build Log 6

このほど、 ErgoDash を組み立てました。

最終的にはちゃんと組み立ては終了し、実際に使い始めています。もしErgoDashを作ってみようかな、とお思いの方が今後いらっしゃった際に、僕の経験が少しでもお役に立てるように、Build Logを日々残しておきました。このエントリは、その第6回です。

  1. ErgoDash Build Log 1
  2. ErgoDash Build Log 2
  3. ErgoDash Build Log 3
  4. ErgoDash Build Log 4
  5. ErgoDash Build Log 5
  6. ErgoDash Build Log 6
  7. ErgoDash Build Log 7
  8. ErgoDash Build Log 8
  9. ErgoDash Build Log 9
  10. ErgoDash Build Log 10

2020/08/24

昨日はWS2812Bの取り付けにヒーヒー言ってましたが、今日は方々の基板の最終動作チェックということで、各キースイッチをショートさせて、全部それぞれ正しいキーコードが送られるかどうかを確認します。すでにキースイッチからPro Microまでの導通は済んでいますので、たぶん大丈夫だとは思っていますが、念の為の確認です。

これは何度か試みていますが、Pro Microをコンスルーにハンダ付けしないまま行ってきたので、おそらく接触不良でキーコードが送られたり送られなかったりして、不安定でした。そこで、今回はPro Microをコンスルーにハンダ付けして、ちゃんと動作確認を行います。

まず、基板にコンスルーを挿します。脇にいくつもある小さな四角い溝がPro Micro側になるように、そして溝が同じ向きになるように(溝が向き合ってしまったり、お互い外をむいてしまうのではなく、という意味)して、差し込みます。その後、その上にPro Microを置きます。

ただ、置いただけだと、ちょっと浮いてしまうようです。

浮かずにハンダ付けできるように、マスキングテープで固定します。

その後、一本一本ハンダ付けしました。

表面実装に比べたら気楽なハンダ付け作業ですが、慎重に行いました。

その後、USBケーブルでPCにつなぎます。僕はmacbook proに繋いで、Karabiner-Elementについてくるキーイベントを表示してくれるアプリを使って、実際にキーコードが送られてくるかどうか確認しました。ピンセットでショートさせると、キーコードがそれぞれ送られるはずです。

デフォルトキーマップを書き込んでいるので、どのキーからどのコードが送られてくるかは、以下のコードを見ればわかります。

/ergodash/rev1/keymaps/default/keymap.c

「やけにLALTが送られてくるな」と心配になりましたが、これはEISUとして割り当てられているキーが、実際にはLALTを送ってくるようになっている、というか、コード内のEISUはLALTの別名だったりするので、正しいです。また、LowerとRaiseは、ファームウェア内で処理されるものなので、PCに送られなくて正解でした。これもコード内にて定義されています。

/ergodash/rev1/keymaps/default/keymap.c#L123

また、確認した基板は、実は最終的に「右手」側になります。それなのに、「a」や「1」など、左手側のキーコードが送られてきていました。「あれ、逆じゃん。もしかしてジャンパをショートさせるの、逆だった?」と不安になりましたが、結果としては、これで正解です。TRRSケーブルを接続せずに基板1枚ずつUSBケーブルで繋いで検証した際には、左手のキーマッピングが使われるという動作のようです。

動かなくて相談したいときに事前に確認する項目(スプリット編)

全てのキーで正しいキーコードが送られることを確認できました!これで、片側の基板の山場は超えたと言えるでしょう。

気を良くして、もう一つの基板についても、WS2812Bを付けていきました。こちらは順調に実装していくことができて、ほぼ一発で全てのWS2812Bが点灯しました。Underglow LEDについては、両基板とも問題なしです。キーコードについて、全て期待通りのコードが送られてきました。問題なさそうです。

さて、ここで問題だったのは、Backlight LEDです。1枚目の時は、3mm LEDを挿したときに、かなり明るく点灯しました。でも、2枚目は、3mm LEDを挿しても、点灯しません。正確には、USBケーブルでPCに繋いだ瞬間に一瞬光り、すぐに消える、という挙動でした。

最終的には、2枚目が実は正解です。つまり、3mm LEDは、消灯状態が正しい挙動だったのです。

ErgoDashは、Underglow LEDはデフォ点灯設定、Backlight LEDはデフォ消灯設定、がどうやら初期設定だったようです。そのため、Backlight LEDが点灯するかどうかを検証するためには、例えばBL_TOGGキーコードをどこかのキーにマップしてファームウェアを書き込んでおき、PCに接続後にBL_TOGGのキーコードを送り込むことで、Backlight LEDの点灯消灯を確認する、という手順を行わなければならないということでした。

これに気がつかず、MOSFETが壊れたと思い込み、MOSFETを4つほど交換して試して「あー、だめだ、つかないじゃん、また壊しちゃった」を繰り返してしまいました。そして、何度もMOSFETのハンダ付けをやり直したために、ついに基板の配線が切れてしまったと思い込み、「あー、終わった。Backlight LEDは諦めよう」と、残念な気持ちに浸っていました。

Discordに上記の初期設定の話が残っていて、検索した際にそれに気がつき、一旦はお風呂から上がってもう寝ようと思いましたが、最後の悪あがきとして、再度MOSFETを実装して、BL_TOGGをEISUのキーに割り当ててファームウェアを書き込み、動作確認を行ってみました。

せっかくなので、両手での動作確認をしてみようと思い、TRRSケーブルで左右の基板を繋ぎ、USBケーブルを左手側のPro Microに繋ぎます。この状態では、「左手側のBacklight LEDは消灯状態、右側のBacklight LEDは点灯状態」でした。ここで、BL_TOGGキースイッチをショートさせます。

なんと!左手側のBacklight LEDが点灯しました!

BL_TOGGのショートを繰り返すことで、左手側のBacklight LEDの点灯と消灯が行われることが確認できました。つまり、「あー、壊してしまった」と諦めかけた側の基板が実はうまく動作するようになり、「うまくいったぞ」と思っていた側の基板が「LEDつきっぱなし」という問題がある状態になっていたわけです。

思い込みと当て推量は、本当に良くないですね。反省せねばなりません。

あと気になる点としては、付きっぱなしの右手側の基板のLED端子に来てる電圧をテスターで測ったところ、+5V付近でした。そのため、3mm LEDはとても明るく点灯します。それに対して、ちゃんと制御できるようになった左手側のLED端子では、+1.8V程度であり、3mm LEDの明るさも少し暗い点灯です。

まだBacklight LEDは諦めなくても大丈夫そうだ、と確認できたところで、今日の作業を終えました。

ErgoDash Build Log 7 に続く。。。

このエントリーをはてなブックマークに追加

関連記事

「エンジニアチームの生産性の高め方」という書籍が出版されました

2023年のRemap

Remapにファームウェアビルド機能を追加しました

Google I/O 2023でのウェブ関連のトピック

2022年を振り返って