
0秒で組み立てが終わるSlimeVR-Tracker
ファームウェアの変更箇所を少し詳しく書いたのでこちらの記事の方がおすすめ
0秒目:パッケージから出す
※手数0(記事作成当時、弊しらべ)
ESP32 + IMU + バッテリー + 充電回路
パッケージから出したらそのまま使えます!!
※注文は2営業日まえに済ませておいおくこと
※ファームウェアは書き込め
ファームウェアの書き込みについて
現時点でリリースされておるファームウェアではBMI270はさぽーとされてないので、自作するか、フォークされたものを使えばOKです。
ビルドとアップロードはPlatformIO追加います。搭載されているのはm5stack-stamps3なのでm5stack-stamps3と同じ設定でOKです。
PIN_IMU_SDAとPIN_IMU_SCLは8と10。
platformio.ini
[env:m5stack-stamps3]
platform = espressif32
platform_packages = framework-arduinoespressif32 @ https://github.com/bsergei/arduino-esp32.git#issue-8185
board = m5stack-stamps3
framework = arduino
defines.h
#elif BOARD == BOARD_CUSTOM
// Define pins by the examples above
#define PIN_IMU_SDA 8
#define PIN_IMU_SCL 10
#define PIN_IMU_INT 255
#define PIN_IMU_INT_2 255
#define PIN_BATTERY_LEVEL 6
#define LED_PIN 255
#define LED_INVERTED false
#ifndef BATTERY_SHIELD_RESISTANCE
#define BATTERY_SHIELD_RESISTANCE 0
#endif
#ifndef BATTERY_SHIELD_R1
#define BATTERY_SHIELD_R1 100
#endif
#ifndef BATTERY_SHIELD_R2
#define BATTERY_SHIELD_R2 100
#endif
バッテリー残量について
ピンアサインを見たところG6にADC-BATが割り当てられてるので
#define PIN_BATTERY_LEVEL 6
になるのはすぐに分かるのですがR1とR2の値を指定しないといけないので回路図をみます。探すのはVBAT_IN、G6が接続されてる部分です。
BATTERY_SHIELD_RESISTANCEにあたる部分は無いので0、BATTERY_SHIELDのR1R2は回路図R4R5の100(100kΩ)に設定します。

充電中について
USBからの充電なのでTrackerとして動いてしまうので
ENとGNDをつなぐストロングスタイルもありなのかも。
充電中はバッテリー残量見れないのも仕様です(たぶん)。

LEDについて(光らなくていいならスルー)
SlimeVR-Tracker-ESPはピンに直接接続なLEDに対して m5stack-stamps3は、programmable RGB LED (WS2812B-2020) x 1です。FastLEDなどのライブラリを追加してLEDManager.cppを変更すると使えるかもしれないです。
現状:main.cppのsetup() に下のコードいれて光るだけ光らせてます。動作確認ようでloop()に入ったら色変えるだけでも結構やくにたつよ。
FastLED.addLeds<WS2812B, PIN_LED, GRB>(leds, NUM_LEDS);
leds[0] = CRGB::Aqua;
FastLED.show();
ストラップとホルダーなんか
背面にM3ネジとマグネットとホールがあるのでネジとホールを利用してプレートに固定してスライドしてマウントするようにしてみました。30ミリ幅くらいのストラップがあれば使えます。
(マグネットでマウントできたらかっこいいんだけど今回は見送り)


使ってみた感想
環境
・M5Capsule(M5Stamp S3搭載)
・SlimeVRTrackerESP(ちょっとカスタム)
・SlimeVRServer v0.11.0
5分間動かしてみた感じですがバッテリー消耗は1分で1%くらい(甘く見積もって100分動けばいいかな)。静止状態で滑っていくようなことはないけど動き回るとドリフトしてる感じ。mocopi+SlimeVR環境で追加Trackerとかにするならちょうどいいかもです。