やること
ESP32のSerial1を使うためにPlatformIOのファイルを変更します。
要点のみメモ。特にmac版。
動作環境
- ESP32devkitC
- PlatformIO(ESPのボードバージョン設定は3.3.2)
ESP32のシリアルの問題点
- ESP32にはシリアルが3系統ある
- Serial0はPCデバッグ用として残りのSerial1,Serial2が使えそうだが
- Serial1がデフォルトでは使えない
- Serial1はピンを指定すれば使えるようになる
- しかしシリアルを使うライブラリでピンが指定できないことがある
- その場合Serial1用のデフォルトピンを変更しておく必要がある
参考)
解決方法
こちらの記事が大変参考になります。
方法1:未検証ですがぜひやってみてほしい方法(2025.01.25追記)
過去に記載した方法の場合、クリーンビルド時に毎回消えるだろうというご指摘がありました。
PlatformIO.iniの"build_flags "でdefine宣言すると解決できるとのことです。未検証ですがこれからの方はぜひ試してみてください。
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
build_flags =
-D CORE_DEBUG_LEVEL=0
-D TX1=27
-D RX1=32
これでピン設定が変更できたら便利ですね!
参考)
方法2:HardwareSerial.hの書き換え(2024.05.08改定)
macでターミナルに入り
cd ~/
ls -a
としてホームディレクトリに入り隠しファイルを確認する。
「.platformio」があることを確かめる。
open .platformio/
とすると隠しフォルダを開くことができる。
2024年ごろの場合のやり方
「C:\Users\ユーザー名.platformio\packages\framework-arduinoespressif32\cores\esp32\HardwareSerial.h」を開く。
図のように、#define RX1 (gpio_num_t) 9 → 32 //9と改め、
同様に、#define TX1 (gpio_num_t) 10 となっているところを 27 //10とする。
9,10というのはピン番号で、それを新しい番号に置き換え、古い番号についてはコメントアウトで残すという作業です。
この状態で保存すれば、次回の書き込み時に新しいピン番号が反映されます。
2021年ごろの場合のやり方
参考記事の通り「C:\Users\ユーザー名.platformio\packages\framework-arduinoespressif32\cores\esp32\HardwareSerial.cpp」を探す。
記事の通り下記の様に修正する。
下記のRX用32番ピン、TX用27番ピンの設定はUSB書き込み時の干渉がないことを手元で確認。
(2番や12番はUSB書き込み時に干渉しました。)
(前略)
#ifndef RX1
#if CONFIG_IDF_TARGET_ESP32
#define RX1 32 //9
#elif CONFIG_IDF_TARGET_ESP32S2
#define RX1 18
#elif CONFIG_IDF_TARGET_ESP32C3
#define RX1 18
#endif
#endif
#ifndef TX1
#if CONFIG_IDF_TARGET_ESP32
#define TX1 27 //10
#elif CONFIG_IDF_TARGET_ESP32S2
#define TX1 17
#elif CONFIG_IDF_TARGET_ESP32C3
#define TX1 19
#endif
#endif
(後略)
「framework-arduinoespressif32@x.xxxxxx.xxxxxx」
というファイル(バージョン違い)が複数ある場合には、そちらの中身も同様に修正します。
以上。