תוכן עניינים:
- שלב 1: איך I2c עובד
- שלב 2: ספרייה
- שלב 3: Behaivor
- שלב 4: שימוש ב- I2c
- שלב 5: שימוש בחוט אחד
- שלב 6: קריאה מרומזת
- שלב 7: קריאה פשוטה
- שלב 8: קריאה מלאה
- שלב 9: תרשים חיבור
- שלב 10: Arduino: OneWire
- שלב 11: Arduino: I2c
- שלב 12: Esp8266 (D1Mini) OneWire
- שלב 13: Esp8266 (D1Mini) I2c
- שלב 14: תודה
וִידֵאוֹ: DHT12 (i2c חיישן לחות וטמפרטורה זולים), שימוש קל ומהיר: 14 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:14
אתה יכול למצוא עדכונים ואחרים באתר שלי
אני אוהב חיישן שניתן להשתמש בו עם 2 חוטים (פרוטוקול i2c), אבל אני אוהב את החכם הזול.
זוהי ספריית Arduino ו- esp8266 לסדרת DHT12 של חיישני טמפרטורה/לחות בעלות נמוכה מאוד (פחות מ -1 $) הפועלים עם i2c או חיבור חוט אחד.
שימושי מאוד אם אתה רוצה להשתמש ב- esp01 (אם אתה משתמש בסידורי יש לך רק 2 פינים) כדי לקרוא לחות וטמפרטורה ולהציג אותו על i2c LCD.
AI קרא כי לפעמים נראה שצריך כיול, אבל יש לי עץ זה ומקבל ערך דומה מאוד ל- DHT22. אם יש לך כיול בעיה זו, פתח את הבעיה ב- github ואני מוסיף יישום.
שלב 1: איך I2c עובד
I2C עובד עם שני חוטים, SDA (קו נתונים) ו- SCL (קו שעון).
שני הקווים הללו פתוחים לניקוז, אך נמשכים עם נגדים.
בדרך כלל יש מאסטר אחד ועבד אחד או מספר עבדים על הקו, למרות שיכולים להיות מאסטרים מרובים, אבל נדבר על זה מאוחר יותר.
שני המאסטרים וגם העבדים יכולים לשדר או לקבל נתונים, ולכן מכשיר יכול להיות באחת מארבע המצבים הללו: שידור מאסטר, קבלת מאסטר, שידור עבדים, קבלת עבדים.
שלב 2: ספרייה
תוכל למצוא את הספרייה שלי כאן.
להוריד
לחץ על כפתור ההורדה בפינה השמאלית העליונה, שנה את שם התיקיה הלא דחוסה DHT12.
בדוק כי תיקיית DHT מכילה DHT12.cpp ו- DHT12.h.
מקם את תיקיית ספריית DHT שלך / ספריות / תיקייה.
ייתכן שיהיה עליך ליצור את תיקיית המשנה של הספריות אם זו הספרייה הראשונה שלך.
הפעל מחדש את IDE.
שלב 3: Behaivor
ספר זה מנסה לחקות את ההתנהגות של חיישני ספריית DHT סטנדרטיים (ולהעתיק הרבה קוד), ואני מוסיף את הקוד לניהול i2c olso באותו אופן.
השיטה זהה לחיישן ספריית DHT, עם כמה הוספת פונקציה כמו נקודת טל.
שלב 4: שימוש ב- I2c
לשימוש עם i2c (כתובת ברירת מחדל וסיכת ברירת מחדל SDA SCL) הבונה הוא:
DHT12 dht12;
וקח את ערך ברירת המחדל עבור סיכת SCA SCL.
(אפשר להגדיר מחדש עם מבנה שצוין עבור esp8266, נחוץ ל- ESP-01). אוֹ
DHT12 dht12 (uint8_t addressOrPin)
addressOrPin -> כתובת
כדי לשנות כתובת.
שלב 5: שימוש בחוט אחד
לשימוש בחוט אחד:
DHT12 dht12 (uint8_t addressOrPin, true)
addressOrPin -> סיכה
ערך בוליאני הוא הבחירה של מצב oneWire או i2c.
שלב 6: קריאה מרומזת
אתה יכול להשתמש בו עם "מרומז", "קריאה פשוטה" או "קריאה מלאה": מרומז, רק הקריאה הראשונה עושה קריאה אמיתית של החיישן, הקריאה השנייה שהופכת תוך 2 שניות. מרווח הם הערך המאוחסן של קריאה ראשונה.
// לקריאת החיישן יש 2 שניות של זמן שחלף, אלא אם כן אתה מעביר פרמטר כוח
// קראו את הטמפרטורה כצף צלזיוס (ברירת המחדל) t12 = dht12.readTemperature (); // קראו את הטמפרטורה כצף פרנהייט (isFahrenheit = true) f12 = dht12.readTemperature (true); // קריאות חיישן עשויות להיות גם עד 2 שניות 'ישנות' (חיישן איטי מאוד שלה) h12 = dht12.readHumidity (); // חישוב מדד החום ב- פרנהייט (ברירת המחדל) float hif12 = dht12.computeHeatIndex (f12, h12); // חישוב מדד החום ב- Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // חישוב נקודת טל בפרנהייט (ברירת המחדל) צף dpf12 = dht12.dewPoint (f12, h12); // חישוב נקודת הטל בצלזיוס (isFahreheit = false) צף dpc12 = dht12.dewPoint (t12, h12, false);
שלב 7: קריאה פשוטה
קריאה פשוטה כדי לקבל סטטוס קריאה.
// לקריאת החיישן יש 2 שניות של זמן שחלף, אלא אם כן אתה מעביר פרמטר כוח
bool chk = dht12.read (); // קריאה אמיתית היא בסדר, בעיית קריאת שווא
// קרא את הטמפרטורה כצלסיוס (ברירת המחדל)
float t12 = dht12.readTemperature (); // קראו את הטמפרטורה כצף פרנהייט (isFahrenheit = true) f12 = dht12.readTemperature (true); // קריאות החיישן עשויות להיות גם עד 2 שניות (הינן חיישן איטי מאוד) צפות h12 = dht12.readHumidity (); // חישוב מדד החום ב- פרנהייט (ברירת המחדל) float hif12 = dht12.computeHeatIndex (f12, h12); // חישוב מדד החום ב- Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // חישוב נקודת טל ב פרנהייט (ברירת המחדל) צף dpf12 = dht12.dewPoint (f12, h12); // חישוב נקודת הטל בצלזיוס (isFahreheit = false) צף dpc12 = dht12.dewPoint (t12, h12, false);
שלב 8: קריאה מלאה
קריאה מלאה כדי לקבל סטטוס שצוין.
// לקריאת החיישן יש 2 שניות של זמן שחלף, אלא אם כן אתה מעביר פרמטר כוח
DHT12:: ReadStatus chk = dht12.readStatus (); Serial.print (F ("\ n חיישן קריאה:")); switch (chk) {case DHT12:: OK: Serial.println (F ("OK")); לשבור; מקרה DHT12:: ERROR_CHECKSUM: Serial.println (F ("שגיאת סכום בדיקה")); לשבור; מקרה DHT12:: ERROR_TIMEOUT: Serial.println (F ("שגיאת פסק זמן")); לשבור; מקרה DHT12:: ERROR_TIMEOUT_LOW: Serial.println (F ("שגיאת פסק זמן על אות נמוך, נסה לשים התנגדות הדפסה גבוהה")); לשבור; מקרה DHT12:: ERROR_TIMEOUT_HIGH: Serial.println (F ("שגיאת פסק זמן על אות נמוך, נסה לשים התנגדות דופק נמוכה")); לשבור; מקרה DHT12:: ERROR_CONNECT: Serial.println (F ("שגיאת חיבור")); לשבור; מקרה DHT12:: ERROR_ACK_L: Serial.println (F ("שגיאת AckL")); לשבור; מקרה DHT12:: ERROR_ACK_H: Serial.println (F ("שגיאת AckH")); לשבור; מקרה DHT12:: ERROR_UNKNOWN: Serial.println (F ("שגיאה לא ידועה DETECTED")); לשבור; מקרה DHT12:: NONE: Serial.println (F ("אין תוצאה")); לשבור; ברירת מחדל: Serial.println (F ("שגיאה לא ידועה")); לשבור; }
// קרא את הטמפרטורה כצלסיוס (ברירת המחדל)
float t12 = dht12.readTemperature (); // קראו את הטמפרטורה כצף פרנהייט (isFahrenheit = true) f12 = dht12.readTemperature (true); // קריאות החיישן עשויות להיות גם עד 2 שניות (הינן חיישן איטי מאוד) צפות h12 = dht12.readHumidity (); // חישוב מדד החום ב- פרנהייט (ברירת המחדל) float hif12 = dht12.computeHeatIndex (f12, h12); // חישוב מדד החום ב- Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // חישוב נקודת טל ב פרנהייט (ברירת המחדל) צף dpf12 = dht12.dewPoint (f12, h12); // חישוב נקודת הטל בצלזיוס (isFahreheit = false) צף dpc12 = dht12.dewPoint (t12, h12, false);
שלב 9: תרשים חיבור
עם דוגמאות, יש את תרשים החיבור, חשוב להשתמש בנגד pullup נכון.
תודה לבובדאס, dplasa ו adafruit, לחלוק את הקוד ב- github (שם אני לוקח קצת קוד ורעיונות).
שלב 10: Arduino: OneWire
שלב 11: Arduino: I2c
שלב 12: Esp8266 (D1Mini) OneWire
שלב 13: Esp8266 (D1Mini) I2c
שלב 14: תודה
מגרש משחקים Arduino (https://playground.arduino.cc/Main/DHT12SensorLibrary)
סדרת פרויקטים i2c (אוסף):
- חיישן לחות טמפרטורה
- מרחיב אנלוגי
- מרחיב דיגיטלי
- תצוגת אל סי די
מוּמלָץ:
כיצד להשתמש בחיישן לחות וטמפרטורה DHT12 I2C עם Arduino: 7 שלבים
כיצד להשתמש בחיישן לחות וטמפרטורה DHT12 I2C עם Arduino: במדריך זה נלמד כיצד להשתמש בחיישן לחות וטמפרטורה DHT12 I2C עם Arduino ולהציג את הערכים בתצוגת OLED. צפה בסרטון
חיישן לחות וטמפרטורה סטמה: 5 שלבים
חיישן לחות וטמפרטורה לסטמה: חיישן הקרקע של סטמה משתמש בחקר אחד כדי לזהות את רמות הלחות בצמחים. הוא יכול גם לזהות את טמפרטורת הסביבה מחיישן הטמפרטורה הפנימי שבמיקרו -בקר. מכשיר זה אינו דורש הלחמה
פטל פאי - HIH6130 I2C חיישן לחות וטמפרטורה חיישן פייתון הדרכה: 4 שלבים
Raspberry Pi - HIH6130 I2C חיישן לחות וטמפרטורה Python הדרכה: HIH6130 הוא חיישן לחות וטמפרטורה עם פלט דיגיטלי. חיישנים אלה מספקים רמת דיוק של ± 4% לחות יחסית. עם יציבות ארוכת טווח מובילה בתעשייה, I2C דיגיטלי פיצוי טמפרטורה אמיתי, אמינות מובילה בתעשייה, יעילות אנרגטית
Raspberry Pi - HIH6130 I2C חיישן לחות וטמפרטורה Java הדרכה: 4 שלבים
Raspberry Pi - HIH6130 I2C חיישן לחות וטמפרטורה Java הדרכה: HIH6130 הוא חיישן לחות וטמפרטורה עם פלט דיגיטלי. חיישנים אלה מספקים רמת דיוק של ± 4% לחות יחסית. עם יציבות ארוכת טווח מובילה בתעשייה, I2C דיגיטלי פיצוי טמפרטורה אמיתי, אמינות מובילה בתעשייה, יעילות אנרגטית
PCF8591 (מרחיב קלט/פלט אנלוגי i2c) שימוש קל ומהיר: 9 שלבים
PCF8591 (מרחיב קלט/פלט אנלוגי i2c) שימוש קל ומהיר: ספרייה לשימוש i2c pcf8591 IC עם arduino ו- esp8266. IC זה יכול לשלוט (עד 4) קלט אנלוגי ו/או פלט אנלוגי אחד כמו מדידת מתח, קריאת ערך תרמיסטור או דהיית LED. יכול לקרוא ערך אנלוגי ולכתוב ערך אנלוגי עם 2 חוטים בלבד (מושלם