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

תרמוסטט לבית חכם: 4 שלבים
תרמוסטט לבית חכם: 4 שלבים

וִידֵאוֹ: תרמוסטט לבית חכם: 4 שלבים

וִידֵאוֹ: תרמוסטט לבית חכם: 4 שלבים
וִידֵאוֹ: התקנת מתג חכם לתאורה 2024, יולי
Anonim
תרמוסטט לבית חכם
תרמוסטט לבית חכם

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

שלב 1: סקירה כללית

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

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

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

(15) חוטי מגשר

(4) 220 נגדי אוהם

(1) התנגדות 10K אוהם

(1) חיישן טמפ '

(1) התנגדות צילום

(1) תיבת הילוכים מיני DC של DAGU

(1) דיודה

(1) טרנזיסטור

(1) פוטורסיסטור

(1) לוח לחם

(1) ארדואינו MKR

שלב 3: מעגל

מעגל חשמלי
מעגל חשמלי
מעגל חשמלי
מעגל חשמלי
מעגל חשמלי
מעגל חשמלי
מעגל חשמלי
מעגל חשמלי

איור 1 = תמונה שמאלית גדולה

איור 2 = ימין למעלה

איור 3 = ימין באמצע

איור 4 = ימין למטה

איור 1

באמצעות התרשים למעלה, חיברנו כל אחד משלושת הלדים שלנו. הרחקנו כל LED מאז שעבדנו עם לוח לחם גדול. עבור לוחות לחם קטנים יותר, ייתכן שיהיה צורך לקרב את הנוריות זו לזו. כמו כן, אין צורך להפעיל את לוח הלחם מכיוון שהנוריות שואבות כל כך מעט כוח. לא השתמשנו בחיבור 5V בלוח הלחם עבור הלדים. כל חיבור מנורות הלדים לארדואינו שלנו נעשה כאילו החוט הירוק למעלה. הנורות האדומות, הכחולות והירוקות שלנו מחוברות לפין הדיגיטלי 8, 9 ו -10 בהתאמה, המיועדות בחוט אדום, כחול וירוק בתמונה שלנו.

איור 2

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

איור 3

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

איור 4

התמונה למעלה שימשה לחיבור תיבת ההילוכים DAGU Mini DC. החוט הירוק המחובר לתיבת ההילוכים הוא למעשה החוט האדום המחובר אליו בתמונה שלנו. תיבת ההילוכים מחוברת לפין דיגיטלי 11 עם חוט כתום בדגם שלנו. הקפד לא לטעות בטרנזיסטור המשמש כאן עם חיישן הטמפרטורה. הם נראים כמעט זהים. לחיישן הטמפרטורה סביר שיהיה TMP או סקריפט אחר שנכתב בצד השטוח של החיישן. עליך להשתמש בטרנזיסטור כאן ולא בחיישן הטמפרטורה.

שלב 4: קוד ארדואינו

כאן מוסברים החלקים החשובים ביותר בקוד. הקוד לא יעבוד רק עם מה שניתן כאן. כדי לקבל את קוד העבודה המלא, יש קישור בתחתית הדף.

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

הגדרת חיישן טמפרטורה ו- LED:

tempPin = 'A0';%מגדירים פונקציה אנונימית הממירה את המתח לטמפרטורה tempCfromVolts = @(וולט) (וולט -0.5)*100; samplingDuration = 5; %שניות. כמה זמן אנחנו רוצים לדגום עבור samplingInterval = 1; %כמה שניות בין קריאות הטמפרטורה %הגדרת וקטור זמני הדגימה samplingTimes = 0: samplingInterval: samplingDuration; %לחשב את מספר הדגימות בהתבסס על משך הזמן והמרווח מרווח = אורך (samplingTimes); %הקצה מראש משתני טמפ 'ומשתנה למספר הקריאות שהוא יאחסן tempC = אפסים (numSamples, 1); tempF = tempC; %נשתמש הפעם בלולאה for for לקחת מספר קבוע מראש של קריאות טמפרטורה של %

לולאת ה- for:

עבור אינדקס = 1: numSamples %קוראים את המתח ב- tempPin ושומרים בוולט משתנים וולט = readVoltage (a, tempPin); tempC (אינדקס) = -1*tempCfromVolts (וולט+0.3); tempF (אינדקס) = tempC (אינדקס)*(9/5) +32; %פלט בפורמט תצוגה המתקשר את קריאת הטמפרטורה הנוכחית fprintf ('הטמפרטורה ב- %d שניות היא %5.2f C או %5.2f F. / n', … samplingTimes (index), tempC (index), tempF (index)); %שים לב שפלט תצוגה זה יהיה גלוי בבת אחת לאחר שהקוד מבוצע %בביצוע אלא אם תעתיק/הדבק את הקוד לקובץ script רגיל. השהה (samplingInterval) עיכוב של %עד סוף המדגם הבא

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

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

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

הגדרת תפריט:

choice = {'אוטומטי', 'ידני'}; imode = תפריט ('מצב', בחירות) אם imode> 0 שעות = msgbox (['בחרת' בחירות {imode}]); אחרת h = warndlg ('סגרת את התפריט מבלי לבחור') סיים לחכות (h);

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

המצב הידני יתחיל:

if imode == 2 dlg_prompts = {'איזו טמפרטורה היית מעדיף?'}; dlg_title = 'טמפרטורה'; dlg_defaults = {'68'}; opts. Resize = 'on'; dlg_ans = inputdlg (dlg_prompts, dlg_title, 1, dlg_defaults, opts); if isempty (dlg_ans) h = warndlg ('ביטלת את הפקודה inputdlg'); else temp_manual = str2double (dlg_ans {1}) %[הוסף שקופית הגדרת תקנת טמפרטורה למטה] סוף

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

הגדרת תקנת טמפרטורה:

בעוד temp_manual <tempF writeDigitalPin (a, 'D9', 1) writeDigitalPin (a, 'D11', 1); סיום בעוד temp_manual> tempF writeDigitalPin (a, 'D8', 1) writeDigitalPin (a, 'D11', 1); סוֹף

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

הגדר את המצב האוטומטי:

elseif imode == 1 dlg_prompts = {'רגיל', 'רחוק'}; dlg_title = 'הגדרות טמפרטורה'; dlg_defaults = {'68', '64'}; opts. Resize = 'on'; dlg_ans = inputdlg (dlg_prompts, dlg_title, 1, dlg_defaults, opts); if isempty (dlg_ans) h = warndlg ('ביטלת את הפקודה inputdlg'); אחרת temp_normal = str2double (dlg_ans {1}) temp_away = str2double (dlg_ans {2}) סוף waitfor (h); %[הוסף שלב גלאי תנועה למטה]

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

Run_Motion_Detector (a, inf) while lightStr == 0 temp = temp_away while temp tempF writeDigitalPin (a, 'D6', 1) איזה אור אדום סיכה נמצא גם במנוע עבור מאוורר writeDigitalPin (a, 'D9', 1); סוף קצה בעוד lightStr == 1 temp = temp_normal writeDigitalPin (a, 'D6', 1) %משתנים לכל סיכה בה האור הנורמלי נמצא בעוד temp tempF writeDigitalPin (a, 'D6', 1) כל מה שנורית האדומה של הסיכה נמצאת גם היא מנוע למאוורר writeDigitalPin (a, 'D9', 1); סוף סוף

הקוד המלא ניתן למצוא כאן.

מוּמלָץ: