UARTとは?シンプルで便利なシリアル通信の仕組みを解説!

1. UARTとは?

UART(Universal Asynchronous Receiver/Transmitter)は、非同期シリアル通信を行うためのプロトコルの一つで、マイコンやPC、センサー、モジュール間のデータ通信によく使われます。

UARTの特徴は、クロック信号なしで2本の信号線(TXとRX)だけで通信できることです。I²CやSPIと比べて配線がシンプルなため、多くの電子機器に採用されています。


2. UARTの基本構成

UART通信では、以下の2本のデータラインを使用します。

  1. TX(Transmit) 送信データライン
  2. RX(Receive) 受信データライン

📌 TXとRXをクロス接続するのがポイント!

[デバイスA] TX ───→ RX [デバイスB]
[デバイスA] RX ←─── TX [デバイスB]

💡 フルデュプレックス通信(送信と受信が同時に可能)


3. UARTの通信の仕組み

通信の基本ルール

UARTは非同期通信なので、データの送受信には一定のルール(フォーマット)を決めておく必要があります。

  1. ボーレート(Baud Rate)

    • 1秒間に転送するビット数(bps)。
    • 一般的なボーレート:9600, 115200, 57600, 38400 など。
    • 送受信デバイスでボーレートを揃える必要がある!
  2. データビット(Data Bits)

    • 1回の送信で送るデータの長さ(通常 8ビット)
  3. ストップビット(Stop Bit)

    • 送信の終わりを示す(通常 1ビットまたは 2ビット)
  4. パリティビット(Parity Bit)(エラーチェック用、基本は「なし」)

    • なし(None) / 偶数(Even) / 奇数(Odd)

📌 通信設定の例

115200 bps, 8ビットデータ, パリティなし, ストップビット1

4. UARTのメリット・デメリット

メリット

配線がシンプル(2本の信号線)
多くのデバイスが対応(PC, マイコン, センサー)
長距離通信が可能(数メートル〜数十メートル)

デメリット

1対1の通信が基本(複数デバイスと通信するには工夫が必要)
ボーレートが違うと通信できない
クロックなしなのでデータのズレ(ドリフト)が発生しやすい


5. UARTの活用例

  • PC ⇄ マイコンArduino, ESP32, STM32 など)
  • GPSモジュールとの通信
  • Bluetoothモジュール(HC-05 など)
  • センサー(温度・湿度センサーなど)
  • デバッグ用のシリアルコンソール(シリアルモニタ)

6. ArduinoでUART通信を使う

Arduinoでは、Serialライブラリを使うことで簡単にUART通信ができます。

PCとArduino間のシリアル通信

void setup() {
 Serial.begin(9600); // ボーレート9600bpsで通信開始
}
 
void loop() {
 Serial.println("Hello, UART!"); // シリアルモニタに文字を表示
 delay(1000);
}

📌 シリアルモニタを開くと "Hello, UART!" が1秒ごとに表示される!


Arduino同士でUART通信

// 送信側(Master)
void setup() {
 Serial.begin(9600);
}
 
void loop() {
 Serial.println("Arduinoから送信");
 delay(1000);
}
// 受信側(Slave)
void setup() {
 Serial.begin(9600);
}
 
void loop() {
 if (Serial.available()) { // 受信データがあるか確認
  String data = Serial.readString(); // 受信データを文字列として取得
  Serial.print("受信: ");
  Serial.println(data);
 }
}

7. UART vs 他の通信規格(I²C, SPI)

プロトコル 配線数 速度 同時通信 用途
UART 2本(TX, RX) 中速(115200bps程度) 1対1 PC・マイコン通信, デバッグ
I²C 2本(SDA, SCL) 低速(400kbps程度) 複数台接続可 センサー・EEPROM
SPI 4本(MOSI, MISO, SCLK, SS) 高速(数Mbps以上) 1対多 SDカード・LCD・メモリ

💡 UARTは、デバッグやPCとの通信に最適!
💡 I²Cは、複数のデバイスとやりとりするのに便利!
💡 SPIは、高速通信が必要な場合に最適!


8. まとめ

UARTはシンプルな2本の配線で非同期シリアル通信を実現!
ボーレートやデータフォーマットを合わせないと通信できない!
デバッグやPCとの通信、GPSBluetoothモジュールとの接続に最適!