【M5】Core2処理速度上がって、BasicのPgm動作しなくなった<タイミング系作り直し>

STA(Ski Turn Analyzer)のモニターをM5StickCからM5StackBasicに変えて一度使ってみたのですが、プラスチックケースにいれると反射でみにくい点とボタン3個だけでは、SDファイルを選択する操作が大変なので、電池寿命がふえてタッチパネル付きになって単独動作できそうなCore2に乗り換えました

●CPU仕様は変わってないはず
  ESP32の基本仕様は変わってないのですが、LCDは、見た目にはBASICより速いです。
2コアのマルチタスク処理がライブラリーに追加されたのではないかと思います。
=>ESP32を2コアで使えば速くなるのですが、難しいプログラムとトラブルが多いので手がでませんでした。機能が増えた記事ばかりで速度が上がったという記事はないので私の勘違いかもしれません。
2コアのESP32-D0WDQ6-V3で V3という記号がついてますが、これは省エネ性能がバージョンアップしたからで速度が速くなるわけではないそうです。
スイッチサイエンスさんのページ https://www.switch-science.com/catalog/6530/
マルツの宣伝記事 https://www.marutsu.co.jp/select/list/detail.php?id=1216
WIKIでもhttps://ja.wikipedia.org/wiki/ESP32

しかし、下記記事のように、各場所にDELAY相当をいれないとM5Stack Basicのプログラムが走りませんでしたので
速くなったという感触的なものがあるのは事実です。

●M5StackBasicのPgmをCore2へ移植

ArduinoIDEの設定をCORE2用に変更します。
プログラム#include<M5Core2.h>と書き換える
やり方はこちらの記事が判り易いです。感謝です。

初心者向けM5Stack Core2の始め方(ArduinoIDE編)

●M5Stack Basicのプログラムを走らせると異変
RTKデータを2つのMovingBaseキットからESP-NOWで同時送信してくるのを受信ログ、LCD表示するプログラムですが、時間的に同時受信が厳しいのでCh間を40msecずらして受信してます。BASICよりLCDの更新速度が明らかに速いです。更に、ボタン押し、外部信号処理が速くなったようで、Delayをいれないと動作しない部分がたくさんでてきました。
BASICでは、動作したいたプログラムにDLAYをいれながら、何とか動作させました。
 デバッグ用のSerial.printコメントアウトしないほうが、安定して動作します。
 特にESP-NOWの受信タイミング関係でハングしやすいです。
こういう現象は、mbedとか大メーカーのマイコンでは発生しないのですが、ESP-32系は
毎回このような現象が発生します。中国メーカーの品質と欧米メーカーの設計品質の差だと思います。

コードは、GISTに置いてあります。
https://gist.github.com/dj1711572002/e6ae2e482128a2ae10b33da1b8c30984

●タッチボタン
 触っただけでオンオフするのですが、しっかりと触らないとオンオフしないので、タッチパネル的ではなくて間違ってオンオフすることは少ないです。

●SDカードログ
これもデバッグ用Serial.printをいれないと安定動作しませんでした。

●電池寿命もつ
 モニターとロガーなので所望の時間確実に動作するか連続運転してみました。
 実際に4本のアンテナから、信号をいれて、ばらつきをグラフに表示しながらSDログしていきます。無線受信なので送信ほど電流は食いませんが、それでも2時間以上持つのは有難いです。
2時間半過ぎてもまだログが続いてますので、3時間で瞬時に切断して終わったのでログファイルをCLOSEしてなかったので全部ゼロになってしまいました。実使用は5-10分に一回CLOSEするので大丈夫だと思います。
室内連続駆動なので、スキー場では半分くらいになるかもしれませんが、ログ時間は1時間あれば十分です。

●以後
SDカードのファイルをその場で読みこんでグラフを表示してログデータが無事とれたか確認できる
機能をプログラムに追加します。

※2021年4月2日追記
4月1日にスキー場でRTK SkiTurnAnalyzerシステムのモニターとして使ってみました。
◆失敗した。
ログスタートボタンを押しても、スタートしない現象が発生した。0CHのログは無事とれていたのですが
1Chがとぎれとぎれで、ログスタート時間もばらばらで0Chと同期してない状況でした。
今までM5StickC,M5StackBasicでログ成功してきたのにCore2になったら大失敗しました。
■帰宅後 原因解析
帰宅後、スキーを車の屋根にのせて、5mケーブルで室内まで延長して、机上でバッグしました。
ログ開始ボタンを何回か押し切りすると、スキー場で発生した現象が再現できました。
オンしたはずなのに0Chと1Chで足並みがそろってなくて、オンオフトグル状態が続いて結局1CHログできない状態です。
=>現在のPgmは、ログオン状態フラグをRTKBOX1,2から送信させているのですが、それを片方しか見てなかった。
■対策
①ログオンフラグを0CH,1CHの両方がたった時に、CORE2としてログが開始されたと認識することにしました。
②ログボタンもAボタンでトグルでオンオフしていたのが間違いうやすいので、Aボタンでログスタート
Bボタンでログストップと明確に送信信号を分けました。
③0CHと1CHの時刻データiTowが一致した状態で、LCDに結果表示することで、同期がとれている状態でLCDが正常表示するように変更

●4月3日以降で、再度スキー場で、リベンジ測定してみます。

コメントを残す

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