円形ディスプレイを使ってクソ工作を作ろうとして、適当に使い潰せそうなPiZeroWを探したらないような気がしたので、Keybow miniにはめて放り投げていたPiZero 1.3を使うことにしました。で、Keybow miniからPiZeroを外しているうちに、KeybowをRaspberry Pi Picoで使えるようにしたら面白いのではと思いついてしまい、脱線してPicoいじりをしていました。
Keybow
おさらいすると、PimoroniのKeybowは、Raspberry Pi Zeroを組み込むことを前提にした自作キーボードキットです。テンキー型の12キーのものと、PiZeroサイズに収まる3キーのものがあります。
Keybow Kit (12-key) with Pi Zero WHshop.pimoroni.com
Keybow Kit (3-key)shop.pimoroni.com
ちなみに今回ネタにするPico化を頑張らなくても、これから欲しくなった人には最初からRP2040が使われているKeybow RP2040という16キーのキーボードも販売されています。
やっていき
今回は以前Pimoroniで買い物したらおまけで付いてきたPicoを使います。Keybow miniのピン配置をpinout.xyzで参考にしつつ、aitendoのPiZeroサイズのプロトタイプボードに必要なピンヘッダーをつけて、雑に配線していきます。
5VとSPIはLED用ですが、CircuitPythonのDotStarライブラリで実装できたので、これらも配線しました。Mini向けならあとき3.3VとGNDと3つ分のキースイッチの配線をして終わりですが、今回は欲張って普通のKeybowにも使えるように全部配線しました。
配線後のようす。初めてエナメル線を使いましたが、数が多くなるとPicoが浮くw
動作確認できたらあとはPicoをプロトタイプボードに接着です。これも今回ついにはじめて、イギリスで買ってきて使わずに冷蔵庫で放置されていたSugruを使ってみたんですが、固まるまで我慢できずにケーブル抜き差しをしているうちに剥がれてだめになってしまい、ただの汚れになりました……。
結局、汚れを全部取り除いたあとはいつものホットボンドで接着しました。
コード
Picoのスクリプト置き場のCircuitPythonのところに放り投げました。各キーのGPIO配置対応表はREADMEに記載しました。
各キー単一のキーコード割り当てと、キーが押されたときに光らせられる単機能なものですが、設定ファイルの書き方だけでKeybowとKeybow miniの両方に対応できるようになっています。複数キーコード組み合わせ溶かしたいときは適宜書き換えてもらったらいいかなと思います。
結果とまとめ
PiZeroで動かすKeybowは専用OSが用意されているため、Raspberry Pi OSを起動するよりも早く立ち上がりますが、それでも使えるようになるまで15秒くらいかかります。Pico化すると1秒ちょっとで使えるようになるので、起動時間を大幅に減らすことができます。たぶん消費電力も削減できる(PicoのLED無点灯&待機中は0.02Aでした)ので、すでにKeybowを使っている人はPico化の価値がありそうです。これからの人は、用途によりけりですが、冒頭に挙げたKeybow RP2040を買うのが手っ取り早いと思います。
こんな感じで、Raspberry Pi向けのキットだったけど、RP2040化できる追加ボードなんかが作られると良いかもですね〜。