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

פרויקט בית חכם EF230: 7 שלבים
פרויקט בית חכם EF230: 7 שלבים

וִידֵאוֹ: פרויקט בית חכם EF230: 7 שלבים

וִידֵאוֹ: פרויקט בית חכם EF230: 7 שלבים
וִידֵאוֹ: פרויקט גמר באלקטרוניקה בית חכם - נתיבי נועם דרכא 2024, יולי
Anonim
פרויקט בית חכם EF230
פרויקט בית חכם EF230

דרושים חלקים וחומרים:

  • 1 ארדואינו MKR 1000
  • 3 לוחות לחם
  • 2 תאי צילום מיני
  • 1 טרנזיסטורים NPN
  • מתג הפעלה אחד מיני
  • 1 LED - RGB (4 שיניים)
  • 1 LED (צבע לבחירתך)
  • דיודה 1N4148
  • 1 נגדי 10K אוהם
  • התנגדות 5 100 אוהם
  • חיישן טמפרטורה 1 TMP36
  • 1 DAGU 48: 1 יחס מוטור
  • 25 חוטי מגשר
  • כבל USB
  • תוכנית MATLAB
  • מדריך ניסויים SIK ללוח Arduino 101/Genuino 101 - קישור מדריך ניסויים SIK

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

שלב 1: LED רגיש לאור

  • מערך ה- LED הרגיש לאור נועד לייצג את האורות החיצוניים בבית הדולק בלילה.
  • כאשר תא התא המיני מרגיש כמות מופחתת של האור, הנורית תדלק.
  • לבית חכם יש לכך השלכות אנרגיה ואבטחה. זה יחסוך אנרגיה על ידי השארת האורות כבויים במהלך היום ויספק אבטחה מוגברת בלילה.
  • את החיווט וההגדרה המדויקים לחלק זה של הפרויקט ניתן למצוא תחת ניסוי 7 במדריך הניסויים של SIK.

שלב 2: מתג הפעלה מיני

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

שלב 3: תא צילום שני

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

שלב 4: LED RGB

  • ה- RGB LED משמש בצירוף עם מתג ההפעלה המיני ותא הצילום השני למערכת האבטחה של הבית החכם.
  • שלושת הצבעים השונים משמשים אינדיקטורים לתושב הבית החכם.
  • כאשר המערכת ממוקמת במצב 'בית', הנורית הופכת לכחולה. כאשר המערכת ממוקמת במצב 'רחוק' הנורית הופכת לירוקה. כאשר תא התא המשמש כחיישן תנועה מופעל, האור מהבהב באדום.
  • ניתן למצוא את החיווט עבור ה- RGB LED בניסוי 3 של מדריך הניסויים SIK.

שלב 5: חיישן טמפרטורה

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

שלב 6: מנוע DAGU

מנוע הילוך של DAGU
מנוע הילוך של DAGU
  • המנוע מאפשר לבית החכם לווסת את הטמפרטורה בבית על בסיס הטמפרטורה הרצויה וקריאות חיישן הטמפרטורה.
  • המנוע פועל כיחידת AC בבית, המנוע יסתובב במהירויות שונות על סמך כמה הטמפרטורה בפועל גבוהה מהטמפרטורה הרצויה. ככל שההפרש גבוה יותר, הוא מסתובב מהר יותר במנוע.
  • ניתן למצוא את החיווט עבור המנוע במדריך הניסויים תחת ניסוי 11.

שלב 7: קוד

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

ברור א; ברור s; ברור מ; clc; סגור הכל; % נקה את משתני הארדואינו והסרוו כך שניתן יהיה להגדירם מחדש בכל פעם כך שהקוד יפעל ביעילות ("ברור m" נחוץ כדי שאחד הלולאות בזמן יתפקד כראוי) a = arduino (); הגדר את משתנה הארדואינו

s = סרוו (א, 'D6'); הגדר את משתנה הסרו

% אתחל משתני דוא"ל לדוא"ל אזהרה של מערכת האבטחה

