آردوینو

برنامه نویسی بردهای آردوینو با نرم افزار متلب 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


 

%% DigiSpark

a=arduin('COM4','UNO');
for i = 1:1000

writeDigitalPin(a,'D13',1);

pause(0.5);

writeDigitalPin(a,'D13',0);

pause(0.5);
   
end

 

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

 


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


a=arduino ' شماره پورتی که آردوینو به آن وصل می شود ',' نوع برد '
writeDigitalPin 'نامی که برای برد موجود اختصاص داده اید ','شماره پایه ای که می خواهید روی آن عملیات انجام دهید ','  صفر یا یک بود پایه'

دستور 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 رو در محیط جستوجویی که در آموزش گفته بودم جستوجوکنید. کتاب خانه را پیدا کنید و نصب کنید به لاینسیس هم نیازی نداره.

  • سلام
    برای پروژه ای که تو متلب انجام شده و قرار هست روی میکروکنترلر پیاده سازی بشه بازم نیاز به متلب هست؟
    به عبارت دیگه فرض کنید یک سری کد متلب رو داریم که ورودی اونها از ماژول های GPS تامین میشه، اگه از آردوینو استفاده بشه باید کدها در خود آردوینو نوشته بشه یا از همون کدهای متلب میشه استفاده کرد؟
    ممنون از اشتراک اطلاعاتتون

    • با سلام
      توسط برد آردوینو کدنویسی میکنید و اطلاعات سنسور و ماژول مورد نظرتان را دریافت میکنید. سپس آن را با رابط سریال به کامپیوتر متصل میکنید. نرم افزار متلب هم از همین طریق اطلاعات را دریافت میکند.

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

  • سلام وقتتون بخیر
    من از متلب٢٠٢٠ استفاده میکنم میخاستم اردوینو رو به متلب وصل کنم وقتیکه پکیج Arduino hardware رو نصب میکنم نصب نمیشه و ارور میده که یه سری library نصب نشده ممنون میشم کمک کنید

  • سلام من میخواستم با پورت سریال یه فرکانس با متلب به اردوینو بدم از چه دستوری باید استفاده کنم؟

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

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

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

      • سلام
        من نمیتونم تو سایت و گروه هاتون عضو شم(خطا میده سایت)
        اگه امکانش هست از طریق ایمیل ارتباط داشته باشیم برای راهنمایی بیشتر

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

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

          • اها.خب خیلی سخت شد کار.
            آیا میشه از انکودر های نوری که دو تا خروجی a , b داره استفاده کنم؟؟؟ با کتابخونه روتاری انکودر ؟؟؟
            الان با همین اپتوکانتر و کد نویسی هایی روتاری انکودر سرعت موتور رو نشون میده ولی فقط اعداد ۴٫۱۷ و۴٫۱۷-…چیزی جز این نشون نمیده.با دیسک صفحه انکودر ۸۰ پالسه.
            به نظرتون مشکل کد نویسیه یا مشکل همین اوکی نبودن اپتوکانتره؟؟؟

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

  • سلام وقتتون بخیر من میخوام یک هاورکرافت طراحی کنم که شامل سه موتور هست
    یک موتور برای on/off
    یک موتور برای تغییر زاویه (step motor)
    و یک موتور هم برای سرعت (pwm)
    این سه موتور روی یک برد اردوینو روی هاور سوار شده اند که از طریق گیرنده nrf دستور را از برد آردوینو متصل به سیستم که توسط متلب برنامه نویسی شده دستورات را دریافت میکنند
    ممکنه منو در نوشتن برنامه این سع موتور راهنمایی بفرمایید ؟

  • سلام وقتتون بخیر
    تو متلب ۲۰۲۲ ,وقتی گزینه get hardware support رو میزنم ارور زیر رو میاره، مشکل چیه؟؟
    Are you up-to-date on Software Maintenance?
    To access the Add-On Explorer, your license must be current on MathWorks Software Maintenance.