0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

71歳の... ESP32-S3のシリアル通信が動かなくて(?)困った。結果、解った事、考えた事など。

0
Posted at

 ESP32-S3でシリアル通信してみたら、あれ、シリアルモニタに文字が出ないんだけど...動いてない?このボード息してないの?普通に使えてたはずなんだけど。
 三年ほど前に秋月電子から購入したものです。現在はこのバージョンではなく、後継品に代わっているようです。

ESP32-S3.jpg
ESP32-S3_2.jpg

Windows ターミナルで esptool flash_idと打ち込んでみるとこうなります。

S3_espTool.jpg

ボードに問題はなさそう。さて、どうしたものか。ネットに情報がありますが、よくわからない。最もシンプルな例で試してみます。

SimpleSerial.ino
void setup() {
  Serial.begin(115200);
  Serial.println("Hello World!");
  pinMode(4, OUTPUT);
  analogWrite(4, 200); // LED(4) ON
}

void loop(){;}

LED(4)は点灯しますが、"Hello World!"が表示されません。ふと気付きました。いつも使用しているArduino IDE 2.3.6のデフォルトなのか

ツール -> USB CDC On Boot:"Enabled"

となっており、これが理由でした。Disabledにしてやれば無事に動きます。


 ついでに、以前の投稿と被るのですが改めて自分のメモとして、「シリアル通信」の「文字列受信」について書き留めておきます。
 UNO、ESP32などに文字列を渡すとき、serial.readStringが便利です。そのとき、大きく分けて2つの仕方があると思います。
 一つはhttps://rabbitprogram.com/archives/1325
に紹介されている

//参考サイト:http://ch.nicovideo.jp/yugata/blomaga/ar1177727
void setup() {
  Serial.begin(115200);
}
int i = 0;
void loop() {
  if (Serial.available() > 0) {
    String str = Serial.readStringUntil(';');  //「;」を検出したら終了
            // ';'でなくても動作する模様。単なる改行でも認識。
    //ここは、シリアル受信したときに実行する
    Serial.printf("Input string : %s", str);
    str = "";
  }

  //ここは、何もシリアル受信していないときに実行する
  Serial.printf("loop %d\n\r", i++);
  delay(1000);
}

の方法。これは、シリアル受信が無くても1秒ごとにloop回数をカウントされ、動き続けていることがわかります。
 2つ目は私がよく使う次の方法です。

void setup() {
  Serial.begin(115200);
}
int i = 0;
void loop() {
  String str="";
  while( (str=Serial.readString()) == 0)
  {
    Serial.printf("Nothing %d\n\r",i++);// wait timeout.
  }
  i = 0; 
  str.trim();                        // remove any \r \n whitespace at the end of the String
  Serial.printf("Input String : %s\n\r",str);
  delay(1000);
}

こちらはシリアル受信を待ち続け「while loop」しており、そのあとのコードは実行されません。受信すると次に進み「i = 0」にリセット、入力された文字列が表示されたりします。
 どちらも「loop」することに違いはありませんが、目的に応じて使い分けられると思います。昔のシングルタスクPCにおけるコマンドプロンプトのような動作が後者でしょうか。また一つ困ったことが分かりました。単一のキーを連打して入力すると正しく読み取ってくれません。普通このような文字列入力はしないと思いますが。
 最後までお付き合いいただきありがとうございました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?