Help us understand the problem. What is going on with this article?

Arduino-ESP32 Serial通信

More than 1 year has passed since last update.

WROOM-32のArduino開発環境でシリアル通信を行う方法を確認します。
必要な事項は以下です。

(1) シリアル通信のハードウェアピンの接続
(2) Arduinoライブラリ Serialを使ったプログラム

(1) シリアル通信のハードウェアピンの接続

ハードウェアのピン配置については
EPS32と使用するモジュールのドキュメントのUARTを確認します。
UARTは0,1,2の3系統があります。

UART0 ( デフォルト RX=GPIO3, TX=GPIO1 )
WROOM_UART_0_PIN.png
UART1 ( デフォルト RX=GPIO9, TX=GPIO10 ) ※WROOM32では、デフォルトでは使用不可
WROOM_UART_1_PIN.PNG
UART2 ( デフォルト RX=GPIO16, TX=GPIO17 )
WROOM_UART_2_PIN.png

http://ht-deko.com/arduino/esp-wroom-32.html#18
上記を参考にしますと、UART1はデフォルトのピン(IO9,10)では使用不可なので、UART1を使用する際には使用するピンを変更して使用するようです。

<20180209追記>
UART1の動作確認しました。
使用する場合は、
(1) HardwareSerial Serial1(1); を定義して、
(2) Serial1.begin(115200, SERIAL_8N1, 33, 34); をsetup()で実行することで、使用可能になります。
上記はRX=33, TX=34の例ですので、引数で使用したいGPIOの番号を指定できます。(IO6~IO11, IO34, IO35は使用不可)

begin()関数の詳細はgithubのここを確認してください。
<20180209追記 end>

今回はUART2を使用して確認します。

(2) シリアル通信のハードウェアピンの接続

Arduinoでのシリアル通信はSerialというライブラリを使用します。

ArduinoのSerial ライブラリ ドキュメント
https://www.arduino.cc/en/Reference/Serial
日本語の解説
https://garretlab.web.fc2.com/arduino_reference/language/functions/communication/serial/findUntil.html

Serialの送受信のサンプルは[MultiSerial]がSDKのサンプルに入っています。
https://github.com/arduino/Arduino/blob/master/build/shared/examples/04.Communication/MultiSerial/MultiSerial.ino

以下を参考にESP32のUART2(IO16,IO17)を使うように設定します。
http://taltalp.hatenablog.jp/entry/2017/05/12/153509

HardwareSerial Serial1(2);

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);
  }
}

受信したデータがAsciiの場合は、Serial.write(inByte);とすることで、文字が出力されます。

サンプルの関数Serial.read()は1byteを読み込みします。
また、Serial.avialable()は、取得可能なバイト数を確認できます。

Additional UART
http://hackaday.com/2017/08/17/secret-serial-port-for-arduinoesp32/
こちらのリンクだと、ライブラリ側のピン設定を変更してUART1を使えるようにしているようです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした