תוכן עניינים:

בקר מיקרו נשלט MATLAB (Arduino MKR1000): 4 שלבים
בקר מיקרו נשלט MATLAB (Arduino MKR1000): 4 שלבים

וִידֵאוֹ: בקר מיקרו נשלט MATLAB (Arduino MKR1000): 4 שלבים

וִידֵאוֹ: בקר מיקרו נשלט MATLAB (Arduino MKR1000): 4 שלבים
וִידֵאוֹ: שימוש ב- App Designer ליצירת ממשק משתמש ששולט במיקרו-בקר Arduino 2024, יולי
Anonim
בקר מיקרו נשלט MATLAB (Arduino MKR1000)
בקר מיקרו נשלט MATLAB (Arduino MKR1000)

מטרת הפרויקט שלנו הייתה לנצל את MATLAB כמו גם את ה- Arduino MKR1000 כמיטב יכולתנו. מטרתנו הייתה ליצור תסריט המאפשר לתכונות מסוימות של הארדואינו לבצע ביצועים מסוימים המבוססים על קלט ספציפי. השתמשנו בלופים רבים ובהצהרות מותנות המופיעות ב- MATLAB שאפשרו זאת. כמו כן, השתמשנו בנייד MATLAB באמצעות נתונים שנרכשו מג'ירוסקופ מכשיר נייד כדי לשפר את הפרויקט עד כמה שניתן.

שלב 1: חלקים וחומרים

חלקים וחומרים
חלקים וחומרים
חלקים וחומרים
חלקים וחומרים
חלקים וחומרים
חלקים וחומרים

MATLAB 2018a

-גרסת MATLAB לשנת 2018 היא הגרסה המועדפת ביותר, בעיקר כי היא פועלת בצורה הטובה ביותר עם הקוד המתחבר למכשיר הנייד. עם זאת, רוב הקוד שלנו יכול להתפרש על ידי רוב גרסאות MATLAB.

Arduino MKR1000

-זהו מכשיר ספציפי המאפשר לנו לחבר מעגלים עד יציאות דיגיטליות ואנלוגיות כאחד. חיוני שיהיה לך גם לוח לחם שאפשר ללכת איתו.

אביזרים

-בשימוש ב- MKR1000, היינו זקוקים לחלקי אביזר על מנת לבצע את הפונקציות הדרושות.

זה כולל

  1. סרוו
  2. לחצן (6)
  3. אור LED להחלפה RBG
  4. חוטים פשוטים
  5. קרש לחם
  6. מתג הפעלה מיני
  7. חיישן טמפרטורה
  8. נגד 330 אוהם
  9. נגד 10K אוהם
  10. כבל USB-microUSB
  11. מחשב נייד/שולחן עבודה
  12. מכשיר נייד

כמו כן יש לציין כי ישנם הרבה מאוד אביזרים נוספים שניתן להשתמש בהם עם MKR1000

שלב 2: חבילת התמיכה של MATLAB Arduino

על מנת להשתמש נכון ב- Arduino MKR1000 דרך MATLAB, עליך להוריד את חבילת התמיכה של MATLAB לחומרה של Arduino. הורדה זו נותנת לך גישה לפונקציות ופקודות מסוימות ישירות ללוח הארדואינו.

אתה יכול להוריד את החבילה בקישור למטה

www.mathworks.com/matlabcentral/fileexchange/47522-matlab-support-package-for-arduino-hardware

שלב 3: שימוש בחיישני נתונים שנרכשו מהמכשיר הנייד

שימוש בחיישני נתונים שנרכשו מהמכשיר הנייד
שימוש בחיישני נתונים שנרכשו מהמכשיר הנייד

אפליקציית MATLAB Mobile מאפשרת לנו להשתמש במכשיר נייד כדי להזרים נתונים באמצעות הג'ירוסקופ שלו. כדי לרכוש את הנתונים באמצעות MATLAB, אנו משיגים את הנתונים על ידי אחזורם ממטריצת הכיוון מהנייד MATLAB. אנו עושים זאת על ידי יצירת משתנה עבור כל עמודה של מטריצת הכיוון (Azimuth, Pitch ו- Roll), ואינדקס זרם הערכים הקבוע מהמכשיר הנייד למחשב. זה מאפשר לנו ליצור הצהרות מותנות שיקדמו פלט אם MATLAB יקלוט קלט נתונים ספציפי מהמכשיר הנייד. כדי לעשות זאת, תזדקק לנייד MATLAB במכשיר הנייד שלך, וחבילת התמיכה במכשירים ניידים עבור MATLAB במחשב שלך.

אתה יכול להוריד את הקובץ בקישור למטה

www.mathworks.com/matlabcentral/fileexchange/51235-matlab-support-package-for-apple-ios-sensors

שלב 4: קוד וחיבורי החיווט

