Lunakey Picoを製作しました

昨年である2020年の8月に初めて自作キーボードキットなるものを購入して組み立ててから、もう1年が経過してしまいました。この1年間、Lunakey Miniというキーボードキットを製作し、Remapというウェブブラウザからキーマップを変更することができるウェブアプリを開発して運用を始めるなど、自分がやってきたとは思えないほどに、いろいろやってきました。

しばらくは新しいキーボードを設計することはないかな、と思っていたのですが、ひょんなことからモチベーションが生まれまして、Lunakey Miniの兄弟的なキーボードを設計しました。

そのキーボードの名は、「Lunakey Pico」です。

Lunakey Picoとは

Lunakey Picoは、MCU(キーボードの動作を司るマイクロコンピュータ)に「Raspberry Pi Pico」を採用した、左右分割型の40%キーボードです。

上の写真を見てわかるとおり、左右のキーボードそれぞれに Raspberry Pi Pico が搭載されています。中央付近にある緑色の板が、Raspberry Pi Pico です。

Lunakey Pico の特徴を以下に紹介します。

  • 左右それぞれ3行 x 6列の40%キーボード。
  • 指の長さにそれぞれフィットされたColumn Staggerd配列。
  • 親指の自然な可動範囲に合わせた親指向けキー配列。
  • Cherry MX互換だけでなく、Kailhロープロファイルも対応。
  • キーソケットの採用によるキースイッチの交換。
  • Underglow LEDによる電飾効果。
  • 圧電スピーカーによる音でのフィードバック効果。

はい、OLED に未対応なこと以外は、Lunakey Mini と特徴は同じです。MCU だけが Pro Micro ではなく、Raspberry Pi Pico を使っている、とう差のみと考えていただいて大丈夫です。もう一つ、Pro Micro よりも Raspberry Pi Pico の方が大きいために、Lunakey Picoでは基板の大きさとプレートがちょっとだけ大きくなっています。

M2 スペーサーの位置は Lunkey Mini そのままにしたので、実は Lunakey Mini のプレートをつけることもできます。ただ、大きくなった基板がちょっとだけはみ出てしまいます。

Lunakey Pico の組み立ては、基板に差し込む MCU が Raspberry Pi Pico にかわっただけで、その他はほぼ Lunakey Mini と一緒です。

なぜ Lunakey Pico を作ったのか

Lunkey Mini とそっくりで MCU だけ違うキーボードをなぜ作ったのか、それにはいくつか理由があります。

まず1つ目の理由は、「知り合いが Raspberry Pi Pico を採用したキーボードを設計しようとしていたから」です。「よーちゃんも Raspberry Pi Pico 使ったキーボード作ってみなよー」と言われて火がついちゃった、って感じです。これが理由のほとんどを占めてます。

次の理由は、最もらしい理由です。それは「Pro Micro に限界を感じていたから」です。Lunakey Mini では、Underglow LED、OLED、そして圧電スピーカーも搭載している、比較的「てんこ盛り」な構成です。これら全てを活用したキーボードにしたかったのですが、Pro Micro による大きな制約が、それを阻みました。その制約とは、

「書き込めるプログラムの大きさが小さい」

ということです。Lunakey Mini を作っていた2020年11月時点で、すでに Underglow LED、OLED、圧電スピーカーの3つ(+ VIA サポートも)を同時にサポートする QMK Firmware を Pro Micro 向けにビルドすることができず、3つのうちの2つに絞らないとビルドができない状況でした。まあそれでも2つ選べればいいかな、と思っていましたが、このエントリを執筆している 2021年10月2日時点では、なんと Underglow LED と圧電スピーカーの2つだけを有効にしたとしても、ビルドが容量オーバーで通らなくなってしまっています。

これじゃあ、何のために基板にいろいろ部品を採用したのか、って話です。

そして、世界的な半導体不足の影響のせいか、Pro Micro の流通量が減ってしまっていて、価格も上がってくる懸念が増大してきました。全く手に入らない、という状況ではありませんが、価格の上昇は避けられないのかな、と。

結果、Pro Micro よりも性能が高く、価格も安い MCU があったら・・・きっとハッピーになれるんじゃないか、と考えるわけです。幸いなことに、Raspberry Pi Pico は、その候補として十分期待できる存在です。

僕個人としては、Lunakey Mini で採用したキーレイアウト(3 x 6 で親指 4 つ、Column Staggered でズレ幅は自分に最適化)はもうエンドゲームに達しています。ケースなども 3D プリンタで作ったりしていて、外形としても僕の中では十分に枯れています。「あとは頭脳が賢くなってくれればなぁ」というところでした。

そして、Pro Micro では、QMK Firmware 一択だったことも、個人的にはちょっと残念に思っていました。選択肢が複数存在したほうが健全かな、と思っています。Raspberry Pi Pico や、RP2040 を搭載した MCU であれば、今では KMK Firmware や、Ruby による PRK Firmware という複数の選択肢があります。もちろん、QMK Firmware も非公式ながら RP2040 で動作する移植版が存在しています。それぞれの出来は違えど、選択肢が複数ある状況を Raspberry Pi Pico を採用することによって提供できることは、僕個人としては貢献のしがいがあることだな、と考えています。

