متوسط⏱ 12 دقیقه مطالعه

UART (Universal Asynchronous Receiver-Transmitter) ساده‌ترین پروتکل ارتباط سریال است که با تنها دو سیم (TX و RX) بین دو دستگاه داده رد و بدل می‌کند. همان چیزی که با Serial.println() در سریال مانیتور می‌بینید، در پشت صحنه از طریق UART اصلی (Serial0) روی پورت USB ارسال می‌شود.

ایجاد یک UART اضافه با HardwareSerial

ESP32 چند واحد UART سخت‌افزاری دارد. Serial معمولاً برای برنامه‌نویسی/دیباگ رزرو است؛ برای ارتباط با ماژول‌های دیگر (مثل GPS یا بلوتوث سریال HC-05) یک شیء HardwareSerial جدید روی پایه‌های دلخواه می‌سازیم.

ارتباط UART بین ESP32 و یک ماژول سریال
CPP
HardwareSerial mySerial(2);   // استفاده از واحد سخت‌افزاری UART شمارهٔ ۲

void setup() {
  Serial.begin(115200);
  mySerial.begin(9600, SERIAL_8N1, 16, 17);  // باودریت، فرمت، RX، TX
}

void loop() {
  mySerial.println("سلام از ESP32");
  if (mySerial.available()) {
    String data = mySerial.readString();
    Serial.print("دریافت شد: ");
    Serial.println(data);
  }
  delay(1000);
}
ℹ️ اطلاعات

باودریت (baudrate) دو طرف ارتباط باید کاملاً یکسان باشد؛ رایج‌ترین مقدار 9600 یا 115200 است.

کاربردهای رایج UART

  • ماژول‌های GPS برای دریافت مختصات مکانی
  • ماژول‌های بلوتوث سریال مثل HC-05/HC-06
  • ارتباط بین دو میکروکنترلر
  • پرینترهای حرارتی و برخی نمایشگرهای سریال
شبیه‌سازی زندهٔ UART با Serial2 روی ESP32 — دریافت داده از ماژول GPS با کتابخانهٔ TinyGPS++، همان الگوی HardwareSerial که در این درس دیدید باز کردن در Wokwi ↗
در حال بارگذاری شبیه‌ساز… (ممکن است چند ثانیه طول بکشد)

این یک شبیه‌سازی واقعی و قابل اجراست؛ روی دکمه پخش (▶) در Wokwi بزنید تا کد روی برد مجازی ESP32 اجرا شود. اگر جعبهٔ بالا بیش از حد سیاه/خالی ماند، صفحه را رفرش کنید یا از دکمهٔ «باز کردن در Wokwi» بالا استفاده کنید.

❓ حداقل چند سیم برای ارتباط پایهٔ UART نیاز است (بدون زمین مشترک)؟
طراحی و توسعه: امین شیخ نجدیglcd.ir | نسخهٔ افزونه: 1.21.0