پروتکل ارتباطی USART در آردوینو

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

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

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

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

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

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

  • ارتباط موازی :
مطلب پیشنهادی:  پروتکل CAN Bus در آردوینو با آی‌سی MCP2515

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

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

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

 

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

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

 

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

مطلب پیشنهادی:  اتصال LCD (نمایشگر کریستال مایع) ۱۶*۲ به آردوینو

 

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

پروتکل 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” را به میکروکنترلر ارسال کنیم، در پاسخ خواهیم داشت :

مطلب پیشنهادی:  USART در آردوینو Uno

I received:Melec.ir

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

باز کنید.

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

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

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

منبع :tutorialspoint.com

اگر این نوشته‌ برایتان مفید بود لطفا کامنت بنویسید.

مطالعه دیگر جلسات این آموزش<< جلسه قبلی                    جلسه بعدی >>

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

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

یک دیدگاه