جدول المحتويات:

DHT12 (مستشعر الرطوبة ودرجة الحرارة الرخيص i2c) ، استخدام سريع وسهل: 14 خطوة
DHT12 (مستشعر الرطوبة ودرجة الحرارة الرخيص i2c) ، استخدام سريع وسهل: 14 خطوة

فيديو: DHT12 (مستشعر الرطوبة ودرجة الحرارة الرخيص i2c) ، استخدام سريع وسهل: 14 خطوة

فيديو: DHT12 (مستشعر الرطوبة ودرجة الحرارة الرخيص i2c) ، استخدام سريع وسهل: 14 خطوة
فيديو: How to Use DHT12 Humidity Thermometer Sensor with Arduino 2024, يوليو
Anonim
DHT12 (مستشعر الرطوبة ودرجة الحرارة الرخيص i2c) ، استخدام سريع وسهل
DHT12 (مستشعر الرطوبة ودرجة الحرارة الرخيص i2c) ، استخدام سريع وسهل

يمكنك العثور على التحديث وغيره على موقعي

أنا أحب المستشعر الذي يمكن استخدامه مع سلكين (بروتوكول i2c) ، لكني أحب المستشعر غير المكلف.

هذه مكتبة Arduino و esp8266 لسلسلة DHT12 من مستشعرات درجة الحرارة / الرطوبة منخفضة التكلفة جدًا (أقل من 1 دولار) والتي تعمل مع i2c أو اتصال سلك واحد.

مفيد جدًا إذا كنت تريد استخدام esp01 (إذا كنت تستخدم المسلسل ، فلديك دبوسان فقط) لقراءة الرطوبة ودرجة الحرارة وعرضها على شاشة i2c LCD.

قرأت منظمة العفو الدولية أنه في وقت ما يبدو أنها بحاجة إلى معايرة ، لكن لدي شجرة من هذا وأحصل على قيمة مشابهة جدًا لـ DHT22. إذا كان لديك معايرة لهذه المشكلة ، فافتح المشكلة على جيثب وأضيف التنفيذ.

الخطوة 1: كيف يعمل I2c

كيف يعمل I2c
كيف يعمل I2c

تعمل I2C مع سلكين ، SDA (خط البيانات) و SCL (خط الساعة).

كلا الخطين عبارة عن استنزاف مفتوح ، لكن يتم سحبهما باستخدام المقاومات.

عادة ما يكون هناك سيد واحد وواحد أو عدة عبيد على المحك ، على الرغم من أنه يمكن أن يكون هناك عدة سادة ، لكننا سنتحدث عن ذلك لاحقًا.

يمكن لكل من السادة والعبيد إرسال البيانات أو استقبالها ، وبالتالي ، يمكن أن يكون الجهاز في إحدى هذه الحالات الأربع: الإرسال الرئيسي ، والاستقبال الرئيسي ، والإرسال التابع ، والاستقبال التابع.

الخطوة 2: المكتبة

يمكنك أن تجد مكتبتي هنا.

للتحميل

انقر فوق الزر DOWNLOADS في الزاوية اليمنى العليا ، وأعد تسمية المجلد غير المضغوط DHT12.

تأكد من أن مجلد DHT يحتوي على DHT12.cpp و DHT12.h.

ضع مجلد مكتبة DHT الخاص بك / المكتبات / المجلد.

قد تحتاج إلى إنشاء مجلد فرعي للمكتبات إذا كانت مكتبتك الأولى.

أعد تشغيل IDE.

الخطوة 3: السلوك

يحاول هذا libray محاكاة سلوك مستشعرات مكتبة DHT القياسية (ونسخ الكثير من التعليمات البرمجية) ، وأضيف الكود لإدارة i2c olso بنفس الطريقة.

الطريقة هي نفسها من مستشعر مكتبة DHT ، مع إضافة بعض وظيفة نقطة الندى.

الخطوة 4: استخدام I2c

للاستخدام مع i2c (العنوان الافتراضي ورقم التعريف الشخصي الافتراضي لـ SDA SCL) ، يكون المُنشئ:

DHT12 dht12 ؛

وأخذ القيمة الافتراضية لـ SDA SCL pin.

(من الممكن إعادة تعريف الموصل المحدد لـ esp8266 ، المطلوب لـ ESP-01). أو

DHT12 dht12 (uint8_t addressOrPin)

العنوان OrPin -> العنوان

لتغيير العنوان.

الخطوة 5: استخدام سلك واحد

لاستخدام سلك واحد:

DHT12 dht12 (uint8_t addressOrPin ، صحيح)

العنوانأوربين -> دبوس

القيمة المنطقية هي اختيار وضع oneWire أو i2c.

الخطوة 6: القراءة الضمنية

يمكنك استخدامه مع "ضمني" أو "قراءة بسيطة" أو "قراءة كاملة": ضمنيًا ، فقط القراءة الأولى تقوم بقراءة حقيقية للمستشعر ، بينما تقرأ الأخرى في ثانيتين. الفاصل الزمني هي القيمة المخزنة للقراءة الأولى.

// تحتوي قراءة المستشعر على ثانيتين من الوقت المنقضي ، إلا إذا قمت بتمرير معامل القوة

