YAMAGUCHI::weblog

海水パンツとゴーグルで、巨万の富を築きました。カリブの怪物、フリーアルバイター瞳です。

foobarをアンダーグロー化した

はじめに

こんにちは、Google Cloud Operations担当者です。Stackdriverという名前はもう忘れてください。先日foobarを作りましたが、そのときにはまだ発注していたテープLEDが届いていなかったのでアンダーグローの実装はしていませんでした。

ymotongpoo.hatenablog.com

やっとテープLEDが到着したのでアンダーグロー化しようと思います。

LEDのはんだ付け

www.40percent.club

配線が見られる写真やビルドログがあまり見つからなかったのでとりあえず本家の写真を参考に配線をしました。

f:id:ymotongpoo:20200829112245j:plain

QMK Firmwareでの書き方によっては左右同じはんだ付けでいいのかもしれませんが、今回は本家のビルドログと同様にマスター側(左手)ですべて制御するような形にしました。

点灯しないのでデバッグ

全部配線を終えてファームウェアを焼いてみたものの、光らない。まずもう一度テスターでいろいろと導通チェックをしてみました。

f:id:ymotongpoo:20200830132711p:plain

f:id:ymotongpoo:20200830162451p:plain

まず導通チェックですが、上の図で同じ色の丸同士のどこを確認してもブザーが鳴り、導通していることの確認が取れました。

f:id:ymotongpoo:20200830163652p:plain

TRRSケーブルをつないで左手側のDOUTから右手側のDINまでTRRSケーブルを通じて導通していることも確認。導通は問題なさそうなので、今度は電圧を確認します。

f:id:ymotongpoo:20200830165147p:plain

f:id:ymotongpoo:20200830165224p:plain

左手側を確認するとどうも電圧が取れていない。右手側を確認すると正しく電圧が出ている。さてこれはどうしたものかなあと考えていたのですが、LEDが壊れているのかどうかが確証が取れず、方法もわからなかったのでSMKIJの皆さんにまたもや相談。*1

原因

甘いはんだ付け

症状を共有するとa_p_u_r_oさんから早速次のようなアドバイスをいただきました。

左手側のLEDストリップのVCCがPro MicroのVCCと導通しているかもう一度確認したいです。

この部分は最初に導通を確認したはずなんだけれども、なにか変わっているのかもしれないので念の為導通確認。黒のプローブをProMicroのVCCのピンヘッダに、赤のプローブをテープLEDの始端のVCCのランドにつけると、ブザーが....鳴らない...。もう一度配線をよくよく見てみると、ビニル線のスルーホールへのはんだ付けが甘くなっていました。

f:id:ymotongpoo:20200830171659p:plain

はんだの様子を見てはんだ付け時にビニル線の被覆の部分が当たっていてうまくハンダが乗らなかったのだと推測しました。最初に導通チェックしたときはたまたまうまく接触していたので鳴っただけでした。

ファームウェアでの関数の間違い

はんだ付けが無事に修正されると、左手側のテープLEDが点灯したのですが、右手側が引き続き点灯しません。しかしPCに接続した状態で再度右手のテープLEDのGNDとVCCの電圧を測ると4.66Vになっているし、中のWS2812B自体のDINとDOUTの部分の導通を見ても問題ないので、これはファームウェア側の問題と推測。しかしおかしな部分がどこか、勘所がわからないので見様見真似でいじっていると@mteiさんからアドバイスを頂けました。

修正点1: RGBLIGHT_SPLITやRGBLED_SPLITを使わない

これまで作ってきたキーボードでバックライト、アンダーグロー含めLED付けたのはHelixだけなんですが、Helixの場合左右で同じようにはんだ付けしていて、ファームウェア側で左右の基板にいくつずつLEDがあるかなどを制御してましたが、今回の配線ではマスター側でLED制御するようにしています。

そのためHelixを真似て書いていた RGBLIGHT_SPLITRGBLED_SPLIT があることで逆に制御ができなくなってしまいます。公式ドキュメントを確認するとちゃんと書いてありました。

RGBLIGHT_SPLIT: This option enables synchronization of the RGB Light modes between the controllers of the split keyboard. This is for keyboards that have RGB LEDs that are directly wired to the controller (that is, they are not using the "extra data" option on the TRRS cable).

RGBLED_SPLIT: This sets how many LEDs are directly connected to each controller. The first number is the left side, and the second number is the right side.

これらのオプションはTRRSケーブル経由でデータを送っていない場合でProMicroに直接LEDが配線されている場合に使う、と書いてありますね。完全にRTFM*2案件です。

修正点2: keyboard_post_init_user()内でrgblight_* 系の関数を呼ぶ

QMKのfoobarのデフォルトのkeymap.cをコピーしたら初期化系の関数が matrix_init_user() しか書かれていなかったので、雰囲気でそのままそこにLEDの初期化とアニメーションの設定を書いていました。

void matrix_init_user(void) {
    rgblight_enable_noeeprom();
    rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_MOOD);
}

しかし公式ドキュメントによれば、これではなく keyboard_post_init_user を使うべきだそう。

These are the three main initialization functions, listed in the order that they're called.

  • keyboard_pre_init_* - Happens before most anything is started. Good for hardware setup that you want running very early.
  • matrix_init_* - Happens midway through the firmware's startup process. Hardware is initialized, but features may not be yet.
  • keyboard_post_init_* - Happens at the end of the firmware's startup process. This is where you'd want to put "customization" code, for the most part.

Note: For most people, the keyboard_post_init_user function is what you want to call. For instance, this is where you want to set up things for RGB Underglow.

他にもドキュメントを細かく見ると、直接は書いていないものの、ファームウェアの起動が終わった後にすべきようなことはすべて keyboard_post_init_user で行うべき、と書いてあります。LEDはまさにそうですね。したがって次のように書き換えました。

void keyboard_post_init_user(void) {
    rgblight_enable_noeeprom();
    rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_MOOD);
}

void matrix_init_user(void) {

}

完成

以上の変更や修正を加えると無事にLEDが動作しました!

youtu.be

反省点

  • ビニル線をハンダ付けをする際は、被覆のビニルをしっかり剥がして余裕を持ってはんだ付けできる程度に中の線を出す
  • 導通確認は短い距離から増やして最大限まで長い距離まで複数回導通を見る。特にケーブルやジャンプしたハンダ付けに注意。
  • RTFM

おわりに

トラブルはあったものの、今回の実装でLEDに関してまた理解が深まったので、積みキーボードのもう1セットのfoobarやMinidox、また過去に作ったGherkinとLet's Splitに関してもアンダーグロー化したいと思います。

*1:相談する側から解決策を提示できる側に早く回れるようにしたいものです

*2:https://ja.wikipedia.org/wiki/RTFM

Helix 4行アクリルプレートを作った #Helix祭り

はじめに

こんにちは、StackdriverあらためGoogle Cloud Operations担当者です。先日Helixの5行ステンレスプレートを作りました。

ymotongpoo.hatenablog.com

この他に、foobarとLet's Splitも作りました。

ymotongpoo.hatenablog.com

ymotongpoo.hatenablog.com

これらは何度か触れている、発掘した積みキーボードの材料から作っているわけですが、進捗を整理すると

  1. Helix 5行のステンレスプレートのフルキットとKailh Low Profile白軸とキーキャップが必要個数分 → 完成
  2. Helix PCB 1セット(予備)→ これから
  3. foobarのPCBと上下プレート 2セット → 1つ完成
  4. MinidoxのPCB 1セット → 手つかず
  5. Let's Splitの作りかけ(はんだ付けミスで動かなくなったまま)→ 2つのうち1つ完成

7個中3個が完成しました。今日はこの2番に取り組みます。今回は以前作ったステンレスプレートのときと違って、自分で調達する必要があったものもあるので、それに関してもメモしておきます。

品名 個数 備考
PCB 1セット GBで購入
上下プレート 1セット 遊舎工房で購入
SMDダイオード 50個 GBで購入
OLED 2個 GBで購入
スプリングピンヘッダ 2個 GBで購入
ProMicro 2個 GBで購入
Kailh Low Profileスイッチ 50個 赤軸をGBで購入
Kailh Low Profile用キーキャップ 1セット GBで購入
LEDチップ (SK6812mini) 70個 予備込でGBで購入
タクトスイッチ 2個 秋月電子通商で購入
TRRSジャック 2個 秋月電子通商で購入
TRRSケーブル 1本 なんでもよい
microUSB-USB-Aケーブル 1本 なんでもよい
M2x5mmスペーサー 12個 西川電子部品で購入
M2x4mm ネジ 24個 西川電子部品で購入
ロープロファイルピンソケット 1個 OLED用に秋月電子通商で購入
1x4 ピンヘッダ 2個 家に余ってたものを使った

ビルドログ

これまでのビルドログと同様に、実装中の写真はこちらのGoogle Photosのアルバムで公開しています。

photos.app.goo.gl

バックライト用LED(SK6812mini)の表面実装以外はHelix 5行ステンレスプレートでやったことと変わらないので、流れは公式ビルドガイド先に作ったHelixのビルドログを参照のこと。

本記事では5行ステンレスプレート版では行わなかったバックライトLEDの表面実装で苦労したことなどを書きます。

SK6812miniのはんだ付けがとにかくきつい

これまで作ってきたキーボードではLEDはアンダーグロー用のテープLED(WS2812B)も含めてLEDの実装は一切行ってませんでした。*1さらにいうと、既製品も含めてLEDがついたキーボードを使ったことがありませんでした。そういう背景もあって今回のHelix 4行でバックライトLEDの実装をするというのはなにげに初めてで、LEDに起因するトラブルもそうですしLEDの制御をQMKで行うのも不慣れだったので少し手間取りました。

以下、起きたトラブルと対応を簡単にメモしておこうと思います。

テスターでの検証

なにはともあれテスターでの検証ができるようになれば不具合の原因が早く判断できるのでテスターの使い方を調べます。HelixではSK6812miniはLEDテープと同様のことが基板上で行われていて、すべてのLEDがつながっています。(下図はこちらのブログより転載)

f:id:ymotongpoo:20200824010006p:plain

よく起こりがちな状況はあるLEDを境にそこから先のLEDが点灯しない、もしくは色や明るさがおかしくなる、という状況なので、その場合はその境になっているLED自体、もしくはその一つ前のLEDのはんだ付けに不備があることが多いです。(SK6812miniのデータシートを参照)

f:id:ymotongpoo:20200824103942p:plain

隣り合うLED同士は前のLEDのDOUTと次のLEDのDINがつながっているので、その導通を確認するとはんだ付け不良が見つけられました。他にもLED自体がはんだ付け中に壊れてしまったりというのはVSSとVDDの抵抗値を見たりして確認できました。壊れてしまったものは粘っても仕方ないのですぐに新しいものに替えて解決しました。

アニメーションで確認すると不良箇所がわかりやすい

QMKでバックライトLEDをオンにしただけでは、デフォルトの赤色しか点灯しないので、LEDテスト用のファームウェアを焼くか、自分でアニメーションの設定(RGBLIGHT_EFFECT_RAINBOW_MOOD とか)をすると、接触不良のLEDがわかりやすかったです。

f:id:ymotongpoo:20200823095653j:plain

上の写真は点灯しないLEDがなくなって喜んでたら、アニメーションを設定した途端にAの位置のLEDの接触不良がわかったときの図です。

ジャンプしたランドが導通しているか確認する

はんだ付けし直してきちんと導通しているかは先のテスターでの確認もそうですし、そのLEDのハンダ付け箇所単体で基板側のランドとLED側のランドにプローブを当てることでも確認できました。

使ってるうちに点かなくなったりする

これが本当にきつくて、一旦はちゃんと点灯することを確認して、いろいろ制御したりして使えていたのに、1日~3日くらいしたら点灯しなくなるみたいなことが作り終わってからもう3回くらいあって、「ハンダのジャンプで部品を固定するのとか冗談としか思えない!」とかブツブツ言いつつ、テスターでデバッグするのがちょっと楽しかったりもしました。

参照したブログにも紹介されていた、ジャンパ線で最後の点灯したLEDのDINと未点灯のDINをつないでみたり、点灯している任意のLEDのDOUTを未点灯になり始めたLEDより向こうのDINにつないでみたりといろいろしてみたのですが、これらは全然反応がなかったので、何回か試してやめました。

テスターで前後のLEDでDINとDOUTをつないでみたり、GNDやVCC同士をつないでみたりして導通確認は取れてるので、もはやLEDが壊れてるとしか思えないものは、時間ももったいないので新しいものに交換しました。

結果これを書いているいまは安定しているので良いのですが、またいつトラブルが起きるかわからないので、やはりチップLEDはYS-SK6812MINI-Eみたいにピンがでているものではんだ付けしたい....

とか書いてたらまた不安定なLEDがいくつか出てきた...

QMK FirmwareでのバックライトLEDの制御

これは別途エントリとしてまとめるので、まとめたらそのリンクを貼ります。

完成

というわけで紆余曲折ありましたが、無事にHelix 4行のアクリルプレート版が完成しました。

f:id:ymotongpoo:20200827111221j:plain

これで家にあったHelixのGB時に買った2セットがともに完成しました。GB時は家と会社用に両方とも5行で使う予定で2セット買って、アクリルプレートは会社の工作室で切ればいいと思い買ってなかったのですが、いまとなっては40%をメインで使っているので5行用のアクリルプレートを買わなくて正解でした。

残る積みキーボードはfoobar 1セット、Minidox 1セット、Helixの作りかけ1セットです。次はまだ作ったことのないMinidoxを作ろうかな。

参照

www.sho-k.co.uk

本記事を書きながらデバッグをする上での調べ物をしていたら、上のブログを見て、そのサムネイルにもある「千住金属工業鉛フリー 低温やに入りはんだ エコソルダーLEO」が欲しくなりました。鉛フリーなのに融点が約140度なので、200度ではんだ付けしても余裕とのこと。ただ値段が一巻きで3700円とかなので、ちょっと腰が引ける...

marksard.github.io

kankodori-blog.com

*1:行うつもりが無いわけではなく、後付が可能なことと、AliExpressの配送時間が長すぎて後回しにしてきた

3年越しにLet's Splitを完成させた #レツプリ #letssplit

はじめに

こんにちは、StackdriverあらためGoogle Cloud Operations担当者です。

ここ最近、キーボードを作りまくってますが、そもそものきっかけはLet's Splitでした。しかも3年前に作ろうとして挫折したもの。

品名 個数 備考
PCB 1セット MEHKEEで購入
上下プレート 1セット アクリル板を買って自分でレーザーカットしてあった
スイッチングダイオード 50個 秋月電子で購入
ProMicro 2個
Cherry MX互換キースイッチ 50個 Gateron Clear
キーキャップ 1セット 適当に購入
タクトスイッチ 2個 秋月電子通商で購入
TRRSジャック 2個 マルツで購入
TRRSケーブル 1本 なんでもよい}
microUSB-USB-Aケーブル 1本 なんでもよい
M3x10mmスペーサー 8個 西川電子部品で購入
M3x8mm ネジ 16個 西川電子部品で購入

2017年末、Let's Splitを作ろうと試みる

2016年ころからErgoDox EZを使い続けていて、快適に使い続けていたのですが、筐体サイズの大きさとあまり頻度の高くないキーの多さに疑問を感じ始め、別の解決策はないかと探し始めたのが2017年頭でした。その頃にLet's Splitの自作の話をちらほらTwitterで見かけるようになり、自分も組んでみたいと思いはじめ、MEHKEEで購入したのでした。*1

そして材料を揃え学生時代の演習以来ぶりにはんだ付けをしました。

ここで「動いたぞ!!」とか書いてますが、動いてません。「動いた!!」と思ったら1列動かない列があったのでした。導通確認もせずに組み立てた結果ですが、その後テスターもろくに使わずに、そこで挫折し、そのまま箱にしまわれ、お蔵入りに...

2020年夏に発掘、再度挑戦

コロナ禍で在宅時間が増え、夜飲みに行くこともめっきりなくなった結果、できた時間で取り組んでみようと、再び封印されていた箱を取り出しました。Let's Splitの制作に挫折はしていたものの、来る日のためにHelixのGBにも参加し、foobarやMinidoxのPCBも用意されていました。これらに取り組む日がくるとは....

発掘する直前で別途購入したGherkinは途中失敗したものの、SMKIJの皆様のサポートもありなんとか復旧し、その経験もあってHelixやfoobarは滞りなく完成しました。2017年当時と違ったのは、家に電子工作用の工具が一通りあることでした。2017年当時は会社の工作室にあるもののみでやろうとしたため、ハンダも健康に配慮し無鉛はんだのみ、ハンダ吸い取り器なども同僚に借りたもの、などいろいろ制約の中でやっていましたが、いまはもう腹をくくって道具を全部そろえたので、道具を買い足すのにもまったく抵抗はありません。そのおかげでGherkinも復旧できました。

Gherkinを復旧したことで自信を取り戻し、やる気が復活したのでいよいよ途中で匙を投げていたLet's Splitに取り組むことにしました。

テスターで確認

f:id:ymotongpoo:20200817213105j:plain

前回と違ってテスターをちゃんと使うようになったのでとにかくテスターで導通確認をしてみます。すると該当するキーが一列、ProMicroのつながっているはずのピンと結線されていません。Gherkinのときと違ってショートしているのではなく、導通していないのではんだ付けが怪しいんですが、ProMicroとピンヘッダは特に問題なさそう。

ProMicroを外して、再確認

f:id:ymotongpoo:20200818140529p:plain

念の為ProMicroを外してから、ピンヘッダだけの状態でも同様になるか確認します。やはり同様の状況で、ProMicroの裏側に隠れていた部分もきちんとキースイッチのピンがきれいに切られていたので、怪しいのは基板上側のピンヘッダを付けてる側のランドのハンダ付け。しかしそれを確認するためにはキースイッチを全部はずす必要があります。

scrapbox.io

ここにあるトラブル例のように、やはり特定の列や行は大元のProMicroと基板の接触が不良とのことで、ますます基板上面が気になります。

キースイッチをすべて外してランドを確認

仕方なくすべてのキースイッチのハンダを取って、基板と上のプレートを外すと、3年ぶりに基板上面と対面しました。早速該当のピンのハンダを吸い取ってみると、ランドが剥げていました。それを見た瞬間に、3年前に作ったときにピンヘッダを基板の逆側につけてしまったので外した記憶が蘇ってきました。あのときにランドを剥いでしまったのか...

f:id:ymotongpoo:20200818163655p:plain

ところで、このハンダ吸い取り器は本当に良かったのでめちゃくちゃオススメです。先日買った「はんだシュッ太郎」はコテ先の熱が高まりすぎるので基板上などには良かったのですが、ピンヘッダだとプラスチックの部分が溶けかけたりしてやばかったので、このハンダ吸い取り器を導入しました。

動画を見たら「やらせだろ?」って思ってましたが、気持ちいいくらいに吸えました。キースイッチ全部外すのもこれと、しつこいものはハンダ吸い取り線を追加で当てたらきれいに取れました。

再び相談

ランドが剥げていたので、代替手段でその先のシルクが結線している場所に通電させてあげればよいはずです。今回の場合は該当のピンは、本来導通が取れているはずのキースイッチのピンの部分のランドまでつながっていました。このピンからビニル線やエナメル線で直接つないであげればよいはず!しかし確証が持てなかったでSMKIJのdiscordで相談しました。

なるほど。もし(今持っている基板がv2と)同じであれば、想定されているように結線してあげれば直ると思います。試すだけなら半田付けせずともピンセットみたいな導体を使えるので、それでよさそうなら適当なワイヤを半田付けしてください。

すでに自分が基板を手に入れたときからLet's Splitの基板のバージョンも進んでいるので、そこから確認という感じだったんですが、@shelaさんにも結線について確認をしてもらって、上の提案をいただいたのでその方向性で修正することにしました。

キースイッチとProMicroのはんだ付け、結線

一度すべて外したキースイッチとProMicroを再度付け直すというのはなかなかにうんざりするものですが、単純作業なのでやっていきます。ProMicroまで付け終わったら、さらにランドが剥げていたピンから基板のシルクがつながっているキーソケットのピンに対してビニル線で結線します。

f:id:ymotongpoo:20200818212237j:plain

この状態で再度テスターで導通確認を行い、今度はすべてのキーが期待通りにつながっていることを確認しました!!高まる期待!

完成

PCに接続し、キー入力してみると見事すべてのキーで入力できました!早速キーキャップを付けて完成です。

f:id:ymotongpoo:20200818234631j:plain

一回諦めた分、こうやって動くようになると嬉しいですね。

おわりに

本記事はLet's Split v2 (Gateron Clear)を使って書かれました。Let's Splitが流行った頃から比べると公開されているキーボードの数はすごく増えて、公開されている情報も増え、新規に制作される基板の実装のしさすさも改善され、いまではダイオードやICのはんだ付けがないものも出てきています。また部品の調達も遊舎工房さんやTALP KEYBOARDさんを始めとする店舗が必要なものをまとめて取り扱ってくれているため、自分で必要な部品を探す手間も減りました。

こうしたすべては自分で部品を時間をかけて調達し、試行錯誤して、失敗して挫折した、という経験があった自分にはより大きく感じます。いまとなってはクラシックな部類に入るであろうLet's Splitですが、初めて取り組んだ自作キーボードで一度諦めかけただけに、三年越しに使えるものになって嬉しい限りです。

しかしここ最近作ったキーボードがすべて重め(Kailh Speed Burnt Orange、Kailh Box Black、Kailh Low Profile White)だったので、Gateron Clear (リニア35g) は軽すぎて逆に疲れますね....

関連記事

ymotongpoo.hatenablog.com

*1:予備として余っていた方からもう1セットPCBを安く譲ってもらいました

foobarを作った

はじめに

こんにちはStackdriverあらためGoogle Cloud Operations担当者です。最近、3年ほど前に一度自作キーボードを始めようと思って材料だけ集めたあと放置されていたパーツを回収したので、作っていなかったり作りかけのものを直したりしはじめています。その中に知人から安く譲ってもらったfoobarのPCBと上下プレートセットが2組でてきたので、とりあえず1組作ってみたのですが、検索しても細かなビルドガイドがなかったので自分の記録用に残しておきます。

ここ2ヶ月くらいでキーボード本当に作り過ぎなんですが、これは積みキーボードなので仕方がないですね...

材料

公式サイトには何を揃えたらいいかなどは書いていないのでメモしておきます。

品名 個数 備考
PCB & 上下プレート 1セット 知人から購入
ProMicro 2個
Cherry MX互換キースイッチ 30個 Kailh BOX黒を遊舎工房より購入
Cherry MX用キーキャップ 30個 DSAプロファイル
スイッチングダイオード (1N4148) 30個
タクトスイッチ 2個
TRRSジャック 2個 秋月電子通商で購入
TRRSケーブル 1本 なんでもよい
microUSB-USB-Aケーブル 1本 なんでもよい
M2x15mmスペーサー 8個 西川電子部品で購入
M2x6mm ネジ 16個 西川電子部品で購入
LEDテープ(オプション) WS2812B 60LED/m IP65 5個x2
ビニール線(オプション) 適当 秋月電子通商より購入

価格はまとめ買いしたり送料がかかったものは1個あたりの単価に戻してからこの表の個数で計算し直しています。たとえばネジは40個まとめ買いとかになるので払ったお金は実際もっと高いです。*1

TRRSジャックに関しては、マルツにドンピシャの商品があるのですが、入荷未定で過去に作られた方々のコメントなどを見ると、1ヶ月くらいかかることがあるらしいので、足の形だけ違うものを秋月電子通商から購入しました。

LEDとビニール線はアンダーグローをしない場合には必要ありません。

ビルドログ

写真はこちらからも確認できます。

photos.app.goo.gl

材料の確認

これを作るのに並行してGherkinを作っていたのだけれども、特定のキーがショートしていたのを知り本当に反省したので、今回はかなり慎重めに作業を進めました。まずダイオードの導通確認から。

f:id:ymotongpoo:20200807215759j:plain

テスターでダイオード30本の導通を確認。問題なく導通していることが確認できた。片手でテスター反応させながら、もう片手で撮影するの難しい。foobarは左右共通の基板を片側を裏返して使うので、混乱しないようにマスキングテープで左右と裏表の印を書いておきます。

f:id:ymotongpoo:20200807215415j:plain

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

ProMicroのはんだ付け後すぐにテストができるようにあらかじめファームウェアを書き込んでおきます。公式は tmk_keyboard のほうを参照しています。しかし qmk_firmwareがそれも内包してビルドを便利にしてくれている上に、自作の他のキーボードでも利用しているので、foobarでもこちらを利用します。

f:id:ymotongpoo:20200807220809j:plain

とりあえずテスト用なのでデフォルトのキーマップをそのまま書き込みます。書き込みはDocker環境が設定済みのUbuntu 20.04で行いました。

$ cd /path/to/qmk_firmware
$ ./util/docker_build.sh 40percentclub/foobar:default:avrdude

GNDとRSTをピンセットでショートさせてリセットさせ、無事に書き込み完了。

ダイオードのはんだ付け

他のキーボードと同じようにランドが四角い方にカソード側(黒い帯があるほう)を半田付けします。 

f:id:ymotongpoo:20200808221731j:plain

リードベンダで曲げておいてから裏面から差し込みます。foobarの場合は裏表どっちにつけても大丈夫ですが、表面はキースイッチなので少しでも邪魔にならないように裏面に配置。はんだ付けまで裏面でやれば表面がきれいになってよかったんですが、家にツールクリップが無いため、楽をするために半田は表面側で行いました。

f:id:ymotongpoo:20200808222258j:plain

雑にこういう感じでマスキングテープでダイオードを固定してひっくり返してはんだ付けしました。左右両方ともはんだ付けが終わったら、ProMicroを載せる位置の各スルーホールと各キースイッチ間で導電確認をしておしまい。

TRRSジャックのはんだ付け

マルツで売っているSparkFun PRT-12639を使う場合にはまったく必要のない工程ですが、脚が折れていないTRRSジャックを使う場合には、ラジオペンチなどで折り曲げたあとに、基板のランドの位置に合うように少しだけニッパで先端を切っておきます。

f:id:ymotongpoo:20200808225735j:plain

左が切ったもの、右が切ってないものです。切りすぎるとはんだ付けが難しくなるので気をつけました。

TRRSジャックは表面実装になるため先に盛り半田をしておいてから、上からジャックを乗せて、ジャックの脚をコテ先で暖めながらジャック全体を上から押し込むとうまくいきました。

f:id:ymotongpoo:20200808231017j:plain

ピンヘッダのはんだ付け

次にProMicroを載せるピンヘッダをはんだ付けします。ピンヘッダを基板に挿しProMicroを載せた上でマスキングテープで基板に固定します。(ダイオードのとき同じ要領)裏返してピンヘッダをはんだ付けします。

f:id:ymotongpoo:20200808235354j:plain

タクトスイッチのはんだ付け

これも脚が折れていて長さが基板に合ったタクトスイッチを使う分には必要ない工程ですが、自分が買った安いタクトスイッチは穴にはめ込むように作られているものだったので、脚を伸ばしたり曲げたり切ったりして調整してからはんだ付けしました。

f:id:ymotongpoo:20200809000211j:plain

これも表面実装で地味に面倒でした。

キースイッチの取り付け

上下プレートがあったので、まずキーを上プレートにはめ込みます。意外と硬かったのでPCBを割らないように気をつけながら片側15個、両側で計30個をはめ込みます。

そのあと基板のキースイッチ用の穴にハマるように乗せてあげて、ズレがないか確認し、確認ができたらはんだ付けします。はんだ付けが終わった後はProMicroが載る位置のキー2つのピンをしっかり切り落とします。上からProMicroをかぶせてみて下からキースイッチのピンが当たっていないかを確認します。

f:id:ymotongpoo:20200809005737j:plain

ProMicroのはんだ付け

はんだ付けの最後としてProMicroをピンヘッダにつけます。

f:id:ymotongpoo:20200809011731j:plain

左右でProMicroの載せ方が表裏逆向きになっていることに注意してはんだ付けします。はんだ付けが終わったら、片側ずつPCに接続してみてそれぞれ片手だけで反応しているか確認をしたあと、両手をTRRSケーブルで繋いで全体としてキーボードとして機能しているか確認します。

下プレートのネジ止め

アンダーグローを実装しない場合はこれで必要な機能は実装されているので、下プレートをスペーサーを使って上プレートに取り付けします。M2のスペーサーとネジで固定。西川電子部品にはM2のスペーサーが10mmより長いものだと15mmしかなかったので妥協。12mmのものをAliExpressで買ったので届くのを待っています。

f:id:ymotongpoo:20200816231600j:plain

AliExpressからWS2812BのLEDテープがまだ届かないので、あとではんだ付けするということにして一旦ここで完成。

f:id:ymotongpoo:20200818094226j:plain

追記

LEDテープが届いたのでアンダーグロー化しました。

ymotongpoo.hatenablog.com

おわりに

Gherkinでの失敗があったので、今回は一つ一つゆっくり確認して作ったので、安心して制作できました。今後もゆっくり着実に作りたいものです。

参照

他にもビルドの報告は見かけましたが、本当に完成したことの報告だけだったりしたので、ここでは材料やビルドの際にこれらの写真や記録があったおかげで組み立てられた、というものを並べておきます。

*1:勝手な思い込みで家にあるM3のスペーサーとネジが使えると思っていたら、実際はM2だったことに後で気が付きました。他の秋葉原に行ったときに西川電子部品に寄れば良かったのに忘れたので2度秋葉原に行くことになりました。

Gherkinを作った #Gherkin

はじめに

こんにちは、StackdriverあらためGoogle Cloud Operations担当者です。Caravelle BLE、Claw44、Helixと立て続けにキーボードを作っていますが、Helixのキットをサルベージする前に30%キーボードを作ってみたいと思いGherkinを発注していたのでした。Helixのほうが公開が先になっているので先に取り組んでいたと見せかけて、実はGherkinのほうが先に取り組んでいたのですが、トラブルがあり順番が前後してしまいました。

用意したもの

品名 個数 備考
Gherkinキーボードキット 1セット TALP KEYBOARDから購入
ProMicro 1個
Cherry MX互換キースイッチ 30個 Kailh BOX黒を遊舎工房より購入
Cherry MX用キーキャップ 30個 DSAプロファイル
microUSB-USB-Aケーブル 1本 なんでもよい

キットなので細かい部品のことを考えなくて済むのが楽ですね。コロナ禍に入る前は会社のメイカースペースを使ってアクリル板とかを切れたので、これくらいのキーボードであればPCBだけの注文にしていたのですが、いまはアクリル板を切るのすらいちいち発注しないといけないのでキットで買えるものはそうしています。

ビルドログ

TALP KEYBOARDの商品紹介ページにリンクしてあるこちらのビルドガイドを参考にしながら組み立てました。ここに書いてある工程は基本そのまま行ったと思ってください。ここに載っている写真は主に補足的なものです。

blog.bomberowl.org

また工程の写真はこちらのアルバムに残しています。

photos.app.goo.gl

ダイオードのはんだ付け

まずスイッチングダイオードを基板に取り付けます。リードベンダで予めリードを曲げておいてから基板の上側からダイオード用の穴に通します。カソード側(黒い帯がある方)が四角いランドになるように確認しながら挿し込みます。ダイオードを穴に通したら、マスキングテープで固定して、基板の下側からはんだ付けします。

f:id:ymotongpoo:20200805211203j:plain

基板の導通確認

上のビルドガイドにあるようにダイオードのはんだ付けが終わった時点で導通確認をします。ProMicroを載せる部分のピンにテスターの黒いプローブ、キースイッチに赤いプローブを当て、正しくピンが導通しているかを確認します。

(上のビルドガイドより転載) f:id:ymotongpoo:20200814002736p:plain f:id:ymotongpoo:20200814002748p:plain

ProMicroのピンヘッダをはんだ付け

写真は残してないですが、ProMicro付属のピンヘッダの脚が短い方を基板に挿した上でProMicroを載せ、その状態でProMicro含めピンヘッダをマスキングテープなどで基板に固定します。その状態で基板を裏返し、ピンヘッダをはんだ付けします。この基板はコンスルー非対応のようなので使えませんでしたが、使える基板であれば万が一失敗したときのことを考えると確実にコンスルーが良いなと思いました。他の方法としては次点としてProMicroのソケット化などがあると思います。

コンスルーyushakobo.jp

何かあってもProMicroをピンヘッダから引き抜くためにハンダを頑張って吸い取る、というような手間が発生しないのは本当に素晴らしいですし、事故があってProMicroを引き抜く際にProMicroを破損することを考えたら絶対に安いので保険だと思ってこちらを使うことをおすすめします!(実際に事故ったので悲痛な気持ちでコメント)

キースイッチの取り付け

アクリルプレートにキースイッチを挿し込んだあと、ひっくり返してピンが天井を向く状態にしてから、基板を載せます。ProMicroが載る側(下側)が見える状態にして載せます。

f:id:ymotongpoo:20200806164259j:plain

買ったキースイッチだと真ん中の突起があまり出ていないため穴の奥まで刺さらず、そのためそのままだと固定が難しいので、マスキングテープで上プレートと基板を固定します。その状態でキースイッチをはんだ付けします。

ProMicroのはんだ付け

キースイッチのはんだ付けが終わったらProMicroをはんだ付けします。

f:id:ymotongpoo:20200806222109j:plain

はんだ付けする前に、ProMicroと基板の間に隠れてしまうキースイッチやダイオードのピンはできる限り切り取っておきます。さらに、その上からカプトンテープで仮絶縁したあとに、プラ板や紙テープなどで確実に絶縁します。これを怠ったがために、あとでものすごい手間の手戻りが発生しました。

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

ここまで来たらキーボードとして動作するか確認します。QMK Toolboxやqmk_firmwareを使ってProMicroにファームウェアを書き込みます。とりあえずテストなので、QMK Configuratorを使ってデフォルトキーマップのファームウェアを落としてきて、QMK Toolboxで書き込みました。試してみると、W、I、F、Space、Escが反応しない。よくよく調べてみるとどうもそれらのキーが押されっぱなしの状態になっているような印象。そこでそれらのキーを数字の1、2、3、4、5に割り当てたファームウェアを焼き直し、ふたたびPCに接続してみると、

$ 12345555555555555555555555555555555555555555555555555

と押し続けられる様子が確認できました。(ビルドログのアルバムにある動画でその様子が確認できます)はんだ付けを一通り確認してみるも、見えているものに関して言えば問題はなさそう。困った...自分では原因が思いつかないのでSelf-Made Keyboard in Japanの皆さんに相談してみました。

問診中

これまでのビルドログや写真を見てもらって、様々な懸念点を指摘してもらいました。

  • 「ケーブルを接続しただけで入力されてしまうということは、基本的には半田付け箇所かピンの足がどこかとくっついてしまっていると考えられます。そのあたりに注意して見ると良さそうです。」
  • 「このタイプの実装方法だとメイン基板から出ているキースイッチの足でPro Microの内部配線が短絡してる、とかいう可能性もあるかもしれない」
  • 「写真から分かる範囲のProMicroの半田付けは綺麗なように見えますね」「ええ、写真から見える範囲は問題なさそうなので、あとは裏側か実はレジストがずれてて運悪く入力される方にショートを起こしてるか…ですね」「外すの大変だと思うので、とりあえずショートしてないかテスタで確認してみるとか?」

とりあえずショートした箇所がないか、テスターで確認したところ、ProMicroのRST側とGNDと、押しっぱなしの症状がでているキーがいずれもショートしていました。はんだ付け箇所は特に怪しい部分もなさそうだし、やはりいちばん怪しいのはProMicroで隠れている部分。仕方がないので、ProMicroを取り外すことを決意しました。

ProMicroの取り外し

ProMicroの取り外しには「はんだシュッ太郎」とハンダ吸い取りリボンを使いました。

シュッ太郎のコテ先は温度調整ができないうえに結構高温になるため、あまり押し付けすぎるとピンヘッダのプラスチック部分まで若干溶け出してなかなか加減が難しかったです。またハンダ吸い取り機能に関しても、真空にできるわけではないので吸い込みも思うようにはいかず。1時間半ほど格闘してようやくProMicroを引っこ抜けたのですが、ProMicro側のスルーホールが完全に剥がれました...

f:id:ymotongpoo:20200814140057p:plain

無残なProMicroさん...

f:id:ymotongpoo:20200814141727p:plain

仕方がないですね。ProMicroは替えれば済む話ですが、ここにある基板は一枚しか無い!というわけでProMicroを外した状態を見てみると、隠れていたピンが明らかに怪しい。きれいに出っ張ったピンを切って低くした上で、絶縁のためにカプトンテープを貼ります。

f:id:ymotongpoo:20200814141935p:plain

この状態で再度各ピンヘッダと対応するキースイッチの導通確認をして、かつショートしていたGNDと各ピンがこの状態ではショートしていないことを確認しました。ProMicroを抜いた状態でショートが起きていたということはやはりProMicroと基板が接触していたせいとしか考えられないため、今回のようにカプトンテープで絶縁した状態なら再発しないであろうという自信の元に再度ProMicroをはんだ付けします。(キットに付いてきたProMicroはご覧の通りピンがだめになってしまったので、家に予備として置いてあった代替品を載せます)

f:id:ymotongpoo:20200814143236p:plain

はんだ付けしてしまったあとでコメントを頂いて「確かにそのとおり....!!!」とおもったのは

カプトンテープを過信すると同じことになりそうなので厚みが大丈夫そうなら紙か適当なプラのシートをいれたい

TALP KEYBOARDさんにはお手間だと思いますが、ぜひプラシートも同梱していただき私と同じような事故に遭う人を減らしてほしいです!さてこれで再度ファームウェアを焼いてPCにつなぎ入力テストをしてみると....

無事に正常に入力できました!!!多くの皆様からの助言を頂いたおかげでめげずに復旧できたので、SMKIJの皆様には感謝です。

最終組立

無事入力できることがわかったので、ケースをネジ止めして、キーキャップを取り付けて完成です。

f:id:ymotongpoo:20200814143709p:plain

f:id:ymotongpoo:20200814143812p:plain

リセット用のタクトスイッチをつけるか迷いましたが、ケースを付けてみると基板裏側につけてしまった場合結局ケースを外さなければならなくなるため、ファームウェア側に RESET のキーコードを入れる方向で対応することにしました。

反省点

今回の反省点と学びは以下のとおりです。

  • ピンはちゃんと切る
  • 絶縁はちゃんとする
  • テスターはとても便利
  • 可能な限りProMicroはコンスルーを使うかソケット化して載せる

書くと当たり前のことばかりなのですが、やはり身にしみて実感できると理解度が全然違いますね。ここでの反省があったので、Helixを作ったときは非常に慎重になり、結果として早く作ることができました。

ymotongpoo.hatenablog.com

キーマップ

30キーしかないということは、アルファベット26文字+4キーしかないということで、かつ普段アルファベットと同じか、下手するとそれ以上に入力しているSpaceやEnterも入れると、もう2キーくらいしか遊びがありません。それだけでShiftやCtrl以外も入れようとしても無理なので、レイヤーを多用することになります。

GherkinのデフォルトのキーマップはQWERTY風にしていつつ、最下段がbが右側に来ていたり、レイヤー遷移に多少の無理が見られるので、このあたりをチューニングしていくのはかなりの試行錯誤が要るなと感じます。foobarも今後組み立てていくことですし、気長にやっていきます。

おわりに

はじめての30%キーボードとしてGherkinをなかば洒落で作ってみたわけですが、意図せずに多くの学びを得ることができる作業となり、今後も自作キーボードを楽しんで作っていくための良い苦労となりました。次は積みキーボードとなっている、同じく30%キーボードのfoobarを作ろうと思います。

また今回はSMKIJの多くの皆様の助言に支えられました。この場を借りて改めて感謝いたします。

本記事はGherkinを使って書かれました、と書きたかったところですが、全然うまく入力ができず、まだキーマップを考えているところなので、取り急ぎ本記事の大半はHelixを使って書きました。キーマップのところだけ意地でGherkinで書きました。