Corne CherryをBLE Micro Proで無線化
Corne CherryをBLE Micro Proモジュールを使って無線化しました.
ハードウェアのセットアップ
Corne Cherry本体
Corne Cherry自体は通常のビルドガイドに従って制作します. ProMicoモジュールとOLEDモジュールは使いませんが,OLED用のジャンパとピンソケット取り付けはやっておいてもOKです. 私は通常OLEDを入れるスペースにボタン電池基板を収めたかったのですが,OLEDプレート用のデフォルトのスペーサでは高さが足りなかったので,以下の10mmのスペーサを購入して交換しました.
ARB-2010E: 金属スペーサー|ヒロスギネット|スペーサー・ピンヘッダー・ワッシャー通販
写真は交換済みのスペーサです.
デフォルトのスペーサ(左)は8mmで,交換したスペーサ(右)が10mmです.
BLE Micro Pro
コンスルーピンをハンダ付けするだけですが,Pro Microと同様に向きに注意してください(基板表面から通して,裏面をはんだ付けする). また,これもPro Microと同様に,USBコネクタのモゲ防止に接着剤を塗布しておくと良いと思います.
コンスルーピンは12ピンのものを使ってください! 私は間違って片方のモジュールに13ピンのものを付けてしまいましたが,Corne Cherryには12ピンしか端子がないので,過剰だったピンをペンチで引き抜きましたw(手前側のモジュール)
電池基板
以下の専用基板を購入して使いました.
組み立て方はこちらの記事がとても参考になりました.ダイオードやコンデンサは極小なので,はんだ付けは難しいです.
BLE Micro ProでErgoDash miniをワイヤレス化する / LOG
電池は,マイナス極が基板側に来るように入れます. スイッチを●印のある方に入れることで,電源がONになります. BLE Micro Proは,スイッチ両端付近にある+−とシルク印刷されている端子から接続します.
下の写真のように,電池基板の+をBLE Micro ProのBATに,電池基板の−をBLE Micro ProのGNDに接続することになります.
合体
私は通常OLEDが入るスペースに電池基板を収めたかったので,電池基板に絶縁のためにテープを貼った上で,重ねるようにしてジャンパワイヤでBLE Micro Proと接続しました.
これをCorne Cherryに接続して,10mmのスペーサで高さを増やしたOLEDプレートを付けます.
ソフトウェアのセットアップ
公式ページにガイドがあるので,それを参考にセットアップしました.
sekigonさんのqmk_firmwareの取り込み
有線用に,すでにqmk_firmwareをフォークしていたので,別ブランチとして取り込みます.
nrf52のブランチを作ろうとしたところ,lib
ディレクトリ以下のファイルに対して
error: The following untracked working tree files would be overwritten by checkout:
というエラーが発生したので,一度サブモジュールをdeinitしました.
$ git remote add sekigon https://github.com/sekigon-gonnoc/qmk_firmware.git
$ git fetch sekigon
$ git submodule deinit --all
$ git checkout -b nrf52 sekigon/nrf52
Corne Cherry用の設定追加
Corne Cherry用の設定はまだ無いようだったので,作りました. RGBやOLEDは使わない前提で,かつ自分用にキーマップをカスタマイズしています.
https://github.com/ottijp/qmk_firmware/tree/nrf52/keyboards/crkbd_ble
ビルド
Macで書き込み時にエラーが出たので,tmk_core/nrf.mk
のusb_serial
をusb-serial
に変更しました.
nRFの環境準備は次のようにします.
事前にこちらからnRF5_SDK_15.0.0_a53641a.zip
をダウンロードして展開しておきます.
$ pyenv local 2.7.15
$ pip install nrfutil
$ export NRFSDK15_ROOT=$HOME/dev/nRF5_SDK_15.0.0_a53641a
そして,次のようにビルドします.
ビルドが成功すると,.......
と表示され始めるので,DFUモードでBLE Micro Proを接続すると,ファームウェアが書き込まれます.
DFUモードはリセットスイッチを押した状態でUSBをつなぎ,その後リセットスイッチ離します.
左右それぞれでビルドとファームウェアの書き込みを行います.
$ git submodule init
$ make crkbd_ble/master:ottijp:nrfutil
$ make crkbd_ble/slave:ottijp:nrfutil
Macとの接続
マスタ,スレーブと順番にスイッチをONにし,AD_WO_L
キー(私のキーマップの場合はRAISE+LOWER+y
)を押すことでペアリングできます.
ワイヤレスでスマートらくちんです!!
改善点
いくつか気になる点が残っています.
スペーサがちょっと短い
OLEDプレート用のスペーサを10mmに変更しましたが,それでもまだちょっと短く,電池基板に押し上げられてしまうような感じになってしまいました. もう2mmほど長くてもよかったかもしれません.
電池ケースの安定性
OLEDを入れるスペースに電池ケースを入れてみましたが,BLE Micro Proとジャンパワイヤで繋いでいるだけなので,安定性がいまいちでした. スイッチをON/OFFする際にズレたり,ジャンパワイヤが切断されたりするので,もっとちゃんと固定したいですね.
電源や接続状態がわからない
電源がちゃんと入っているのか,BLE接続がされているのかなど,ステータス表示するものが何もないので,うまく接続できない時に,原因の切り分けが難しいです. ステータス用のLEDとか付けたいところです.
レスポンスとチャタリング
BLE_NUS_MAX_INTERVAL
やBLE_HID_MAX_INTERVAL
といったBLE関係のパラメタチューニングが難しく,高レスポンスと低チャタリングがまだ実現できていません.
とりあえずこちらのパラメタを参考に同じ値を設定することで,
だいぶよくなりましたが,まだチャタリングが発生するので気になります.