فهرست مطالب:
- مرحله 1: قطعات و مواد
- مرحله 2: بسته پشتیبانی MATLAB Arduino
- مرحله 3: استفاده از حسگرهای داده به دست آمده از دستگاه تلفن همراه
- مرحله 4: کد و پورت های سیم کشی
تصویری: میکروکنترلر کنترل شده MATLAB (Arduino MKR1000): 4 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:55
هدف پروژه ما استفاده از MATLAB و Arduino MKR1000 به بهترین نحو بود. هدف ما ایجاد اسکریپتی بود که به برخی از ویژگی های آردوینو اجازه دهد خروجی خاصی را بر اساس یک ورودی خاص انجام دهد. ما از حلقه ها و جملات شرطی برجسته در MATLAB استفاده کردیم که این امکان را فراهم کرد. ما همچنین از MATLAB mobile با استفاده از داده های به دست آمده از ژیروسکوپ دستگاه تلفن همراه برای افزایش هرچه بیشتر پروژه استفاده کردیم.
مرحله 1: قطعات و مواد
MATLAB 2018a
نسخه 2018 MATLAB بیشترین نسخه را ترجیح می دهد ، بیشتر به این دلیل که با کدی که به دستگاه تلفن همراه متصل می شود بهتر کار می کند. با این حال ، اکثر کدهای ما را می توان توسط اکثر نسخه های MATLAB تفسیر کرد.
آردوینو MKR1000
-این یک دستگاه خاص است که به ما اجازه می دهد مدارها را تا هر دو پورت دیجیتال و آنالوگ سیم کشی کنیم. داشتن یک تخته نان برای همراهی با آن بسیار مهم است.
تجهیزات جانبی
هنگام استفاده از MKR1000 ، ما به قطعات جانبی نیاز داریم تا عملکردهای لازم را انجام دهیم.
این شامل
- سروو
- دکمه (6)
- چراغ LED RBG قابل تعویض
- سیمهای ساده
- تخته نان (ها)
- مینی سوئیچ برق
- حسگر دما
- مقاومت 330 اهم
- مقاومت 10 کیلو اهم
- کابل USB-microUSB
- لپ تاپ/رومیزی
- دستگاه موبایل
همچنین لازم به ذکر است که لوازم جانبی بسیار زیادی وجود دارد که می توان با MKR1000 از آنها استفاده کرد
مرحله 2: بسته پشتیبانی MATLAB Arduino
برای استفاده صحیح از Arduino MKR1000 از طریق MATLAB ، باید بسته پشتیبانی MATLAB برای سخت افزار Arduino را بارگیری کنید. این بارگیری به شما امکان می دهد به عملکردها و دستورات خاصی مستقیماً در برد arduino دسترسی پیدا کنید.
می توانید بسته را در لینک زیر بارگیری کنید
www.mathworks.com/matlabcentral/fileexchange/47522-matlab-support-package-for-arduino-hardware
مرحله 3: استفاده از حسگرهای داده به دست آمده از دستگاه تلفن همراه
برنامه MATLAB Mobile به ما اجازه می دهد تا با استفاده از ژیروسکوپ از یک دستگاه تلفن همراه برای پخش اطلاعات استفاده کنیم. برای به دست آوردن داده ها از طریق متلب ، داده ها را با بازیابی آنها از ماتریس جهت گیری از تلفن همراه متلب به دست می آوریم. ما این کار را با ایجاد یک متغیر برای هر ستون ماتریس جهت گیری (Azimuth ، Pitch و Roll) و نمایه سازی جریان ثابت مقادیر از دستگاه تلفن همراه به رایانه انجام می دهیم. این امر به ما اجازه می دهد تا دستورات شرطی ایجاد کنیم که در صورت خروجی MATLAB از دستگاه تلفن همراه ، خروجی را ایجاد می کند. برای انجام این کار ، شما نیاز به تلفن همراه متلب در دستگاه تلفن همراه خود و بسته پشتیبانی دستگاه تلفن همراه برای متلب در رایانه خود دارید.
می توانید فایل را در لینک زیر بارگیری کنید
www.mathworks.com/matlabcentral/fileexchange/51235-matlab-support-package-for-apple-ios-sensors
مرحله 4: کد و پورت های سیم کشی
کد با یک پیام راه اندازی شروع می شود که می پرسد آیا می خواهیم دستگاه امنیتی خانه خود را راه اندازی کنیم یا خیر. اگر بله را پاسخ دهیم و رمز عبور صحیح را وارد کنیم ، اسکریپت بلافاصله به یک حلقه while می رود. از آنجا ، شروع به جمع آوری داده ها از دستگاه تلفن همراه می کند. شرایطی وجود دارد که این داده ها را می خواند. ما می توانیم قفل و قفل سیستم را از دستگاه تلفن همراه خود داشته باشیم و کد بسته به داده های داده شده از دستگاه تلفن همراه ، سروو را روشن کرده و چراغ LED را چشمک می زند
startup = questdlg ("آیا می خواهید سیستم انرژی خانه هوشمند ecoTECH را فعال کنید؟")؛ ٪ شروع دنباله فعال سازی ecoTECHwaitfor (راه اندازی) ؛ در صورت راه اندازی == "بله"٪ در صورت انتخاب "بله" ، یک دنباله فعال سازی آغاز می شود و در پایان = "روشن" به حلقه while وارد می شود. m1 = msgbox ('راه اندازی ecoTECH …')؛ مکث (2) ؛ حذف (m1) ؛ m1_wait = waitbar (0 ، 'لطفا صبر کنید …')؛ مراحل = 25 ؛ برای i = 1: مراحل مکث (.1) ؛ نوار انتظار (i/مراحل) ؛ end حذف پایان نوار انتظار (m1_wait) ؛ رمز عبور = [0 0 0 0] ؛ ٪ رمزگذاری اولیه را آغاز می کند ii = 0؛ ٪ متغیری را برای خروج از حلقه ها استفاده می کند m2 = msgbox ('ecoTECH کاملاً عملیاتی است!')؛ مکث (2) ؛ حذف (m2) ؛ elseif startup == "No" || راه اندازی == "لغو"٪ اگر "نه" یا "لغو" انتخاب شود ، دنباله فعال سازی شروع نمی شود و وارد حلقه while نمی شود = "خاموش" ؛ m3 = msgbox ('خوب! خداحافظ!')؛ مکث (2) ؛ حذف (m3) ؛ پایان
٪ ecoTECH در بخش Action در حالی که درست است در حالی که قدرت == "" در "٪ Mobile Key Section while true٪ اطلاعات مربوط به جهت رول دستگاه تلفن همراه را جمع آوری می کند KEY = m. جهت (3)؛ ٪ اطلاعات مربوط به دکمه ها را جمع آوری می کند b2 = readDigitalPin (a، 'D2')؛ ٪ Button 2 (قرمز) b3 = readDigitalPin (a ، 'D3') ؛ ٪ Button 3 (سفید) اگر KEY> = 35٪ در درجه m4 = msgbox ('Welcome Home!')؛ writeDigitalPin (a، 'D8'، 1)؛ ٪ روشن شدن توقف چراغ سبز (.5) ؛ writePosition (s، 1)؛ ٪ سروو می چرخاند تا قفل درب باز شود (2). writeDigitalPin (a، 'D8'، 0)؛ ٪ خاموش کردن چراغ سبز (m4) ؛ elseif KEY <= -35٪ در درجه m5 = msgbox ('Door Locked!')؛ writeDigitalPin (a، 'D7'، 1)؛ ٪ روشن شدن توقف چراغ قرمز (.5) ؛ writePosition (s، 0)؛ the سروو را می چرخاند تا مکث درب قفل شود (2). writeDigitalPin (a، 'D7'، 0)؛ ٪ حذف چراغ قرمز را خاموش می کند (m5) ؛ ii = 1 ؛ شکست٪ خروج از حلقه حاوی کلید تلفن همراه اگر درب با استفاده از دستگاه تلفن همراه قفل شده باشد
پس از این ، می تواند حلقه while دیگری را وارد کند. این در حالی است که حلقه بر اساس ورودی های دکمه ها ، نتایج را کنترل می کند. اگر اولین حلقه while ناچیز باشد یا یک قفل دستی لازم باشد ، حلقه while دیگری را وارد کنید که در آن رمز عبور خاصی مورد نیاز است. اگر رمز عبور نادرست باشد ، حلقه را دوباره راه اندازی می کند
درصورت صحت اگر ii == 1٪ خارج می شود در حالی که حلقه حاوی رمز عبور در صورت باز بودن درب با دستگاه موبایل پایان٪ جمع آوری اطلاعات در مورد دکمه ها b5 = readDigitalPin (a ، 'D5') ؛ ٪ Button 5 (آبی) b1 = readDigitalPin (a ، 'D1') ؛ ٪ دکمه 1 (سیاه) b4 = readDigitalPin (a ، 'D4') ؛ ٪ Button 4 (سفید) در صورت b5 == 0٪ شروع به ورود کد عبور برای b = 1: 5 m6 = msgbox ('Please Press And Hold A Button')؛ مکث (2) ؛ حذف (m6) ؛ ٪ اطلاعات مربوط به دکمه ها را جمع آوری می کند b1 = readDigitalPin (a، 'D1')؛ ٪ دکمه 1 (سیاه) b2 = readDigitalPin (a ، 'D2') ؛ ٪ Button 2 (قرمز) b3 = readDigitalPin (a ، 'D3') ؛ ٪ Button 3 (سفید) b4 = readDigitalPin (a، 'D4')؛ ٪ دکمه 4 (زرد) b5 = readDigitalPin (a ، 'D5') ؛ ٪ Button 5 (آبی)٪ اگر کد b1 == 0 PASSCODE (0+b) = 1 باشد ، مقادیر را در گذرواژه اولیه جایگزین می کند. elseif b2 == 0 PASSCODE (0+b) = 2 ؛ elseif b3 == 0 PASSCODE (0+b) = 3 ؛ elseif b4 == 0 PASSCODE (0+b) = 4 ؛ elseif b5 == 0 PASSCODE = sprintf ('٪. 0f٪.0f٪.0f٪.0f' ، PASSCODE (1) ، PASSCODE (2) ، PASSCODE (3) ، PASSCODE (4)) ؛ ٪ توالی دکمه های فشرده شده را به اعداد تبدیل می کند و سپس آن را به انتهای یک رشته تبدیل می کند٪ انتهای حلقه برای وارد کردن ارقام برای رمز عبور در صورت PASSCODE == "2314"٪ اگر رمز عبور وارد شده مطابقت داشته باشد ، درب برای چند ثانیه باز می شود و قفل می شود m7 = msgbox ('به خانه خوش آمدید!')؛ writeDigitalPin (a، 'D8'، 1)؛ ٪ روشن شدن توقف چراغ سبز (.5) ؛ writePosition (s، 1)؛ ٪ سروو را می چرخاند تا قفل درب باز شود (5). writeDigitalPin (a، 'D8'، 0)؛ ٪ توقف چراغ سبز را خاموش می کند (.1) ؛ writeDigitalPin (a، 'D7'، 1)؛ ٪ روشن شدن توقف چراغ قرمز (.5) ؛ writePosition (s، 0)؛ the سروو را می چرخاند تا مکث درب قفل شود (1). writeDigitalPin (a، 'D7'، 0)؛ ٪ حذف چراغ قرمز را خاموش می کند (m7) ؛ ii = 1 ؛ break٪ خروج از حلقه حاوی رمز عبور پس از وارد کردن رمز عبور صحیح elseif PASSCODE = "2314" writeDigitalPin (a، 'D7'، 1)؛ ٪ چراغ قرمز را روشن می کند m8 = msgbox ('رمز عبور اشتباه! دوباره امتحان کنید!')؛ waitfor (m8) writeDigitalPin (a، 'D7'، 0)؛ ٪ چراغ قرمز را خاموش می کند ادامه می دهد٪ به شما این امکان را می دهد که یک رمز عبور را دوباره وارد کنید پایان پایان پایان
اگر درست باشد ، بلافاصله وارد حلقه while می شود که سنسور دما را کنترل می کند. اگر سوئیچ روشن باشد ، حلقه ادامه می یابد و دما را در مقابل نمودار زمان رسم می کند و به فرد اجازه می دهد روند را مشاهده کند. اگر دکمه متصل به سنسور دما فشار داده شود ، همچنین یک ایمیل ارسال می کند که به شما می گوید دما در "خانه" شما چقدر است. اگر سوئیچ خاموش باشد ، بلافاصله کد را تمام می کند
t = 0 ؛ ٪ زمان اولیه = 0 ثانیه مکث (5)٪ به کاربر زمان می دهد تا کلید دما را روشن کند SWITCH = readDigitalPin (a ، 'D11') ؛ ٪ اطلاعات مربوط به سوئیچ در پین D11 را جمع آوری می کند در حالی که SWITCH == 0 SWITCH = readDigitalPin (a ، 'D11') ؛ ٪ اطلاعات مربوط به سوئیچ در پین ولتاژ D11 = readVoltage (a ، 'A1') را جمع آوری می کند. ٪ ولتاژ را از سنسور دما temp_C = (ولتاژ*1000 - 500) می خواند./10؛ ٪ ولتاژ را به دما در درجه سانتیگراد temp_F = (9/5) تبدیل می کند.*temp_C + 32؛ ٪ از ° C به ° F نمودار (t، temp_C، 'b.') را در عنوان ('دمای اتاق') نگه می دارد. xlabel ("زمان در ثانیه") ؛ ylabel ("دما") ؛ محور ([0 ، 180 ، 0 ، 100]) ؛ طرح (t، temp_F، 'r.') legend ('دما در ° C'، 'دما در ° F') مکث (1)؛ t = t + 1 ؛ ٪ شمارنده زمان در ثانیه٪ بخش پست الکترونیکی b_temp = readDigitalPin (a، 'D0')؛ ٪ در صورتی که b_temp == 0 setpref ('اینترنت' ، 'SMTP_Server' ، 'smtp.gmail.com') داده های دکمه دما (آبی) را در پین D0 جمع آوری کند ؛ setpref ("اینترنت" ، "E_mail" ، "[email protected]") ؛ ٪ فرستنده setpref ("اینترنت" ، "SMTP_Username" ، "[email protected]") ؛ ٪ نام کاربری فرستنده setpref ("اینترنت" ، "SMTP_Password" ، "Integral_ecoTECH") ؛ ٪ رمز عبور ارسال کننده = java.lang. System.getProperties؛ props.setProperty ('mail.smtp.auth' ، 'true') ؛ props.setProperty ('mail.smtp.socketFactory.class' ، 'javax.net.ssl. SSLSocketFactory') ؛ props.setProperty ('mail.smtp.socketFactory.port' ، '465') ؛ sendmail ('[email protected] '،' ecoTECH دمای اتاق '، sprintf (' دمای فعلی اتاق٪.1f درجه سانتیگراد یا٪.1f درجه فارنهایت '، temp_C ، temp_F)) ؛ ٪ یک ایمیل به گیرنده ارسال می کند که اطلاعات مربوط به دمای فعلی اتاق fprintf ('ایمیل با موفقیت ارسال شد! / n') پایان می یابد اگر temp_F> = 75٪ اگر دمای اتاق به 75 درجه فارنهایت افزایش یابد … temp_AC = 65؛ ٪ دمای ترموستات را تا 65 درجه فارنهایت درجه حرارت دیگر تغییر می دهد <= 65٪ اگر دمای اتاق به 60 درجه فارنهایت کاهش یابد … temp_AC = 80؛ ٪ دما را در ترموستات به 80 درجه فارنهایت پایان می دهد٪ پایان "SWITCH == 0" در حالی که حلقه در صورت قطع برق == "خاموش" || ii == 1٪ خروج "power == on" while loop end end end٪ پایان "power == on" while حلقه if power == "off" || ii == 1٪ از کل خارج می شود در حالی که حلقه پایان می یابد
این فقط یک مرور کوتاه از کد و عملکرد آن بود. در صورت نیاز کد کامل را بصورت pdf پیوست کرده ایم
در اینجا لیستی وجود دارد که هر دستگاه به کدام پورت وصل شده است
1. LED RGB: پین های دیجیتال (7 ، 8 ، 9)
2. سروو: پین دیجیتال 6
3. دکمه ها: پین های دیجیتال (1 ، 2 ، 3 ، 4 ، 5)
4. دکمه آبی برای ایمیل: پین دیجیتال 0
5. سنسور دما: پین آنالوگ 1
6. سوئیچ: پین دیجیتال 11
توصیه شده:
مخزن کنترل شده 3D RC کنترل شده !!: 8 مرحله (همراه با تصاویر)
3D Printed RC Controlled Tank !!: آیا تا به حال خواسته اید یک وسیله نقلیه از راه دور داشته باشید که بتواند از جاده خارج شود و حتی می توانید از دوربین دید اول شخص مشاهده کنید ، پس این مخزن برای شما عالی است. ردیف های روی مخزن به شما امکان می دهد هنگام رانندگی در زمین هایی مانند خاک و چسبندگی زیاد ،
استپر موتور کنترل شده استپر موتور بدون میکروکنترلر!: 6 مرحله
موتور پله ای پله ای کنترل شده بدون میکروکنترلر !: در این دستورالعمل سریع ، ما یک کنترل کننده ساده موتور پله ای را با استفاده از موتور پله ای می سازیم. این پروژه نیازی به مدار پیچیده یا میکروکنترلر ندارد. بنابراین ، بدون هیچ گونه توضیح بیشتر ، بیایید شروع کنیم
موتور پله ای کنترل شده استپر موتور بدون میکروکنترلر (V2): 9 مرحله (همراه با تصاویر)
موتور پله ای کنترل شده استپر موتور بدون میکروکنترلر (V2): در یکی از دستورالعمل های قبلی من ، نحوه کنترل موتور پله ای با استفاده از موتور پله ای بدون میکروکنترلر را به شما نشان دادم. این یک پروژه سریع و سرگرم کننده بود اما با دو مشکل همراه بود که در این دستورالعمل حل خواهد شد. بنابراین ، عاقل
ESP8266 RGB LED STRIP WIFI کنترل - NODEMCU به عنوان یک کنترل از راه دور IR برای نوار LED کنترل شده بر روی Wifi - کنترل تلفن هوشمند RGB LED STRIP: 4 مرحله
ESP8266 RGB LED STRIP WIFI کنترل | NODEMCU به عنوان یک کنترل از راه دور IR برای نوار LED کنترل شده بر روی Wifi | RGB LED STRIP Smartphone Control: سلام بچه ها در این آموزش می آموزیم که چگونه از nodemcu یا esp8266 به عنوان ریموت IR برای کنترل نوار LED RGB استفاده کنید و Nodemcu توسط تلفن هوشمند از طریق وای فای کنترل می شود. بنابراین اساساً می توانید RGB LED STRIP را با تلفن هوشمند خود کنترل کنید
نحوه ساخت ربات کنترل شده با موبایل - بر اساس DTMF - بدون میکروکنترلر و برنامه نویسی - کنترل از هر نقطه در جهان - RoboGeeks: 15 قدم
نحوه ساخت ربات کنترل شده با موبایل | بر اساس DTMF | بدون میکروکنترلر و برنامه نویسی | کنترل از هر نقطه در جهان | RoboGeeks: می خواهید رباتی بسازید که از هر کجای دنیا قابل کنترل باشد ، اجازه دهید این کار را انجام دهیم