آردوینو

برنامه نویسی بردهای آردوینو با نرم افزار متلب Matlab For Arduino

arduino-programming-in-arduino-digispark
نوشته شده توسط مهدی تاج الدینی

نرم افزار متلب Matlab محاسباتی قدرتمند در زمینه ریاضی و فضایی ارایه می‌دهد. همچنین پردازش تصویر و هزاران کاربرد دیگری دارد. متلب Matlab در بیشتر رشته‌های مهندسی کاربرد دارد. شرکت Mathworks اخیرا قابلیت برنامه نویسی بردهای منطقی از جمله Arduino و raspberry pi را به صورت حرفه‌ای اضافه نموده است. توجه داشته باشید تمامی پروژه‌های برد آردوینو علاوه بر محیط Arduino IDE ، با نرم افزار متلب هم قابل برنامه نویسی می‌باشند. در این پست روش نصب پکیج آردوینو و برنامه نویسی آردوینو در مطلب را آموزش می‌دهم. در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 


آردوینو در متلب Matlab


نرم افزار متلب برای ایجاد پروژه‌های ساده مانند LED Blink توسط آردوینو به روز رسانی نشده است. یا ایجاد پروژه نورپردازی و فرمان به موتور و… بلکه هدف بزرگتری پیش رو است. نرم افزار متلب Matlab این قابلیت را اضافه کرده تا دیتای سنسورها به صورت مستقیم جهت پردازش به نرم افزار وارد شود. در این روش می‌توانیم به صورت مستقیم روی آن تغییرات لازم را اجرا کنیم. مثلا فرض کنید می‌خواهیم تاثیر تغییر سرعت یک موتور DC را روی یک ماژول یا یک سنسور مورد بررسی قرار دهیم. با نرم افزار متلب Matlab می‌توانیم سریعا سرعت موتور را تغییر داده و تغییرات در یک الگوریتم پردازشی به سرعت انجام شود. در این آموزش نحوه اتصال برد آردوینو به متلب و راه اندازی آن، سپس نحوه نوشتن یک پروژه چشمک زن ساده در محیط متلب خواهیم پرداخت.

 


نصب پکیج آردوینو در متلب Matlab


پکیج آردوینو به صورت پیشفرض در نرم افزار متلب نصب نمی‌باشد. در ابتدا باید این پکیج را دانلود و نصب کنید. برای این کار ابتدا وارد نرم افزار متلب شوید. سپس در منو Home بر روی add one کلیک کنید. مطابق شکل زیر بر روی Get hardware support packages کلیک کنید.

افزودن برد آردوینو به نرم افزار متلب Arduino in Matlab - دیجی اسپارک

 

در مرحله بعد پنجره زیر باز می‌شود. با توجه به ورژن نرم افزار متلب Matlab این پنجره ممکن است متفاوت باشد.

نصب پکیج آردوینو در متلب Matlab - دیجی اسپارک

در تصویر بالا گزینه install from internet به صورت مستقیم فایل‌ها را از سایت متلب دانلود و نصب می‌کند. ولی در صورتی که دانلود از اینترنت را انتخاب کنید فقط فایل‌ها را دانلود می‌کند و نصب آن بر عهده شما می‌باشد. حال گزینه install from internet را انتخاب کرده و روی Next کلیک کنید. در این مرحله با یک خطا روبرو می‌شوید. متن خطا عبارتست از «یا اینترنت شما وصل نیست یا تنظیمات پروکسی شما به درستی انجام نشده» ولی هر دو مورد درست است. دلیل این آن است که ما با IP ایران نمی‌توانیم به سرورهای سایت MathWorks دسترسی پیدا کنیم. برای حل این مشکل دو راه وجود دارد. راه اول این است که یک نرم افزار عبور از سایت‌ها را باز کرده… یا این که از پروکسی استفاده کنیم، برای استفاده از پروکسی در متلب از منو Home بر روی preferences مطابق تصویر زیر کلیک کنید.

Arduino in Matlab tutorial3-digispark

 

حال از منو سمت چپ بر روی WEB کلیک کرده و تیک استفاده از پروکسی را انتخاب کنید. تنظیمات پروکسی را وارد کرده و مجددا وارد Get hardware support packages می‌شویم. البته راه اول بسیار ساده‌تر می‌باشد. وارد مرورگر خود شده و سایت Mathwork را باز کنید اگر این سایت باز شد بدین معناست که پروکسی شما با موفقیت کار می‌کند. پس می‌توانید به مرحله دانلود پکیج بروید. در این مرحله صفحه‌ای مانند صفحه زیر باز خواهد شد.

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

 

سپس با نوشتن عبارت Arduino در قسمت جستجو، تصویری مانند زیر مشاهده خواهید کرد.

نصب پکیج آردوینو در متلب Arduino Package in Matlab - دیجی اسپارک

 

روی گزینه MATLAB Support Package for Arduino Hardware کلیک کنید. بعد از آن پجره‌ای باز می‌شود که شما باید برای دانلود این فایل‌ها یک اکانت در سایت متلب بسازید. روی ساخت اکانت کلیک کرده و یک اکانت بسازید. هر سوالی در ضمینه ساخت حساب کاربری دارید، از قسمت نظرات مطرح کنید. البته ساخت اکانت ممکن است زمانبر باشد. بعد از ساخت اکانت بر روی Install کلیک کرده بعد از دانلود فایل‌ها و نصب خودکار توسط نرم افزار متلب، امکان برنامه نویسی آردوینو Arduino را خواهید داشت. ساخت اکانت و دانلود پکیج‌ها ممکن است در ابتدا برای شما مشکل باشد. بعد از دانلود و نصب پکیج‌ها توسط نرم افزار متلب Matlab برد آردوینو را به کامپیوتر وصل کرده، در این پروژه یک LED به صورت زیر به پایه ۱۳ آن وصل میکنیم.

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

 


برنامه نویسی آردوینو در متلب Matlab


برای این که با برد آردوینو Arduino از طریق نرم افزار متلب Matlab ارتباط برقرار کنیم؛ باید مشابه برنامه نویسی شی گرا یک شی را به آن اختصاص دهیم. در این جا ما مثلا MyArduino را به آن اختصاص می‌دهیم. به صورت زیر در این جا مشاهده می‌کنید که برد چشمک می‌زند و این اطلاعات را به شما می‌دهد.

 

دریافت اطلاعات برد آردوینو در متلب Arduino and Matlab - دیجی اسپارک

مشاهده می‌کنید نرم افزار متلب Matlab تشخیص داده که به کدام پورت و چه نوع بردی متصل شده است. همچنین پین‌هایی که در دستررس هستند نشان داده شده است. در نهایت کتابخانه‌های I2C SPI ,Servo است. فقط بردهای آردوینو Arduino را می‌توان استفاده کرد که پردازنده اصلی آن‌ها از خانواده Atmel باشد.

 


کدهای آردوینو در متلب Matlab


 

 

در کد بالا ابتدا آردوینو با حرف a تعریف شده سپس با یک حلقه تکرار که ۱۰۰۰ بار طی می شود دستور های ۰ و ۱ کردن به پین ۱۳ داده شده است. از دستور pause برای تاخیر دادن به فرایند استفاده می شود.

 


چند دستور کد نویسی آردوینو در متلب


دستور pause برای توقف اجرای عملیات به اندازه دلخواه است و واحد آن ثانیه می باشد.  در آردوینو IDE به جای این دستور از دستور delay  استفاده میکنیم.

 

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

 


پروژه و دریافت بن ارسال رایگان


برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکه‌های اجتماعی از جمله آپارات و اینستگرام، با هشتگ‌های دیجی_اسپارک   دانشجوکیت    digispark    daneshjookit منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۰۳۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

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

مهدی تاج الدینی

دانشجوی مهندسی برق-بعضی از زمینه های فعالیتم در زبان های برنامه نویسیC-C++-Arduino-AVR-Matlab

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

۳۹ دیدگاه

  • سلام
    می خواستم که با استفاده از مانستر موتو شیلد VNH2PS30 و برد آردوینو اونو(یونو) و متلب یک دی سی موتور رو کنترل کنم شیلد رو در نرم افزار آردوینو امتحان کردم مشکلی نداره . طبق دیتاشیت شیلد پین های دیجیتال ۷ و ۸ مربوط به راه اندازی موتور ۱ هستش کدی که در کتلب نوشتم به صورت :
    a=arduino(‘com9′,’uno’)
    writeDigitalPin(a,’D7′,1)
    writeDigitalPin(a,’D8′,0)
    هستش اما بعد از اجرا شدن کد اتفاقی نمی افته و موتور ران نمیشه

    • سلام برای اینکه یک شیلد آردوینو رو با متلب کنترل کنید باید این کار رو هم انجام بدین:
      a = arduino(‘COM4’, ‘Uno’, ‘Libraries’, ‘Adafruit\MotorShieldV2’)

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

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

  • سلام،برای ارسال دنباله داده از طریق ماژول ۴۳۳mhz که به اردوینو وصله چه کدی در متلب باید بنویسیم؟

    • با سلام ضمن تشکر از توجه شما این کد هیچ تفاوتی با کد آردوینو نداشته ( به این معنی است که کدی در آردوینو برای این منظور می نویسید فقط در شکل دستور ها تفاوت دارد و کاری با کتاب خانه ها ندارد.) و تنها تفاوت آن در شکل دستور ها می باشد ، که در آموزش با عنوان برنامه نویسی برد های آردوینو با نرم افزار متلب عنوان شده است.

  • سلام
    برای ارسال دنباله داده از طریق ماژول ۴۳۳mhz که به اردوینو وصله چه کدی در متلب باید بنویسیم؟

  • سلام وقت بخیر
    من برای دانلود پکیج آردوینو چندتا پروکسی و وی پی ان رو امتحان کردم اما هیچ کدوم کار نمیکنن
    ممکنه من رو راهنمایی کنید لطفا؟

  • سلام.من تمامی پکیجای آردوینو روی متلب رو کامل نصب کردم ولی در اجرای همین برنامه شما متلب خطای زیر رو میده. لطفا راهنماییم کنید
    Undefined function or variable ‘writeDigitalPin’.

    • سلام،
      معمولا این خطا زمانی نمایش داده می شود که تابع (function) مورد نظر درون مسیر (path) یا مسیرهای تعریف شده برای نرم افزار متلب نباشد، احتمالا هنگام نصب مشکلی وجود داشته لطفا دوباره برسی کنید.

        • راستی چه طور می تونم دو شکل موج سینوسی و مثلثی در اردینو تولید کنم و این دو شکل موج رو با هم مقایسه کنم؟؟؟
          لطفا راهنمایی کنید

          • برای تولید موج سینوسی از مدار مولد ژنراتور توی الکترونیک بهش میگن پل اچ که چهار تا ترانزیستور ماسفت کنار هم قرار گرفته ساخته میشه و یک درایور آیسی IR2110 با استفاده از دو تا از خروجی های PWM آردوینو. یه مدار مشخص هست که با اتصال به آردوینو خروجی سینوسی هست.
            برای ایجاد موج مثلثی هم مداری متفاوت موجود است.
            تمامی شکل موج ها را میتوان ساخت.

    • با سلام ضمن تشکر از توجه شما، این به این معنی است که شکل نوشتن دستور را اشتباه نوشته اید بری این که مطمئن شوید درست نوشته اید در قسمت هلپ متلب همین دستور را تایپ کنید و اگر قسمت ArduinoSoftware Packag را مشاهده کردید به این معنی است که پکیج نصب شده است.

    • با سلام ضمن تشکر از توجه شما، این به این معنی است که شکل نوشتن دستور را اشتباه نوشته اید بری این که مطمئن شوید درست نوشته اید در قسمت هلپ متلب همین دستور را تایپ کنید و اگر قسمت Arduino Software Packag را مشاهده کردید به این معنی است که پکیج نصب شده است.

    • سلاام یه جایی اشتباه کردین تابع ها نصب نشده اند همون مسیر رو برین الان دانلود شده ولی نصب نشده.

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

    • با سلام
      در این خصوص بایستی پایه های I2C آردوینو اول را به پایه های I2C آردوینو دوم اتصال دهید. تنها یک GND برای هر دو برد کافی است. در خصوص کدها نیازمند به یک آموزش جداگانه خواهد بود و امکان بررسی دقیق در کامنت ها وجود ندارد. پروژه بررسی و در صورت امکان آموزش داده خواهد شد.

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

  • سلام وقتی اکانت درست میکنم بعدش لایسنس میخواد اون رو باید چکار کرد ؟ البته من برای پکیج رزبری میخوام.

  • سلام ببخشید برای ایجاد ارتباط بین اردوینو و سیمولینک متلب باید ورژن متلب از ۲۰۱۶ بالاتر باشه؟ ورژن متلب من ۲۰۱۶b هست و هر چی تلاش می کنم که پکیج اردوینو رو بهش اضاه کنم نمیشه. میخواستم بدونم که مشکل از نسخه متلب هست یا نه؟

    • سلام بله باید ورژنتون از b۲۰۱۸ به بعد باشه ورژن ۲۰۱۸ به بعد بسیار متفاوت و بهتر است تغییرات بسیار خوبی در آن ایجاد شده است.

  • سلام وقت بخیر،یک سوال برای شبیه سازی در متلب داشتم ، میشه راهنمایی کنید اون قسمتی که برای شروع کردن شبیه سازی در متلب ، میگه باید برد آردینو رو متصل کنید ، راه حلی هست که نیاز ب خرید برد و اتصالش نباشه؟
    امکانش هست راهنمایی کنید چه کاری باید انجام بدیم؟

    • ضمن تشکر از توجه شما. خیر هیچ راهی برای شبیه سازی بدون برد در متلب وجود ندارد و حتما باید برد را پیدا کند. این نرم افزار به صورت مستقیم و دائم با برد ارتباط برقرار میکند. البته در لحظه RUN شما باید برد رو متصل کنید.

  • ممنون از پاسخگوییتون
    در قسمت شبیه سازی(simulink) متلب برای قسمت Vcc و GND که در آردوینو، در قسمت powerش قرار داره باید از چه جایگزینی استفاده کنم تا بتونم شبیه سازیشو انجام بدم؟
    عذرخواهم هیچ راه ارتباطیی نیست که من زودتر به جوابم برسم؟چون من وقت زیادی ندارم

    • با سلام مجدد آموزش آردوینو در سیمولینک رو قرار میدم ولی برای VCC و GND میتونید اصلا اتصالات رو شبیه سازی نکنید. و فقط با کد این کار رو انجام بدید.

      • میشه راهنمایی کنید وقتی یک LED چشمک زن رو توی محیط شبیه ساز با pulse generator و digital output شبیه سازی میکنم چجوری میتونم اینو ب سه تا led بسط بدیم بطوری ک مثلا چراغ LED سبز ک روشن شد بعد از چن ثانیه چشمک زدن خاموش شه و بعد یک وقفه کوتاه، چراغ LED سفید روشن شه؟

        • سلام. ضمن تشکر از توجه شما. به زودی یک پست آموزشی راجع به این موضوع قرار میدهم که شامل آموزش شبیه سازی برد های آردوینو در سیمولینک و برنامه نویسی آن می باشد.

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

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

            • با سلام. این طور موارد رو با IDE شبیه سازی کنین راحت تره. با متلب میشه ولی کاربرد نداره چون آردوینو رو از متلب جدا کنین برد دیگه کار نمیکنه.

  • سلام میخواستم پکیج رزبری پای متلب رو نصب کنم که ازم لایسنس میخواد، شما تونستید این پکیج رو نصب کنید؟ چکار باید کرد برای نصب پکیج . ممنون میشم راهنمایی کنید .

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