ATTACK25をBluetooth化

Keyboard

いやー、これがなかなかうまく動くまでが試練の道だった。自分の技術的な知識を大幅に超えた世界を1人で歩いている感じで、なにか壮大な勘違いをしながら歩いている気が今でもしている。まぁ動いたからそれでいいんだけど…。

必要なときだけ取り出してスイッチを入れればBluetoothで即接続してテンキーが使える環境を望んでいたのだけど、Amazonを見たら割と価格にびっくり。なんと2,000円くらいから普通に存在していたのかっていう。でもあれです。好みのキースイッチを使えない。キーレイアウトを変えられない。キーカスタマイズはほぼ皆無。っていうことになるし、何よりも自分で作った感がうれしいから多少高くてもいいじゃないのって自分に言い聞かせる。

調べていると、なんとAttack25がBluetooth対応版もあるじゃない!唯一、これしか見つからなかったので何も考えずにポチッと。

ATTACK25 OTK BLACK - 25KEYS - BOOTH
※ProMicroは仕入れ状況により青基板もしくは黒基板になります。 ※2020年5月31日:VIA対応ファーム公開しています。PCのアプリ上からレイアウトをリアルタイムに変更できるようになりました→ 5X5拡張型テンキー/マクロパッドのATTACK25にブラック仕様が登場です! マットブラックのPCBは他のキーボード...

「BMP電池キット付属版」という方です。これとは別途、Blutooth機能を搭載してPro Microっぽくなっているものが必要。こちらもポチッと。

Pro MicroサイズのUSB対応nRF52マイコンボード - のぎけす屋 - BOOTH
Pro Microとの互換性を意識したBL654(nRF52840モジュール)のブレークアウトボードです。主に自作キーボードの無線化を想定して設計しています。いわゆるBLE Micro Pro。 *電池基板は付属しておりません。別途お買い求めください。 For overseas shipping, check

スイッチとキーキャップを除いては、どうやら必要なものはこれだけっぽいのでひたすら到着を待つこと数日。無事に届いて着々とビルドを進めていったのであった。

本来なら、ここでビルド途中の写真を色々アップしたいところなのですが、これまた集中しすぎてほぼ忘れるっていう…。しかも、今回はスイッチのハンダ付けを選んだため、今さら写真のためだけに剥がせないっていうやつで。そんなわけで今回は完成後の写真ばかりです。

気を取り直して、これがそのお姿。5×5の25キーでテンキーとしては1列分多い感じ。希望的には4×5があれば最高だったけど、Bluetoothという夢のような言葉でそんなことは一切気にならない。

レイアウトは、すべて1uサイズにしてアローキーを組み込んでしまうとかも可能なんですが、それよりも自分の好みとしてはフルキーボードのように「+」や「0」を2uにすることを優先したい。スタビライザーも用意しよう。

スイッチはAliaz 50gの静音タクタイル。lubeしてバンドエイドも組み込み済み。25個しかないのでそんなに時間は掛からずに終了。今回はガシガシ数字入力を想定していたのでスイッチはハンダ固定とした。

DSAのDolchと組み合わさって、見た目、いい感じ。いかにも仕事するぞっていう姿勢が見られる。ちなみに裏側もおしゃれですね。ゴム足はもしかして後方だけもう少し大きなものに変えて角度をさらに付けてもいいかも。

分解するとこんな感じです。

右下に見えるのがBluetooth用のモジュールに電源を供給するための電池キットです。

 

Bluetooth化には結構苦戦した

そして本題のBluetooth化ですが、これは別途購入した「BLE Micro Pro」を使用。Pro Microと互換性があり、通常の24ピン加えて外部電源用の2ピンが追加された26ピンになっています。ただし、電源はピンと直接ハンダ配線するので、12ピンのコンスルーが使えます。今も一応抜き差しできるようにコンスルーを使っていますが、抜き差しが多かったせいか固定が甘く、やや接触に難が出るときがあるので、基板側をハンダで固定しようかなと思ってる。

Pro MicroサイズのUSB対応nRF52マイコンボード - のぎけす屋 - BOOTH
Pro Microとの互換性を意識したBL654(nRF52840モジュール)のブレークアウトボードです。主に自作キーボードの無線化を想定して設計しています。いわゆるBLE Micro Pro。 *電池基板は付属しておりません。別途お買い求めください。 For overseas shipping, check

基盤の写真だと左端の部分がBluetoothのアンテナだと思います。そしてBLEモジュールにはちゃんと技適マークついてますね。国内でバシバシ飛ばしても誰にも怒られないやつ。

外部電源はいわゆるボタン電池、ただし3Vを発生する「CR1632」が2つ必要。ググればAmazonでもヨドバシでも購入可能。1個150円前後。サルチル酸の自作キーボード温泉街の歩き方によれば、秋月だと120円のPanasonic以外に、50円のものもあった。ブランドにそそられてPanasonicを買ったけども、50円の方もデータシートを確認したら同じ容量だったのでそっちでもよかったのかも知れない。ただし動作温度が-30度~のパナに比べて-10度~とやや高かった。

