この記事は、キーボード #2 Advent Calendar 2024 の17日目の記事です。前日はyharaさんによる「キーボードと人体の非対称性」。左右非対称を前提とする考え方は私にとって盲点であり非常に刺激的でした。
目次
はじめに
この記事では「TinyDash Choc」というパーツを作った経緯について書こうと思いますが、初めましての方も多いかと思いますのでまずは自己紹介から。
自己紹介と振り返り
ゴリラボのKKaK(けーけーえーけー)と申します。本業は何かのエンジニアなのですが、趣味に浸っているときに仕事を思い出したくないのでメルヘンチックな森に住む不思議なゴリラさんになっています。Xなどで奇矯な発言を致しますが、諸兄に於かれましては宜しくお察しのほどお願い申し上げます。
さて私、もともと何でもDIYするのが好きだったのですが、確か2年ほど前に2台目の3Dプリンタを購入した際にその習作として「キーボードでも作ってみよう」と猛者諸兄にぶん殴られそうな軽卒さで自キ沼に立ち入り、その理不尽なまでの奥深さにあえなく溺れてしまいました。

処女作「Moya30」。キット制作の経験すらないゴリラが無謀にもいきなり限界自作に挑戦。
Nomu30リスペクトのChoc版、狭ピッチでケースもキーキャップも3Dプリント製。
キーキャップは色違いレジンによる疑似ダブルショットという怪作。
かくして軽率な行動から沼に落ちた私でしたが、先輩方のお世話になりながら何作かの実績を積み重ね、今年はとうとうキーケットにて作品を頒布するに至りました。これが生涯初の同人活動です。

キーケットで頒布した「Trakey v1」(キーボードとパームレストに挟まれている機器)。
中央のアナログジョイスティックと左右2つのスライダーからなる謎のデバイス。
思いつき主義が生んだ文句なしの怪作。*1
そして直近ではRiemannという作品で初めてのネット頒布デビューを飾るなどいたしました。凄い!

「Riemann v2」。GRINとオーソリニアを融合したような薄型コンパクトなかわいいキーボード。
少なくない方に可愛がっていただいており、珍しく怪作ではない。BOOTHでたまに頒布中。
というわけで単に「作る」から「発信する」へと一歩踏み込んだという意味で、個人的に大きな転換点となった1年でした。
そんな2024年、もう一つ作ったものがありまして、それが「TinyDash Choc」です。
TinyDash Chocとは何か
前置きが長くなり申し訳ありません。本題に入ります。
RP2040-Tinyというマイコンボードをご存じでしょうか。RP2040-Zero(以下Zero)と違ってあまりキーボードでの採用例を見かけない*2のですが、Zeroと同じWaveshare Electronicsが提供するZero互換のRP2040マイコンボードです。
USBコネクタ部分が本体とは別ボードとなっていることが特徴で、コネクタ部分と本体とはFFCで接続されるため、USBコネクタの位置に縛られて一定の制約を受けてしまう一般的なマイコンに比べて自由度の高い設計が可能です。

RP2040-Tiny。本体とコネクタ部分が分離したマイコンボード。(waveshare.comより)
マイコンボードを使用した設計に限界*3を感じつつもPCBAに踏み出すことには抵抗があった私にとってRP2040-Tinyはまさに福音のように思えました。(だってPCBA失敗で数万溶かしたとかいう武勇伝をよく聞くし…)
しかし、実際にこれを使ったキーボードを設計してみるとZeroに比べて有意なアドバンテージが見出せなかったのです。というのも、コネクタボード部分が18×18mmあり1U相当のスペースを消費してしまうし、それを避けるためスイッチの下に重ねると厚みが出てしまうため、結局マイコンボードを利用するのと同じジレンマに悩まされてしまうからです。
だったらソケットの隙間に納まるようなコネクタボードを作っちゃえばいいでは…?と思いついたのがTinyDash Chocでした。
試作1号
とりあえずこんな感じかなと設計してみました。ソケットを避けてぐにゃんとしています。LEDも入るように、ソケットの反対側も空けています。*4

・・・ん?

その時、老人の脳裏を何かが走り抜けた
…さて、これを発注し自前でリフローしました。しかしFFCコネクタ側のピン配置を間違えていたらしくあえなく撃沈。

自作していてこんなに悲しい瞬間はない
なお使ったリフロー炉…じゃなくてホットプレートはMHP30というお安いやつ(確か1600円くらいで購入)。この製品が悪いわけではなく、ちゃんとリフローはできてました。

MHP30をAliで検索したところ。MHP50という上位機種もあるが違いがよくわからない。
試作2号
気を取り直して配線を修正し無事認識!ソケットの隙間に上手く納まってくれました。

自作していてこんなにうれしい瞬間はない

気持ちのいいフィット感です。
さて、結構苦労したし反響ももらえたので何かしらの形で頒布しようかなと考え始めました。しかし頒布するならば「要リフロー」という形ではさすがに厳しいので、やはりPCBAする必要があります。
PCBAから逃げるためにこれを作ったはずなのに結果としてPCBAに手を出す羽目になってしまいました。なぜだ…
PCBA初チャレンジ!
いざPCBA!ということで、この機会にFFCコネクタもスリムなタイプに変更し、ついでに抵抗とコンデンサもよりコンパクトな0402サイズに変更。
さらに1枚で複数の基板を製造する「面付」にもチャレンジ。(Kikitというプラグインを使わせてもらいました)

改良し5個面付したところ。パーツの小型化により不要になったブーンの腕はあえなくもぎ取られた。
そしてBOMやら何やら必要なファイルを作成し、ドキドキしながら発注しました。
約10日後に到着した基板は無事動いてくれたのでPCBAは成功でした!
初PCBAは大成功。大人の階段を登った気分。これ以上登ったら死ぬのですが。
実証する
さて、PCBAがうまくいったのは良いのですが、これを頒布するなら一つくらい作例がないと話になりません。ということで実証基板の制作に着手しました。*5

着手したときの発言。結局キー部には何とか間に合い、けぺお先生に奉納できました。
というわけで出来上がったのが上でもご紹介したRiemannです。

なんといってもベゼルレス。マイコンボードの気配はない。

側面。ベゼルレスと薄さの両立。
チルトバーはなく、ここにもマイコンの隠れ場所は見当たらない。

裏面。厚みは均一です。マイコンはどこだ?

中身。マイコンここにいた!
これをどうしようか大いに悩む
さて当初はこれをBOOTHで販売しようかと思ったのですが、もし誰かがTinyDash Chocを採用したキーボードキットを作って頒布しようとした際に私から購入する以外にTinyDash Chocの入手経路が無いとすると、私にはこれを品切れさせないようにする努力義務が生じてしまいます。
しかし誰がどれだけ販売するのか私には知りようが無い以上適正な在庫を維持することが困難であることは明らかなので、結果として私が過剰に在庫を抱えるかキーボードキットの購入者が入荷を待たされるかのいずれかになってしまいます。
また私が頒布をやめてしまうとキット自体が無駄になるためそのようなリスクのあるパーツを採用してもらえるとは思えません。
ではデータを公開して自分で製造してもらうのが良いかというと、そもそもPCBAしたくない人向けのパーツなのに「使いたければPCBAしてください」というのもハードルが高い気がしてしまい、どうしたものかと悩みました。
結論
「じゃあ両方やればいいじゃん」ということで、データ公開と頒布を両方やることにしました。
データは以下でCC-BY-4.0にて公開中です。(フットプリントに合うシンボルがなかったため回路図が変ですがちゃんと両面挿し可能です)
まだ在庫を入れていませんが、頒布は以下のURLで行う予定です。
また、設計及び発注の手順を以下に掲載しています。
もしよかったらご利用下さい。
おわりに
というわけで今年は、
- ブログ開設
- リアルイベントでの作品頒布
- PCBAデビュー
- ネットショップでの作品頒布
- 基板データのCC-BYでの公開
など初めて尽くしの1年でした。この歳で色々冒険できるのも自キのコミュニティの懐の深さのおかげだと思っております。
来年どうなるか分かりませんが、とりあえすキーケット2025を目指して新しい事に取り組んで行きたいと思います。(私のサークルのWebカタログはこちら)
さて、キーボード #2 Advent Calendar 2024 明日はくゔぁれさんです!Keyballケース、楽しみですね。私もKeyball大好きです!
では皆様よいお年を!
*1:現在は頒布していませんがポインティングデバイス開発はライフワークにしたいので改良して復活させたいです。
*2:最近は増えてきてます
*3:私はベゼルレスで薄型のデザインが好きなのですが、ZeroやPro Microだとマイコンの存在が外形か厚みに出てしまうのが嫌だったのです。
*4:なおChocとMXと両対応にしようとしたところ不可能だったためChoc専用になりました。薄さ追求のためのパーツなのでロープロスイッチへの対応を優先しています。MX用はそのうち作るかも
*5:このキーボードの目的は色々ありまして、TinyDash Chocの実証のほかに曲線配列の設計手法の実証やThinkball70用のトラボケースを作ってくださったけぺお先生への御礼を兼ねた作品でもあります。