جلسه دوازدهم دوره آموزشی آردوینو – ارتباط سریال در آردوینو

مقدمه

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

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

معرفی ارتباط سریال

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

برای این که این موضوع رو بهتر متوجه بشیم میخوایم در این مورد یه مثال بزنیم.

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

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

کد مربوط به این راه اندازی در شکل زیر اومده. توی این که هیچ نکته خاصی وجود نداره مگر دستورات مربوط به ارتباط سریال که البته دو تا دستور خیلی مهمه

کد راه اندازی فتوسل با آردیونو

 

دستور Serial.begin(9600) :

با استفاده از این دستور پورت سریال باز میشه و داده ها از طریق برد آردوینو به کامپیوتر انتقال پیدا میکنن. نکته ای که اینجا وجود داره عدد 9600 هست. حالا مفهوم این عدد چی هست:

این عدد که به baud rate معروفه نشون دهنده ی” تعداد بیت های ارسالی در هر ثانیه ” است. یعنی در اینجا ما در هر ثانیه 9600 بیت رو ارسال می کنیم.

البته بدیهی هست که ما میتونیم این مقدار رو تغییر بدیم و مقدار دلخواه دیگه ای رو قرار بدیم ولی پیشنهاد ما بر این هست که اگه در نرخ های پایین میخواید داده ازسال کنید از 9600 و اگه در نرخ های بالا میخواید داده ارسال کنید از نرم 115200 استفاده کنید.

سوال:
در دنیای شبکه نرخ ارسال بر حسب دو واحد bit rate و baud rate سنجیده می شود که نرخ bit rate برابر تعداد بیت های ارسالی است ولی ما در اینجا همین مفهوم “تعداد بیت ها برای ارسال” استفاده کردیم و نام آن را baud rate گذاشتیم. علت این کار چیست و چرا در اینجا می توان از این دو مفهوم به جای همدیگر استفاده کرد؟

دستور Serial.Println() :
در این دستور ما مقداری که از پورت سریال رو میخونیم ( یعنی مقداری رو که برد آردوینو فرستاده روی پنجره مربوط به پورت سریال نمایش می دیم. توجه داشته باشید اگه عبارتی که در آرگومان این تابع قرار میگیره داخل دابل کوتیشن ( یعنی “”) قرار بگیره همون عبارت بدون هیچ تغییری نشون داده میشه و اگه نام یه متغیر قرار بگیره مقدار متغیر نشون داده میشه.

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

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

 

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

در این پنجره دو تا گزینه قابل تغییر که البته یه گزینه اش برای ما خیلی مهم هست و با گزینه دوم فعلا کاری نداریم.( البته در آینده اون رو هم بررسی می کنیم)

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

این گزینه  مقدار baud rate هست که البته حضور این گزینه بسیار ضروری هم هست. تا اینجا کاری که ما کرده بودیم این بود که میگفتیم برد آردوینو با چه نرخی ارسال کنه داده ها رو و از این طرف هم باید بگیم کامیپوتر با چه نرخی داده ها رو دریافت کنه. این گزینه رو هم باید مطابق با مقداری که در کد تنظیم شده قرار داده بشه.

قبل از این که این بحث رو ببندم این نکته رو در اینجا تاکید میکنم که هر گونه ابهام و سوالی که دارید ( حتی اگه فک می کنید سوالتون خیلی ساده است) در زیر همین پست این سوال رو بپرسید. چون این جلسه ، جلسه بسیار مهمی هست و تقریبا همیشه ما با این ارتباط سریال کار داریم.

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

اشتراک گذاری:
مطالب زیر را حتما بخوانید

20 دیدگاه

به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.

  • ‘analogReadResolution’ was not declared in this scope این ارورر را چطور میتونم رفع کنم؟؟ مشکلش چیه؟؟

    • با سلام و احترام.
      لطفا تمام کد خود را به صورت یک فایل آپلود شده در منابعی مثل google drive یا picofile یا … آپلود کنید و لینک آن را در اینجا قرار دهید تا مورد بررسی قرار گیرد.
      با تشکر.

  • با سلام و احترام،
    وقتی یه داده رو از طریق آردوینو به لپ تاپ یا کامپیوتر ارسال می کنیم، تو چه محیطی میتونیم اونو ببینیم؟ چطور میشه داده های ارسالی رو مستقیما تو متلب نمایش داد؟

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

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

    • با سلام و احترام.
      از پیشنهاد شما سپاسگزاریم.
      یکی از برنامه های سایت قرار دادن نقشه راه در انتهای هر جلسه می باشد که لیست کامل مطالب مربوط به هر جلسه در آن آورده می شود.
      موفق باشید.
      تیم پشتیبانی robouav

  • با سلام و عرض خسته نباشید خدمت شما …!
    می خواستم بپرسم بعضی وقت ها در بعضی ماژول ها فقط با یک baut rate خاص کار می کند و با سرعت های پایین تر از ان کار نمی کند برای مثال 115200 است اما نمی تواند با سرعت 9600 کار کنند
    دلیل این چیست ؟

    • با سلام. لطفا نوع دقیق ماژول را اعلام بفرمایید تا توضیحات کامل داده شود.
      موفق باشید.

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