電池は使い捨てで容量140mAhx2個=280mAh、放電で0.1mAh。終止電圧2Vで公称800時間。毎日3時間くらい使っても1年間くらいはもちそう。

LEDを使っちゃうと一気に電池の減りが早くなるんでしょうか、Attack25で公開されているファームウェアではベータ版のままでLEDは全オフとなっているため、基盤にもLEDは搭載しませんでした。

ファームウェア
いやー、これが結構アホかっていう勘違いで時間が掛かった。しかもこの2点を大きく勘違いしていたことで謎が深いと勝手に勘違いして…。ううむ。
  • コンパイル 書き込み(COMポートが2個認識されてエラーになる)
  • いや、そもそもコンパイルいらなかった(標準ファームウェアでよかった)
最初の過ちは、Attack25を普通にテンキーとして使うだけならば実は踏む必要がない問題で、BLE Micro Proのsekigonさんが予め「標準ファームウェア」を用意してくれているので、これを使えばテキストエディターだけで完結できる。
なので、結論へ急ぐ方は標準ファームウェアまで読み飛ばしてください。
BLE Micro Proのファームウェアビルド環境を構築

上にも書いたけど、最初の方は自分がQMK環境に慣れていないせいもあって、インストール時に何か大きく間違っていただんだと思う。BLE Micro Pro以外では悩むことのない問題だったので、実はこれで1ヶ月以上悩んでいた。コンパイルまではスムーズにいくけど、dfuモードになってシリアルポートが認識されると、何故かCOM5 COM6のように2つ同時に認識されてしまい、そのままエラーとなって書き込みに失敗するというエラーが100%出ていた。デスクトップ側のPCとラップトップの両方で同じエラーだったので、まさかおま環だとは思わなかった。汚い部屋を掃除したのをきっかけに、今の環境を無視して再びセットアップしたら、COMポートも1つしか表示されないし、その後の書き込みの何の問題もなくスルッといけるようになった。やっぱり神様はだらしないところを見ているんだなと思う。

sekigonさんのこのドキュメントの通りに環境を設定するだけ。

BLE-Micro-Pro/AboutDefaultFirmware/doc/build_bmp_qmk_firmware.md at master · sekigon-gonnoc/BLE-Micro-Pro
BLE Micro Pro is a breakout board of BL654(nrf52840 module) which is almost compatible with Pro Micro. This board is designed for wireless split DIY keyboards -...

一応書いておく。

git clone --sadepth 1 -b dev/ble_micro_pro https://github.com/sekigon-gonnoc/qmk_firmware.git qmk_firmware_bmp

msys2を起動して上を実行、最後の「qmk_firmware_bmp」は好きな名称で構わない。これでsekigonさんのレポジトリから開発環境がローカルにコピーされるので、インストールしたディレクトリに移動して環境をインストールする。

util/qmk_install.sh

次にnrfutil .exeを以下からダウンロードしてきて、Windowsで該当のディレクトリに入れておく。私が入れたのは現時点で最新のv6.0.1だった。

Releases · NordicSemiconductor/pc-nrfutil
nrfutil python library and command line client. Contribute to NordicSemiconductor/pc-nrfutil development by creating an account on GitHub.

これで環境が構築できたので、defaultのファームウェアのビルドと書き込みができるかどうかを確認してみる。

uf2でのビルド(ドラッグ&ドロップでインストールできる) 

make ble_micro_pro:default:uf2

msys2でのビルド(msys2でそのままdfuモードにしたBMPに書き込みできる)

make ble_micro_pro:default:nrfutil

どちらでも好みの方法でやればいいかと思う。

BMPの標準ファームウェア

標準ファームウェアを使わないという選択肢はありますが、USBで接続した上でLEDを光らせたいとか、マクロを使いたいという特殊な事情を除いては必要ないです。しかもQMK Configuratorに登録されているPCBであればそのままjsonファイルが使えるらしいです。Attack25の場合には、残念ながら野良扱いになってしまうのか、sekigonさんのレポジトリにその姿が見えませんが、それでもちゃんと標準ファームウェアで動きます。

まず、これもsekigonさんのBMPのドキュメントを読むのが一番ですが、一度読んだだけでは理解できなかったので、理解できた内容を図にしておく。

BMPのストレージ構造を理解してみる

キーマップなどを編集する前に、BMPの状態を確認しておく。そのため、まずBMPのフラッシュメモリがこんな風になっているんだということを理解してみる。

違ってたらゴメンナサイだけど、こんな感じに理解した。BMPは内部の一部をWindowsのマスストレージとしてエクスプローラー上で確認することができるようになっている。図でいうところの上のピンクの矢印が通常時にマスストレージとしての状態。ここで設定ファイルにアクセスできる。

