ESP32でBlynk(3)Blynkの処理速度を考察してみる
ここからは、ちょっと組み込み系ソフトの話。ちょっと難しい?🧐
Blynkは下記のBlynk.run()を実行することによって、Blynkアプリと通信をしています。組み込み系のソフトというのは、一連の処理を行う際、数ms処理時間をみんなで分け合って使うため、ソフトを設計する際は、このBlynk.run()がどのくらいの処理速度で動作しているかが重要になってきます。
void loop()
{
Blynk.run();
}
さて、このblynk.run()の処理速度を計測してみましょう!💪
測定方法って色々あるのですが、次回はタイマー割り込みを使ってみる予定なので、ESP32のフリーランニングカウンターで測定してみます。
ESP32のフリーランニングカウンターは標準ライブラリーで使用できるようです。
#define BLYNK_PRINT Serial
#define BLYNK_USE_DIRECT_CONNECT
#include <BlynkSimpleEsp32_BLE.h>
#include <BLEDevice.h>
#include <BLEServer.h>
//timer
hw_timer_t *timer1 = NULL;
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "your AUTH";
void setup()
{
// Debug console
Serial.begin(115200);
Serial.println("Waiting for connections...");
Blynk.setDeviceName("ESP32");
Blynk.begin(auth);
//timer
timer1 = timerBegin(0, 80, true);
timerStart(timer1);
}
void loop()
{
uint64_t tis=0,tie=0;
while(1){
Blynk.run();
//timer
tis = timerRead(timer1);
Serial.printf("tis->%d\n",tis-tie);
tie =tis;
}
}
実行結果がこちらです。😃
単位はμSなので、処理時間は781[μs]になります。試しにBlynkと通信をさせて計測させてみたのですが、それほど変わらないようです。処理時間(オーダー)は安定しているようです。
処理時間が781[μs]ということは、例えば処理の周期を1[ms]で設計した場合、自分の使える時間は最大処理時間が219[μs]以内にしなくてはならないということです。
781[μs]も空処理での時間なので、BLYNK_WRITE()やBLYNK_READ()に重い処理を入れれば、この処理時間も増えることになります。
現実的には2[ms]以上の処理周期で使うのが現実的っぽいですね。
このへんの実験は次回やってみます。
では✋
この記事が気に入ったらサポートをしてみませんか?