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;
 
}
}


実行結果がこちらです。😃

スクリーンショット 2020-11-12 21.18.54

単位はμSなので、処理時間は781[μs]になります。試しにBlynkと通信をさせて計測させてみたのですが、それほど変わらないようです。処理時間(オーダー)は安定しているようです。

処理時間が781[μs]ということは、例えば処理の周期を1[ms]で設計した場合、自分の使える時間は最大処理時間が219[μs]以内にしなくてはならないということです。

781[μs]も空処理での時間なので、BLYNK_WRITE()やBLYNK_READ()に重い処理を入れれば、この処理時間も増えることになります。

現実的には2[ms]以上の処理周期で使うのが現実的っぽいですね。

このへんの実験は次回やってみます。

では✋



この記事が気に入ったらサポートをしてみませんか?