天高工房

キーキャップに印字して遊んだり電子工作して遊んだりしたことを書くかもしれません。

BLE Micro Pro 標準ファームウェア (beta版)のバージョンアップ

重い腰を上げてようやくv0.4にあげたので書きます。

背景

例によって自分が必要な手順だけをまとめておきたいので書きます。

https://github.com/sekigon-gonnoc/BLE-Micro-Pro

バージョンを上げる

この章は、Getting startedの言いかえです。

github.com

BLE micro proはブートローダアプリケーションのバージョンをそれぞれ変更する必要があります。 非常に雑な説明をすると、ブートローダのバージョンはBLE micro pro自体のバージョンで、アプリケーションのバージョンはBLE micro pro上で動くBLE micro pro用のQMKファームウェアのバージョンです。

基本的に、ブートローダのバージョンを変更した場合は、合わせてアプリケーションのバージョンも変更する必要があります。

ブートローダのバージョンを確認する

現在のブートローダのバージョンによって手順が変わります。そのため、最初にブートローダのバージョン確認が必要です。

ブートローダのバージョン確認はPCから行います。最初に、キーボードのリセットボタンを押しながらPCとUSBケーブルで接続してください。

キーボードに取り付けていない状態の場合は、金属ピンセットなどの電気が流れるものでBLE micro proのBOOTピンとGNDピンを繋いでください。 以後リセットボタンを押しながらという操作はすべて置き換えて読んでください。

成功した場合は、BLEMICROPROという名前のマスストレージデバイスが検出されます。リセットボタンを離してください。 私の環境では、エクスプローラが開きます。 その中に以下の二つのファイルがあることを確認してください。

  • INDEX.HTM
  • INFO_UF2.TXT

もし、このファイルがなく、KEYMAP.JSNなどがある場合は、最初の手順に失敗しています。一度切断し、リセットボタンをPCにBLE micro proが認識されるまで離さずにPCとBLE micro proを接続してください。

上記の二つのファイルが確認出来たら、INFO_UF2.TXTを開きます。

1行目のUF2 Bootloaderに続いて書かれている、vから始まるピリオド区切りの3つの数字がブートローダーのバージョンです。

もし、ストレージデバイスとして認識されないけれどもCOMポートデバイスとして認識される場合は、最も古いバージョンのブートローダが書き込まれています。その場合は別手順が必要です。この記事では取り扱わないので説明が書かれているnrfutilを使ったアップデートのURLを紹介します。

github.com

最新のブートローダファイルを手に入れる

最新のブートローダファイルを入手しましょう。 ブートローダファイルはBLE micro proのgithubリポジトリのreleasesから手に入ります。

Releases · sekigon-gonnoc/BLE-Micro-Pro · GitHub

releasesは、リポジトリのルートページにリンクが用意されています。 https://github.com/sekigon-gonnoc/BLE-Micro-Pro

ブートローダファイルは基本的に、一番上に表示されているもっとも新しいバージョンであるlatest releaseを選択します。ファイルがいくつか並んでいますが、そのうち拡張子が.uf2のものを使います。ダウンロードしてください。

ただし、v2.0を使っている場合はv2.1、v3.0がはいっている場合はv3.1を経由してからでないと、うまくバージョンをあげることができないようです。latest releaseと経由するバージョンをそれぞれダウンロードしてください。

ブートローダを更新する

バージョン確認の手順と同様に、リセットボタンを押しながらBLE micro proとPCを接続してください。

ストレージデバイスとして認識されたら、エクスプローラで開きます。

前の手順でダウンロードしたブートローダファイルをBLEMICROPROにコピーしてください。 ファイルをコピー・ペーストしてもよいですし、ドラッグアンドドロップでも構いません。

BLEMICROPROに対してコピーが完了したら、若干時間をおいて自動的に切断されます。切断されたらバージョンアップは完了です。

ブートローダバージョンが更新できたことを確認する

最初の確認手順の繰り返しです。

一度PCとBLE micro proを切断してから、リセットボタンを押しながらBLE micro proとPCを接続します。

INFO_UF2.TXTの一行目のバージョン情報が、コピーしたファイルと同じになっていればブートローダの更新は完了です!

アプリケーションのバージョンを確認する

アプリケーションのバージョンを確認します。

何もボタンを押さずにPCとBLE micro proを接続します。

KEYMAP.JSNなど表示されるうちのVERSION.TXTを開いてください。

三行目のBuild from:bmp-に続くピリオド区切りの三つの数字がアプリケーションバージョンです。

最新のアプリケーションファイルを手に入れる

ブートローダsekigon-gonnoc/BLE-Micro-Proにありました。アプリケーションはsekigon-gonnoc/qmk_firmwareのreleaseにあります。

github.com

このなかの一番上のlatest releaseのQMK for BMPのAssetsの中にあるuf2ファイルをダウンロードしてください。

ただし、何かわけがあってブートローダの最新版を入れていない場合は、バージョンを揃えてください。そろえる必要があるのは数字三桁X.Y.ZのXとYです。Zはブートローダとアプリケーションの両方が最新のものであっても異なることがあります。

アプリケーションを更新する

この手順はブートローダの手順と同様です。ファイルが異なるだけです。

リセットボタンを押しながらBLE micro proとPCを接続してください。

ストレージデバイスとして認識されたら、その中に前の手順でダウンロードしたファイルをコピーしてください。

コピーが完了したらPCからBLE micro proが切断されます。

アプリケーションのバージョンを更新できたことを確認する

この手順はアプリケーションのバージョン確認手順といっしょです。

PCとBLE micro proを接続し、VERSION.TXTを開いてコピーしたファイルとバージョンが同じになっていることを確認してください。

バージョンが同じになっていたら、更新完了です。

ブートローダとアプリケーションの更新が完了しました。

標準ファームウェアはまだbeta版ですが、最小限だとストレージデバイスを認識して、中のファイルを編集する手段さえあればキーマップの編集ができるのでとても便利です*1

また、KEYMAP.JSNの中身はQMK configuratorのkeymap.jsonと同等の形式ですので、QMKのキーコードを覚えていない人でもQMK configuratorを使えばキーマップの編集ができます。 過去にはANYを駆使してkeymap.jsonを作成していましたが、現在はせきごん氏によってBLE micro pro用のQMK configuratorが用意されています。 BLE micro pro用のQMK configuratorはPCと接続したときにMAP_EDIT.HTMを開くとアクセスできます(要インターネット)。 詳しくは触れませんが、QMK公式の物に比べて様々な拡張がされています。

いっぱい使っていきましょう。

*1:キーコードが思い出せないことがたまにあります

CapsLockは実はCapsLockではないというはなし

この記事はアドベントカレンダーとは特に関係なく書かれた記事です。

全然別のこと書いてたけどやっぱりまとまらなかったので5分で書けそうな内容を書きます。

日本語配列においてCapsLockはそもそもファーストレイヤーに存在しない

表にいるのは英数キーです。

本物のCapsLockはShift+英数です。

何故遠い半角全角が入力方式の切り替えに使われてしまっているのか

押してしまうと、変換可能な全角のアルファベットが入力されるようになってしまう最高に謎な糞なキーだと思っている人も多いでしょう。私もそうでした。

実は半角全角と同等の機能を持っているのですが、なんと謎の学習機能が付いているのです。デフォルトでは「前回の変換結果に従う」という素晴らしい状態だったと思います。

この謎の学習機能をオフにすることで、Aの左というS席に入力方式の切り替えキーを配置できます。

謎の学習機能?

本当になんで存在するのか謎なんですよこれ。ググってください。

本当に5分で書きなぐりました。

この記事はXD75 atomic style JPで書かれました。

Novelkeys Big Switchをスマートホームデバイスにした

概要

どこのご家庭でも持て余しているNovelkeys Big SwitchとM5Stick-Cを使って間接照明を作ります

必要なもの

  • 基板
  • M5Stick-C
  • Groveケーブル
  • USB type-Cケーブル
  • USB電源

skyhigh-works.booth.pm

GROVE - 4ピンケーブル 20cm (5本セット)

GROVE - 4ピンケーブル 20cm (5本セット)

M5Stick-C・Groveコネクタともに、スイッチサイエンスかマルツから購入することをお勧めします。

M5Stick-CはAliexpressの公式ストアから購入するとさらにおまけがつきます。技適通ってるので安心です(たぶん)。

手順

基板の準備

基板に部品がついていない場合は、基板に必要な部品を実装します。 必要なものは、Groveの90度コネクタ 1個とWS2812bか同サイズ同ピン配置の5050LED 12個です。

LEDは配線を楽するために向きを回しまくったので向きに気を付けて実装してください。

groveコネクタは、LEDが配置されている側の反対側から差し込みます。

開発環境の準備

ArduinoIDEを使ってESP32を開発できる環境を構築してください。以下のページを参照するとよいでしょう。

docs.m5stack.com

ライブラリの準備

スマートデバイスをESP32で作成するライブラリはいくつかありますが、今回はfauxmoespを使います。

bitbucket.org

インターネット上で見ることができる利用例では好評でしたが、現在では方針転換をして Hueに偽装するライブラリになったようです。

This is a library for ESP8266/ESP32-based devices that emulates Philips Hue lights and thus allows you to control them using this protocol, in particular from Alexa-powered devices like the Amazon Echo or the Dot.

LEDは定番のFastLEDを私は採用していました。最新版ではESP32に対応していますが、古いバージョンでは定義がないので必ず最新にしてください。

サンプルソースコード

credentials.sample.hを参考にcredentials.hを作成して同じフォルダに置いてビルド・書き込みを行ってください。

github.com

このinoでは、メイン基板のLEDと、M5StickCのLEDを点灯させるようになっています。

バイス名はBigSwitchにしてありますが、適当な発声しやすい名前に変更してください。

動かす

alexa appなりgoogle home appなりで、スマートホームバイスの検出を行ってください。 認識されたら、設定したID名で呼び出すことができます。

色変更とかは頑張って実装してください。一つのデバイスが複数の名前・複数の仮想デバイスを持つことも可能なので、 パリピモードという名前にして「パリピモードつけて」で有効になるようにしてもよいかもしれません。

BigSwitchをスマートホームバイス(ライト)にすることができました!

私は寝室照明に使っています! 布団の枕元において光らせるとepaperを読みやすくてよいです! 単に飾っておくだけでも可愛くてよいと思います!

おまけとして、スイッチと基板の間に3mmのアクリルを挟むと、Groveコネクタとスイッチ足の突き出し量が釣り合って自立するようになることを報告させていただきます。

TRRS checkerつくった

概要

マイコンなど知性のあるものは使っていない原始的な仕様です。

外部から電源を供給し、TRRSを経由してLEDに流し込むことで光っていたら導通していることを確認できるというだけの仕組みです。

これだけだとほかの端子との短絡が確認できませんが、このチェッカーではタクトスイッチを個別にはさむことで短絡の確認ができるようにしました。

動作例

Tipのスイッチを押してTipのLEDだけが点灯すればTip線は問題ありません。

Tipが点灯しなければTipは接続されていません。

Tip以外のLEDも点灯した場合はその線と短絡しています。

必要なもの

  • 基板
  • 0603 LED 4個
  • 0603 抵抗 4個
  • 6x6mm タクトスイッチ 4個
  • 電源専用USB type-cコネクタ 1個
  • TRRSコネクタ PJ-320A 2個

USBコネクタはたぶんこれです。

www.aitendo.com

TRRSジャックはaitendo以外にも秋月でも買えます。

www.aitendo.com

また、CR2032電池ホルダを調達・実装することでコイン電池でも動作するはずです(未確認)。

www.aitendo.com

部品実装