הקוד מתחיל בהודעת הפעלה ששואלת אם ברצוננו להפעיל את מכשיר האבטחה הביתי שלנו. אם אנו עונים כן, ונותנים את קוד הסיסמה הנכון, התסריט מיד קופץ ללולאת זמן. משם הוא מתחיל לאסוף נתונים מהמכשיר הנייד. ישנם תנאים הקוראים נתונים אלה. אנו יכולים לפתוח ולנעול את המערכת מהמכשיר הנייד שלנו, והקוד יהפוך את הסרוו וימצמץ את נורית הלד בהתאם לנתונים הנתונים מהמכשיר הנייד

startup = questdlg ('האם ברצונך להפעיל את מערכת האנרגיה החכמה לבית ecoTECH?'); % מתחיל רצף הפעלה של ecoTECHwaitfor (אתחול); אם אתחול == "כן" % אם נבחר "כן" מתחיל רצף הפעלה ונכנס ללולאת ה- while בסוף = = מופעל; m1 = msgbox ('הפעלת ecoTECH …'); הפסקה (2); מחק (m1); m1_wait = סרגל המתנה (0, 'אנא המתן …'); צעדים = 25; עבור i = 1: הפסקה של צעדים (.1); סרגל המתנה (i/צעדים); % מעדכן את מחיקת סיום סרגל ההמתנה (m1_wait); PASSCODE = [0 0 0 0]; % מאתחל את קוד הסיסמה ii = 0; % מאתחל משתנה המשמש לפריצת לולאות m2 = msgbox ('ecoTECH במבצע מלא!'); הפסקה (2); מחק (m2); startup elseif == "לא" || startup == "ביטול" % אם נבחר "לא" או "ביטול" אז רצף ההפעלה לא יתחיל ואינו נכנס לולאת while power = "כבוי"; m3 = msgbox ('אוקיי! להתראות!'); הפסקה (2); מחק (m3); סוֹף

% ecoTECH בקטע פעולה בזמן אמת בעוד power == "on" % סעיף מפתח נייד בעוד % % אוסף נתונים על כיוון הגליל של המכשיר הנייד KEY = m. Orientation (3); % אוסף נתונים על הלחצנים b2 = readDigitalPin (a, 'D2'); % לחצן 2 (אדום) b3 = readDigitalPin (a, 'D3'); לחצן % 3 (לבן) אם KEY> = 35 % במעלות m4 = msgbox ('ברוכים הבאים הביתה!'); writeDigitalPin (a, 'D8', 1); % מדליק את השהיית האור הירוק (.5); writePosition (ים, 1); % הופך את הסרוו כדי לפתוח את השהיית הדלת (2); writeDigitalPin (a, 'D8', 0); % מכבה את מחיקת האור הירוק (m4); elseif מפתח <= -35 % במעלות m5 = msgbox ('דלת נעולה!'); writeDigitalPin (a, 'D7', 1); % מדליק את השהיית האור האדום (.5); writePosition (ים, 0); % הופך את הסרוו לנעילת השהיית הדלת (2); writeDigitalPin (a, 'D7', 0); % מכבה את מחיקת הנורה האדומה (m5); ii = 1; break % יציאה בעוד הלולאה מכילה מפתח נייד אם הדלת נעולה באמצעות המכשיר הנייד אחרת b2 == 0 && b3 == 0 % יוצא בעוד הלולאה מכילה מפתח נייד כדי להזין את סוף הקצה של קטע הסיסמה

לאחר מכן, הוא יכול להזין לולאת while נוספת. זאת בעוד הלולאה שולטת בתוצאות בהתבסס על הכניסות מהכפתורים. אם לולאת ה- while הראשונה זניחה, או נדרשת נעילה ידנית, היא תזין לולאת זמן נוספת שבה נדרשת סיסמה ספציפית. אם הסיסמה שגויה, היא תפעיל מחדש את הלולאה

בעוד נכון אם ii == 1 % יציאה תוך לולאה המכילה קוד סיסמה אם הדלת הייתה נעולה עם סוף המכשיר הנייד % אוספת נתונים על הכפתורים b5 = readDigitalPin (a, 'D5'); % לחצן 5 (כחול) b1 = readDigitalPin (a, 'D1'); % לחצן 1 (שחור) b4 = readDigitalPin (a, 'D4'); כפתור % 4 (לבן) אם b5 == 0 % מתחיל קטע הזנת קוד סיסמה עבור b = 1: 5 m6 = msgbox ('אנא לחץ והחזק כפתור'); הפסקה (2); מחק (m6); % אוסף נתונים על הלחצנים b1 = readDigitalPin (a, 'D1'); % לחצן 1 (שחור) b2 = readDigitalPin (a, 'D2'); % לחצן 2 (אדום) b3 = readDigitalPin (a, 'D3'); % לחצן 3 (לבן) b4 = readDigitalPin (a, 'D4'); לחצן % 4 (צהוב) b5 = readDigitalPin (a, 'D5'); % לחצן 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 (ים, 1); % הופך את הסרוו כדי לפתוח את השהיית הדלת (5); writeDigitalPin (a, 'D8', 0); % מכבה את השהיית האור הירוק (.1); writeDigitalPin (a, 'D7', 1); % מדליק את השהיית האור האדום (.5); writePosition (ים, 0); % הופך את הסרוו לנעילת השהיית הדלת (1); writeDigitalPin (a, 'D7', 0); % מכבה את מחיקת הנורה האדומה (m7); ii = 1; break % יוצא בעת לולאה המכילה קוד סיסמה לאחר הזנת קוד הסיסמה הנכון elseif PASSCODE ~ = "2314" writeDigitalPin (a, 'D7', 1); % מדליק את הנורה האדומה m8 = msgbox ('קוד סיסמה שגוי! נסה שוב!'); waitfor (m8) writeDigitalPin (a, 'D7', 0); % מכבה את הנורית האדומה ממשיכה % מאפשר לך להזין מחדש סיסמת סיסמה elseif b1 == 0 && b4 == 0 % יציאה תוך לולאה המכילה קטע סיסמה אם אינך רוצה להזין קוד סיסמה ii = 1; סוף סוף לשבור

אם הוא תקין, הוא מיד יכנס ללולאת זמן השולטת בחיישן הטמפרטורה. אם המתג מופעל, הלולאה תמשיך ותשרטט את הטמפרטורה לעומת זמם הזמן, ותאפשר לצפייה במגמה. אם נלחץ על הכפתור המחובר לחיישן הטמפרטורה, הוא ישלח גם מייל שיגיד לך מה הטמפרטורה ב"ביתך ". אם המתג כבוי, הוא יסיים מיד את הקוד

t = 0; % זמן ראשוני = הפסקה של 0 שניות (5) % נותן זמן למשתמש להפעיל את מתג הטמפרטורה SWITCH = readDigitalPin (a, 'D11'); % אוסף נתונים על המתג בסיכה D11 בעוד SWITCH == 0 SWITCH = readDigitalPin (a, 'D11'); % אוסף נתונים על המתג במתח סיכה D11 = readVoltage (a, 'A1'); % קורא את המתח מחיישן הטמפרטורה temp_C = (מתח.*1000 - 500)./ 10; % ממיר את המתח לטמפרטורה ב- ° C temp_F = (9/5).*Temp_C + 32; % ממיר מגרש ° C ל- ° F (t, temp_C, 'b') החזקת הכותרת ('טמפרטורת החדר'); xlabel ('זמן בשניות'); ylabel ('טמפרטורה'); ציר ([0, 180, 0, 100]); plot (t, temp_F, 'r.') legend ('טמפרטורה ב- ° C', 'טמפרטורה ב- ° F') השהה (1); t = t + 1; % מונה זמן בשניות % סעיף דואר אלקטרוני b_temp = readDigitalPin (a, 'D0'); % אוסף את הנתונים של לחצן הטמפרטורה (הכחול) בסיכה D0 אם b_temp == 0 setpref ('אינטרנט', 'SMTP_Server', 'smtp.gmail.com'); setpref ('אינטרנט', 'דואר אלקטרוני', '[email protected]'); % Sender 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 ° C או %.1f ° F ', temp_C, temp_F)); % שולח דואר אלקטרוני לנמען ונותן נתונים על טמפרטורת החדר הנוכחית fprintf ('דואר אלקטרוני נשלח בהצלחה! / N') מסתיים אם temp_F> = 75 % אם טמפרטורת החדר עולה ל 75 ° F… temp_AC = 65; % משנה את הטמפרטורה על התרמוסטט ל 65 ° F אחרת אם temp_F <= 65 % אם טמפרטורת החדר יורדת ל 60 ° F… temp_AC = 80; % משנה את הטמפרטורה על התרמוסטט לסוף קצה 80 ° F % סוף "SWITCH == 0" בעוד הלולאה אם ההפעלה == "כבוי" || ii == 1 % יוצא מ- "power == on" בעוד סוף סוף לולאת סוף % סוף "power == on" בעוד לולאה אם power == "כבוי" || ii == 1 % יוצא בשלמותו בזמן סיום שבירת הלולאה

זו הייתה רק סקירה קצרה של הקוד ותפקודו. צירפנו את הקוד המלא כקובץ pdf במידת הצורך

להלן הרשימה לאיזו יציאה כל מכשיר מחובר

1. נורית RGB: סיכות דיגיטליות (7, 8, 9)

2. סרוו: פין דיגיטלי 6

3. לחצנים: סיכות דיגיטליות (1, 2, 3, 4, 5)

4. לחצן כחול לדוא ל: פין דיגיטלי 0

5. חיישן טמפרטורה: פין אנלוגי 1

6. מתג: פין דיגיטלי 11

מוּמלָץ: