電子部品

マイコン(今回はESP32)のTX(送信)/RX(受信)ピンを徹底解説

はじめに

近年、IoT機器や電子工作で欠かせない「シリアル通信(UART)」。その中核を担うのが**TX(Transmit)RX(Receive)**の2つの信号線です。本記事では、「TX RX」「UART 通信」「ESP32」「3.3V TTL」「レベル変換」を盛り込みつつ、初心者にも理解しやすいように以下の流れで詳しく解説します。

  1. TX/RXとは何か
  2. UARTシリアル通信の基本パラメータ
  3. 電気的レベルとレベル変換
  4. ESP32でのTX/RXピン活用方法
  5. 配線のポイントと注意点
  6. まとめ&よくある質問(FAQ)

1. TX/RXとは何か

1.1 TX(Transmit:送信)

  • 機能:マイコンやシリアルデバイスが“ビット列”を外部へ送り出す
  • 役割:データを1→0→1…と順番に電圧レベルとして出力
  • 用途例:PCへのデバッグログ送信、GPSモジュールへコマンド送信

1.2 RX(Receive:受信)

  • 機能:外部から来たシリアル信号を“ビット列”として取り込む
  • 役割:入力された電圧パターンを論理1/0に復元し、マイコン内部へ渡す
  • 用途例:PCからのコマンド入力受信、GPSモジュールの位置情報読み取り

2. UARTシリアル通信の基本パラメータ

パラメータ内容
ボーレート通信速度。例:9600、115200など。送受信両端で合わせる必要あり。
データビットデフォルトは8ビット(5〜9ビットまで設定可)。
パリティエラー検出用。None/Even/Odd。
ストップビット1または2ストップビット。
  • 非同期通信:クロック線を持たず、あらかじめ決めたビット幅(ボーレート)で同期を取る方式
  • 同期通信との違い:SPIやI²Cは専用クロック線が必要だが、UARTはシンプルに2本の信号線でOK

3. 電気的レベルとレベル変換

3.1 TTL/CMOSレベル

  • 3.3Vロジック:ESP32、Raspberry Piなど
  • 5Vロジック:Arduino Uno(ATmega328P)など

注意:3.3Vデバイスに5V信号を直接入力すると破損の恐れあり!

3.2 RS-232レベル

  • ±3V~±15Vの高電圧仕様。PCのシリアルCOMポートで利用
  • MAX232などのTTL⇔RS-232変換ICが必要

3.3 レベルシフタ(レベル変換)の選び方

  1. バイダイレクショナルMOSFET型:自動方向検出で双方向通信に最適
  2. 分圧抵抗+プルアップ:シンプルだが速度制限あり
  3. 専用IC(TXB0108など):高速通信・多チャンネル向け

4. ESP32でのTX/RXピン活用方法

4.1 ESP32のUARTポート構成

ESP32には UART0/UART1/UART2 の3ポートがあり、ピンマトリクスで自由に割り当て可能です。

UARTデフォルトTXピンデフォルトRXピン用途例
UART0GPIO1 (U0TXD)GPIO3 (U0RXD)シリアルモニタ(デバッグ)
UART1GPIO10 (U1TXD)*GPIO9 (U1RXD)*内部フラッシュ用(使用非推奨)
UART2GPIO17 (U2TXD)GPIO16 (U2RXD)外部シリアル機器接続

※UART1の9/10番ピンは内蔵SPI-Flashと共有しているため、開発用途には避けるのが無難です。

4.2 ピンマトリクスでの再割当例

cpp
// Serial2 を GPIO4(RX)/GPIO2(TX)にマッピング(115200bps)
Serial2.begin(115200, SERIAL_8N1, /*RX_pin=*/4, /*TX_pin=*/2);

4.3 ESP32特有の注意点

  • 共通グランド:必ずESP32と相手機器のGNDを接続
  • プルアップ/プルダウン:IO0などブートストラップピンは起動時に状態判定に利用
  • バッファ管理:高速大量転送時はバッファオーバーに注意。ハードウェアフロー制御(RTS/CTS)も検討

5. 配線のポイントと注意点

  1. クロス接続
    • ESP32 TX → デバイス RX
    • ESP32 RX ← デバイス TX
  2. レベル変換を挟む
    • 5V機器と接続するときは必ず3.3V⇔5V変換を行う
  3. 短い配線
    • ノイズや信号劣化を防ぐため、可能な限り配線長を短く
  4. シールド線/ツイストペア
    • 長距離接続の場合はシールド線やツイストペアケーブルでノイズ対策

6. まとめ

  • TX/RX はUARTシリアル通信の基本ピン。送受信どちらも正しく把握すれば多くのデバイスと連携可能。
  • 3.3V TTL5V TTL、さらにはRS-232の違いを理解し、必ずレベル変換を行うこと。
  • ESP32ではピンマトリクス機能により自由にTX/RXを再割当できるが、フラッシュ共有ピンは避ける。
  • 配線は短く、共通グランドを忘れずに。高速通信ではフロー制御やノイズ対策も検討しよう。

よくある質問(FAQ)

Q1. TXとRXの向きが反対になっているとどうなる?
→ 通信が成立せずデータが一切やり取りされません。必ずクロス接続を確認。

Q2. ESP32と5V Arduinoを直接つないでも動く?
→ 一部動作する場合もありますが、推奨されません。内部保護抵抗等の影響で不安定かつ破損リスクあり。

Q3. UARTとUSBシリアルの違いは?
→ UARTはマイコン内部のTTLレベル信号、USBシリアルはUARTをPCのUSBに変換するインターフェースです。


関連記事

-電子部品