ESP32[27] UART整理メモ
要旨
ESP32のUARTを使っていましたが、理解せずに使っていたようなのでまとめてみました。
UART数
・ESP32(Arduino)には UARTが3本ある
UART0 / UART1 / UART2
・デフォルト名
Serial = UART0(コンソール用)
Serial1= UART1
Serial2= UART2
・名前とUART番号が本体
Serial2 と HardwareSerial(2) は 同じUART2
別名を2つ作っても 同一UARTを共有するだけ
・同じUART番号を2回 begin() すると後勝ちで上書き
→ 通信が止まる原因
・用途別の正解構成
Serial :USBコンソール
Serial2 :ラズパイ通信(UART2)
Serial1 :E32通信(UART1)
デフォルトのピン
それぞれのUARTにはデフォルトのピンがある。
UART0(Serial)
用途:USBコンソール / 書き込み / デバッグ
デフォルトピン
TX:GPIO1
RX:GPIO3
注意
USB-Serial と共有
通常はコンソール専用に使う
UART1(Serial1)
用途:汎用UART(※注意あり)
デフォルトピン
TX:GPIO10
RX:GPIO9
注意
GPIO9 / GPIO10 は SPIフラッシュと競合
デフォルトのままでは使えない
必ず begin() でピンを再割り当てすること
Serial1.begin(9600, SERIAL_8N1, RX_PIN, TX_PIN);UART2(Serial2)
用途:最も使いやすい汎用UART
デフォルトピン
TX:GPIO17
RX:GPIO16
特徴
フラッシュと非競合そのまま使える
| UART | Arduino名 | RX | TX | 備考 |
|---|---|---|---|---|
| UART0 | Serial | GPIO3 | GPIO1 | USBコンソール |
| UART1 | Serial1 | GPIO9 | GPIO10 | フラッシュ競合・再割当必須 |
| UART2 | Serial2 | GPIO16 | GPIO17 | そのまま使用可 |
UARTの「別名」の作り方(HardwareSerial)
別名とは?
HardwareSerial(n) は UART番号 n(0/1/2)への別名。
UARTが増えるわけではない。
例:UART2に別名を付ける
HardwareSerial mySerial(2); // ← UART2 の別名
