Link Search Menu Expand Document

Tips

  1. LED表示の意味
  2. 自作キーボードを無線化する
    1. 無線関連の制御キーの割り当て
    2. モバイルバッテリーを長持ちさせるには
      1. LEDをつけない
      2. 適度にマイコンをスリープさせる

LED表示の意味

USBのオス側を下にした状態で左側のLEDがLED1、右側がLED2です。

状態 パターン
起動 LED2が3回点滅
接続先を探索中 LED2が5秒間隔で点滅
接続完了 LED2が長めに1回点灯
キー入力などのイベント LED1が点滅

自作キーボードを無線化する

無線関連の制御キーの割り当て

自作キーボードを無線化する目的でQuantizer Bを使用する場合は、キーマップのカスタマイズは基本的に自作キーボード側で実現することをお勧めします。

そして、F13以降やLang5以降など使用頻度の低いキーを自作キーボードに割り当ててQuantizerで無線関連のキーに置き換えることで、Quantizerを介さずに有線接続したときの利便性を損なうことなく無線化を実現できます。

モバイルバッテリーを長持ちさせるには

モバイルバッテリーを長持ちさせるにはキーボード本体の消費電流を減らす必要があります。 市販のキーボードはどうすることもできませんが、自作キーボードであれば部品やファームウェアの工夫によって消費電流を減らすことができます。

LEDをつけない

LEDを点灯させると(Quantizerに比べて)大量の電流が流れます。 自作キーボードでよく使われるシリアルタイプのLED(sk6812miniなど)は点灯させていなくても常時1mA/1個くらい流れ続けてしまいます。

したがって、そもそもシリアルLEDをはんだ付けしないか、FETで単色LEDを制御するタイプの構成をおすすめします。

適度にマイコンをスリープさせる

ATmega32U4(pro microなど)の上でQMKを動かすと、数kHzでマトリクスをスキャンします(左右通信、OLEDなどを有効にすると遅くなります)。

QMKのデフォルト設定ではキーレポートのポーリングレートは(125Hz)なので、数kHzのスキャンレートは明らかに過剰性能です。

例えばmatrix_scan_userに下記のコードを追加することで、スキャンレートを落とし、余った時間はマイコンを省電力モードにできます。

#include "timer.h"
#include <avr/sleep.h>
#define SCAN_PERIOD_MS 2

void matrix_scan_user(void) {
    // 現在の時間を取得
    volatile uint16_t t = timer_read();

    // スリープモードを有効にする
    set_sleep_mode(0);
    sleep_enable();
    sei();

    // 一定時間が経過するまでCPUをスリープさせる
    do {
        // 割り込みが発生するまでスリープする
        sleep_cpu();
        // 指定時間経過していなかったらもう一度スリープする
    } while (timer_elapsed(t) < SCAN_PERIOD_MS);

    // スリープモードを無効にする
    sleep_disable();
}