מיילים = {'הכנס כתובת נמען'}; מערך של הודעות דוא"ל שאליהן יש לשלוח את דוא"ל האבטחה

% הגדרות העדפת דוא ל הדרושות לשימוש ב- Gmail לשליחת דואר

setpref ('אינטרנט', 'דואר אלקטרוני', 'כתובת הדוא ל של השולח');

setpref ('אינטרנט', 'SMTP_Username', 'שם המשתמש של השולח');

setpref ('אינטרנט', 'SMTP_Password', 'סיסמת השולח');

props = 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');

% משתני נושא וטקסט בדוא ל

subj = 'התראת פולש בבית';

text = 'שלום, זוהי מערכת האבטחה של הבית החכם שלך המודיע לך שזוהתה תנועה מחוץ לביתך. נקטנו בצעדים הדרושים ופנינו עבורך לרשויות. להישאר בטוח.';

בעוד שזה נכון

prompt = {'הזן את טמפרטורת הבית הרצויה (בין 65F ל- 85F):'}; % בקשה לתפריט קלט המשתמש

dlgtitle = 'בחירת טמפרטורה'; % כותרת לתפריט קלט המשתמש

dims = [1 30]; % מידות לתפריט קלט המשתמש

definput = {'72'}; % קלט ברירת מחדל שמופיע בעת פתיחת התפריט לראשונה

tempsel_array = inputdlg (הנחיה, dlgtitle, dims, definput); תפריט קלט משתמש קופץ שישמור את המספר שהוזן במערך

if ~ isempty (tempsel_array) % אם המערך אינו ריק

tempsel_char = cell2mat (tempsel_array); המר את המערך למחרוזת תווים

tempsel = str2double (tempsel_char); המר את מחרוזת התווים למספרים

thingSpeakWrite (chID, tempsel, 'WriteKey', writeKey, 'Fields', 1); כתוב את הטמפרטורה שנבחרה לערוץ ThingSpeak שלך

break % תנתק מלולאת while כך שהתפריט לא יופיע מספר פעמים

else % אם המשתמש לוחץ על ביטול במקום להזין טמפרטורה

msg1 = msgbox ('לא נבחרה טמפרטורה, ברירת המחדל היא 85F', 'אזהרה!'); % הודעה מוצגת למשתמש לאחר לחיצה על ביטול

waitfor (msg1); % המתן עד שתיבת ההודעות תיסגר לפני שתמשיך

tempsel = 85; הגדר את הטמפרטורה למה שנאמר בתיבת ההודעות

thingSpeakWrite (chID, tempsel, 'WriteKey', writeKey, 'Fields', 1); כתוב את הטמפרטורה שנבחרה לערוץ ThingSpeak שלך

break % תנתק מלולאת while כך שהתפריט לא יופיע מספר פעמים

סוֹף

סוֹף

בעוד שזה נכון

chID = 745517; מזהה ערוץ % ThingSpeak

writeKey = 'G9XOQTP8KOVSCT0N'; מפתח % לגישה לערוץ ThingSpeak

% אתחל חיישנים לאחזור נתונים

tempread = readVoltage (a, 'A3'); % קרא את המתח של חיישן הטמפרטורה

lightl1 = readVoltage (a, 'A2'); רמת אור עבור הפוטורזיסטור שעובר לנורית האדומה

lightl2 = readVoltage (a, 'A5'); רמת אור עבור הפוטורזיסטור העובר למערכת האבטחה

switchv = readVoltage (a, 'A0'); ערך % למתג

המר את נתוני הטמפרטורה ממתח למעלות פרנהייט

tempC = (tempread - 0.5) * 100; % המרת מתח לטמפרטורה בצלזיוס

tempF = (tempC * 9/5) + 32; % המרת הטמפרטורה בצלזיוס לטמפרטורה ב פרנהייט

% אתחל את מספרי הסיכה עבור הלד הרב -צבעוני

redp = 'D9'; % סיכה לאור אדום מ- LED

greenp = 'D10'; % פין לאור ירוק מ- LED

bluep = 'D11'; % סיכה לאור כחול מ- LED

אם tempsel <tempF % אם הטמפרטורה שנבחרה גדולה מטמפרטורת החדר

writePosition (ים, 1); % סרוו יתחיל לנוע

השהה (10) % סרוו ימשיך להסתובב במשך 10 שניות כדי לייצג כי ה- AC יכבה לאחר פרק זמן מוגדר

writePosition (ים, 0); כבה את המאוורר לצורך המשך קוד ללא מאוורר

tempsel = 150; שנה את ערך הטמפרטורה כדי לפרוץ מהלולאה לאחר כיבוי המאוורר, שוב רק לצורך המשך הקוד

סוֹף

אם lightl1 <= 3 % אם הפוטורזיסטור הראשון מזהה רמת אור נמוכה

writeDigitalPin (a, 'A1', 1); הפעל נורית LED אדומה המייצגת אורות חיצוניים

אחרת % אם רמת האור שוב גבוהה

writeDigitalPin (a, 'A1', 0); כבה את הנורית האדומה כאשר רמת האור שוב גבוהה מספיק

סוֹף

אם switchv> 3 % אם המתג מופעל

A = קיים ('m', 'var'); בדוק אם קיים המשתנה 'm', זה יאתחל ללולאת ה- while ויאפשר את שבירתו בעת בחירת פריט בתפריט (זו הסיבה ש- m חייב להיות ברור בתחילת הקוד)

בעוד A == 0 % לולאה תתבצע עד למשתנה 'm'

menutext = 'לאיזה מצב אבטחה תרצה להיכנס?'; % טקסט לתפריט המוקפץ לאבטחה

בחירות = {'בית', 'הרחק'}; % אפשרויות לתפריט המוקפץ לאבטחה

m = תפריט (טקסט מנוט, אפשרויות); תפריט קופץ עבור מצבי מערכת אבטחה

break % מבטיח כי לולאת ה- while נשברת כך שהתפריט לא יופיע מספר פעמים

סוֹף

אם m == 1 % אם נבחר מצב 'בית'

writeDigitalPin (a, bluep, 1); הפעל רק אור כחול בנורית הלד שמשנה את הצבעים

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 0);

elseif m == 2 % אם נבחר מצב 'רחוק'

writeDigitalPin (a, bluep, 0);

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 1); הפעל רק את האור הירוק בנורית שמשנה את הצבעים

אם lightl2 <= 3 % אם רמת האור בפוטורזיסטור השני נמוכה, המייצגת תנועה שזוהתה על ידי מערכת האבטחה

sendmail (מיילים, subj, טקסט); שלח דוא"ל עם מאפייני הדוא"ל שהוגדרו בעבר writeDigitalPin (a, greenp, 0); % צבע אדום פלאש מופעל וכיבוי פעמיים

writeDigitalPin (a, redp, 1);

השהה (0.3)

writeDigitalPin (a, redp, 0);

השהה (0.3)

writeDigitalPin (a, redp, 1);

השהה (0.3)

writeDigitalPin (a, redp, 0);

השהה (0.3)

writeDigitalPin (a, redp, 1); % סיימו באדום אחיד לאחר ההבהוב כדי להראות שיש תנועה עד שרמת האור עולה בחזרה

msg2 = msgbox ('פולש זוהה על ידי מערכת האבטחה, מייל נשלח לבעלי הבית כדי ליידע אותם.', 'אזהרה!'); % תיבת הודעות כדי להודיע למשתמש על תנועה וליידע על הודעת הדוא ל שנשלחה (msg2) % המתן עד שתיבת ההודעות תיסגר לפני שתמשיך

אַחֵר

writeDigitalPin (a, greenp, 1); % לאחר שרמת האור תעלה שוב היא תחזור לירוק

סוֹף

סוֹף

andersif switchv <3.3 % אם המתג כבוי

writeDigitalPin (a, bluep, 0); כבה את הנורית לחלוטין כדי להראות שמערכת האבטחה כבויה

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 0);

סוֹף

סוֹף

מוּמלָץ: