あっきぃ日誌

鉄道ブログのような技術系ブログのようななにか

Pimoroni KeybowをRaspberry Pi Picoで使えるようにしてみる

円形ディスプレイを使ってクソ工作を作ろうとして、適当に使い潰せそうな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キーのキーボードも販売されています。

Keybow 2040shop.pimoroni.com

やっていき

今回は以前Pimoroniで買い物したらおまけで付いてきたPicoを使います。Keybow miniのピン配置をpinout.xyzで参考にしつつ、aitendoのPiZeroサイズのプロトタイプボードに必要なピンヘッダーをつけて、雑に配線していきます。

pinout.xyz

5VとSPIはLED用ですが、CircuitPythonのDotStarライブラリで実装できたので、これらも配線しました。Mini向けならあとき3.3VとGNDと3つ分のキースイッチの配線をして終わりですが、今回は欲張って普通のKeybowにも使えるように全部配線しました。

pinout.xyz

配線後のようす。初めてエナメル線を使いましたが、数が多くなるとPicoが浮くw

f:id:Akkiesoft:20210815123917j:plain

動作確認できたらあとはPicoをプロトタイプボードに接着です。これも今回ついにはじめて、イギリスで買ってきて使わずに冷蔵庫で放置されていたSugruを使ってみたんですが、固まるまで我慢できずにケーブル抜き差しをしているうちに剥がれてだめになってしまい、ただの汚れになりました……。

f:id:Akkiesoft:20210815124204j:plain

結局、汚れを全部取り除いたあとはいつものホットボンドで接着しました。

f:id:Akkiesoft:20210815124024j:plain

コード

Picoのスクリプト置き場のCircuitPythonのところに放り投げました。各キーのGPIO配置対応表はREADMEに記載しました。

github.com

各キー単一のキーコード割り当てと、キーが押されたときに光らせられる単機能なものですが、設定ファイルの書き方だけでKeybowとKeybow miniの両方に対応できるようになっています。複数キーコード組み合わせ溶かしたいときは適宜書き換えてもらったらいいかなと思います。

結果とまとめ

PiZeroで動かすKeybowは専用OSが用意されているため、Raspberry Pi OSを起動するよりも早く立ち上がりますが、それでも使えるようになるまで15秒くらいかかります。Pico化すると1秒ちょっとで使えるようになるので、起動時間を大幅に減らすことができます。たぶん消費電力も削減できる(PicoのLED無点灯&待機中は0.02Aでした)ので、すでにKeybowを使っている人はPico化の価値がありそうです。これからの人は、用途によりけりですが、冒頭に挙げたKeybow RP2040を買うのが手っ取り早いと思います。

こんな感じで、Raspberry Pi向けのキットだったけど、RP2040化できる追加ボードなんかが作られると良いかもですね〜。