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

פרוייקט לוגר מצב דלת וטמפרטורה: 21 שלבים
פרוייקט לוגר מצב דלת וטמפרטורה: 21 שלבים

וִידֵאוֹ: פרוייקט לוגר מצב דלת וטמפרטורה: 21 שלבים

וִידֵאוֹ: פרוייקט לוגר מצב דלת וטמפרטורה: 21 שלבים
וִידֵאוֹ: יצחק אבינועם - ראיון מלא 4 מתוך 4 2024, נוֹבֶמבֶּר
Anonim
פרוייקט לוגר מצב דלת וטמפרטורה
פרוייקט לוגר מצב דלת וטמפרטורה

מדריך זה יראה לך כיצד להכין לוגר סטטוס דלת וטמפרטורה פשוט עבור פחות מ- $ 10.00 באמצעות ESP8266 NodeMCU, חיישן טמפרטורה ולחות DHT11, מתג קנה דלת/חלון, נגד 10K אוהם וכמה חיבורי חיבור.

מקורו של פרויקט זה נבע מהרצון שלי לעשות יותר אוטומציה ביתית עם לוח Arduino, מכיוון שקראתי הרבה על ה- Arduino תואם EPS8266 NodeMCU, החלטתי שהלוח הזה יהיה הלוח המושלם בעלות נמוכה שאפשר לעשות בו קצת ניסויים. לאחר שחיפשתי באינטרנט פרויקטים לאוטומציה ביתית באמצעות לוחות ESP8266, הסתפקתי בשילוב של טמפרטורת לוגר מצב דלתות בניסיון הראשון שלי. בסופו של דבר הפרויקט הזה ישולב עם סרוו, חיישני לחות ואלקטרוניקה אחרת כדי להפוך בית ירוק קטן שסבא שלי תכנן ובנה לפני 50 שנה. חיישן הטמפרטורה ישמש לקביעה אם מערכת החימום צריכה להיות מופעלת או מתנתקת, כמו גם לאותת לסרווואים לפתוח ולסגור את מערכת האוורור בעת הצורך. מצב מערכת האוורור ינוטר על ידי שימוש במתגי הקנים המגנטיים. לבסוף, חיישני הלחות ישמשו לאוטומציה של מערכת השקיה.

שלב 1: כתב ויתור

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

שלב 2: הגדר חשבון IFTTT בחינם

הגדר חשבון IFTTT בחינם
הגדר חשבון IFTTT בחינם

אם עדיין אין לך חשבון, זה הזמן להקים חשבון IFTTT בחינם על ידי מעבר לדף הבית שלהם. IFTTT מייצג If This Then That והוא פלטפורמה חינמית המאפשרת לך לחבר שירותים מבוססי אינטרנט בדרכים חדשות לאפשר לך למנף שירותים אלה בדרכים חדשות. לפרויקט זה אנו הולכים להשתמש ב- IFTTT כדי לאפשר ל- ESP8266 לרשום את מצב הדלת באמצעות מתג קנים וטמפרטורה ולחות באמצעות חיישן DHT11 במסמך Google Sheets.

שלב 3: צור יישום IFTTT

צור יישום IFTTT
צור יישום IFTTT

בעודך עדיין ב- IFTTT, המשך לסעיף "היישומונים שלי" וצור יישומון חדש על ידי לחיצה על כפתור "יישום חדש".

שלב 4: הגדר את החלק "זה" של האפלט שלך

הגדר את
הגדר את

לחץ על המילה "זו" בצבע כחול - כפי שמודגש באיור לעיל.

שלב 5: הוסף את שירות WebHooks לאפלט שלך

הוסף את שירות WebHooks לאפלט שלך
הוסף את שירות WebHooks לאפלט שלך

בסרגל החיפוש, חפש את שירות "Webhooks" ובחר את סמל Webhooks.

לאחר שתמצא את שירות "Webhooks", לחץ עליו.

שלב 6: הגדר את מפעיל בקשת האינטרנט

הגדר את מפעיל בקשת האינטרנט
הגדר את מפעיל בקשת האינטרנט

בחר את ההדק "קבל בקשת אינטרנט".

שלב 7: ספק שם אירוע

ספק שם אירוע
ספק שם אירוע

בתיבת הטקסט ספקו ליישום החדש שלכם שם אירוע. בחרתי "Logger Data" אבל אתה יכול לבחור מה שאתה אוהב.

שלב 8: הגדר את החלק "אותו" של האפלט שלך

הגדר את
הגדר את

לחץ על המילה "אותה" בצבע כחול - כפי שמודגש באיור לעיל.

שלב 9: הגדרת שירות פעולה

הגדרת שירות פעולה
הגדרת שירות פעולה

בתיבת החיפוש, חפש את שירות "Google Sheets" ולחץ על סמל Google Sheets.

שלב 10: התחבר ל- Google Sheets

התחבר ל- Google Sheets
התחבר ל- Google Sheets

אם עדיין לא עשית זאת, לא תצטרך לחבר את חשבון IFTTT שלך ל- Google Sheets. לחץ על לחצן התחבר המוצג למעלה ופעל לפי ההוראות שעל המסך.

שלב 11: בחר פעולה

בחר פעולה
בחר פעולה

לחץ על "הוסף שורה לגיליון אלקטרוני".

שלב 12: הגדר את הפעולה

הגדר את הפעולה
הגדר את הפעולה

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

שלב 13: סקור וסיים את האפלט שלך

בדוק וסיים את האפלט שלך
בדוק וסיים את האפלט שלך

לאחר שהיית מרוצה מתצורת היישומון שלך לחץ על כפתור "סיום".

שלב 14: אחזור פרטי תצורה הדרושים מאוחר יותר

אחזור פרטי התצורה הדרושים מאוחר יותר
אחזור פרטי התצורה הדרושים מאוחר יותר

לחץ על "Webhooks" כפי שהודגש למעלה.

שלב 15: המשך לתיעוד Webhooks עבור מפתח ה- API

המשך לתיעוד Webhooks עבור מפתח ה- API
המשך לתיעוד Webhooks עבור מפתח ה- API

זה אולי נראה מוזר אבל לחץ על הקישור תיעוד בפינה השמאלית העליונה כדי להמשיך לדף עם מפתח ה- API הייחודי שלך.

שלב 16: שמור את מפתח ה- API

שמור את מפתח ה- API
שמור את מפתח ה- API
שמור את מפתח ה- API
שמור את מפתח ה- API

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

כדאי גם לבדוק את היישומון כאן. זכור לשנות את {event} ל- Data_Logger או כל שם ששמת לאירוע שלך והוסף נתונים ל -3 הערכים הריקים ולאחר מכן לחץ על הלחצן "בדוק אותו" בתחתית הדף. אתה אמור לראות הודעה ירוקה שאומרת "אירוע הופעל". אם כן, עבור אל Google Docs ואשר שהנתונים שהזנת בדף הבדיקה הופיעו במסמך Google Sheets.

שלב 17: אסוף את הרכיבים

אסוף את הרכיבים
אסוף את הרכיבים
אסוף את הרכיבים
אסוף את הרכיבים
אסוף את הרכיבים
אסוף את הרכיבים

אתה רק צריך כמה חלקים.

1) מועצת הפיתוח של NodeMcu ESP8266

2) חיישן טמפרטורה/לחות DHT11

3) מתג קנה הדלת/חלון

4) התנגדות 10k אוהם

5) חוט חיבור

שלב 18: הרכיב את הרכיבים

1) חבר אחד מהסיכה 3v3 ב- ESP8266 לסיכת ה- vcc ב- DHT11.

2) חבר אחד מסיכות הקרקע ב- ESP8266 לסיכה הארקה ב- DHT11.

3) חבר את סיכה D4 (a.k.a. pin 2 ב- IDE) ב- ESP8266 לפין הנתונים ב- DHT11.

4) חבר פין 3v3 נוסף ב- ESP8266 לצד האחד של מתג קנה הדלת/חלון.

5) חבר את סיכה D5 (סימן 14 ב IDE) ב- ESP8266 לצד השני של מתג קנה הדלת/חלון וחבר אותו גם לצד אחד של הנגד 10k אוהם.

6) חבר את הצד השני של הנגד 10 קילו -אוהם לסיכה קרקעית נוספת ב- ESP8266.

לבחירת סיכות ESP8266 עיין בתרשים שימושי זה או בסרטון המועיל מאוד.

שלב 19: כתוב את קוד הארדואינו

כתוב את קוד הארדואינו
כתוב את קוד הארדואינו

העתק והדבק את הקוד למטה ב- Arduino IDE שלך.

#include #include #include "DHT.h"

#define DHTPIN 2 // לאיזה סיכה דיגיטלית אנחנו מחוברים

#define DOORPIN 14 // באיזה סיכה דיגיטלית מתג הדלת מופעל.

#define DHTTYPE DHT11 // DHT 11

DHT dht (DHTPIN, DHTTYPE);

int int = 1;

const char* ssid = "some_ssid"; // שנה זאת כדי להשתמש ב- ssid const char* password = "some_password" שלך; // שנה זאת כדי להשתמש בסיסמה שלך int sleepTime = 100;

// Maker Webhooks IFTTT

const char* server = "maker.ifttt.com";

// משאב URL של IFTTT

const char* resource = "/trigger/SOME_SERVICE_NAME/with/key/SOME_API_KEY"; // הקפד להשתמש בשם השירות שלך ובמפתח ה- api שלך.

String doorStatus = "סגור";

בול נדיף stateChanged = false;