特に紛らわしい箇所はないのでシルク・フットプリント通りに実装してください。

コネクタ->抵抗・LED->TRRS->LEDの動作確認->スイッチという順番の取り付けがおすすめです。

R(抵抗)に向きはありません。

D(ダイオード・LED)に向きがあります。 0603 led 向き 0603 led polarityなどで検索すると向きの判断方法を紹介しているウェブサイトが見つかります。

基本的には裏面に書いてある矢印の向きです。表面の流れ先に線や点が入っているように見えるLEDもあります。

BLE micro proの新しいファームウェアを入れる

BLE micro proの新しい標準ファームウェアが公開されました(2019/10/1現在Beta版)。

github.com

最近オタクのドッグフーディングかねてBLE micro proを使っているので試してみたいと思います。

前提

Getting startを読みながら進めていきます。 OSはWindows10です。

qmk/qmk_firmwareにマージされているキーボードのみを取り扱い、野良定義には触れません。開発者向けの内容になるのでBLE micro pro開発者向けドキュメントを読んでください。

github.com

おおざっぱな手順は以下の通りです。

  1. 準備する
  2. ブートローダを書き換える
  3. ファームウェアを書き換える
  4. 設定ファイルを書き換える

準備する

フォルダを準備し、必要なファイルをダウンロードします。

フォルダを準備する

自分が管理しやすい適当な場所にフォルダを作ります。

gitとgithubを使って管理したいなーと思うので、今回は以下のようなフォルダ構成を考えています。

./BMP_beta/
    |--workspace/
    └--keyboards/
        |--OtakuSplit/
        |                     |-left
        |                     └-right
        |--other_keyboard_1/
        |--other_keyboard_2/
        └--and others/

後述するnrfutil.exeだとかbootloaderやfirmwareを一緒にアップロードするのはライセンス上よくない可能性がある(調べてない)ので、これらは作業ディレクトリのworkspaceの中に突っ込んで管理外にしたいと思います。

バージョン情報は欲しいので、どこかにバージョン情報を記録したメモを用意しておくとよいかもしれません。

nrfutil.exeを調達する

以下のURLから最新版のnrfutil.exeをworkspace以下にダウンロードします。

github.com

ブートローダファームウェアを調達する

ブートローダはsekigon-gonnoc/BLE-Micro-Pro, ファームウェアはsekigon-gonnoc/qmk_firmwareにあります。 それぞれから、同じバージョンのファイルをダウンロードしてください。カンマで区切られた3番目の数値はrevisionのため、一致させる必要はありません。

それぞれ同じバージョンをworkspace以下にダウンロードします。

github.com

github.com

キーボード定義を調達する

キーボード定義を調達してください。今のところ、準備されていないものはすべて人力で用意する必要があります。 これが用意できない場合、旧ファームウェアを使ってください。

ブートローダを書き換える

この手順は3手順です。

作業ディレクトリに移動する

powershellを開いて、作業ディレクトリに移動してください。

ポートを確認する

Win+X->Mの順番で押してデバイスマネージャーを起動します。

ポート(COMとLPT)という項目があるかどうかを確認してください。ないならそのまま次に行きます。あるならば、何番がすでにあるのかを控えてください。

BLE micro proのリセットボタンを押しながらUSB接続し、ブートモードでPCと接続されている状態にします。この状態でデバイスマネージャのポート(COMとLPT)を見ると新しいデバイスが追加されています。新しく増えたデバイスが、BLE micro proである可能性が高いです。これが何番か(COMn(nは整数))を控えてください。この番号はブートローダが書き換わったり、異なるUSBポートに接続すると変わる可能性があります。

Powershellから確認する方法もあります*1。以下のコマンドを実行すると、現在利用可能なCOMポート一覧が表示されます。デバイスマネージャーと同様に、接続前後で差分をとるだけです。

(Get-WmiObject -query "SELECT * FROM Win32_PnPEntity" | Where {$_.Name -Match "COM\d+"}).name

ブートローダを書き込む

作業ディレクトリで先ほど控えたポート番号を使ってコマンドを作成、実行します。この際BLE micro proはブートモードである必要があります。

./nrfutil.exe dfu usb-serial -pkg ./ble_micro_pro_bootloader.zip -p COMn

ファームウェアを書き込む

この手順も3手順です。ほとんどブートローダと同じです。

ポートを確認する

ブートローダの書き換えと一緒です。変わっていないことを確認したほうがよいです。

ブートローダを書き込む

ファイル名以外ブートローダの書き換えと一緒です。

設定ファイルを書き込む

設定ファイルは3ファイルからなります。

  • CONFIG.JSN
  • KEYMAP.JSN
  • TAPPING_TERM.JSN

全てJSONファイルですが、3文字制限があるためJSNになっています。

CONFIG

キーボード定義です。左右どちらがマスターかも含んでいます。

せきごん氏により、QMKのキーボード定義から変換するスクリプトが用意され、試験ついでに主要な国内キーボードキットの定義を用意していただいています。

github.com

ここに定義がない場合は、QMKの定義から変換をするか、自分で用意する必要があります。 これは開発者向けの内容になりますので、この記事では扱いません。

KEYMAP

QMK configuratorから生成したkeymap.jsonのファイル名を変更して書き込むだけです。 ただし、BMP専用のBLE挙動を変更するためのキーコードが含まれていないので、直接書き換えるか、Quantum>QMK specific>ANY()を使って任意のキーコードを差し込む必要があります。一通り必要になるので、専用レイヤーを用意して一通り入れておきましょう。

私は打ち間違えで悩む未来が見えたのでQMK configuratorを拡張しました。keyboard settings > BLE micro proに一通りキーコード定義があります。

takashiski.github.io

特にメンテナンスをする予定はないので、動かなくなってたら教えてください。

tapping_term

キーコードペアごとにtapping termを切り替えられるようです。私は今のところ気になってなくて触っていません。

ざーっと書いて続きはまた明日、と一晩おいたら更新されてました。流石せきごんさん手が早い。ほとんど全部書き直しになった。

導入だけ済ませてしまえば、あとはUSBで繋いでKeymap.jsonを抜き取り、Configuratorに読み込ませて調整、再度読み込ませれば書き換わるので非常に楽です。せきごんさんすごい!

今までBLE micro proはnrf開発環境の導入などサポートのしんどさが目に見えていて公式にはお勧めできない状態でした。一体どれだけの人間が使われていないBMPを所持しているのか、と考えたものです。しかし、これならガンガン推し進めることができるように思いました。

この記事は特に無線化されてない普通のXD75(atomic_style_jp)で書きました。

一応オタクスプリットはBLE micro proが取り付けやすい空間が存在しています。

skyhigh-works.booth.pm

コミックマーケット96に出展しました

天高工房はコミックマーケット96に出展しました。ご来訪されたかた、ありがとうございました。

だいたい輝くオタクの左手を見て一定距離離れて怪訝な顔で見ながら通り過ぎた方が多いかと思います。

f:id:skyhigh_works:20190813154605j:plain
実験的に置かれた輝くオタクの左手(ホテルで撮影)

訪れた方に私からはだいたい「親指活用がモダンなんですよ!!!!」みたいなことを中心に話しました。「なるほどおもしろい!」から「なにいってんだこいつ」まで反応は様々でした。

kakunpc氏からはAngel64の説明がなされました。タブレット向け市場はありそうです。

販売されていた物品

各物品は原則Booth、一部遊舎工房レンタルボックスで販売されます。

booth.pm

オタクスプリットは在庫がなくなっても随時追加していきます。原則実装済みで用意しようと思っています。

booth.pm

すいはんきーとangel64は8/13 17時より在庫補充予定です。

kakunpc.booth.pm

kakunpc.booth.pm

その他

すいはんきーが8/17(土)より遊舎工房群遊伝で販売されるかもしれません。

見かけたおもしろいもの

WIP