Open6

M5Stackでセンサログ取る準備

okuokuokuoku

とりあえず既製品では上手く行ったので今度は自作。

今回はESP32公式のライブラリESP-IDFだけ使って、センサはUARTなりI2Cを直接操作する方向で。つまりM5 StackのArduinoライブラリは採用しない。

ESP-IDFはドキュメントがそれなりに充実している。

ライブラリはかなり充実していて、必要そうなものはBluetooth-PANを除いてだいたいある:

Bluetooth PANは無いので、代わりにBTStack https://github.com/bluekitchen/btstack かな。。BTStackは商用利用は別途ライセンスが必要なものの、非商用であればソースコード含め自由に利用できる。

okuokuokuoku

ツールチェーンの準備

https://qiita.com/okuoku/items/7593f648e235e537a29e

前Qiitaに書いてたのでそのままで ...とは行かず、一応治った問題と新規に発生した問題を追記しておいた。

[INFO ]  (elapsed: 369:22.04)

369分って6時間も掛かったのか。。まぁたぶんビルドにHDDを使ったのがよくなかったな。。

okuokuokuoku

環境変数 IDF_MAINTAINER を見るようになった

  Toolchain:
  /cygdrive/f/espwork/crosstool-NG/builds/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc.exe,
  crosstool-ng version esp-2021r2 doesn't match supported version esp-2021r1

  Please try to run 'idf.py fullclean' to solve it quickly.

  Check Getting Started documentation if the error continues.

  You can override this error and proceed with build by defining the
  IDF_MAINTAINER environment variable.

やめてくれ〜

導入は今年に入ってからっぽい。

https://github.com/espressif/esp-idf/commit/f01002d2fcdfb2157538ddc0db68e3eebe51be55#diff-d98c718537bf6187b21e58f6bc64fa7291f00e115cfd7ca7e5579627c914c71f

環境変数をビルドに影響させるかは 永遠論争 がある。個人的には環境変数は使用禁止派だけど。。

okuokuokuoku

とりあえずBTstackを入れてビルド通した

https://github.com/okuoku/esplogtest/commit/3546a8828587534e1c254bb3f3faf1f1fb64536c

ええと残件は。。

  1. ESP-IDFのlwIPと繋ぎ込む
  2. ペアリングとかのハンドラを書く -- 物理ボタン押したらペアリングするとかそういう奴
  3. 接続が切れたら再接続するとか細かい処理を用意する
  4. httpサーバを起動してAndroid側からデータ読む

かなり遠いな。。

無駄なコードが大量に入っているので既に機械語部分だけで400KiBとかある。。ESP32はいわゆるExecute In Placeが可能で機械語部分についてはキャッシュをいくらか取れば十分なので大した問題にはならないけど、消費電力を考えると無駄コードは避けたい。