hasumikin.com

hasumikin is a programmer.

[PRK Firmware Advent Calendar 2021] 光るCorneliusとPRK Firmware

2021年「PRK Firmware アドベントカレンダー」最終回のおまけです(本編はこちら)。これがほんとうに最後の記事です。

Corneliusというキーボードをご存じでしょうか?
ことしGB(共同購入)があり、国内の割り当て分は秒で完売したキーボードです。
筆者も購入しました。
たしか9月くらいに届いたのですが、RubyKaigiなどで忙しかったため組み立てることなく、積んでいました。

積んでいた理由はそれだけではありません

CorneliusはMCUがRP2040ではないので、PRK Firmwareで動かすことができません。
PRK作者としてはPRKをインストールしたキーボードをタパタパしたいのです。
RP2040を載せた基板を製造すればいいのですが、PCBAはお金がかかるし、いろいろ面倒です。
あのMCUを手ハンダする気にもなれません。
などと考えながら、Corneliusのオリジナル基板とPro Micro RP2040を眺めていて、気づきました。

(黒い基板はCorneliusのオリジナル基板。赤いのがSparkFun Pro Micro RP2040)

端面スルーホール!

Pro Micro RP2040の基板の両端が端面スルーホールになっていますね。

端面スルーホールというのは、ホールの中線が基板の端になるように設計し、そのとおりにカットしたものです(実際には単にカットするのではなく、正しく回路の一部になるような製造上のケアが必要です)。
というわけで、KiCad6.0.0-rc1の練習がてら、こういう基板をつくりました。上がオリジナル基板(の裏面)、下が今回つくった基板(の表面。1.2mm厚):

端面はこんなかんじ:

そして、SparkFun Pro Micro RP2040をこのようにハンダ付けします(下にハンダをはじく素材を敷くとよいでしょう。不要な基板のベタ面とか。露出しているピンにくっつかないように注意)。マクロで撮ると汚い…:

反対側にもハンダ付けして補強:

ほら、これでRP2040をアセンブルしたCornelius基板になりました!

ただし、端面スルーホール同士を付き合わせてハンダ付けするのは通常の使い方ではないと思います。
長期的にはハンダが痩せて割れたりするかもしれません。
今回つくった基板は、Corneliusの金属ケースをそのまま生かすための趣味の工作です。

PCB製造クオリティががが

しかしここから先がスムーズにいきませんでした😔
PCBの切削精度が悪かったのです(業者名は伏せます)。
Kailhソケットのはまる穴が小さく、丸型の棒ヤスリで広げる必要がありました。
RGBLED(SK6812MINI-E)を取り付ける角穴も写真のような有り様。。。LEDが角穴に入らなかったので、角型の棒ヤスリで穴を広げました。
これが最も大変な作業でしたw

パーツの向き(備忘録)

そのほか

ProMicroの背の高い部品が干渉するので、ボトム用のフォームにこういう穴を空けます(きれいにカットするのは案外難しいです。カッターよりもハサミのほうがやりやすいかもしれません):

上の写真からわかるように、QWERTY配列でいうところのTとYのキーはホットスワップではなくソルダリングです。
ソケットを配置すると、Pro Microとの取り合いが悪いためです。
全スイッチをソルダリングにしなかったのは、仮にPCBの設計をミスっていたときにスイッチを無駄にしないためです(結果としてはミスっていませんでした🎊)。

そしてこのように、USBコネクタがぴったりボトムケースにはまります!:

それと、PRK FirmwareをバージョンアップするときにはRP2040をBOOTSELモードで再起動する必要があります。
Corneliusのケースにはそのためのリセットボタンを露出させる場所がないので、一番左下のキー({row: 3, col: 0} と書くとわかりやすいでしょうか?)をスイッチマトリクスに接続せず、Resetピンにつなぎました。
そのぶん利用可能なキーが減りますけど、まあいいです。
このスイッチをダブルタップすると、BOOTSELモードになりますので、ファームウェアのインストールが簡単にできます。

そんでもって完成!

じゃーん🎉

ついに、PRKで動く(しかも光る✨🌈)Corneliusが手に入ったのです❗
2021年を締めくくるのにふさわしい工作ができましたね。


ビルドガイドみたいな記事を書いておきながら恐縮ですが、今回ご紹介した基板を販売する計画も、基板データを公開するつもりもありません。
オリジナルのCorneliusにけちをつける気は毛頭なく、PRKの作者としてはただただCorneliusをPRKで動かしたい、というだけの思いでこの基板を個人的に製作し、未来の自分のための備忘録としてこの記事を書きました。


これで2021年のPRKアドカレがすべて終わりました。
まさか25枠がすべて埋まるとは思っていませんでした😭
執筆いただいたみなさまありがとうございました!

PRK Firmwareにはまだまだ開発バックログが積まれているのですが、年明けからしばらくはPicoRubyの開発に集中します。
たぶん春くらいからPRKを再始動しますので、OLEDまだかーとかDuplex Matrixも要るだろ!とかご意見あるかと思いますが、堪えてください。
なんならこの間に開発してプルリクをくれてもよいのですよ?(そう簡単にはマージしませんけど😏 こっちの記事参照

ではではみなさん、よいお年をお迎えください!