そして、dfuモードで接続したときには黄色い矢印のルートをたどる下半分の状態になる。そのまま接続したときと、dfuモードで接続したときで、その内容が変わる仕組みになっている。

msys2で「:nrfutil」を使って書き込むときには、エクスプローラーに関わらず、直接ファームウェアが書き込まれ、自動的にマスストレージ部分に設定ファイルなども書き込まれる(ので矢印を下から上にしてみた)

そしてmsys2で「:uf2」でコンパイルしたときには、拡張子.uf2のファームウェアが出来上がっているはずなので、これをエクスプローラーでdfuモードのBMPにドラッグ&ドロップすれば、コピー完了後に自動的にファームウェアがインストールされるようになっている。なんてすごい仕組みなんだろう。前述したようになぜかCOMポートが2個ある状態に苦しめられていたときにも、このuf2のドラッグ&ドロップでは問題なくインストールできていた。

バージョンを事前に確認しておく

まずBMPをdfuモードで接続する。その方法は3つ。

  • GNDとBOOTをピンセットなどでショートさせながらPCに接続。
  • BMPをUSB接続した状態でTeratermなどで接続、dfuと入力してリターン
  • v4.x.x以上のブートローダーならば先にUSB接続してからショートさせるのも有効

dfuモードに入ると、下図のdfuモードの状態でマウントされる。ドライブ名がdfuモードでは「BLEMICROPRO」、通常モードではファームウェアで指定したキーボード名になる。

dfuモードの状態でINFO_UF2.txtをテキストエディタで開けばバージョンが確認できる。sekigonさんのレポジトリで最新のバージョンを確認して、必要があればバージョンアップする。

このときに大切なことは、「ブートローダー」と「アプリケーション」のバージョンを一致させないとならない。これを間違うとマスストレージとして認識されなくなったりするので、まずはブートローダー、次にアプリケーションをアップデートする。現時点ではこのようになった。

vX.Xまで合致していればいいみたい。Windowsユーザーが簡単に済ませるなら、ダウンロードしたそれぞれuf2のファイルを、ブートローダー、アプリケーションの順でドラッグ&ドロップするのが楽だった。

CONFIGとKEYMAPを編集する

ここまでくればしめたもの。あとはCONFIGとKEYMAPをいじるだけなのでテキストエディターだけでいける。Keymapは何も苦労しなかったけど、CONFIGはじっくりとドキュメントを読みつつ手動で作った。プルリクとかする勇気はまったくない、っていうかちゃんと理解していないので超怒られる未来しか見えないから、とりあずこれだけのレポジトリにして置いておこう…。

GitHub - fatmf/ble_mp_custom: BMP setting files for Attack25 custom layout
BMP setting files for Attack25 custom layout. Contribute to fatmf/ble_mp_custom development by creating an account on GitHub.

BMPを通常モードで接続して、CONFIGとKEYMAPの2つの設定ファイルを上書きすれば動くと思う。

Bluetoothで接続

悩むところではないと思うけど、BMPは自動的にBluetoothのアナウンスをするはずなので、Windows側で機器の追加をすれば普通に見えると思います。見えない場合には、BLE_ENを念の為押してAD_WO_Lを割り当てたキーを押してアナウンスする。また、DELBINDSは接続設定をすべて削除するので、最初ならやってもいいのかも知れない。

私の場合には、キーボードが見えているけけど、Windwos側で接続しようとするとトライして元へ戻るだけっていうのが続いた。うちのPCはITXのオンボードでWifi/BTが載っているやつなのだけど、Ethernet有線でネット接続しているので、これまで付属のアンテナを付けていなかった。念の為と思って付けてみるとすんなりつながった。え、この距離なのに?うーむ。たぶんおまじないっていうやつだな。

ちなみに、電源は切っておいた状態で、使いたいときだけお電源を入れれば自動的に1秒も掛からずに接続してくれるようになった。これはいい。残りのバッテリー残高はBATT_LVのキーを押せば文字で入力してくれる(例:2964mV)。あとは上のように設定を開けば%で表示されている。たぶん2Vへ近づく30%くらいまでは動くんじゃないかと思う。

ちょっと見づらいかもですが、MicroUSBの左側にあるスライドスイッチが電源です。内側にスライドさせると内臓のバッテリーと接続される。

いい感じでテンキーが使えるようになったんだけど、後日、急に4, 5, 6の行が入力できなくなった。こりゃ接触だなと思ってBMPの基盤をいじいじしてみると治った。ので、やっぱりコンスルー緩んでいる。基板側だけは時間のあるときにでもハンダ付けしよう。仕事で使ってて急に入力できなくなったら面倒くさいしね。

さて、相当長い記事になってしまったけども、分かってしまえばそんなに悩むことなく完成した。電源を入れればすぐにテンキーが使える。40%や60%環境でも大量の数字を入力するときに困ることがなくなった。本当に感謝しかない。

コメント

タイトルとURLをコピーしました