// אם ישנים שעות אז הגדר את המרווח לפי שעות * 60 דקות * 60 שניות * 1000 אלפיות השנייה

const מרווח ארוך = 1.0 * 60 * 60 * 1000; // שעה לא חתומה ארוכה הקודם מיליס = 0 - (2 * מרווח);

הגדרת בטל () {

Serial.begin (115200); attachInterrupt (digitalPinToInterrupt (DOORPIN), eventTriggered, CHANGE); pinMode (DOORPIN, INPUT); // חיישן דלת dht.begin (); WiFi.begin (ssid, סיסמא);

Serial.print ("\ n מתחבר..");

בעוד (WiFi.status ()! = WL_CONNECTED) {עיכוב (1000); Serial.print ("."); } Serial.print ("\ n"); }

void eventTriggered () {

stateChanged = true; Serial.println ("בודקים את הדלת!"); if (digitalRead (DOORPIN) == HIGH) // בדוק אם הדלת פתוחה {Serial.println ("הדלת סגורה!"); doorStatus = "סגור"; } else {Serial.println ("הדלת פתוחה!"); doorStatus = "נפתח"; }}

void checkStatus () {

אם (WiFi.status () == WL_CONNECTED) {// בדוק את מצב חיבור ה- WiFi // קריאת הטמפרטורה או הלחות אורכות כ -250 אלפיות השנייה! // קריאות החיישן עשויות להיות גם עד 2 שניות '(חיישן איטי מאוד שלה) צפות h = dht.readHumidity (); // קרא את הטמפרטורה כצף צלזיוס (ברירת המחדל) t = dht.readTemperature (); // קראו את הטמפרטורה כפרנהייט (isFahrenheit = true) float f = dht.readTemperature (true); // בדוק אם קריאה נכשלה וצאי מוקדם (כדי לנסות שוב). if (isnan (h) || isnan (t) || isnan (f)) {Serial.println ("קריאה נכשלה מחיישן DHT!"); //Serial.print ("."); // נכשלה קריאה מחיישן DHT! לַחֲזוֹר; } // חישוב מדד החום ב- פרנהייט (ברירת המחדל) float hif = dht.computeHeatIndex (f, h); // חישוב מדד החום ב- Celsius (isFahreheit = false) float hic = dht.computeHeatIndex (t, h, false);

Serial.print ("\ n");

Serial.print ("טמפרטורה:"); Serial.print (f); Serial.print (" *F ("); Serial.print (t); Serial.print (" *C)"); Serial.print ("\ t"); Serial.print ("מדד חום:"); Serial.print (hif); Serial.print (" *F ("); Serial.print (hic); Serial.print (" *C)%"); Serial.print ("\ t"); Serial.print ("לחות:"); Serial.println (ח);

if (digitalRead (DOORPIN) == HIGH) // בדוק אם הדלת פתוחה

{Serial.println ("הדלת סגורה!"); doorStatus = "סגור"; } else {Serial.println ("הדלת פתוחה!"); doorStatus = "נפתח"; } מחרוזת jsonObject = מחרוזת ("{" value1 / ": \" ") + f +"*F (" + t +"*C) / " + hif +"*F (" + hic +"*C) " +" / ", \" value2 / ": \" " + h +" / ", \" value3 / ": \" " + doorStatus +" / "}"; HTTPClient http; String completeUrl = "https://maker.ifttt.com/trigger/bme280_readings/with/key/cZFasEvy5_3JlrUSVAxQK9"; http.begin (completeUrl); // http.begin (שרת); http.addHeader ("סוג תוכן", "אפליקציה/json"); http. POST (jsonObject); http.writeToStream (& סידורי); http.end (); // סגור חיבור

stateChanged = false;

int sleepTimeInMinutes = interval / 1000 /60; Serial.print ("\ n / n לך לישון בשביל"); Serial.print (sleepTimeInMinutes); Serial.println ("דקות (ים) …"); }}

לולאת חלל () {

current Signillial millis = millis (); עיכוב (4000); // אם עברנו את הזמן שחלף אז נאלץ לבדוק את הדלת ואת הטמפ '. אם (currentMillis - previousMillis> = מרווח) {stateChanged = true; previousMillis = currentMillis; Serial.print (count ++); Serial.println (") בדיקה בגלל הזמן שחלף!"); } אחר אם (stateChanged) {Serial.print (count ++); Serial.println (") בודק בגלל שינוי מצב!"); }

// אם המצב השתנה, בדוק את הדלת ואת הטמפרטורה.

אם (stateChanged) {checkStatus (); }

עיכוב (sleepTime);

}

שלב 20: תוצאות

תוצאות
תוצאות

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

שלב 21: נקודות זכות

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

בנוסף, ה- DHT11 Instructable מ- TheCircuit עזר לי להבין כיצד להשתמש בחיישן הקטן הזול אך המעניין הזה.

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

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

מוּמלָץ: