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

پروتکل های ارتباطی در آردوینو ، به منظور ایجاد ارتباط تا کنون صدها پروتکل ارتباطی ابداع شده اند. هر پروتکل را می توان در یکی از این دو دسته بندی قرار داد : موازی یا سریال

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

ارتباط موازی

ارتباط موازی بین آردوینو و تجهیزات دیگر توسط پورت های ورودی و خروجی برای مسافت های کوتاه تا حداکثر چند متر میتواند مناسب باشد. اگرچه بدیهی است برای مسافت های طولانی تر امکان استفاده از ارتباط موازی وجود ندارد. در ارتباط موازی چندین بیت به صورت همزمان ارسال می شود. در این ارتباط معمولا نیاز به گذرگاه داده وجود دارد که ممکن است از 8 ، 6 یا تعدادی بیشتر سیم تشکیل شده باشد. داده ها در این ارتباط به صورت جریانی از صفر و یک به صورت پشت سر هم ارسال می شوند.

ارتباط موازی 

مزیت ها و معایب ارتباط موازی :

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

ماژول های ارتباط سریال

امروزه بردهای آردوینو شامل تعدادی سیستم داخلی به منظور پشتیبانی از ارتباطات استاندارد است. انتخاب هریک از این بخش ها وابسته با فاکتورهای زیر است :

  • تعداد قطعاتی که میکروکنترلر باید با آنها ارتباط برقرار کند؟
  • سرعت مورد نیاز برای ارتباط؟
  • فاصله بین قطعات؟
  • آیا نیاز به ارسال و دریافت همزمان وجود دارد؟
مطلب پیشنهادی:  برنامه نویسی آردوینو - توابع

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

انواع ارتباط های سریال

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

  • همزمان (سنکرون) : در این ارتباط یک واحد کلاک وجود دارد که زمان بندی فرستنده و گیرنده با آن تنظیم می شود.
  • غیرهمزمان (آسنکرون) : در این ارتباط یک واحد کلاک یکسان وجود ندارد و زمان بندی فرستنده و گیرنده توسط واحد کلاک خودشان تنظیم می شود و توسط لبه ی سیگنال ها تحریک می شوند.

برای این که متوجه بشویم که ارتباط سنکرون است یا آسنکرون کافی است نگاه کنیم که یک کلاک واحد برای همه قطعات وجود دارد یا خیر؟ اگر وجود داشت باشد ارتباط سنکرون است و در غیر اینصورت ارتباط آسنکرون است.

به عنوان مثال ارتباط UART (ارتباط سریال ارسال و دریافت آسنکرون) یک ارتباط آسنکرون است.

مطلب پیشنهادی:  آردوینو – حلقه ها در برنامه نویسی

در پروتکل های سریال آسنکرون تعدادی قوائد داخلی وجود دارد. این قوائد در واقع جهت اطمینان از ارتباط صحیح و بدون خطا می باشند. این قوائد که به منظور همزمان کردن سیگنال های کلاک مورد استفاده قرار میگیرند عبارت اند از :

  • بیت های همزمان سازی
  • بیت های داده
  • بیت های پریتی (زوجیت)
  • باود ریت (نرخ ارسال بیت ها)

بیت های همزمان سازی :

بیت های همزمان سازی

بیت های داده :

حجم داده های در هر بسته را میتوان در ظرفیت های از 5 تا 9 بیت تنظیم نمود. قطعا ظرفیت استاندارد همان 8 بیت یا یک بایت است اما ظرفیت های دیگر نیز کاربردهای خود را دارد. به عنوان مثال بسته های 7 بیتی میتواند از بسته های 8 بیتی بهینه تر باشد به خصوص زمانی که در حال انتقال کاراکترهای 7 بیتی اسکی باشید.

بیت های پریتی :

کاربر میتواند انتخاب کند که آیا یک بیت پریتی وجود داشته باشد یا خیر و همچنین نوع آن یعنی زوج یا فرد بودن آن نیز قابل تنظیم است. در پریتی زوج بیت پریتی در صورتی که تعداد 1 ها زوج باشد برابر صفر خواهد بود. پریتی فرد نیز عکس این حالت خواهد بود.

نرخ انقال بیت ها

عبارت باود ریت نشان دهنده تعداد بیت های ارسال شده در یک ثانیه است[bps]. توجه شود که اینجا بیت ها مهم هستند نه بایت ها. معمولا در پروتکل لازم است که به همراه بایت ها تعدادی بیت های کنترلی ارسال شود، به این معنا که یک بایت در ارتباط سریال ممکن است از 11 بیت تشکیل شده باشد. به عنوان مثال اگر باود ریت برابر 300 bps باشد حداکثر 37 بایت و حداقل 27 بایت میتوانند در یک ثانیه ارسال شوند.

مطلب پیشنهادی:  وقفه ها در آردوینو

واحد UART آردوینو

با اجرای کد زیر کلمه hello world از طریق ارتباط سریال آردوینو ارسال می شود.

void setup() {
 Serial.begin(9600); //set up serial library baud rate to 9600
 Serial.println("hello world"); //print hello world
}

void loop() {

}

پس از این که برنامه آردوینو را روی برد ریختید، پنجره Serial monitor را از بالا سمت راست نرم افزار آردوینو باز کنید.

هرچیزی که میخواهید در جعبه بالای پنجره تایپ کنید و دکمه send در پنجره یا Enter روی صفحه کلید را فشار دهید. با این کار مجموعه ای از بایت ها به سمت آردوینو ارسال می شود.

کد زیر هرآنچه که به عنوان ورودی دریافت می کند را برمیگرداند.

کد زیر باعث می شود آردوینو متناسب با آنچه به عنوان ورودی میگیرد خروجی خود را ایجاد کند.

void setup() {
 Serial.begin(9600); //set up serial library baud rate to 9600
}

void loop() {
 if(Serial.available()) //if number of bytes (characters) available for reading from { 
 serial port
 Serial.print("I received:"); //print I received
 Serial.write(Serial.read()); //send what you read
 }
}

توجه شود که Serial.print و Serial.println کد اسکی را بازمیگردانند ولی Serial.write خود متن اصلی را باز می گرداند. برای اطلاعات بیشتر به جدول کد های اسکی مراجعه شود.

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

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

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

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