آردوینو – قسمت ۳ – UART

UART چیست؟
ارتباط UART (Universal Asynchronous Receiver-Transmitter) یکی از پرکاربردترین روشهای ارتباط سریال در سیستمهای embedded است. در این مقاله، به بررسی اصول ارتباط UART، نحوه استفاده از آن در آردوینو، و اجرای یک پروژه ساده میپردازیم. UART یک پروتکل ارتباط سریال است که دادهها را به صورت بیتبهبیت بین دو دستگاه انتقال میدهد. در این روش:
- ارتباط غیرهمزمان: نیازی به سیگنال ساعت مشترک نیست و دستگاهها باید نرخ انتقال داده (Baud Rate) یکسانی داشته باشند.
تبادل داده از طریق دو خط: - TX (Transmit): برای ارسال داده.
- RX (Receive): برای دریافت داده.
- Single Point Communication: فقط دو دستگاه میتوانند به صورت مستقیم به یکدیگر متصل شوند.
ساختار داده: دادهها به صورت بیتبهبیت ارسال میشوند و معمولاً ساختار کلی یک فریم داده به صورت زیر است: - Start Bit: یک بیت که نشاندهنده شروع ارسال داده است.
- Data Bits: معمولاً بین 5 تا 9 بیت اطلاعات اصلی.
- Parity Bit (اختیاری): برای تشخیص خطای احتمالی.
- Stop Bit: برای پایان فریم داده (معمولاً 1 یا 2 بیت).
- نرخ انتقال داده (Baud Rate): سرعت انتقال داده، که به تعداد بیتهای ارسالشده در ثانیه اشاره دارد (مثلاً 9600bps).
دقت در طول کابل: - کابلهای طولانیتر ممکن است باعث کاهش کیفیت سیگنال شوند.
- معمولاً برای ارتباطهای کوتاه استفاده میشود.
فاصله انتقال محدود: حداکثر فاصله انتقال برای UART معمولاً چند متر است، مگر اینکه از مبدلهای خاصی مانند RS232 یا RS485 استفاده شود.
دوبلکس کامل (Full-Duplex):
- در ارتباطات معمولی، فرستنده و گیرنده میتوانند همزمان داده ارسال و دریافت کنند.
عدم تحمل نویز بالا: در محیطهای با نویز بالا، ممکن است خطا در انتقال داده رخ دهد.
سادگی در پیادهسازی: UART یکی از سادهترین پروتکلها برای پیادهسازی در سختافزار و نرمافزار است.
هماهنگی دستی: نیاز به تنظیم دستی پارامترهای ارتباطی (مانند Baud Rate، تعداد بیتهای داده و Stop Bit) بین دستگاهها.
مزایای UART
- پیادهسازی ساده و کمهزینه.
- استفاده گسترده در میکروکنترلرها و سیستمهای Embedded.
- نیازی به سیگنال کلاک مشترک ندارد.
معایب UART
- محدودیت در تعداد دستگاههای متصل (فقط دو دستگاه به صورت مستقیم).
- حساسیت به نویز و تداخل الکترومغناطیسی.
- محدودیت در سرعت انتقال داده در فواصل طولانی.
با این خصوصیات، پروتکل UART ابزاری قدرتمند و ساده برای ارتباطات سریال در پروژههای الکترونیکی است.

در اینجا نمونهای از کد برای ارسال و دریافت داده به صورت همزمان آورده شده است
void setup() {
Serial.begin(9600); // Initialize UART communication at a baud rate of 9600
}
void loop() {
// Sending data
Serial.println("Hello, UART!");
// Receiving data (if available)
if (Serial.available() > 0) { // Check if data is available in the receive buffer
String input = Serial.readString(); // Read the incoming data as a string
Serial.println("Received: " + input); // Print the received data back
}
delay(1000); // Wait for 1 second before sending the next message
}
توضیح خط به خط کد
تابع
setup: این تابع فقط یکبار در ابتدای اجرای برنامه اجرا میشود. هدف آن مقداردهی اولیه تنظیمات آردوینو است.- در اینجا، ارتباط سریال با دستور
Serial.begin(9600)مقداردهی میشود. نرخ انتقال داده 9600 بیت بر ثانیه تنظیم شده است که باید با دستگاه مقصد یکسان باشد.
- در اینجا، ارتباط سریال با دستور
تابع
loop: این تابع به صورت مداوم اجرا میشود و وظایف اصلی برنامه را انجام میدهد.ارسال پیام با
Serial.println: پیام “Hello, UART!” از طریق پین TX ارسال میشود. این دستور دادهها را به صورت سریال به دستگاه مقصد میفرستد و یک خط جدید نیز در انتهای پیام ایجاد میکند.بررسی داده دریافتی با
Serial.available: این بخش از برنامه بررسی میکند که آیا دادهای برای دریافت در بافر سریال موجود است یا خیر. اگر مقدار بازگشتی بیشتر از صفر باشد، یعنی دادهای دریافت شده است.خواندن داده دریافتی با
Serial.readString: دادههای موجود در بافر دریافت سریال (RX) خوانده میشود و به صورت یک رشته (String) ذخیره میگردد.نمایش داده دریافتی با
Serial.println: دادهای که از دستگاه دیگر دریافت شده است، مجدداً از طریق پین TX ارسال و در مانیتور سریال نمایش داده میشود. این کار معمولاً برای تست ارتباط یا ارسال تأییدیه مفید است.تأخیر یک ثانیهای با
delay: برنامه به مدت یک ثانیه متوقف میشود تا ارسال پیام بعدی با فاصله زمانی معین انجام شود.
نتیجه
این کد، ارتباط سریال دوطرفه (Full-Duplex) را بین آردوینو و دستگاه دیگر شبیهسازی میکند. آردوینو به طور مداوم پیام ارسال میکند و در صورت دریافت داده، آن را نمایش میدهد. این برنامه برای درک اصول اولیه ارتباط UART بسیار مناسب است.


دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.