SlimeVR導入ガイドによれば、オンラインフラッシャーはユーザーフレンドリだが、PlatformIO版の方が小回りが効くらしい。オンラインフラッシャーにS3ボードがなく、いきなりPlatformIO一択になる。ArduinoはQualcomに買われて廃れる運命にあるようだし、PlatformIOに移行するか。
VSCodeインストール、SlimeVRのgitをクローン、など進め・・・接続するIMUにあわせてdefines.hを作成する必要があるらしい。具体的になってきたね。ふむ・・・このセッティングだと、センサーはYが下を向いているようだね。直感的にDEG0か180に思えるが、素直に考えれば180か?



defines.hは下記のように。公式ページで作ってもらったファイルをもとに、ESP32C3の接続事例も参考にしながら書き進む。SDA/SCLなどのピン番号はXIAOS3のマニュアルに従い、GPIOの番号で指定するようだ。INTはLSM6DSV側に端子があり、ここから「測定が完了した」という信号を受け取り、サンプルすることで効率がよくなるので、つなぐのが一般的なようだ。platformio.iniのdefault_envsは「BOARD_ESP32S3_SUPERMINI」にしてある。とりあえずビルドはできるし、書き込むこともできる。が・・・
#define IMU IMU_LSM6DSV
#define SECOND_IMU IMU
#define BOARD BOARD_CUSTOM
#define IMU_ROTATION DEG_180
#define SECOND_IMU_ROTATION DEG_180
#define PRIMARY_IMU_OPTIONAL false
#define SECONDARY_IMU_OPTIONAL true
#define MAX_IMU_COUNT 1
#ifndef IMU_DESC_LIST
#define IMU_DESC_LIST \
IMU_DESC_ENTRY(IMU, PRIMARY_IMU_ADDRESS_ONE, IMU_ROTATION, PIN_IMU_SCL, PIN_IMU_SDA, PRIMARY_IMU_OPTIONAL, PIN_IMU_INT)
#endif
// Battery monitoring options (comment to disable):
// BAT_EXTERNAL for ADC pin, BAT_INTERNAL for internal - can detect only low battery, BAT_MCP3021 for external ADC
#define BATTERY_MONITOR BAT_EXTERNAL
#define BATTERY_SHIELD_RESISTANCE 0 //130k BatteryShield, 180k SlimeVR or fill in external resistor value in kOhm
#define PIN_IMU_SDA 5 //D4-GPIO5
#define PIN_IMU_SCL 6 //D5-GPIO6
#define PIN_IMU_INT 7 //D8-GPIO7
#define PIN_IMU_INT_2 8 //D9-GPIO8
#define PIN_BATTERY_LEVEL 4 //D3/A3-GPIO4
書き込めるが、ESP32でファームウェアが動いてるのか動いてないのかわからん状態で小一時間ほど。。いや、20時間ほど・・・。以下はXIAOC3用。
#define IMU IMU_LSM6DSV
#define SECOND_IMU IMU
#define BOARD BOARD_CUSTOM
#define IMU_ROTATION DEG_180
#define SECOND_IMU_ROTATION DEG_180
#define PRIMARY_IMU_OPTIONAL false
#define SECONDARY_IMU_OPTIONAL true
#define MAX_IMU_COUNT 1
#ifndef IMU_DESC_LIST
#define IMU_DESC_LIST \
IMU_DESC_ENTRY(IMU, PRIMARY_IMU_ADDRESS_ONE, IMU_ROTATION, PIN_IMU_SCL, PIN_IMU_SDA, PRIMARY_IMU_OPTIONAL, PIN_IMU_INT)
#endif
#define PIN_IMU_SCL D1 //D1
#define PIN_IMU_SDA D2 //D2
#define PIN_IMU_INT D3 //D3
#define PIN_IMU_INT_2 D4 //D4
#define LED_PIN LED_OFF //OFF
#define PIN_BATTERY_LEVEL D0 //D0/A0
#define BATTERY_MONITOR BAT_EXTERNAL
#define BATTERY_SHIELD_RESISTANCE 0
#define BATTERY_SHIELD_R1 100
#define BATTERY_SHIELD_R2 100
LSM6DSVのチェック用Arduinoプログラムはここに保存しておこうか。