PRK Firmware をSU120で使う一つの方法

この記事は、PRK Firmware Advent Calendar 2021 の7日目の記事です。
6日目の記事は hasumikin さんの「eswaiさんのPicoRubyマクロパッド製作ハンズオン開催報告」でした。
こういうリアルイベント、あこがれます。私が自作キーボードにハマったのはコロナ禍真っ最中の頃なので、キーボード関連のリアルイベントに参加したことがないのです。機会があれば参加したい……!

さて、PRK Firmwareです。昨日(2021/12/06)初めて手を出してみました。
すると拍子抜けするくらいあっさりと動いてくれまして。
感激し、Advent Calendar向け記事を書いてみようかなー、いや書くべきでは!?という使命感に駆られての当記事でございます。
そんなPRK Firmware初心者の書く記事ですので、深い内容は書いてありません。いや書けません!
軽い気持ちで読んでいただければ幸いでございます。
※誤りや不正確な点がありましたらこっそり教えていただけると助かります……。


目次


💠 前置き

自作キーボード界隈では有名な「SU120」という基板があります。

高い柔軟性を備えた基板で、様々なキー配置のキーボードを試作するのにうってつけなのです。
日本国内のショップで販売されており、入手しやすいのもありがたいところ。

んでこのSU120ですが、Pro Microというマイコンボードを使用する前提で設計されています。

話変わって、最近人気の高まりつつあるRaspberry Pi Pico(以下 Pi Pico)というマイコンボードがあります。
RP2040というマイコンを搭載しています。けっこうお安く(600円くらい)手に入ります。

しかもスペック的には前述のPro Microより高性能です。
最近はPi Picoを利用した自作キーボードキットも少しずつですが販売されるようになってきました。

このPi PicoがSU120でも使えればよいのですが、残念ながらそのままでは使えません。
Pro MicroとPi Picoにはピンの互換性が無いからです。
しかし諦めるのはまだ早い。世の中には「Pro Microピン互換でRP2040を搭載したマイコンボード」というのが既に存在しているのです。
日本国内では「SparkFun Pro Micro - RP2040」が入手しやすそうです。
(他にもあるかもしれませんが、あんまり真面目に探してません😅)

この「Pro Microピン互換でRP2040を搭載したマイコンボード」という世界に、最近新たな仲間が加わりました。
Adafruit KB2040です。紫色のニクいやつですよ。

日本国内のショップでも販売されており、入手性はバッチリです。

KB2040とSU120を組み合わせたらどうなるか。見ていきましょう。


💠 いざ実践(ハードウェア編)

まずは普通にSU120+Pro Microでキーボードを作ります。
今回はSU120公式に作例のある下記のマクロパッドを作りました。たぶんsasami17という名前です。

こんな感じになりました

続いて、Pro MicroをKB2040に差し替えます。
差し替える際には2点、注意が必要です。

まず1点目、ピンヘッダの取り付け方。
SU120+KB2040の場合、KB2040のピンD+とD-は使えません。対応する穴が開いていないので。
なので、そこを避けてピンヘッダを取り付けます。

赤く囲んだD+とD-を避けてピンヘッダを取り付けます

次に2点目、SU120への取り付け方。
Pro MicroをSU120で使う場合、通常は “SU120の表側に” “Pro Microの平らな面が外側になるように” 取り付けます。

SU120公式githubより引用

しかし同じ要領でKB2040を取り付けようとすると、KB2040付属のピンヘッダでは高さが足りずUSB-Cコネクタが干渉します。
それにBOOTSEL等のスイッチが隠れてしまい、保守性が若干よろしくありません。
なので今回は、”SU120の裏側に” “KB2040の平らな面が内側になるように” 取り付けました。
こうすれば、Pro Microを通常の方法で取り付けたときとピン配置が一緒になるはずです。

こんな感じになりました

ハードウェア的な作業は以上です。さすがピン互換、簡単ですね。
続いてソフトウェア的な作業、というかPRK Firmwareの設定です。


💠 いざ実践(ソフトウェア編)

さあ、いよいよ本日の主役PRK Firmwareのご登場です!主役は遅れてやってくるってね!
この辺の手順はいろいろなところで紹介されていますが、簡単に触れておきます。

まず、PRK公式Githubリポジトリからバイナリをダウンロードしておきます。

Windowsならzipが扱いやすいかも

次に、KB2040上の「BOOT」と書かれたスイッチを押しながら、KB2040をPCに接続します。私はWindowsなPCを使いました。
USBマスストレージとして認識されるはずです。
先ほどダウンロードしたファイルの中に、拡張子が「uf2」というファイルがありますので、そのファイルをUSBマスストレージにコピーします。

10~20秒くらい?待つと、KB2040が勝手に再起動し、再びUSBマスストレージとして認識されます。
先ほどコピーしたuf2ファイルがUSBマスストレージから消えていますが、それが正常です。
かわりにreadme.txtがありますので、目を通しておきます。どうやら「keymap.rb」をそこにコピーすればいいようです。
取り急ぎ、PRK公式GithubリポジトリにあるPiPi Gherkin用のファイルをコピーしてみました。
その後、KB2040の適当な2つのピンをショートさせてみたらキー入力がなされました。PRKが問題なく導入できたようです。
あとはSU120のマトリクスに合うようにkeymap.rbを適切に修正すればOKでしょう。

……はい、まだ「適切に修正」できてません。
というか適切に修正したつもりですが一部のキーが反応しませんでした。
keymap.rbの書き方が悪いのか、単に導通していないだけなのか、もうちょっとちゃんと調べないとダメですね。


💠 終わりに

ということで何とも尻切れトンボではありますが、一応のキー入力ができる状態までは簡単にできました、という記事でした。
石を投げないでください……。中途半端だという自覚はあるんです……。

この記事は、自作格子配列キーボード(SU120+Pro Micro)で書きました。
SU120+KB2040+PRKで常用できるキーボードが自作できれば良かったんですが、残念ながらそこまではたどり着けませんでした。
今後の宿題ですね。
Rubyをまともに触るのが初めてというのもありますので、楽しみながら無理のないペースで進めていきたいと思います!