RP2040で動作するキーボードファームウェアについて(2022年12月版)

この記事は、キーボード、自作キーボード Advent Calendar 2022 の4日目の記事です。

前の記事は、ikeji さんの「今年作ったキーボードまとめ(2022)」でした。独創的なキーボードを次々と生み出すその発想力に脱帽です。何をどうしたらGBoard 棒バージョンとか思いつくんですかね。すごいしか出てこない。

RP2040で動作するキーボードファームウェアについてまとめた記事が見当たらなかったので、これ幸いと書いてみました。ついでにRP2040ボードについてもいくつか紹介します。


目次


⌨️RP2040対応ファームウェア

2021年頃から、多様なキーボードファームウェアがリリースされてきました。ここに挙げた以外にもいろいろあるかもしれません。「これを忘れちゃいかんでしょう」というのがあれば、当記事末尾のDISQUSコメントやTwitterなどでぜひ教えてください。


⌨️QMK Firmware

自作キーボードのファームウェア界隈では大御所のQMK Firmware(以下QMK)ですが、2022年ついにRP2040に対応しました。

豊富な機能を持ちカスタマイズ性が高いのが特徴です……が、私はQMKをちゃんと触ったことがなく誰かがビルドしてくれたファームウェアを使ったことしかないので、大したことは書けません😇

使い方については公式ドキュメントを読むのが確実です。バージョンアップで新機能が追加されたりそれまでの機能が変わったりするので、使うバージョンにあった公式ドキュメントを読むのが良いようです。


⌨️KMK Firmware

RP2040対応ファームウェアとして私が最初に知ったのが、KMK Firmware(以下KMK)です。

KMKはキーボードの動作やキーマップをPythonで記述することができます。また、書いたコードがビルド等を必要とせずすぐ動作するのも特徴ですね。この即時性は試作用途などで特に威力を発揮するのではないでしょうか。

使い方については公式ドキュメントを読むとよさそうです。


⌨️PRK Firmware

RP2040対応ファームウェアとして私が次に知ったのが、PRK Firmware(以下PRK)です。PicoRuby Keyboard Firmware の略だったかな?

PRKは、キーボードの動作やキーマップをRubyで記述できるのが特徴ですね。keymap.rbを書くだけでいろいろカスタマイズでき、ビルド不要で動作します。書いて試して少し直してまた試す、のサイクルが素早く回せるのはとてもありがたいです。

また、作者が日本の方であるのも特徴の一つでしょうか。私のような日本語話者にとって、日本語で質問ができるというのはとても心強いです。あ、でもGitHubでissueたてるときは英語にしましょうね。大丈夫、DeepL先生などを頼ればそんなに難しくないです。

※2022年12月7日追記


作者の @hasumikinさんから、補足していただきました🙇 issueは日本語でもいいとのことです!

使い方は公式のWikiにまとまっています。


⌨️Kermite

Kermiteは、ファームウェアおよびエコシステムの名称です。……というとよくわからないかもしれません。

ファームウェアだけでなく、以下のツールや機能が標準で提供されているのがKermiteです。

  • キーマップのカスタマイズができるWebブラウザツール
  • 自設計キーボード向けファームウェアをプログラミング不要で作れるウィザード
  • キーマップ共有サイト

自作キーボードでキーマップを変更するツールとしてはRemapが有名ですが、そういう「Webブラウザでキーマップが変更できる」というのがKermiteでは標準で提供されています。プログラミングになじみが薄い方にはありがたいのではないでしょうか。

使い方は公式のスライドを見るとわかりやすいです。「既存のキーボードを利用するとき向け」と「新しく作ったキーボードのファームウェアを作るとき向け」、2種類のスライドが用意されています。


🎛RP2040を使用したマイコンボード

ファームウェアのついでにマイコンボードも紹介します。

RP2040を使用したマイコンボードは、2022年12月現在で様々なものがリリースされています。ここではメジャーどころ(と私が思っているもの)の一部を紹介します。

各ボードへのリンクは、公式のものではなく日本国内で購入しやすいリンクを選びました。


🎛Raspberry Pi Pico

Raspberry Pi Pico(以下PiPico)は、Raspberry Pi財団が開発したマイコンボードです。RP2040搭載ボードの先駆けといえるでしょう。ピンヘッダ実装済みのRaspberry Pi Pico Hや無線LAN機能を搭載したRaspberry Pi Pico Wなど、いくつかのバリエーションがあります。

PiPico、リリース当初は円安が進んでいなかったこともあって結構安価に入手できました。まあ今でも安価は安価なんですが。

コネクタがMicro-Bなのがちょっとつらいところではありますが、D+とD-が引き出されているのでUSB-Cブレイクボードと容易につなげることができます。この仕組みは拙作SQU4REkb-6でも採用しました。


🎛SparkFun Pro Micro - RP2040

ピンの位置がPro Microと同じなので、Pro Microで動作するキーボードのマイコンボードを置き換えることが可能です。その場合ファームウェアは自分で用意する必要があります。


🎛Adafruit KB2040

ピンの位置がPro Microと同じなので、Pro Microで動作するキーボードのマイコンボードを置き換えることが可能です。その場合ファームウェアは自分で用意する必要があります。

ただし、同じピン位置であってもピンの機能はSparkFun Pro Micro - RP2040と異なる部分がありますので、ファームウェアを書く際は注意が必要です。ピン位置についてはPRKのWikiに詳しく説明されています。


🎛Seeed XIAO RP2040

コンパクトなボードです。GPIO数が少なめなので、省スペースなキーボードやマクロパッドに向いていると思います。

DIY Keyboard Contestでさらに有名になったような気がします。

拙作Joker8で採用しました。


🎛Waveshare RP2040-Zero

こちらもコンパクトなボードです。コンパクトですが使えるGPIO数はSeeed XIAO RP2040より多いので、使い勝手が良いです。日本国内で購入できるものの中では安価(2022/12/3時点で671円)なのも嬉しいですね。

こちらを採用したキーボード「Let’s Swamp」を現在開発中です。


🎛Raspberry Pi Pico 互換機

PiPicoとほぼ同じピン配置でコネクタはUSB-C、という互換ボードがいくつかリリースされています。上のリンクはそのひとつです。

Micro-Bは嫌だ!という方はこちらを検討してみるのもよいでしょう。ただ「ピン位置はPiPicoと同じだけどGND等の位置が違う」という罠ボードもたまにありますので、某アリエクなどで物色する際はご注意ください。上記リンクのものはほぼ互換なのでわりと安心して使用できますが、高さ方向の互換性には注意が必要でしょう。


終わりに

RP2040で良きキーボードライフを!

この記事は、試作キーボード「SQU4REkb-U(仮称)」で書きました。
次の記事は 0002ozlet さんの「今年作った自作キーボードについて」の予定です。