というわけで、Lunakey Pico を作ろうと思い立ったのです。

本当にRaspberry Pi Picoで左右分割型のキーボードを作れるのか

Raspberry Pi Pico を使ったキーボードは、すでに Gherkin for the Raspberry Pi Pico があることは知っていました。ただ、これは一体型のキーボードです。僕が作りたいのは、左右分割型のキーボードであり、そのためには2つの Raspberry Pi Pico の間で通信しながら、安定したキー入力ができなければいけません。

というわけで、検証を行いました。

最初は、一つの Raspberry Pi Pico を使って、キーマトリクスと LED の制御がちゃんとできるかどうかを検証しました。ファームウェアには、CircuitPython で動作する KMK Firmware を使いました。

そして、次にいよいよ2つの Raspberry Pi Pico にて、電源供給と UART 通信をさせて、左右でのキーマトリクスの動作検証を行いました。

黄色のリード線で VCC と GND を配線しているのですが、最初隣同士のピンで接続していて、そのせいで黄色のリード線が2本接近しすぎてしまったのが原因だと思うのですが、ノイズが乗ってしまって、動作が非常に不安定な状況になりました。手のひらを近づけるだけで、キー入力が「どばばばばぁぁぁぁぁ!!!」とされるという挙動になり、これはこれで面白かったのですが、しばらく悩みました。

ノイズのせいだ、と気がついて、電源周りの接続を離してみたところ、安定動作するようになりました。今までノイズによる影響を体感したことがなかったので、ノイズ怖いなぁ、と思うようになりました。

そんなこんなで、Raspberry Pi Pico + KMK Firmware + UART での左右分割型キーボードを作ることに自信を持つことができたので、Lunakey Pico の基板設計を行いました。

Lunakey Pico試作の結果は

そんなこんなで、KiCAD を使って Lunakey Mini の回路図をベースに Raspberry Pi Pico に MCU を入れ替えて、ダイオードやキーソケット、LED などのフットプリントの配置は変えずに、その他の部品の配置と部品間の配線を全部やりなおして、Lunakey Pico の基板を作りました。僕がお気に入りな PCB GOGO に基板制作を発注し、その間に必要な部品を揃えて、試作第一号機を仕上げました。

ファームウェアとして CircuitPython で動く KMK Firmware を採用し、Lunakey Pico 向けのコードを書きました。いろいろと試行錯誤した結果、無事動作するようになりました。

懸念としては、最適な値を見つけられれば解決する可能性は高いのですが、ModTap の挙動が決定する重要な「TAP 時間(何 ms 以内なら TAP と見なすか)」の調整がまだしっくりきていなくて、期待通りの文字入力にならないストレスがあります。

ModTap 以外は、概ね期待通りの動作をしています。レイヤも使えるし、ModTap もまあ動作はしています。左右の Underglow LED のアニメーションの同期がされずにそれぞれ独立して光っていますが、それはそれで個人的には問題ありません。左から右への TRRS ケーブルを経由した電源供給も、UART 通信も、ノイズに影響されることなく安定しています。

基板の回路的には、全く問題はなさそうです。プレートの設計も基板とフィットしています。Raspberry Pi Pico を基板に取り付ける際のピンヘッダは、20ピンのコンスルー(高さが 2mm のもの)で取り外し可能な状態で実装できます。

残すは、KMK Firmware 側のコードの調整、って感じですので、第一号機の試作としては、大成功と言って良いかな、と思っています。

Lunakey Pico の今後は

「C 言語だと厳しいけど、Python や Ruby なら何とかなりそうだな」と思う人も多いかなと想像していて、また Raspberry Pi Pico の性能に期待する人も多そうだなと思っています。そして Raspberry Pi Pico は RP2040 搭載の MCU としては本家ですので、興味をお持ちの方もいらっしゃるのかなと。つまり、Lunakey Pico の需要はそこそこあるかもなぁ、と勝手に思っています。

というわけで、手元に数枚基板やプレートが残っていますので、まずはそれらをキット化して、近々ご提供させていただきたいと思います。おそらく、BOOTH にて公開します。このロットを手にした方々からは、フィードバックを聞きたいな、と思っています。

その後は、状況を見て考えようかな、と思っています。Pro Micro よりも Raspberry Pi Pico の方が安価ですので、その分キットの価格も Lunakey Mini よりは下げようかなと思っています。

誰も興味ないかもしれませんが、続報をお待ちください。

ちなみに、もちろんこのエントリは、Lunakey Pico で書きました。

このエントリーをはてなブックマークに追加

関連記事

Lunakey Miniケースの最終形です

Google Smart Home Summit '21のまとめです

Lunakey Pico ビルドガイド (Rev.1以降)

Lunakey Mini/Pico/Macroの設計をオープンにしました

Remapのマクロ機能を活用しましょう