// قراءة درجة الحرارة على أنها مئوية (الافتراضي) تعويم t12 = dht12.readTemperature () ؛ // قراءة درجة الحرارة على أنها فهرنهايت (isFahrenheit = true) float f12 = dht12.readTemperature (true) ؛ // قد تكون قراءات المستشعر أيضًا "قديمة" تصل إلى ثانيتين (مستشعر بطيء جدًا) تعويم h12 = dht12.readHumidity () ؛ // حساب مؤشر الحرارة بالفهرنهايت (الافتراضي) float hif12 = dht12.computeHeatIndex (f12، h12) ؛ // حساب مؤشر الحرارة بالدرجة المئوية (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12، h12، false) ؛ // حساب نقطة الندى بالفهرنهايت (الافتراضي) float dpf12 = dht12.dewPoint (f12، h12) ؛ // حساب نقطة الندى بالدرجة المئوية (isFahreheit = false) float dpc12 = dht12.dewPoint (t12، h12، false) ؛

الخطوة 7: قراءة بسيطة

قراءة بسيطة للحصول على حالة القراءة.

// تحتوي قراءة المستشعر على ثانيتين من الوقت المنقضي ، إلا إذا قمت بتمرير معامل القوة

منطقي chk = dht12.read () ؛ // صحيح القراءة على ما يرام ، ومشكلة قراءة خاطئة

// قراءة درجة الحرارة بالدرجة المئوية (الافتراضي)

تعويم t12 = dht12.readTemperature () ، // قراءة درجة الحرارة على أنها فهرنهايت (isFahrenheit = true) float f12 = dht12.readTemperature (true) ؛ // قد تكون قراءات المستشعر أيضًا "قديمة" حتى ثانيتين (مستشعر بطيء جدًا) تعويم h12 = dht12.readHumidity () ؛ // حساب مؤشر الحرارة بالفهرنهايت (الافتراضي) float hif12 = dht12.computeHeatIndex (f12، h12) ؛ // حساب مؤشر الحرارة بالدرجة المئوية (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12، h12، false) ؛ // حساب نقطة الندى بالفهرنهايت (الافتراضي) float dpf12 = dht12.dewPoint (f12، h12) ؛ // حساب نقطة الندى بالدرجة المئوية (isFahreheit = false) float dpc12 = dht12.dewPoint (t12، h12، false) ؛

الخطوة 8: قراءة كاملة

قراءة كاملة للحصول على حالة محددة.

// تحتوي قراءة المستشعر على ثانيتين من الوقت المنقضي ، إلا إذا قمت بتمرير معامل القوة

DHT12:: ReadStatus chk = dht12.readStatus () ؛ Serial.print (F ("\ n مستشعر القراءة:")) ؛ التبديل (chk) {حالة DHT12:: موافق: Serial.println (F ("موافق")) ؛ استراحة؛ الحالة 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 ("تم اكتشاف خطأ غير معروف")) ؛ استراحة؛ الحالة DHT12:: NONE: Serial.println (F ("لا توجد نتيجة")) ؛ استراحة؛ الافتراضي: Serial.println (F ("خطأ غير معروف")) ؛ استراحة؛ }

// قراءة درجة الحرارة بالدرجة المئوية (الافتراضي)

تعويم t12 = dht12.readTemperature () ، // قراءة درجة الحرارة على أنها فهرنهايت (isFahrenheit = true) float f12 = dht12.readTemperature (true) ؛ // قد تكون قراءات المستشعر أيضًا "قديمة" تصل إلى ثانيتين (مستشعر بطيء جدًا) تعويم h12 = dht12.readHumidity () ؛ // حساب مؤشر الحرارة بالفهرنهايت (الافتراضي) float hif12 = dht12.computeHeatIndex (f12، h12) ؛ // حساب مؤشر الحرارة بالدرجة المئوية (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12، h12، false) ؛ // حساب نقطة الندى بالفهرنهايت (الافتراضي) float dpf12 = dht12.dewPoint (f12، h12) ؛ // حساب نقطة الندى بالدرجة المئوية (isFahreheit = false) float dpc12 = dht12.dewPoint (t12، h12، false) ؛

الخطوة 9: مخطط الاتصال

مع الأمثلة ، يوجد مخطط الاتصال ، من المهم استخدام المقاوم pullup الصحيح.

بفضل Bobadas و dplasa و adafruit ، لمشاركة الكود في جيثب (حيث آخذ بعض التعليمات البرمجية والأفكار).

الخطوة 10: اردوينو: OneWire

اردوينو: OneWire
اردوينو: OneWire

الخطوة 11: اردوينو: I2c

اردوينو: I2c
اردوينو: I2c

الخطوة 12: Esp8266 (D1Mini) OneWire

Esp8266 (D1Mini) OneWire
Esp8266 (D1Mini) OneWire

الخطوة 13: Esp8266 (D1Mini) I2c

Esp8266 (D1Mini)
Esp8266 (D1Mini)

الخطوة 14: شكرا

ملعب اردوينو (https://playground.arduino.cc/Main/DHT12SensorLibrary)

سلسلة مشروع i2c (مجموعة):

  • مستشعر درجة الحرارة والرطوبة
  • الموسع التناظري
  • موسع رقمي
  • عرض شاشات الكريستال السائل

موصى به: