خانه / میکروکنترلرها / بردهای آردوینو Arduino / آموزش های آردوینو / پروتکل های ارتباطی در آردوینو، قسمت اول : USART

پروتکل های ارتباطی در آردوینو، قسمت اول : USART

در این جلسات آموزشی سعی میکنیم پروتکل های ارتباطی در آردوینو را یاد بگیریم و در اولین جلسه USART را برسی میکنیم. گاهی اوقات در پروژه های مختلف نیاز به ارتباط برقرار کردن بین تعدادی میکروکنترلر یا سنسور وجود دارد. این ارتباط می تواند به سادگی خواندن مقدار یک سنسور و ذخیره سازی در حافظه میکروکنترلر و نمایش آن باشد یا میتواند به پیچیدگی ایجاد یک شبکه و ارسال فرمان ها و دستورات به بخش های مختلف شبکه باشد.

برای این منظور باید از پروتکل های استاندارد به این منظور استفاده نمود. معروف ترین این پروتکل ها در میکروکنترلرها عبارت اند از : USART ، I2C و SPI

در این پست در مورد پروتکل USART و نحوه پیاده سازی آن با آردوینو توضیح می دهیم و در دو جلسه بعدی در مورد دو پروتکل I2C و SPI صحبت می کنیم.

اگر با آردوینو آشنا نیستید مطالب زیر را ابتدا بخو انید:

دسته بندی روش های ارتباطی :

به طور کلی می توان انواع روش های ارتباطی را به دو دسته بندی کلی تقسیم نمود :

  • ارتباط موازی :
حتما در ادامه این مطلب را هم بخوانید:  مبدل USB به SPI

این ارتباط برای مسافت های کوتاه که نیاز به سرعت زیادی داریم مناسب می باشد، اما برای مسافت های طولانی به دلیل اشغال فضای زیاد و موارد دیگر استفاده از آن کاربرد چندانی ندارد. مطابق شکل زیر، جریانی از داده ها به شکل بیت های صفر و یک به صورت همزمان از فرستنده به گیرنده ارسال یا دریافت می شود.

پروتکل های ارتباطی در آردوینو، قسمت اول : USART

یکی از عیب های بسار مهم ارتباط موازی مطابق شکل، استفاده از تعداد پایه های زیاد برای ارتباط است. به عنوان مثال اگر قصد دارید پروژه خود را توسط برد Arduino Uno یا Arduino Mega انجام دهید و از ارتباط موازی استفاده کنید، تعداد پایه های زیادی از برد را باید به ارتباط موازی اختصاص دهید که باعث محدود شدن کاربردهای قابل پیاده سازی بر روی برد می شود.

 

در ارتباط سریال بر خلاف ارتباط موازی، از تعداد پایه های محدودتری برای ارتباط استفاده می شود. دو عیب ارتباط سریال در مقابل ارتباط موازی عبارت است از سرعت پایین تر و نیازمند بودن به استفاده از پروتکل های سریال.

پروتکل های ارتباطی در آردوینو، قسمت اول : USART

 

البته واقعیت این است که امروزه تقریبا می توان دو عیب ذکر شده را برای ارتباط سریال نادید گرفت. در مورد سرعت، امروزه پروتکل های سریال قابلیت پشتیبانی از سرعت های بالا را فراهم کرده اند و در مورد پیاده سازی پروتکل نیز در میکروکنترلرهای ارائه شده توسط شرکت های مختلف دنیا، قابلیت پیاده سازی و استفاده از انواع پروتکل های سریال وجود دارد.

حتما در ادامه این مطلب را هم بخوانید:  پروژه طراحی و ساخت دیتالاگر با آردوینو (بخش اول)

 

پروتکل های همزمان و غیرهمزمان :

پروتکل USART دارای دو مد عملکرد همزمان (Synchronous) و غیر همزمان (Asynchronous) می باشد. به طور ساده، در روش همزمان نیاز به استفاده از یک پایه به عنوان کلاک برای همزمان کردن فرستنده و گیرنده وجود دارد و در روش غیر همزمان، همزمان سازی فرستنده و گیرنده توسط اسیلاتورهای داخلی صورت می پذیرد و نیاز به استفاده از پایه ی دیگری وجود ندارد.

در اغلب موارد از ارتباط آسنکرون یا غیر همزمان استفاده می شود.

برای آگاهی از نحوه استفاده از پروتکل سریال در میکروکنترلرهای ARM نیز می توانید اینجا را مطالعه کنید.

استفاده از USART در آردوینو :

کد زیر را در محیط برنامه نویسی وارد کرده و برنامه را بر روی برد پروگرام کنید.

void setup()

{

   Serial.begin(9600);

   Serial.println(“Melec.ir”);

}

void loop() {}

توسط دستور Serial.begin، مقدار سرعت ارتباط را بر روی 9600 بیت بر ثانیه تنظیم می کنیم. (مقداری متداول برای ارتباط USART)

توسط دستور Serial.println  ، آردوینو عبارت “Melec.ir” را به خروجی سریال خود ارسال می کند.

به همین سادگی!

توسط برنامه زیر، داده های ارسال شده به برد را می توان مشاهده نمود :

void setup() {

   Serial.begin(9600); }

void loop() {

   if(Serial.available()){

      serial port

      Serial.print(“I received:”);

      Serial.write(Serial.read());

   }

حتما در ادامه این مطلب را هم بخوانید:  چرا باید از آردوینو استفاده کنیم؟

}

در این برنامه توسط تابع Serial.available از دریافت داده ها جدید اطلاع پیدا می کنیم، در دستور شرطی if عبارت “:I received” را چاپ کرده و در مقابل آن دستور ارسال شده را می توانیم مشاهده کنیم. به عنوان مثال اگر عبارت “Melec.ir” را به میکروکنترلر ارسال کنیم، در پاسخ خواهیم داشت :

I received:Melec.ir

پس از اجرای کد بر روی برد، در محیط نرم افزار بخش Serial monitor را از طریق کلیک بر روی آیکون :

باز کنید.

در کادر متنی عبارت دلخواه را نوشته و دکمه Send را فشار دهید. میکروکنترلر عبارت ارسال شده را به خروجی سریال ارسال میکند و میتوانید آن را بر روی صفحه مشاهده نمایید.

برای برنامه نویسی پورت سریال در کامپیوتر میتوانید اینجا آموزش ها را بخوانید (#C ، متلب و لب ویو )

دانلود نرم افزار Tera Term ( ترمینال پورت سریال )

منبع :tutorialspoint.com

این نوشته را با دوستانتان در تلگرام به اشتراک بگذارید :
⁩لینک گروه پرسش و پاسخ مهندسان الکترونیک   http://bit.ly/2oLHpZM

درباره ی محمد حسین کوهی قمصری

دانشجوی برق گرایش الکترونیک، کارشناسی

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

چهارده + 16 =