ESP32で複数のシリアルポートを開く

ESP32の中に入っている3つのUARTを使ってみようと思います。

やり方

Arduinoのサンプルに「MultiSerial」と言うものがあります。
これを少し編集してシリアルポート0以外のポートを開くことができました。

// ---------- ここを追加
HardwareSerial Serial1(2); // UART2を使う
// ----------

void setup() {
  // initialize both serial ports:
  Serial.begin(115200);
  Serial1.begin(115200);
}

void loop() {
  // read from port 1, send to port 0:
  if (Serial1.available()) {
    int inByte = Serial1.read();
    Serial.write(inByte);
  }

  // read from port 0, send to port 1:
  if (Serial.available()) {
    int inByte = Serial.read();
    Serial1.write(inByte);
  }
}

ESP32のIO16とIO17(UART2のTX,RX)を直接接続することでループバックテストをすることができました。

問題点

今回はUART0と2を使用しました。
UART1は下記のサイトに書いてあるように、デフォルトでSPI Flashに設定されているようです。
ESP32 devkit esp-idf UART1 examle not working - ESP32 Forum

UART1の使い方については分かり次第ブログに書こうと思います。

追記

Qiitaのこちらの記事で、UART1を使用する方法が書かれた記事についての紹介がありました。
Arduino-ESP32 Serial通信 - Qiita
Secret Serial Port for Arduino/ESP32 | Hackaday
どうやら、ライブラリを直接いじる必要があるみたいです。