はじめに
近年、IoT機器や電子工作で欠かせない「シリアル通信(UART)」。その中核を担うのが**TX(Transmit)とRX(Receive)**の2つの信号線です。本記事では、「TX RX」「UART 通信」「ESP32」「3.3V TTL」「レベル変換」を盛り込みつつ、初心者にも理解しやすいように以下の流れで詳しく解説します。
- TX/RXとは何か
- UARTシリアル通信の基本パラメータ
- 電気的レベルとレベル変換
- ESP32でのTX/RXピン活用方法
- 配線のポイントと注意点
- まとめ&よくある質問(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 レベルシフタ(レベル変換)の選び方
- バイダイレクショナルMOSFET型:自動方向検出で双方向通信に最適
- 分圧抵抗+プルアップ:シンプルだが速度制限あり
- 専用IC(TXB0108など):高速通信・多チャンネル向け
4. ESP32でのTX/RXピン活用方法
4.1 ESP32のUARTポート構成
ESP32には UART0/UART1/UART2 の3ポートがあり、ピンマトリクスで自由に割り当て可能です。
UART | デフォルトTXピン | デフォルトRXピン | 用途例 |
---|---|---|---|
UART0 | GPIO1 (U0TXD) | GPIO3 (U0RXD) | シリアルモニタ(デバッグ) |
UART1 | GPIO10 (U1TXD)* | GPIO9 (U1RXD)* | 内部フラッシュ用(使用非推奨) |
UART2 | GPIO17 (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. 配線のポイントと注意点
- クロス接続
- ESP32 TX → デバイス RX
- ESP32 RX ← デバイス TX
- レベル変換を挟む
- 5V機器と接続するときは必ず3.3V⇔5V変換を行う
- 短い配線
- ノイズや信号劣化を防ぐため、可能な限り配線長を短く
- シールド線/ツイストペア
- 長距離接続の場合はシールド線やツイストペアケーブルでノイズ対策
6. まとめ
- TX/RX はUARTシリアル通信の基本ピン。送受信どちらも正しく把握すれば多くのデバイスと連携可能。
- 3.3V TTLと5V TTL、さらにはRS-232の違いを理解し、必ずレベル変換を行うこと。
- ESP32ではピンマトリクス機能により自由にTX/RXを再割当できるが、フラッシュ共有ピンは避ける。
- 配線は短く、共通グランドを忘れずに。高速通信ではフロー制御やノイズ対策も検討しよう。
よくある質問(FAQ)
Q1. TXとRXの向きが反対になっているとどうなる?
→ 通信が成立せずデータが一切やり取りされません。必ずクロス接続を確認。
Q2. ESP32と5V Arduinoを直接つないでも動く?
→ 一部動作する場合もありますが、推奨されません。内部保護抵抗等の影響で不安定かつ破損リスクあり。
Q3. UARTとUSBシリアルの違いは?
→ UARTはマイコン内部のTTLレベル信号、USBシリアルはUARTをPCのUSBに変換するインターフェースです。
関連記事