1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

toioAdvent Calendar 2024

Day 21

kenichi884/M5StackToioを使うときはNimBLE-Arduinoのバージョンを1.4.3に固定してください(令和6年末時点)

Last updated at Posted at 2024-12-22

 タイトルが言いたいことのすべてです。

以下細かい話

 M5Stack(まあ、M5製品に限らずESP32/ESP32-S3系ボードでArduino使うぶんには使えるんですが)でtoio core cubeを動かしたりセンサーの情報をよみとったりできるライブラリ kenichi884/M5StackToioですが、依存ライブラリのNimBLE-Arduinoがver.1.4.xからver.2.0.x、ver.2.1.xへバージョンアップし、APIの互換性がなくなりました。

なんか2.0.0のリリースでミスったっぽい

そして2.1.0リリーズ
"Reduced the code size by over 40KB." とあるのが魅力的ですが、1.4.x系とAPI互換性がありません。

今は2.1.2が最新のようです。

 このため、現時点(2024年12月)ではNimBLE-Arduinoのバージョンをver.1.4.3に固定してビルドしないと、kenichi884/M5StackToioを使ったプロジェクトをビルドすることができず、ビルドエラーになります。

Arduino IDEの場合

ライブラリマネージャで、M5StackToioのバージョン選択で「1.4.3」を選択してください。なんも考えずにアップデートしていると最新の2.1.2(2024年12月末時点)になってしまってビルドできなくなります。

スクリーンショット 2024-12-22 113954.png

この状態にしてください。
スクリーンショット 2024-12-22 114016.png

 Arduino IDE 2.3.4、ボードマネージャ esp32 3.1.0 または M5Stack 2.1.3 でビルドできることを確認。

PlatformIOの場合

platformio.iniファイルのlib_depsで「NimBLE-Arduino@1.4.3」としてバージョンを固定してください。kenichi884/M5StackToioのREADME.mdでは「NimBLE-Arduino@^1.4.1」と書いてしまっていたので、このままだと「1.4.1以上」ということになり2.1.2が選択されてしまします。

platformio.iniの例

platform = espressif32 @ 6.9.0 
board = m5stack-core2
framework = arduino
monitor_speed = 115200
lib_deps = m5stack/M5Unified
    https://github.com/stack-chan/m5stack-avatar
    kenichi884/M5StackToio
    h2zero/NimBLE-Arduino@1.4.3

現状の動作状況

 M5Stackシリーズでないと動かないということはなく、NimBLE-Arduinoの対応MCU(ESP32、ESP32-S3、ESP32-C3)であれば動きます。(M5UnifiedなどのM5専用ライブラリは外した状態で)XIAO ESP32-S3での動作は確認しました。

 ESP32-C6は未対応です。なのでM5 nano C6では動きません。
 ToioCore.hで // #define USE_NIMBLE 1 としてNiMBLEの使用をやめてarduino-esp32のBluetooth APIを使うようにするとC6でも動くかも。(Arduino IDEのほうが新しめのarduino-esp32に対応しているっぽいのでそっちだと可能性ありそうです。)

 NimBLEを使った場合、PSRAMのある機種ではWiFiとの同時使用が可能(arduino-esp32のBluetooth APIだとヒープメモリが足りずに動かない)ですが、それでもメモリが足りず、大体以下のような感じになっています。

WiFi使わない→PSRAMなし機種でもOK
WiFi(http/https)→PSRAM必須 radiko視聴などはいける
WiFi使う&OpenAIなどによるいわゆるAIスタックチャン PSRAMがあってもメモリ不足で動作せず。

動作したものについては以下に置いてあります。

将来

 kenichi884/M5StackToioのほうでNimBLE-Arduino 2.1.x対応しないといけないなーとは思っています。ただ、APIが違うので NimBLE-Arduino 2.1.x 専用になっちゃうかなと。( NimBLE-Arduino 1.4.xはarduino-esp32のBluetooth APIと互換なwrapperがあったのでarduino-esp32のBluetooth APIで書いておけば切り替えが容易だったのです。)

あとnrF52というかAdafruit_nRF52_Arduino対応してみたいなーという気がしなくもないです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?