ottijp blog

Corne CherryをBLE Micro Proで無線化

2019-10-12 Tags: crkbd自キBLE

Corne CherryをBLE Micro Proモジュールを使って無線化しました.

ハードウェアのセットアップ

Corne Cherry本体

Corne Cherry自体は通常のビルドガイドに従って制作します. ProMicoモジュールとOLEDモジュールは使いませんが,OLED用のジャンパとピンソケット取り付けはやっておいてもOKです. 私は通常OLEDを入れるスペースにボタン電池基板を収めたかったのですが,OLEDプレート用のデフォルトのスペーサでは高さが足りなかったので,以下の10mmのスペーサを購入して交換しました.

ARB-2010E: 金属スペーサー|ヒロスギネット|スペーサー・ピンヘッダー・ワッシャー通販

corne cherry ble wireless 01

写真は交換済みのスペーサです.

corne cherry ble wireless 02

デフォルトのスペーサ(左)は8mmで,交換したスペーサ(右)が10mmです.

BLE Micro Pro

コンスルーピンをハンダ付けするだけですが,Pro Microと同様に向きに注意してください(基板表面から通して,裏面をはんだ付けする). また,これもPro Microと同様に,USBコネクタのモゲ防止に接着剤を塗布しておくと良いと思います.

corne cherry ble wireless 03

コンスルーピンは12ピンのものを使ってください! 私は間違って片方のモジュールに13ピンのものを付けてしまいましたが,Corne Cherryには12ピンしか端子がないので,過剰だったピンをペンチで引き抜きましたw(手前側のモジュール)

電池基板

以下の専用基板を購入して使いました.

BLE Micro Pro用電池基板 | 遊舎工房

組み立て方はこちらの記事がとても参考になりました.ダイオードやコンデンサは極小なので,はんだ付けは難しいです.

BLE Micro ProでErgoDash miniをワイヤレス化する / LOG

電池は,マイナス極が基板側に来るように入れます. スイッチを●印のある方に入れることで,電源がONになります. BLE Micro Proは,スイッチ両端付近にある+−とシルク印刷されている端子から接続します.

corne cherry ble wireless 04

下の写真のように,電池基板の+をBLE Micro ProのBATに,電池基板の−をBLE Micro ProのGNDに接続することになります.

corne cherry ble wireless 05

合体

私は通常OLEDが入るスペースに電池基板を収めたかったので,電池基板に絶縁のためにテープを貼った上で,重ねるようにしてジャンパワイヤでBLE Micro Proと接続しました.

corne cherry ble wireless 06

これをCorne Cherryに接続して,10mmのスペーサで高さを増やしたOLEDプレートを付けます.

corne cherry ble wireless 07

corne cherry ble wireless 08

corne cherry ble wireless 09

ソフトウェアのセットアップ

公式ページにガイドがあるので,それを参考にセットアップしました.

参考: 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

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.mkusb_serialusb-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)を押すことでペアリングできます.

ワイヤレスでスマートらくちんです!!

corne cherry ble wireless 10

改善点

いくつか気になる点が残っています.

スペーサがちょっと短い

OLEDプレート用のスペーサを10mmに変更しましたが,それでもまだちょっと短く,電池基板に押し上げられてしまうような感じになってしまいました. もう2mmほど長くてもよかったかもしれません.

電池ケースの安定性

OLEDを入れるスペースに電池ケースを入れてみましたが,BLE Micro Proとジャンパワイヤで繋いでいるだけなので,安定性がいまいちでした. スイッチをON/OFFする際にズレたり,ジャンパワイヤが切断されたりするので,もっとちゃんと固定したいですね.

電源や接続状態がわからない

電源がちゃんと入っているのか,BLE接続がされているのかなど,ステータス表示するものが何もないので,うまく接続できない時に,原因の切り分けが難しいです. ステータス用のLEDとか付けたいところです.

レスポンスとチャタリング

BLE_NUS_MAX_INTERVALBLE_HID_MAX_INTERVALといったBLE関係のパラメタチューニングが難しく,高レスポンスと低チャタリングがまだ実現できていません. とりあえずこちらのパラメタを参考に同じ値を設定することで, だいぶよくなりましたが,まだチャタリングが発生するので気になります.


ottijp
Satoshi SAKAO (@ottijp)

都内でアプリケーションエンジニアをしています

...