آردوینو آموزش آردوینو درایور موتور پروژه های آردوینو

کنترل موتور آرمیچر DC با زبان #C در ویندوز با برد آردوینو – قسمت اول

control-motor-dc-with-arduino-and-c#-in-windows-and-visual-studio-digispark
نوشته شده توسط معین صابری

در آموزش پیشین، یک موتور الکتریکی DC را به کمک برد آردوینو UNO، از طریق ماژول SIM808 به اینترنت متصل کردیم. سپس با طراحی وب سایت(پلتفرم IOT)، توانستیم علاوه بر کنترل دور و جهت موتور، به کمک GPS ماژول SIM808، به صورت لحظه ای بر روی سرور موقعیت آن را ردیابی نماییم. در این آموزش که در دو مرحله منتشر می شود، قصد داریم با طراحی یک برنامه تحت ویندوز، کنترل موتور آرمیچر DC را با کنترل دور و جهت آن را به دست بگیریم. در قسمت اول، به طراحی برنامه گرافیکی تحت ویندوز به کمک زبان برنامه نویسی C# و تحت محیط Visual Studio پرداخته و در قسمت دوم، به طراحی مدار و برنامه نویسی برد آردویینو خواهیم پرداخت، در این پروژه، برد آردویینو به رایانه متصل شده و از طریق پورت سریال آن، برنامه می تواند به آردویینو داده ارسال نماید و آردویینو با دریافت داده ها، فرمان مناسب را اجرا نماید. در ادامه با مرجع تخصصی آردوینو به زیان فارسی دیجی اسپارک همراه باشید.

 


آشنایی با زبان #C


زبان #C، یک زبان برنامه نویسی بوده که توسط مایکروسافت توسعه داده شده و در کنار ابزاری دیگر تحت عنوان NET Framework.، می توان برنامه هایی با فرم های گرافیکی ویندوزی، به اجرا درآورد. به کمک این دو ابزار که تحت محیط یکپارچه برنامه نویسی (IDE) ویژوال استودیو عرضه می شوند، بدون دغدغه از بابت طراحی UI، می توان برنامه های ویندوزی را در فرم های گرافیکی مختلف توسعه داد. زبان برنامه نویسی #C دستوراتی بسیار شبیه به ++C داشته و کار با آن برای کاربران آردویینو نیز ساده است. به کمک این زبان می توان از طریق پورت سریال، با آردویینو به تبادل داده پرداخت.

 


ایجاد پروژه #C در محیط ویژوال استودیو


پس از نصب و راه اندازی ویژوال استودیو، مرحله ایجاد پروژه، فرم گرافیکی و برنامه نویسی آن می رسد. پس از اجرای نرم افزار(نسخه مورد استفاده در این آموزش ۲۰۱۲ است)، به قسمت file رفته و در ادامه new project را انتخاب نمایید، سپس در پنجره ظاهر شده، ابتدا در سمت چپ گزینه # visual c و در وسط صفحه، مطابق کادر قرمز رنگ، windows Form Application را انتخاب نمایید:

ایجاد پروژه در محیط ویژوال استودیو - دیجی اسپارک

 

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

ایجاد پروژه در محیط ویژوال استودیو - دیجی اسپارک

 

 


قرار دادن کلید و ولوم در برنامه #C


برای کنترل دور موتور و جهت چرخش موتور آرمیچر DC بایستی رابط گرافیکی ایجاد کنیم. برای این منظور در نرم افزار ویژوال استودیو طبق توضیحات زیر اقدام می‌کنیم. در این قسمت، می بایست دکمه و ولوم را بر روی فرم (برنامه) خود قرار دهیم. بنابراین، روی منوی view کلید کرده و سپس گزینه toolbox را انتخاب نمایید.

ساخت کلید و ولوم در ویژوال استودیو برای کنترل دور موتور - دیجی اسپارک

 

پس از باز شدن منوی toolbox با انواع ابزارهای مختلف رو به رو خواهید شد. به عنوان نمونه می توان به بعضی از پرکاربردترین این ابزارها اشاره نمود. label: قرار دادن متن بر روی فرم، button: قرار دادن کلید بر روی فرم که با فشردن آن توسط کاربر، کد قرار گرفته در متد(تابع) آن کلید اجرا خواهد شد. textbox : دریافت متن از کاربر و comboxbox: منوهای بازشو با چندین آپشن

استفاده از Toolbox در نرم افزار ویژوال استودیو - دیجی اسپارک

پس از باز شدن منوی toolbox، می بایست ابزارهای مورد نیاز خود را انتخاب نماییم. برای این پروژه، نیاز به دو کلید برای جهت های راست گرد و چپ گرد و یک ولوم برای تنظیم دور موتور خواهیم داشت. بنابراین، ابتدا برای دکمه، گزینه button را از منوی toolbox انتخاب نمایید، چنانچه این گزینه را نیافتید، با تایپ عبارت button در منوی جستجو این گزینه، آن را یافته و دوبار بر روی آن کلیک کنید، حال این دکمه بر روی فرم قرار گرفته و میتوانید با کلیک بر روی آن و با تغییر موقعیت موس، مکان آن را بر روی فرم ، تعیین نمایید، سپس این کار را یکبار دیگر انجام داده و دکمه دوم را در فرم قرار دهید. برای درج ولوم در فرم باید به دنبال عبارت trackbar بگردیم. با جستجوی این عبارت در منوی toolbox، با تصویر زیر رو به رو می شویم، این گزینه را انتخاب کرده و بر روی فرم خود قرار دهید.

ساخت ولوم در ویژوال استودیو برای کنترل دور موتور آرمیچر با آردوینو - دیجی اسپارک

پس از قرار گرفتن ولوم و کلیدها بر روی فرم، بر روی هریک دوبار کلیک کنید تا کد آن تولید شود، همچنین، موقعیت موس را بر روی فرم بگونه ای تغییر دهید که کلیک آن بر روی هیچ کدام از دکمه ها و ولوم نباشد، سپس بر روی فرم دوبار کلیلک نمایید تا تابع اجرای فرم(form load) نیز ساخته شود. برای بازگشت به قسمت طراحی گرافیکی، بالای فرم کافیست بر روی عبارت [Design] کلیک نمایید. پس از قرار گرفتن کلیدها، میتوانید متن آن را از button1 یا button2، تغییر دهید، بنابراین با یک بار کلیک بر روی دکمه، منوی properties آن در سمت راست صفحه ظاهر می شود، در این منو، به دنبال عبارت text باشید و متن آن را به دلخواه و حتی به زبان فارسی، تغییر دهید.

ایجاد کلید جهت فرمان به آردوینو در ویژوال استودیو - دیجی اسپارک

 


کد #C کنترل موتور آرمیچر در ویندوز


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

 

جهت دسترسی به این بخش، اشتراک اسپارکر پلاس تهیه کنید.

 

پس از ذخیره کدها، از منوی بالای ویژوال استودیو، دکمه start را بزنید تا برنامه اجرا و فرم زیر ظاهر گردد.

طراحی UI در ویژوال استودیو برای کنترل موتور آرمیچر DC - دیجی اسپارک

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

 


تحلیل کدهای پروژه


در ابتدای این پروژه، عبارات using را می توان معادل کتابخانه در آردویینو در نظر گرفت، البته #C به طور خودکار آن ها را درون برنامه قرار می دهد. همانطور که اطلاع دارید، با اتصال برد آردویینو به رایانه، یک پورت به آن اختصاص داده می شود، نرم افزار آردویینو نیز از طریق همین پورت به برد آردویینو داده ارسال می نماید، همچنین در #c به کمک کلاس SerialPort، می توانیم یک پورت سریال ایجاد نموده و با تعیین نرخ انتقال داده، مثلا ۱۱۵۲۰۰ در پروژه، با پورت سریال ارتباط برقرار نماییم، برای اینکار، ابتدا یک نمونه از این کلاس به صورت زیر می سازیم:

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

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

چپ گرد: !L

راست گرد: !R

دور موتور: !عدد ولوم

با توجه به فرمت فوق، در انتهای هر فرمان ارسالی یک علامت ! قرار گرفته تا در آردویینو حین خواندن فرمان، انتهای پیام مشخص باشد، همچنین، با حرکت دادن ولوم، یک عدد بین ۰ تا ۱۰ در value آن قرار می گیرد که می توانیم با تبدیل این مقدار به رشته، آن را به صورت زیر در یک متغیر ذخیره نماییم:

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

 


وسایل مورد نیاز


برد آردوینو

درایور موتور

موتور آرمیچر DC

 


جمع بندی


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

 

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

 

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

معین صابری

کارشناسی ارشد رشته معماری سیستم های کامپیوتری

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

تبادل نظر و رفع عیب با ثبت دیدگاه