- シリアル通信と割り込みとの相性
- シリアル通信用のGPIOと割り込みに使ったGPIOが競合している
あらまし
シリアルポート | GPIO番号(シルク印刷) |
Serial | 送信:1ピン(TX) 受信:3ピン(RX) |
Serial1 | 送信:10ピン(D3) 受信:9ピン(D2) |
Serial2 | 送信:17ピン(17) 受信:16ピン(16) |
対策
補足事項
ピンが足らないから使っていないGPIO#9,10をSerialに使おうと思って、GPIO9と10を使うSerial1を試してみましたが、ダメでした。
ESP32は3系統のSerial通信が備わっているのですが、Serial1(UART1)で使用するGPIO#6~11がESP32で使用不可になっているためデフォルト設定では使えないオチらしいです。
ただし、ピンアサインを変更すると使えるようになるそうです。詳細はここに書いてありました。引用させていただきます。
HardwareSerial mySerial1(1); // UART1 (RX=9, TX=10)
HardwareSerial mySerial2(2); // UART2 (RX=16, TX=17)
void setup() {
mySerial1.begin(115200, SERIAL_8N1, 32, 33); // ピンを変更 (RX=32, TX=33)
mySerial2.begin(115200);
}
void loop() {
...
}