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

مقدمه

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

20 دیدگاه

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

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

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

  • سلام، من این کدی که اینجا آموزش دادین وارد کردم اما این خطارو بهم میده،
    Arduino: 1.8.5 (Windows 8.1), Board: “Arduino/Genuino Uno”

    C:\Users\daviran.e\Documents\Arduino\gsr\gsr\gsr.ino: In function ‘void loop()’:

    gsr:20: error: ‘analogReadResolution’ was not declared in this scope

    value=analogReadResolution(sensor);

    ^

    exit status 1
    ‘analogReadResolution’ was not declared in this scope

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.
    چیکار باید کنم؟

    • با سلام و احترام.
      لطفا بفرمایید که از چه بردی استفاده می کنید ؟ آیا تنظیمات مربوط به پورت سریال را درست انجام داده اید ؟
      با تشکر.

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