Corne Chocolateを組み立てた #DIYキーボード

Posted by johtani on Thursday, December 3, 2020

目次

はじめまして、pyspa。 ということで、pyspa Advent Calendar 2020の4日目(大谷コンビの2号)の投稿になります。 コンビそろってキーボード記事ですね。

今年はDIYキーボードにはまった(はめられた?)年でした。 もともと分割キーボードには興味があり、自宅で作業するのが基本となったのもあり手を出した次第です。 まだまだ使いこなすところまでは来てないかもしれないですが、組み立てたり、問題点のキリ分けしたり、試行錯誤するのは楽しいなと。

今回はCorne Chocolateというキーボードを組み立てたのでそちらのビルドログ(かつ今後のための教訓)になります。 LEDを使ったキーボードがどんなものなのか+薄いキーボードも気になるなということで取り組んでみました。 今回もいくつか失敗をしつつ、リカバリーして動くものができました。

パーツ(材料)

基本のパーツは今回もKochi Keyboardさんから購入しました。

ケーブル類は家に転がっていたケーブルを利用しました。 キースイッチセットもあるのですが、軽いキータッチが好みなので、一番軽いKailh ChocのBlueを試してみたくキースイッチを個別に選択しました。 キーキャップはShiroを作るときに調達していたものを利用した形です。

今回も公式のビルドガイドにざっと目を通してから着手しました。

準備

ビルドログにもあるようにPCBがリバーシルブなので、作業中に迷子にならないようにこんな感じで表にマスキングテープで目印をつけておきました。

今回から耐熱ワーキングマットで作業をすることにしました。机の天板に傷つくの嫌だし。 気兼ねなくはんだできるのでおすすめです。

ダイオード、OLEDソケット、コンスルー、TRRSソケット、

こちらは前回のCorneとほぼ同様だったのでビルドガイド通りに進めます(写真撮り損ねました。。。) 前回との違いはダイオードの形です。 表面実装するタイプのダイオードなので向きに気を付けつつ、つけていきます。

ビルドガイドに向きやダイオードのつけ方が紹介されています。 拡大鏡とピンセット必須ですね。 前回同様に、ここまででいったんqmk_toolsでファームウェアをインストールして、ピンセットを使いながらキーの認識とOLEDの動作確認を行いました。 今使っているファームウェアがあるのでそれを入れて問題ないかを確認しました。

LED実装

今回のメインイベントです(そして苦杯をなめたイベントでもあります)。 ビルドガイドにも記載がありますが、信号が流れる順番があるようなので1番から取り付けていきます。 また、ビルドガイドにLEDに関する注意事項もいくつか掲載されています。必ず読みましょう。

この1~6までのLEDがすごく大変でした。。。

表面実装のLED(Underglow LED)で四苦八苦

いくつかのブログを参考にしながら作業を進めました。

皆さん苦労されてますね、そして私も苦労しました。。。

試してみた方法、考察は次の通りです。

  • LEDチェック用のファームウェアをインストールして1つつけては動作確認
  • 白光 1C型こて先
    • 失敗した後にリカバリするために購入しました。
    • LEDのランドなどが2Cよりも面積が小さいので、そのサイズに合わせたこて先のほうがよかったようです。
  • はんだの温度(温調できるはんだごて必須)
    • 最初は250℃でやっていましたが、なかなかはんだが溶けません。そのせいで焦りも出てきます。
    • 最終的には270度で作業しましたが、温度のせいでLEDが壊れたのはなかった気がします。1Cのこて先だったので無事だったのかもしれません。
  • フラックスなし
    • あると楽だったのかも?残念ながら試してないです。
  • 予備はんだ手法(だめっぽかった)
    • 基盤のランド4か所に予備はんだをし、はんだを温めつつLEDを乗せる方法
    • LEDの裏にも予備はんだ
    • どちらも試してみましたが、温めている個所以外のはんだと高さの違いが出てしまい、LEDが浮いてしまいます。4か所を同時に温めることはできないので、すこしずつ調整しているうちにLEDを物理的に壊してしまうことがありました。。。

わかった気になっていますが結局失敗しました。。。

結局最後までこれというコツはわかってない気がします。結局3つか4つのLEDがお亡くなりになりました。 うまくいかなかった原因は、予備はんだで傾きなどができ、それを修正していくうちに基盤やLEDにダメージを与えてしまったのだと思います。

よく見ると基盤が一部剥がれかけてるのがわかるかなぁと。

リカバリー

右手側の表面実装の4番と5番が失敗しました。

  • 4番目(以下のツイート右側画像の上)
    • こちらは、1度付けたLEDをはがすときにはんだを取り除くのが不十分な状態でLEDをはがしたために、基板のランドごとはがれてしまいました。
    • なのでここはLEDはつかないです。。。
  • 5番目(以下のツイート右側画像の真ん中あたりの黄色い線がつながっているLED)
    • LED自体はつけてありますが、青色しか発光しなくなっています。

4番目が完全に死んでしまったので、無事な3番目のLEDのDINに流れている信号を 5番目のLEDのDINにも流れるようにするために10芯コードでショートカットさせました。 (リカバリ方法は先ほど紹介したブログが非常に参考になりました、先人の知恵ありがたし)。 黒い線も売っていたのですが、自戒も込めて目立つ色にしてみました。

ちなみに、左側のショートカットのコードはつけた後に1か所LEDの向きが違うことに気づき必要なくなっています (上記の基盤が傷ついている画像をよく見ると上下が逆になってるのがわかる人にはわかるかも)。

最終的に2か所おかしいLEDにはなりましたが、幸いにもアンダーグローです。 Kochi Keyboardさんで購入したキットのボトムプレートはFR4なのでほぼ見えません!(負け惜しみ)

ソケット

さて、気を取り直してソケットをつけていきます。 Dozen0にて経験済みなのでそれほど手間はかかりませんでした。 LEDの失敗の時に1Cのこて先を購入していたため、ソケットの横の隙間からこて先が差し込めたのが便利でした(LEDでダメージを受けていたのもあり写真撮り忘れ)。

完成

ということで完成です。デフォルトで赤く光ってます。キーキャップがLEDを透過してくれるタイプだったのがこれまたよかったですね。 作る前は光らなくてもなんて思ってたのに。

キーマップ(v2)

Corne Lightで作業を数週間ほどして、いくつか入力しにくい部分があったのでマッピングを少しだけ変えました。 相変わらず日本語キーボードベースですが、数字のレイヤーにいくつかの記号を使えるように割り当てました。 コーディングをするときに、ライブラリのバージョン(例:7.10.0とか)やIPアドレスを入力していてレイヤー切り替えのためのキーを押したり話したりするのは効率が悪すぎたためです。 数字との組み合わせでよく使いそうな以下のキーを数字のレイヤーに移動しました。

  • セミコロン(JP_SCLN)
  • コロン(KC_QUOT)
  • アンダースコア(JP_UNDS)
  • コンマ(KC_COMM)
  • ピリオド(KC_DOT)
  • スラッシュ(KC_SLSH)
#include "keymap_jp.h"

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  [0] = LAYOUT_split_3x6_3( \
  //,-----------------------------------------------------.                    ,-----------------------------------------------------.
       KC_TAB,    KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,                         KC_Y,    KC_U,    KC_I,    KC_O,   KC_P,  JP_MINS,
  //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
      KC_LCTL,    KC_A,    KC_S,    KC_D,    KC_F,    KC_G,                         KC_H,    KC_J,    KC_K,    KC_L, JP_SCLN, KC_QUOT,
  //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
      KC_LSFT,    KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,                         KC_N,    KC_M, KC_COMM,  KC_DOT, KC_SLSH, KC_RSFT,
  //|--------+--------+--------+--------+--------+--------+--------|  |--------+--------+--------+--------+--------+--------+--------|
                                          KC_LGUI,   MO(1),  KC_SPC,     KC_ENT,   MO(2), KC_RALT
                                      //`--------------------------'  `--------------------------'

  ),

  [1] = LAYOUT_split_3x6_3( \
  //,-----------------------------------------------------.                    ,-----------------------------------------------------.
       KC_ESC,    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                         KC_6,    KC_7,    KC_8,    KC_9,    KC_0, KC_BSPC,
  //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
      KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                      KC_LEFT, KC_DOWN,   KC_UP,KC_RIGHT, JP_SCLN, KC_QUOT,
  //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
      KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                      JP_UNDS, XXXXXXX, KC_COMM,  KC_DOT, KC_SLSH, XXXXXXX,
  //|--------+--------+--------+--------+--------+--------+--------|  |--------+--------+--------+--------+--------+--------+--------|
                                          KC_LGUI, _______,  KC_SPC,     KC_ENT,   MO(3), KC_RALT\
                                      //`--------------------------'  `--------------------------'
  ),

  [2] = LAYOUT_split_3x6_3( \
  //,-----------------------------------------------------.                    ,-----------------------------------------------------.
       KC_TAB, JP_EXLM, JP_DQUO, JP_HASH,  JP_DLR, JP_PERC,                      JP_AMPR, JP_QUOT, JP_LPRN, JP_RPRN, JP_CIRC, KC_BSPC,
  //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
      KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                      JP_MINS,  JP_EQL, JP_LBRC, JP_RBRC,  JP_YEN,   JP_AT,
  //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
      KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                      JP_UNDS, JP_PLUS, JP_LCBR, JP_RCBR, JP_PIPE, JP_TILD,
  //|--------+--------+--------+--------+--------+--------+--------|  |--------+--------+--------+--------+--------+--------+--------|
                                          KC_LGUI,   MO(3),  KC_SPC,     KC_ENT, _______, KC_RALT
                                      //`--------------------------'  `--------------------------'
  ),

  [3] = LAYOUT_split_3x6_3( \
  //,-----------------------------------------------------.                    ,-----------------------------------------------------.
        RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                      XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
  //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
      RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, XXXXXXX,                      XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
  //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
      RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, XXXXXXX,                      XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
  //|--------+--------+--------+--------+--------+--------+--------|  |--------+--------+--------+--------+--------+--------+--------|
                                          KC_LGUI, _______,  KC_SPC,     KC_ENT, _______, KC_RALT\
                                      //`--------------------------'  `--------------------------'
  )
};

LEDの色が変えられる!(気づくの遅い)

あと、キーマップを変更しているときに4つ目のレイヤーにRGBなどのボタンがあるのに気付いて押してみたら、LEDのパターンや色を変えることができるのに気付きました。 (遅すぎでは。。。)

キーキャップが白いのもありこんな感じの色にしてみています。

まとめ

ということで、失敗も多々ありましたがキーボードとしてはちゃんと動くできたものができたので安心しました。 今後、状況が落ち着いてきて自宅以外で仕事をするときにはCorne ChocolateをPCと一緒に持ち歩くと思います。 薄くて邪魔にならなくてよさそうです。

今回もはんだっしゅ太郎大活躍でした。本当に買ってよかった。 LEDがつかないときはちょっと落ち込みましたが、これのおかげで立ち直れたのもありますし。 あとは、試行錯誤しつつLEDとかの理解ができたのも楽しかったです。 キーマップの変更時にLEDの変更などができるのに気づいたのはちょっと遅すぎたので、qmkの仕組みや割り当てられるキーにどんなものがあるのかをもう少し研究したいなと思います。

さて、次はどんなことを試すかなぁ。


comments powered by Disqus