جدول المحتويات:
- الخطوة 1: كيف يعمل I2c
- الخطوة 2: المكتبة
- الخطوة 3: السلوك
- الخطوة 4: استخدام I2c
- الخطوة 5: استخدام سلك واحد
- الخطوة 6: القراءة الضمنية
- الخطوة 7: قراءة بسيطة
- الخطوة 8: قراءة كاملة
- الخطوة 9: مخطط الاتصال
- الخطوة 10: اردوينو: OneWire
- الخطوة 11: اردوينو: I2c
- الخطوة 12: Esp8266 (D1Mini) OneWire
- الخطوة 13: Esp8266 (D1Mini) I2c
- الخطوة 14: شكرا
فيديو: DHT12 (مستشعر الرطوبة ودرجة الحرارة الرخيص i2c) ، استخدام سريع وسهل: 14 خطوة
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:38
يمكنك العثور على التحديث وغيره على موقعي
أنا أحب المستشعر الذي يمكن استخدامه مع سلكين (بروتوكول i2c) ، لكني أحب المستشعر غير المكلف.
هذه مكتبة Arduino و esp8266 لسلسلة DHT12 من مستشعرات درجة الحرارة / الرطوبة منخفضة التكلفة جدًا (أقل من 1 دولار) والتي تعمل مع i2c أو اتصال سلك واحد.
مفيد جدًا إذا كنت تريد استخدام esp01 (إذا كنت تستخدم المسلسل ، فلديك دبوسان فقط) لقراءة الرطوبة ودرجة الحرارة وعرضها على شاشة i2c LCD.
قرأت منظمة العفو الدولية أنه في وقت ما يبدو أنها بحاجة إلى معايرة ، لكن لدي شجرة من هذا وأحصل على قيمة مشابهة جدًا لـ DHT22. إذا كان لديك معايرة لهذه المشكلة ، فافتح المشكلة على جيثب وأضيف التنفيذ.
الخطوة 1: كيف يعمل 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
الخطوة 11: اردوينو: I2c
الخطوة 12: Esp8266 (D1Mini) OneWire
الخطوة 13: Esp8266 (D1Mini) I2c
الخطوة 14: شكرا
ملعب اردوينو (https://playground.arduino.cc/Main/DHT12SensorLibrary)
سلسلة مشروع i2c (مجموعة):
- مستشعر درجة الحرارة والرطوبة
- الموسع التناظري
- موسع رقمي
- عرض شاشات الكريستال السائل
موصى به:
كيفية استخدام مستشعر الرطوبة ودرجة الحرارة DHT22 مع Arduino: 6 خطوات
كيفية استخدام مستشعر الرطوبة ودرجة الحرارة DHT22 مع Arduino: في هذا البرنامج التعليمي سوف نتعلم كيفية استخدام مستشعر الرطوبة ودرجة الحرارة DHT22 مع Arduino وعرض القيم على شاشة OLED
كيفية استخدام مستشعر الرطوبة ودرجة الحرارة DHT12 I2C مع Arduino: 7 خطوات
كيفية استخدام مستشعر الرطوبة ودرجة الحرارة DHT12 I2C مع Arduino: في هذا البرنامج التعليمي سوف نتعلم كيفية استخدام مستشعر الرطوبة ودرجة الحرارة DHT12 I2C مع Arduino وعرض القيم على شاشة OLED
نظام التحكم في الرطوبة ودرجة الحرارة لتراريوم: 11 خطوة (بالصور)
نظام التحكم في الرطوبة ودرجة الحرارة لـ Terrarium: مقدمة: هذه التعليمات مخصصة لتطوير نظام معياري للتحكم في الرطوبة ودرجة الحرارة باستخدام Arduino Uno. يستخدم هذا النظام مسبارًا مقاومًا للرطوبة ودرجة الحرارة لرصد المعلمات البيئية و Arduino Uno
Raspberry Pi - HIH6130 I2C مستشعر الرطوبة ودرجة الحرارة جافا تعليمي: 4 خطوات
Raspberry Pi - مستشعر الرطوبة ودرجة الحرارة HIH6130 I2C Java تعليمي: HIH6130 عبارة عن مستشعر للرطوبة ودرجة الحرارة بإخراج رقمي. توفر هذه المستشعرات مستوى دقة يبلغ ± 4٪ رطوبة نسبية. مع الاستقرار الرائد في الصناعة على المدى الطويل ، I2C الرقمي الحقيقي المعوض لدرجة الحرارة ، الموثوقية الرائدة في الصناعة ، كفاءة الطاقة
PCF8591 (i2c Analog I / O Expander) استخدام سريع وسهل: 9 خطوات
PCF8591 (i2c Analog I / O Expander) استخدام سريع وسهل: مكتبة لاستخدام i2c pcf8591 IC مع اردوينو و esp8266. يمكن أن يتحكم هذا IC (حتى 4) في الإدخال التناظري و / أو خرج تناظري واحد مثل قياس الجهد ، أو قراءة قيمة الثرمستور أو يتلاشى الصمام. يمكنه قراءة القيمة التناظرية وكتابة القيمة التناظرية بسلكين فقط (مثالي