【M5】M5StickCのFlashメモリにSPIFFSでデータログ<以外と便利>

M5Stackは、マイクロSDカードスロットがついているので、単独でデータログできるのですが、M5StickCは、小型ゆえ記憶媒体がついてないとあきらめていたのですが、SPIFFSというSPI経由でFlashメモリーヘファイル読み書きできるファイルシステムが用意されてましたので使ってみたらプログラムも簡単で結構便利でした。

●SPIFFSの基本動作
 下記ページに備忘録保存してあります。
基本的な動作は、この記事内で完結できます。
書き込みが遅いですが、十数バイトのデータなら数msecで記録できるので
サンプリング周期が10msecより遅い現象なら大丈夫だと思います。
GITからESP32 ArduinoでSPIFFSを使うテストライブラリー
があります。https://github.com/espressif/arduino-esp32/blob/master/libraries/SPIFFS/examples/SPIFFS_Test/SPIFFS_Test.ino

これを使って、基本動作を実験した結果は、下記記事に詳細が書いてあります。

【M5】M5StickCでSPIFFS動作実験<書き込み遅い16byte/msec>

●SPIFFSの記録容量の設定
おなじみLangShip様のページに解説があります。

①SPIFFSの説明

M5Stack ATOM EchoにSPIFFSにmp3ファイルを埋め込んで再生する

②SPIFFS容量の設定方法
デフォルトで1.5MB、OTA無設定で2MB、minimal設定で1.9MBあるので
ArduinoIDEのTOOL>PartitionSchemeをNoOTA(LargeApp)にすれば
2MB設定に拡張できます。解説は下記Lang-Ship様リンクです。

https://lang-ship.com/reference/unofficial/M5StickC/Storage/Partition/

 

●応用例:COCOAカウンターの接触ログをSPIFFSでログした


◆厚労省の仕様のCOCOAの課題点
課題1:個人情報保護やりすぎ
接触相手の情報が一切残りません、接触時刻、場所、端末のBLEアドレスなどCOCOAでは、検知しても保存されません。

 

課題2:過去2週間、1m以内、15分以上でないと接触と認められない
新型コロナ、まだ、確定した性質が少ない未知のウィルスなので、検知するための基準は、決められないのが現状ですが、厚労省はエイヤで決めてしまいました。

■M5SickCのBLEを使ったCOCOAカウンタは、QIITAで公開されてます。前回の解説記事です
実用性は、Androidスマホ版のココア補完アプリが高機能なのでそちらを
使えばいいと思いますが、私は、あいにくiPhone使いなので、Androidスマホでは、ココアをインストールできるバージョンの機種をもってないので使えませんので、M5Stickで遊んでみます。
M5StickCのプログラムは、GITのGISTに置いてあります。
https://gist.github.com/dj1711572002/4739a0168460bc8cfe45da4cb0f1d8b9

電源オンでプログラムがスタートしてBLEが届く範囲のCOCOA端末を検知してアドレスを取得してカウントします。5秒ごとにスキャンして、ログします。ログデータは、ログ時間(スタートからの秒数)RSSI(電波強度)相手端末アドレス、端末数の4つのデータです。

操作1:ログファイルダウンロード(Bボタン押リリース)
ログファイルをPCへダウンロードするには、USBシリアル接続して
TeraTermで接続してからBボタン(右上)を押すと、readFileが動いて、
TeraTermへログファイルのデータが送信されます。TeraTermのログファイルをEXCELなどで読み込み解析します。

操作2:ログファイルを消去リセット(Aボタン 一番大きな正面のボタン 押リリース)
Aボタンを押して離すと、ファイルが消去されてプログラムが
リスタートしてゼロ秒からカウントしなおします。

 

●装備
 電池が内蔵では不足なので、京商ドローンレーサー1000mAHを直接BATへ突っ込んであります。
  電圧の余裕がM5StickCのバッテリーは3.5V以上でないと動作しません。LiPO電池公称は3.7Vなので
  余裕がないのですが、満充電だと4.1Vくらいになっているので、満充電から3.5Vくらいでつかえます
  多分、数日間連続で使えると思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です