ESP32とTTL-RS485変換でよく使うパターン

よくテストで使うもの

WayinTop ESP32開発ボード Wi-Fi + BLEモジュール

KKHMF TTL-RS485モジュールコンバータ

とにかく安い。
チャチャっとテスト用に使って、仮に何かあっても大きな痛手にはならない。

TTL-RS485変換の方はやってることは単純なので何も迷わないけれど、ESP32の方はどのGPIOを使うか、ちょっと悩むときがある。

ので、何となく良さげなパターンをメモ。

ESP32のGPIOについて

ESP32の全体図はこちら。

GPIOピン番号用途
1,334,35UART0なのでPC接続時にぶつかるが、
外部との通信で2ch目が欲しいときはここを使う
21,2233,36I2Cなので、なるべく使いたくない
5,18,19,2329,30,31,37SPIなので、なるべく使いたくない
16,1727,28UART2なので、ここは普通に通信用に使える
0,2,4,1523,24,25,26ADC2でもあるので、ADCを使わないときはIOとして使える
6~1116~18,20~22FLASHに接続されているので使わない
12~14、25~27、32~337~13,15ADC、DACにも使えるが、使用予定がなければ
ここをIOとして使う
34~36,393~6ADCだから、というわけではなく、ここ入力のみ
出力はできないので注意が必要(プルアップ/ダウンもできない)

ということで、通信や汎用のIOとして使おうとするなら下記辺りを使うのが無難かな?

RS485が1ch欲しい場合

RS485が2ch欲しい場合

意外とあるんだよなぁ…異なるRS485ネットワークのプロトコルを変換して…なんてのが。

2ch目以降のSerial(UART)を有効化する方法

HardwareSerial Serial2(2);
Serial2.begin(9600, SERIAL_8N1, 16, 17);

Serial.begin(9600)

とか

Serial.begin(9600、 SERIAL_8N1)

みたいに普通に使ってたので、Serial2.begin(9600) や Serial2.begin (9600, SERIAL_8N1) で行けるのかと思いきや…

HardwareSerial Serial2(2)

としないとダメだった。

その後の16とか17のパラメータはGPIOの番号で、書かなくてもデフォルトで16、17が使用されるけど、最初の内はどのピンが何に割り当てられているのか覚えてないので、明示しておくことで多少楽にはなったかな?

この記事にコメントしてみる