QMK FirmwareをRaspberry Pi Picoで使ってみる


QMK Firmwareが待望?のRP2040に対応したので使ってみました。


試した時点(2022/07/22)ではdevelopブランチにマージされていました。
(8月にmasterブランチへマージされました。)
"qmk new-keyboard"でファームウェアの雛形を作る時に"RP2040"が選択できるようになっています。
ドキュメントを見ながら、ファームウェアを設定します。
github.com
以前の作ったキーボードで使ってみます。
yyoshisaur.hatenablog.com
今回試した機能は、ロータリーエンコーダ、LED(WS2812)、OLEDディスプレイ(I2C)です。
Raspberry Pi Picoは以下のようにピンを使用しています。

1年ぶりぐらいにQMK Firmwareをアップデートしたので、設定方法が変わっていました。
キーレイアウトはinfo.jsonで設定しましたが、そのほかの機能の設定方法が分からなかったので、rules.mkやconfig.hに記述する方法で設定しました。

ロータリーエンコーダ

GPIO6とGPIO7を使っています。

# rules.mk
ENCODER_ENABLE = yes
// config.h
#define ENCODERS_PAD_A { GP6 }
#define ENCODERS_PAD_B { GP7 }

LED(WS2812)

GPIO22を使っています。
WS2812の制御にはPIOドライバーを使用するようなので、"WS2812_DRIVER = vendor"と設定しました。

# rules.mk
WS2812_DRIVER = vendor
RGBLIGHT_ENABLE = yes
// config.h
#define RGB_DI_PIN GP22
#ifdef RGB_DI_PIN
#    define RGBLED_NUM 10
#    define RGBLIGHT_HUE_STEP 8
#    define RGBLIGHT_SAT_STEP 8
#    define RGBLIGHT_VAL_STEP 8
#    define RGBLIGHT_LIMIT_VAL 255
#    define RGBLIGHT_SLEEP
/*== all animations enable ==*/
#    define RGBLIGHT_ANIMATIONS
#endif

OLEDディスプレイ(I2C)

SDAはGPIO4、SCLはGPIO5を使っています。
Sparkfun Pro Micro RP2040のピンレイアウトがデフォルトになっているようで、I2CはデフォルトではI2C1を使用するようになっています。今回のキーボードはI2C0のGPIO4とGPIO5を使うので、mcuconf.hを作って設定を変更しました。

# rules.mk
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
// config.h
#define I2C_DRIVER I2CD1
#define I2C1_SDA_PIN GP4
#define I2C1_SCL_PIN GP5
// mcuconf.h
#pragma once

#include_next "mcuconf.h"

#undef RP_I2C_USE_I2C0
#define RP_I2C_USE_I2C0 TRUE

#undef RP_I2C_USE_I2C1
#define RP_I2C_USE_I2C1 FALSE
// halconf.h
#pragma once

#define HAL_USE_I2C TRUE

#include_next <halconf.h>

書き込み

ビルドすると.uf2ファイルが出来ます。
bootselボタンを押してマスストレージとして認識させて、.uf2をコピーします。
ファームウェア書き込み後は、KMK FirmwareやRPK Firmwareのようにストレージとして認識されることはありませんでした。

使ってみた感想

久しぶりのQMK Firmwareをアップデートしたので色々変わっていて少し戸惑いましたが、Raspberry Pi Picoを搭載したキーボードでQMK Firmwareを使うことができました。
今回試してみた機能の設定自体はピンを設定するだけで特に難しいことはありませんでした。分割キーボードの機能は試せていないので、ブレッドボードなどで試してみたいと思います。
KMK FirmwareやRPK Firmwareと比べて、PCと接続してキーボードとして認識されるスピードがとても速くなりました。
Tap-Holdの挙動はQMK Firmwareの方が個人的には使いやすいので、快適になりました。これだけでQMK Firmwareを使う価値がありました。
Pro Microが値上がりする中、Raspberry Pi PicoなどのRP2040ボードは今のところ値段据え置きで種類も多いので、今後はRP2040に移行するのもよいかなと思いました。