[小ネタ]あると便利ESP32とのシリアル通信

こんにちはAIソリューション部のさかじです。横田deGoおよびDevelopers.IO CAFEのウォークスルーにはたくさんのESP32を使用しています。 LED点滅では不足するシーンもあります。そこで簡単に情報を取得できる方法を紹介します。

LED点滅デバッグならこちら

ハードウェアデバッグの第一歩

環境

はじめに

組込みの開発を行なっていると、LED点滅のデバッグもいいですがデバッグ時に文字情報も欲しい時があります。

  • このファームウェアのバージョンは何だろう?
  • 今、このマイコンの状態を知りたい
  • 設定を変更して動作をみたい

デバッグログのようにバラバラと出力することは簡単ですが、PC/Macからの問い合わせに合わせてマイコンが返答する簡単なモニタプログラムをまとめてみました。
サポートしていない文字列は無視します。

コード

void setup() {
  Serial.begin(115200);
  Serial.print("> ");
}

void loop() {

  if (Serial.available() > 0) {
    String s;
    s = Serial.readStringUntil('\n');
    Serial.println(s);
    menu(s);
  }
}

void menu(String s) {
  if (s.equals("?")) {
    Serial.println("Hello world");
  } else if (s.equals("ver")) {
    Serial.println("0.0.1");
  }
  Serial.print("> ");
}

出力結果

> ?
Hello world
> ver
0.0.1
> hogehoge
> 

最後に

簡単な処理ですとLEDだけでも良いですが、色々確認したい内容が増えてくるとシリアルへデバッグ情報を出力する方法になって行きます。次に双方向のI/Fが欲しくなります。簡単に追加できますので、最初に盛り込んでおくのもいいかもしれません。