آردوینو نرم افزار

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

arduino-and-matlab-srf-project-digispark
نوشته شده توسط مهدی تاج الدینی

از جمله راه‌های ارتباطی یک سیستم رایانه‌ای با سایر سخت افزارها پورت سریال است. پورت سریال در واقع یک رابط سری است که می‌تواند بیت‌های اطلاعات را در همان لحظه انتقال دهد. برد آردوینو هم به همین روش با یک رایانه ارتباط برقرار می‌کند. بنابراین سمت رایانه با نرم افزارهای مختلفی می‌توان به این برد جذاب فرمان داد. در نرم افزار آردوینو Arduino IDE به زبان C++ کد نویسی می‌کنیم. در این پست شیوه ارتباط برد آردوینو با نرم افزار متلب Matlab را آموزش خواهم داد. در ادامه این آموزش با مرجع آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 

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

اگر با برد آردوینو و برنامه نویسی این برد به مقدار اندکی آشنا باشید. شاید به موضوع پردازش روی داده‌های دریافتی از یک سنسور نظر شما را به خود جلب کرده باشد. تصور کنید اطلاعات یک سنسور مانند سنسور فاصله سنج آلتراسونیک SRF را به دست آورده‌اید. حال می‌خواهید روی آن پردازش تخصصی انجام دهید. مثلا داده سنسور فاصله سنج آلتراسونیک SRF را به صورت رسم نمودار، نمودار سه بعدی، تشخیص تعداد اعضا و… تبدیل کنید. نرم افزار متلب Matlab پردازش‌هایی تخصصی را روی اعداد انجام می‌دهد. لازم است بدانید که توسط ارتباط برد آردوینو با متلب Matlab با استفاده از پورت سریال آردوینو این امر امکان پذیر خواهد بود. سپس داده‌های بدست آمده از برد آردوینو را در نرم افزار متلب Matlab ذخیره کنید.

ارتباط آردوینو با نرم افزار متلب arduino and matlab - دیجی اسپارک

 

پروژه آلتراسونیک آردوینو و Matlab

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

 

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

جهت اجرای پروژه کدهای زیر را در محیط ArduinoIDE قرار دهید. سپس بر روی آردوینو آپلود کنید.

 

مهمان گرامی، جهت دسترسی به کدهای این پروژه، اسپارکر شوید.

 

ارسال اطلاعات به نرم افزار متلب

در بالا ماژول فاصله سنج آلتراسونیک SRF04 راه اندازی شد. تابعی که در پایین نوشته شده کدمیکرو ثانیه را به سانتیمتر تبدیل می‌کند. حال اطلاعاتی که از ماژول HC-SR05 ارسال می‌شود به صورت مستقیم روی پورت سریال ارسال می‌شود. پس از اینکار بایستی توسط نرم افزار متلب Matlab این اطلاعات را از پورت سریال بخوانیم. کد بالا به دلیل وجود آموزش‌های فراوان در سایت تحلیل نشد. حال پس از باز کردن نرم افزار متلب به مسیر edit در Command window بروید. یک فایل متنی برای برنامه نویسی باز می‌شود. فرض بر این است که میخواهیم ۱۰۰ عدد از ماژول آلتراسونیک که روی پورت سریال است را خوانده، سپس نمودار آن را رسم کنیم. برای اتصال برد آردوینو با نرم افزار متلب Matlab از کد دستوری زیر استفاده می‌کنیم.

پس از اجرای این دستور، شماره پورتی که آردوینو به آن وصل است را وارد می‌کنید. لازم به ذکر است که میتوانید این com را از داخل برنامه arduinoIDE پیدا کنید. سپس سرعت تبادل اطلاعات را از شما می‌خواهد. این سرعت باید با سرعت تبادل اطلاعات برد آردوینو یکی باشد. بهترین سرعت برای تبادل اطلاعات بین برد آردوینو با نرم افزار متلب ۹۶۰۰ می‌باشد. سپس با دستور زیر پورت سریال را باز می‌کنیم.

یکی از کاربردهای دستور fopen باز کردن پورت سریال است. به این علت که میخواهیم ۱۰۰ عدد از ماژول فاصله سنج آلتراسونیک را در نرم افزار متلب بخوانیم؛ با دستور زیر یک دنباله حسابی با جمله عمومی ۱ بین یک تا صد ایجاد می‌کنیم.

 

نرم افزار متلب و آردوینو Arduino and matlab - دیجی اسپارک

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

 

 

سخت افزار مورد نیاز

برد آردوینو UNO

ماژول آلتراسونیک SRF04

 

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

 

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

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

 

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

 

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

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

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

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

۶ دیدگاه

  • سلام و خسته نباشید
    از اینکه متلب هم به آموزش های دیجی اضافه شد بسیار خوشحالم من در دوران دانشگاه با متلب کار کردم و الان مدت زمان زیادی از یادگیریش گذشته سوالی که دارم
    کد fopen arduino را کجا باید وارد کنم؟

    • سلام.از توجه شما سپاس گذارم،تابع fopen(arduino) برای باز کردن پورت سریال استفاده می شود.این کد را باید در نرم افزار متلب بعد از باز کردن یک برنامه جدید در قسمت ادیتور وارد کنید.توجه کنید که پورت سریال Arduino و متلب همراه با هم نباید باز باشد.در صورت باز بودن با Eror خطای ارتباطی رو به رو می شوید که در صورت رو به رو شدن با این مشکل برنماه متلب را یک بار کامل ببندید.

  • سلام خسته نباشید. ممنون بابت اموزش های خوبتون.
    تمام مراحلی که گفتید انجام دادم اما این وارنینگ ها رو دریافت میکنم.
    Warning: Unsuccessful read: A timeout occurred before the Terminator was reached..
    Warning: Unsuccessful read: The input buffer was filled before the Terminator was reached.
    البته از ماژول SRF05 استفاده کردم. ممکنه از اون باشه؟

    • با سلام.چک کنین آیا آردوینو به PC وصل شده یا خیر،اگر وصل نشده به این معنی هست که دو پورت سریال آردوینو و متلب به صورت هم زمان باز است.توجه کنید که این دو پورت سریال (آردوینو و متلب) نباید با هم باز باشند.کاری که شما باید انجام دهید این است که ابتدا نرم افزار متلب را به طور کامل بسته.سپس چک کنید که پروت سریال آردوینو باز نباشد،حال متلب را باز کرده سپس برنامه متلب را Run کنید در هنگام Run شدن مدتی زمان می برد که صد داده اول از ماژول UltraSonic گرفته شود.(خطای شما به این دلیل است که به دلیل باز بودن پورت سریال آردوینو و متلب با هم برنامه COM اصلی را وصل نمی کند(تا Arduino IDE کد را آپلود کند.)،پس در هنگام کار اصلا پورت سریال آردوینو را باز نکنید.)

  • سلام
    بابت مطلبتون ممنونم اون قسمت که گفتید ۱۰۰ سنسور التراسونیک را محاسبه میکنیم. یعنی حتما باید ۱۰۰ تا ماژول را به نرم افزار متصل کنیم؟ بعد چطوری قرار هست که این ۱۰۰ تا سنسور از یک آردوینو دیتا بفرستند؟

    • با سلام.گفته شده که صد «عدد» از ماژول اولتراسونیک دریافت می شود(به بیان بهتر از برد آردوینو دریافت می شود.) و به متلب ارسال می شود.