【PowerMeter2020】M5StickのBlueToothで連続送信速度測定<8msec周期ならOK>

M5StackのSDカード書き込み速度遅延がひどかったので、SDカードでのログはあきらめて、BlueToothでスマホか母艦マイコンに送信してログする方法の送信周期実験をしました。SDカードも液晶も必要ないので、同じESP32を使って超小型のM5StickでBluetooth送信実験をしました。

 

●M5StickのBTプログラム
「M5StickC非公式日本語リファレンス」様という詳細なサイトに
網羅的にM5Stickの使い方解説があるので、安心してM5Stick使えます。感謝です。

ClassicBlueToothでサンプルプログラムがありました。
  https://lang-ship.com/reference/unofficial/M5StickC/Bluetooth/Classic/

このプログラムで、26文字とタイムスタンプをBT送信するように改造して実験しました。受信は、androidスマホ(京セラ トルク KY24)で BlueTermで受信ログします。
自作のProcessing受信プログラムはバッファ処理など遅いので、受信速度が遅くなるので受信速度の速いBlueTermでBT送信速度計測しました。

#include <M5StickC.h>
#include <BluetoothSerial.h>BluetoothSerial SerialBT;
uint64_t chipid;
char chipname[256];void setup() {
chipid = ESP.getEfuseMac();
sprintf( chipname, “M5StickC_%04X”, (uint16_t)(chipid >> 32));
M5.begin();
M5.Lcd.setRotation(3);
M5.Lcd.fillScreen(BLACK);
M5.Lcd.printf(“Bluetooth: %s\n”, chipname);
M5.Lcd.printf(“Ver: %s %s\n”, __DATE__, __TIME__);
M5.Lcd.println();
M5.Lcd.printf(“Val:”);SerialBT.begin(chipname);
}

void loop() {
int val;// = analogRead(33);
val++;
Serial.println(val);
SerialBT.print(“abcdefghijklmnop1rstuvwxyz”);
SerialBT.print(“,”);
SerialBT.println(millis());

//M5.Lcd.setCursor(8*4, 8*3);
//M5.Lcd.printf(“%4d,%d”, val,millis());
delay(8);
}

●結果
目標の4msec周期では、遅延が入って全然ダメでした。8msecまで遅くするとほとんど遅延なく受信できました。ClassicBlueToothがSDカードより正確に早くデータログできるとは意外でした。

●以後
M5Stickの連続8msecでできることが判ったので、これをどうやってクランクシステムに組み込むか検討を進めます。

コメントを残す

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