スイッチ1個・ハンダ付けなしでZMKワイヤレスキーボードのPoCを作る
これはなに 現在愛用中の自作キーボードは、Pro Micro + QMK Firmwareという定番構成の有線キーボードなのですが、これの完全無線化バージョンを作りたいと思い立ちまして、手始めにXIAO nRF52840とZMKに触ってみることにしました。 まずは最小構成で「ZMKの設定リポジトリ作成 → ビルド → 書き込み → Bluetooth接続」までの一連の流れを体験してみたので、この記事ではその内容を共有します。 用意したのはスイッチ1個だけです。ハンダ付けもブレッドボードも使わず、マイコンのパッドにICテストフックを挟むだけの配線にしました。PoCが終わったあとも、パーツを元の状態に戻しやすくするためです。 ハードウェア構成 マイコン: Seeed Studio XIAO nRF52840 スイッチ: Cherry MX互換のキースイッチ1個 配線: XIAO本体のパッドにICテストフック(グラバー)を直接クランプし、スイッチの端子へ2本だけ配線 D0(P0.02) → スイッチの一方の端子 GND → スイッチのもう一方の端子 外付けのプルアップ抵抗はなし。GPIOの内部プルアップに依存 電源: USB-C給電(モバイルバッテリー) 配線はこんな感じです。 ハンダ付けなしで気軽に試せるように、モバイルバッテリーからUSB-C給電しつつ動かしました。キーキャップには実際に送信するキーコードと同じ「A」を貼っています。 ZMK設定リポジトリを作る ZMKには公式のZMK CLI(uv tool install zmk→zmk init)が用意されていて、対話的にGitHubリポジトリの作成までできるようです。ただ今回は、生成される構成をきちんと理解したかったので、ZMK公式のunified-zmk-config-templateをベースに、必要なファイルを手で組み立てました。 最終的にできたリポジトリはこちらです。 hhiroshell/zmk-config ディレクトリ構成は次のようになりました。 zmk-config/ ├── .github/workflows/build.yml # ZMK公式の再利用可能workflowを呼ぶだけ ├── boards/shields/single_key/ # 自作シールド本体 │ ├── Kconfig.shield │ ├── Kconfig.defconfig │ ├── single_key.overlay # ハードウェア定義(kscan / GPIO) │ ├── single_key.keymap # キーコード │ └── single_key.conf ├── build.yaml # ビルドマトリクス(board + shield の組み合わせ) ├── config/west.yml # ZMK本体を取得するmanifest └── zephyr/module.yml # このリポジトリをboard/shieldの検索パスに登録 ポイントはzephyr/module.ymlです。 ...