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

DHT12 (i2c חיישן לחות וטמפרטורה זולים), שימוש קל ומהיר: 14 שלבים
DHT12 (i2c חיישן לחות וטמפרטורה זולים), שימוש קל ומהיר: 14 שלבים

וִידֵאוֹ: DHT12 (i2c חיישן לחות וטמפרטורה זולים), שימוש קל ומהיר: 14 שלבים

וִידֵאוֹ: DHT12 (i2c חיישן לחות וטמפרטורה זולים), שימוש קל ומהיר: 14 שלבים
וִידֵאוֹ: I2C Humidity Sensor 2024, נוֹבֶמבֶּר
Anonim
DHT12 (i2c חיישן לחות וטמפרטורה זולים), שימוש קל ומהיר
DHT12 (i2c חיישן לחות וטמפרטורה זולים), שימוש קל ומהיר

אתה יכול למצוא עדכונים ואחרים באתר שלי

אני אוהב חיישן שניתן להשתמש בו עם 2 חוטים (פרוטוקול i2c), אבל אני אוהב את החכם הזול.

זוהי ספריית Arduino ו- esp8266 לסדרת DHT12 של חיישני טמפרטורה/לחות בעלות נמוכה מאוד (פחות מ -1 $) הפועלים עם i2c או חיבור חוט אחד.

שימושי מאוד אם אתה רוצה להשתמש ב- esp01 (אם אתה משתמש בסידורי יש לך רק 2 פינים) כדי לקרוא לחות וטמפרטורה ולהציג אותו על i2c LCD.

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

שלב 1: איך I2c עובד

כיצד עובד I2c
כיצד עובד 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

Arduino: OneWire
Arduino: OneWire

שלב 11: Arduino: I2c

Arduino: I2c
Arduino: I2c

שלב 12: Esp8266 (D1Mini) OneWire

Esp8266 (D1Mini) OneWire
Esp8266 (D1Mini) OneWire

שלב 13: Esp8266 (D1Mini) I2c

Esp8266 (D1Mini) I2c
Esp8266 (D1Mini) I2c

שלב 14: תודה

מגרש משחקים Arduino (https://playground.arduino.cc/Main/DHT12SensorLibrary)

סדרת פרויקטים i2c (אוסף):

  • חיישן לחות טמפרטורה
  • מרחיב אנלוגי
  • מרחיב דיגיטלי
  • תצוגת אל סי די

מוּמלָץ: