nowt36 を組み立てた

tamago324 氏設計の nowt36 を組み立てました。今まで何個かキーボードを組み立ててきましたが一体型を作るのは初めてです。

booth.pm

なぜ nowt36 を選んだか

nowt36 を選んだ主な理由は以下の2点です

  • 普段使っている分割キーボードは持ち運びに向かないので一体型が欲しかった
  • 数あるキーボードの中でもトップクラスに可愛い

持ち運びやすさ

前提として私は会社でも分割キーボードを使っています。

会議のために部屋を移動する際、一体型と比べて分割は持ち運ぶ物が多く移動準備に手間がかかります。また片腕で小脇に挟むという方法が取れずノートPCをおぼんにして運ぶので両手が塞がって不便です(ドアが開けられない)。 これらの不便さとノートPCのキーボードの打ちづらさを天秤にかけた時、打ちづらさのほうが許容できたので自席にいるときは分割、それ以外の場所ではノートPCのキーボードを使うというスタイルで今までやってきました。 とはいえやはり打ちづらいので本音は分割にしたい、でも持ち運びのことを考えると一体型にしたい、ということでどちらの要素もある monoblock split keyboard を作ることにしました。

可愛さ

可愛いは正義! 個人的には nowt36 と miniaxe がキーボードの中でトップクラスに可愛いと思っているので monoblock split 作るとなったら nowt36 一択でした。

キー配置が普段と違うのとメカニカルスイッチを使うのは久しぶりなのでまだ慣れませんが、ノートPCのキーボードよりは遥かに打ちやすくなりました。

nowt36 用ケース

私の nowt36 はミドルプレートを入れておらず側面からホコリが入り放題なのでホコリ防止用にケースを作りました。

モデルデータは booth にて販売しております。

pikarikbd.booth.pm

Firmware

キーボード作るときは最新の QMK Firmware で動かすことに決めているのでオリジナルの firmware を 0.20.6 用に修正しました。LED は使っていないのでその辺の処理は抜きました。

github.com

静電容量無接点方式

静電容量無接点方式化することを妄想するだけしてみましたが、物理制約からスペーサーの位置をオリジナルの位置から変えざるを得ず、それに合わせて外形を作ってみたら可愛さが激減したので妄想するだけにしました。

REALFORCE のようにトッププレートにネジ切って、トッププレートとメインのPCBをネジで固定できたらオリジナルの形を踏襲できそうですがものすごくコスト掛かりそうなので見送りました。

格子配列か余白があるキーボードだとオリジナルの外形に手を加えずに静電容量式化しやすいのですが、そうでない場合は私の技術ではオリジナルの形を踏襲するのは厳しそうです。 私に余白があるけどカッコ可愛いキーボードを作れるデザイン力があればと思うばかりです。

トラックボール付き静電容量無接点方式分割キーボードを自作した

トラックボール付き静電容量無接点方式分割キーボードを作ってみました。キーボード名は「転がる小石(英名: rolling miniec)」です。

軽く調べた感じではトラックボール付き静電容量式キーボードの前例を見つけることができなかったので、もしかしたらこれが世界初かもしれません。(製作難易度から考えるとすでに他の誰かが作っていると思いますが)

Firmware

firmwarekeyball のものと小石1のものを単純に合体させました。トラックボールの制御とキースキャンの処理は全く別なので単純にひたすらコピペするだけで作れました。

実はこの firmware の原型は小石を作る前から作っていました。昔のこと過ぎて何故書いたのか理由を覚えていませんが、多分小石の基板が届くまで時間があって暇だったのだと思います。

トラックボール

トラックボールケースは keyball39 から移植しました。keyball のものを移植する場合、L字コンスルーが必要になります。 トラボ付きキーボードを今まで作っていなかった理由としてはこのL字コンスルーの入手方法が分からなかったからというのが最大の理由だったのですが、ちゃんと調べたらマルツで普通に売っていました。税抜き4050円といいお値段ですが... https://www.marutsu.co.jp/pc/i/106993/

KiCad で使うトラックボールケース用の footprint は公開されている keyball の基板データから作成しました。ネジ穴の位置に関しては問題なかったのですが、ケースとトッププレートの距離感までは考慮していなかったせいで、いざ組み立てたらケースがトッププレートと干渉して設置することができませんでした。今回はトッププレートをひたすらヤスリで削って解決しました。 キーボードを作るときに 3D を意識して作ることは今までなかったのでこの辺の考慮がすっかり抜けていました。

ノイズ

トラックボール用の配線が増えた影響かトラボが付いている側の各キーの電圧はだいぶ荒れています。 トラボがついていない左側はキーを押していない状態での各キーの電圧のバラツキは少なく、また安定しています。一方でトラボ付き側の電圧はキー毎にバラバラですし、単一のキーに注目した場合でもキーを押していないにも関わらずとても上下しました。 今まで作成してきたキーボードでは全キー共通の閾値を使ってきましたが、今回は全キー共通の閾値設定では入力をコントロールしきれなかったのでキーごとに閾値調整をしました。 スペースの関係上、キースキャン用の配線とトラボ用の配線が交わるところが多くなってしまったので、余白を増やして配線が交わる箇所を少なくしたほうが良かったかもしれません。

キーボードケース

ケースは freecad を使用して作りました。 トラボケースがある箇所は干渉が怖かったので完全に壁をなくそうかと最初は考えていましたが、keyball 開発者の Yowkees さんが keyball39 用のケースデータを公開されていたので、それをもとにトラボケースにフィットするようにモデルを作りました。 少し余裕をもたせたつもりでしたが、思いの外ぴったりでした。

ケースの材質は 9000R Resin を選んでみましたが思っていたよりも黄色みがかった白色でした。基板の白いレジストと差があってイマイチしっくりこないというのが正直な感想です。安さで 9000R Resin を選びましたが別のものにしたほうが良かったかもしれません。

今後

基板設計に関してはこれ以上にやりたいと思うことが今のところないので、ここで一区切りかなと思っています。(買うだけ買って使っていない RP2040-Zero が大量に余っているのでそれを使うキーボードを1個位は設計するかも。) 今後は3Dプリンターで何か作ったり、今まで設計したキーボードの販売を細々やっていこうかなと思っています。

現在は静電容量 corne mini 基板を販売中です。

pikarikbd.booth.pm

あとは処女作でありながら最も動作が安定している小石もそのうち販売しようかなと思っています。

今回の転がる小石のようなトラックボール付きのキーボードを販売したらすごい売れるのだろうという気はしますが、トラックボールケースをモデリングできる気がしないのと、販売できるレベルの安定動作まで持っていける気がしないので私が販売することは当分ないと思います。


  1. 私が初めて設計した静電容量無接点方式分割キーボード

corne mini 用の3Dプリントケース

以前作成した corne mini 用のケースを発注しました。側面が囲まれたことでホコリ耐性が強くなりました。

goropikari.hatenablog.com

以前の記事では作った理由として「他者が設計したキーボードを静電容量式化してみたい」と書きましたが、では数多ある自作キーボードのうち何故 corne を選んだのかというとサードパーティ製のカスタムパーツが多いからということも実は理由の一つでした。

発注したデータ

そんなわけで色々と調べたら thingiverse に corne mini 用のケースのデータを上げられているのを見つけたのでこれを JLCPCB に発注してみました。料金は送料込みで3150円でした(129円/$ くらいでした)。

www.thingiverse.com

3D cad の知識を全く有していなかったためデータには何も手を加えずにそのままで注文しました。 材質はキーボードの色に揃えたかったという理由だけで黒レジンにしました。軽く検索した感じでは黒レジンでケース作られている方もいらしたので大丈夫だろうという楽観的に考え注文しました。

バリ

今回は Sanding なしにしてみましたが結構バリがありました。といっても Sanding ありで注文したことないので Sanding の有無がバリに影響するのかわかりませんが。

ヤスリが付属していたのでバリ取りがてら研磨してみましたが傷で見事に真っ白になりました。 付属していたヤスリは結構粗めな感じですね。

400, 800, 1500, 2000番のヤスリで研磨し直して多少マシになりました。

USB port

静電容量式スイッチの場合、トッププレートと PCB の間隔がメカニカルスイッチに比べて広いので今回のモデルだと USB port の位置が上過ぎてケーブルがさせなかったです。

元々こうなることはありうるだろうと思っていて干渉したらニッパーで切り落とそうと思っていたので切り落としました。

誤算

サードパーティ製のカスタムパーツが多いから corne にしたと最初に書きましたが、あくまでカスタムパーツの種類が多いのはデフォルトの6列 corne であって、5列の corne mini のパーツは思いの外少なかったです... これは誤算でした。

しかも昔の corne cherry は mini にできるように基板に切れ込み入っていましたが、最新の corne cherry v3 だともう切れ込み入ってなくて mini にできなくなってるのですよね。 これからの新規 corne ユーザーは corne mini にすることはないと思うとますますパーツは増えなさそうです。

meishi Trackball Module firmware を QMK v0.19 でビルドする

去年の12月に買ったきり積んでいた meishi Trackball Module を組み立てました。(OLED 用のソケットとタクトスイッチの実装面を間違えました)

aki27.booth.pm

おそらく多くの人は組み立てたら Remap を使って firmware を焼くのでしょうが、私の Linux 環境だと Remap がキーボードを認識してくれないためいつも firmware は QMK 環境を自分で構築して焼いています。

今回もいつも通りに焼こうとしたのですが、QMK v0.18 では焼けたのですが QMK v0.19 ではエラーが出て焼くことが出来ませんでした。 単純に meishi Trackball Module として使うのであれば v0.18 で焼ければ十分ですが、キーボードに組み込むこと前提に買っており、また私の書くfirmware はすべて v0.19 を前提にしているため v0.19 に対応していない部分は潰して置かなければなりません。

そんなわけで直しました。

github.com

github.com

info.json を用意するのと、古くなった keycode を直しただけで本体のロジックに手を入れる必要はありませんでした。ついでに角度などの修正も試しておきました。雑に直したので毎回 EEPROM 読み書きしてますが、今の所動的に設定を変えたいという気もしないので固定値入れでもいいかなと思っています。

静電容量無接点方式 corne mini を自作してみた

foostan/crkbd の5列版である corne mini の静電容量無接点方式版を自作してみました。

今回の主なモチベーションは

  • 他者が設計したキーボードを静電容量式化してみたい
  • Column Staggered のものを作ってみたい

という感じです。

設計する前はオリジナルの PCB データを少しいじったら簡単に作れるだろうと思っていましたが、設計し始めてみると他者の作ったキーボードを静電容量式化するのはなかなか大変だと気付きました。

他者が設計したキーボードを静電容量式化することの困難さ

ハウジングの大きさによる制約

マイコンと静電容量スキャンモジュールさえ配置できれば、あとはスイッチ部分のフットプリントを静電容量式用のパッドに変えれば良いだけと初めは思っていました。

しかし現実はそんなに甘くなかったです。最大の問題はハウジングの大きさで、オリジナルのスペーサーの位置を踏襲するとハウジングが大きすぎてスペーサーと干渉してしまいハウジングをトッププレートにはめることが出来ませんでした。 Niz のハウジングを使った場合、左手用はオリジナルのスペーサーの位置でギリギリ問題ありませんが、右手用のほうはスペーサーとハウジングが干渉しました。

ヤスリで削ってどうにかなる感じではなかったので今回は干渉する部分を切り落としました。

これから静電容量式キーボードを自作しようとしている方で、まずはメカニカルキーボードを作って後に静電容量式化するという流れで製作を考えている場合はスペーサーの位置にお気をつけください。

部品を配置するスペースの制約

静電容量式キーボードを作るときに組み立てを楽にしようと思ったら のぎけす屋さんで売っている静電容量スキャンモジュールを使うのが無難な選択と思います。しかしこのモジュールとマイコンボードを組み合わせるとそれなりのスペースを必要とします。

私が今まで作った静電容量式キーボードでは ProMicro を使ってきましたが、corne で ProMicro とスキャンモジュールの組み合わせだとスペース的に乗り切らなかった1ため今回はサイズの小さい XIAO RP2040 を使いました。 XIAO RP2040 のサイズであれば元々 ProMicro 用に設けられていたスペースに必要なものはギリギリ乗せきれました。

Keyboard Firmware Framework の制約

RP2040 に対応した keyboard firmware framework として有名どころは QMK, KMK, PRK, Kermite の4つかと思います。メカニカルキーボードであればこの4つのうちどれでも動かせるのだと思いますが、こと静電容量式で使うとなると現状だと KMK 一択です。

静電容量式キーボードの firmware の場合、framework では ADC 対応、custom matrix scan 対応が必須です。 RP2040 に関して公式2でこの2つに対応しているのは Doc を読む限りは KMK(CircuitPython) だけだと思います。(QMK では ADC Driver をサポートする予定はあるようです。 qmk_firmware/platformdev_rp2040.md at a1676c3b8c3f5f5d713196d99ac358ba5fb021ef · qmk/qmk_firmware · GitHub)

今回 KMK で書いてみてとりあえず動くというレベルにはもっていけましたが、modtap の挙動を私好みにすることはできませんでした。modtap を設定したキーをタップしたときの反応が1テンポ遅れるまたは入力されないことがありました。メカニカルキーボードの firmware を KMK で作ったときも同様な挙動が見られたため、静電容量だからというより現状の KMK はこんな感じなのだろうと思います。

modtap の挙動に不満はあるものの全体の処理の流れがとても読みやすいので KMK は結構気に入っています。QMK で firmware を書いていたときは「この関数はどのタイミングでどこから呼ばれているの???」となりながら雰囲気で書いていましたが、KMK は全体的にコードが小さくどのタイミングでどの関数が呼ばれているかを調べるのが容易でブラックボックス感が少ないので好きです。 また Mu editor と組み合わせると電圧変化も簡単にプロットできるのでチューニングがとてもやりやすかったです。

2023/1/15 追記
modtap 周りの設定を見直すことで入力は改善されました。ただし、prefer_hold=True にしていても左右の通信があると hold になりづらいです。

完成

そんなこんなで完成しました。KMK でうまく Firmware が書けなかったら QMK が公式で RP2040 の ADC driver をサポートするまで気長に待とうと思っていましたが、とりあえずこの記事を書ける程度にはキーボードとして動くようにできたのでほっと一安心です。

キーキャップは Majestouch Xacro 交換用キーキャップの Dvorak 配列のものです。Dvorak 配列用という物珍しさで買ってみましたが、触り心地がどことなく REALFORCE のキーキャップと似ていて個人的には気に入っています。


  1. ProMicro の間にスキャンモジュールを配置すれば乗り切るとは思いますが配線が煩雑になるので避けました。
  2. 独自に対応されている方はもちろんいます