آموزش آردینو (قسمت ۵-۱) پورت سریال و آموزش کار با رشته ها

سلام

در این قسمت از آموزش به نحوه کار با پورت سریال و نحوه پردازش متن ها و رشته ها خواهیم پرداخت(نحوه دریافت دستور از پورت سریال)

قطعات لازم :

۱-آردینو Uno یا هر برد آردینوی دیگر

۲- کابل usb

 

کار با پورت سریال در آرینو بسیار ساده تر از آن هست که فکرش را بکنید . در حدود ۲ الی ۳ سال پیش اگر می خواستید با میکروکنترلر از طریق پورت سریال با کامپیوتر ارتباط برقرار کنید باید اول مبدل های آن را می ساختید(با چیپ های RS232 و…) و از پورت COM موجود در پشت کیس کامیوتر استفاده میکردید اما امروزه نه خبری از پورت COM در روی کامپیوتر هست و  نه دردسر ساخت مبدل.

چیپ مبدل های مورد نیاز روی اکثر برد های آردینو نصب کردیده(چیپcp2102 یا ch340 و …) و برد بصورت مستقیم به کامپیوتر وصل میشود ان هم نه از طریق پورت COM بلکه از طریق پورت USB.

همان طور که میدانید پورت سریال دارای دو پایه به نام های RX و TX می باشد و در برد آردینو uno هم با همین نام در کنار پایه های ۰ و ۱ نوشته شده استاین دو پایه هم از روی پورت جهت ارتباط با سایر برد ها و ماژول قابل استفاده است و همچنین این دو پایه به مبدل روی برد نیز متصل شده هم جهت پروگرام میکرو و هم ارتباط از طریق usb.

*در صورتی که برد آردینوی شما مجهز به این چیپ CH340 می باشد و تا بحال برد آردینو را به رایانه خود متصل نکرده اید باید درایور آن را از اینجا دانلود  و نصب نمایید تا کامپیوتر برد آردینو را شناسایی کند ولی در صورتی که دارای چیپCp2102 باشد نیازی به نصب درایور نخواهد بود (در اکثر برد های اورجینال چیپCP2102 نصب گردیده)

خوب یک پروژه طبق آموزش های قبلی ایجاد کنید.

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

بجای سرعت ارتباط در پارانتز بالا سرعت مورد نظر خود را مینویسیم . منظور از سرعت ارتباط(نرخ داده یا data rate) همان بیت برثانیه یا بطور واضح تر تعداد صفر و یک (۰۱۰۱۰۱۰) انتقالی در هر ثانیه و یا بطور خیلی واضح تر سرعت صفر و یک شدن پایه مربوط به پورت سریال در آردینو در یک ثانیه می باشد.

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

۳۰۰, ۶۰۰, ۱۲۰۰, ۲۴۰۰, ۴۸۰۰, ۹۶۰۰, ۱۴۴۰۰, ۱۹۲۰۰, ۲۸۸۰۰, ۳۸۴۰۰, ۵۷۶۰۰, ۱۱۵۲۰۰ و….

هر چه سرعت افزایش یابد به تبع آن احتمال خطا نیز افزایش میابد.

سرعت های معمولی که بیشتر در میکرو ها استفاده میشود ۹۶۰۰ و ۱۱۵۲۰۰ می باشد در این پروژه ۹۶۰۰ انتخاب شده که باید در کامپیوتر نیز این سرعت انتخاب شود.

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

در کد بالا Speed همان سرعت داده و config هم جهت سایر تنظیمات پورت میباشد که میتوانید در اینجا اطلاعات بیشتری نسبت به config پیدا کنید.

بعضی از میکرو ها چند پورت سریال دارند که با اعداد مشخص میشوند که برای کار با هر کدوم باید عدد مربوطه رو جلوی کلمه serial قرار بدیم و چون در برد های آردینو پورت سریال ۰ به مبدل usb  جهت ارتباط با کامپیوتر وصل شده در این پروژه هیچ عددی جلوی کلمه سریال قرار نمیگیره به مثال زیر توجه کنید بردی که دارای ۳ پورت سریال هست و هر پورت با سرعت خاصی تنظم شده:

در این قسمت از آموزش با چند دستور یا تابع زیر آشنا خواهیم شد.

تابع begin که در بالا توضیح داده شد.

تابع end برعکس تابع begin هست و تنظیمات پورت سریال رو پاک میکنه و پایه های مربوط به پورت سریال به حالت عادی برمیگردند و میتونید ازشون برای سایر موارد استفاده کنید.

تابع print داده یا متن مورد نظر با فرمت قابل خواندن برای انسان یا با فرمت ASCII ارسال میکند به مثال زیر توجه کنید:

کد بالا را در نرم افزار آردینو نوشته و برد آردینو خود را پروگرام کنید. سپس نمایشگر اطلاعات دریافتی از پورت سریال در نرم افزار آردینو را بازکرده سرعت ۹۶۰۰ را انتخاب کرده و نتیجه را مشاهده نمایید.در فیلم نحوه تست پروژه بالا را ببینید:

تابع println همانند تابع print است با این تفاوت که این تابع دو کارکتر را به انتهای متن شما اضافه می کند این دو کارکتر همان کاراکتر مربوط به کلید اینتر در صفحه کلید شما است که با عث میشود مکان نما به خط جدید برود . در استاندارد ASCII کد این دو کاراکتر کد ۱۰ و کد ۱۳ هست که به ترتیب new line و new page نام دارند این دو کاراکتر ها منحصرا مربوط به آردینو و میکرو کنترلر نیست و در تمامی نرم افزار ها مورد استفاده قرار می گیرد مثلا شما هنگامی که متن را در نرم افزاری تایپ و می خواهید به خط جدید بروید کلید Enter در روی کیبرد را میزنید که این کار باعث میشود این دو کاراکتر به انتهای خط شما اضافه شود و شما از خط جدید شروع به نوشتن کنید.در فیلم زیر مثال بالا با println اجرا میکنیم تفاوت را مشاهده نمایید.

همچنین دو کاراکتر ذکر شده در بالا را نیز خودتان نیز میتوانید بصورت دستی اضافه کنید به مثال زیر دقت کنید:

دو خط دستور بالا هیچ تفاوتی باهم ندارند.

*در دو تابع فوق می توان فرمت داده ارسالی را نیز تعیین نمود فرمت های قابل انتخاب دسیمال هزادسیمال باینری و اوکتال مثال:

تابع read یک بایت یا به عبارتی یک حرف از داده دریافتی را می خواند بصورت زیر:

خروجی read عددی بصورت int می باشد . در صورتی که مقداری دریافت نشده باشد مقدار -۱ را برمیگرداند.

 

تابع availableتعداد داده های دریافتی را نشان میدهد . با این تابع و یک دستور if ساده میتوان از دریافت داده و همچنین تعداد داده مطلع شد به مثال زیر توجه کنید:

مثال بالا پورت سریال را از نظر دریافت داده چک میکند و زمانی که داده یا متنی دریافت شد آن را خوانده و دوباره همان را ارسال میکند چون تابع read مقدار ascii داده را برمیگرداند در خروجی مقدار تبدیل شده را مشاهده خاهید کرد در فیلم زیر این مثال اجرا شده و همچنین با تغییراتی که در برنامه ایجاد میکند مقدار واقعی نیز نمایش داده میشود به فیلم زیر توجه کنید:

همان طور که در فیلم مشاهده کردید حروف را بصورت حرف به حرف خوانده و دوباره ارسال کردیم که یک بار مقدار عددی حرف را ارسال کردیم و بار دیگر مقدار واقعی آن را با افزودن (char)به مقدار عددی آن ارسال کردیم همان طور که دیدیم دو کاراکتر مربوط به خط دید را نیز ارسال کردیم که همان اعداد ۱۳ و ۱۰ بود.

ادامه آموزش در قسمت بعد و در روز های آینده منتشر خواهد شد.

سوالات خود را در زیر همین پست بپرسید.

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

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