فهرست مطالب:

DHT12 (سنسور رطوبت و دما ارزان i2c) ، استفاده سریع آسان: 14 مرحله
DHT12 (سنسور رطوبت و دما ارزان i2c) ، استفاده سریع آسان: 14 مرحله

تصویری: DHT12 (سنسور رطوبت و دما ارزان i2c) ، استفاده سریع آسان: 14 مرحله

تصویری: DHT12 (سنسور رطوبت و دما ارزان i2c) ، استفاده سریع آسان: 14 مرحله
تصویری: How to interface DHT11 Humidity and Temperature sensor using Raspberry Pi Pico #shorts 2024, نوامبر
Anonim
DHT12 (سنسور رطوبت و دما ارزان i2c) ، استفاده سریع آسان
DHT12 (سنسور رطوبت و دما ارزان i2c) ، استفاده سریع آسان

شما می توانید به روز رسانی و سایر موارد را در سایت من پیدا کنید

من از سنسوری استفاده می کنم که می تواند با 2 سیم (پروتکل i2c) استفاده شود ، اما من سنسور ارزان قیمت را دوست دارم.

این یک کتابخانه Arduino و esp8266 برای سری DHT12 سنسورهای دما و رطوبت بسیار کم هزینه (کمتر از 1 دلار) است که با i2c یا یک اتصال سیم کار می کند.

اگر می خواهید از esp01 استفاده کنید (اگر از سریال فقط 2 پین دارید) برای خواندن رطوبت و دما و نمایش آن بر روی LCD i2c.

AI خواند که گاهی اوقات به نظر می رسد که نیاز به کالیبراسیون دارد ، اما من درختی از این دارم و بسیار شبیه به DHT22 هستم. اگر کالیبراسیون این مشکل را دارید ، مسئله را در github باز کنید و من پیاده سازی را اضافه می کنم.

مرحله 1: نحوه عملکرد I2c

نحوه کار I2c
نحوه کار I2c

I2C با دو سیم SDA (خط داده) و SCL (خط ساعت) کار می کند.

هر دو این خطوط تخلیه باز هستند ، اما با مقاومت کشیده می شوند.

معمولاً یک استاد و یک یا چند برده در خط وجود دارد ، اگرچه ممکن است چندین استاد وجود داشته باشد ، اما بعداً در مورد آن صحبت خواهیم کرد.

هر دو ارباب و بردگان می توانند داده ها را ارسال یا دریافت کنند ، بنابراین یک دستگاه می تواند در یکی از این چهار حالت باشد: ارسال اصلی ، دریافت اصلی ، ارسال برده ، دریافت برده.

مرحله 2: کتابخانه

کتابخانه من را اینجا می توانید پیدا کنید.

بارگذاری

روی دکمه DOWNLOADS در گوشه بالا سمت راست کلیک کنید ، نام پوشه فشرده نشده DHT12 را تغییر دهید.

بررسی کنید که پوشه DHT حاوی DHT12.cpp و DHT12.h باشد.

پوشه کتابخانه DHT را در پوشه / libraries / خود قرار دهید.

در صورتی که اولین کتابخانه شما باشد ، باید پوشه فرعی کتابخانه ها را ایجاد کنید.

IDE را راه اندازی مجدد کنید.

مرحله 3: رفتار

این کتاب سعی می کند رفتار سنسورهای کتابخانه DHT استاندارد را تقلید کند (و کد زیادی را کپی کند) ، و من کد را برای مدیریت i2c olso به همان شیوه اضافه می کنم.

روش مشابه با سنسور کتابخانه DHT است ، برخی از آنها عملکرد نقطه شبنم را اضافه می کنند.

مرحله 4: استفاده از I2c

برای استفاده با i2c (آدرس پیش فرض و پین پیش فرض SDA SCL) سازنده به شرح زیر است:

DHT12 dht12 ؛

و مقدار پیش فرض SDA SCL pin را بگیرید.

(امکان تعریف مجدد با سازنده مشخص شده برای esp8266 ، مورد نیاز برای ESP-01 وجود دارد). یا

DHT12 dht12 (آدرس uint8_tOrPin)

addressOrPin -> آدرس

برای تغییر آدرس

مرحله 5: استفاده از یک سیم

برای استفاده از یک سیم:

DHT12 dht12 (آدرس uint8_tOrPin ، درست)

addressOrPin -> پین

مقدار boolean انتخاب حالت oneWire یا i2c است.

مرحله 6: خواندن ضمنی

می توانید از آن با "ضمنی" ، "خواندن ساده" یا "کامل خواندن" استفاده کنید: ضمنی ، فقط اولین خواندن یک خواندن واقعی سنسور را انجام می دهد ، خواندن دیگر در 2 ثانیه انجام می شود. فاصله مقدار ذخیره شده برای اولین خواندن است.

// خواندن سنسور دارای 2 ثانیه زمان سپری شده است ، مگر اینکه پارامتر نیرو را عبور دهید

// دما را به صورت سانتیگراد (پیش فرض) float t12 = dht12.readTemperature () بخوانید؛ // دما را به صورت فارنهایت بخوانید (isFahrenheit = true) float f12 = dht12.readTemperature (true) ؛ // قرائت سنسور نیز ممکن است تا 2 ثانیه "قدیمی" باشد (سنسور آن بسیار کند است) float h12 = dht12.readHumidity ()؛ // محاسبه شاخص حرارت در فارنهایت (به طور پیش فرض) float hif12 = dht12.computeHeatIndex (f12، h12)؛ // محاسبه شاخص حرارت در درجه سانتیگراد (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12 ، h12 ، false) ؛ // محاسبه نقطه شبنم در فارنهایت (به طور پیش فرض) شناور dpf12 = dht12.dewPoint (f12 ، h12) ؛ // محاسبه نقطه شبنم در درجه سانتیگراد (isFahreheit = false) float dpc12 = dht12.dewPoint (t12 ، h12 ، false) ؛

مرحله 7: خواندن ساده

خواندن ساده برای به دست آوردن وضعیت خواندن.

// خواندن سنسور دارای 2 ثانیه زمان سپری شده است ، مگر اینکه پارامتر نیرو را عبور دهید

bool chk = dht12.read ()؛ // خواندن درست اشکال ندارد ، مشکل خواندن اشتباه است

// دما را به صورت سانتیگراد بخوانید (به طور پیش فرض)

float t12 = dht12.readTemperature ()؛ // دما را به صورت فارنهایت بخوانید (isFahrenheit = true) float f12 = dht12.readTemperature (true) ؛ // قرائت سنسور نیز ممکن است تا 2 ثانیه "قدیمی" باشد (سنسور آن بسیار کند است) float h12 = dht12.readHumidity ()؛ // محاسبه شاخص حرارت در فارنهایت (به طور پیش فرض) float hif12 = dht12.computeHeatIndex (f12، h12)؛ // محاسبه شاخص حرارت در درجه سانتیگراد (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12 ، h12 ، false) ؛ // محاسبه نقطه شبنم در فارنهایت (به طور پیش فرض) شناور dpf12 = dht12.dewPoint (f12 ، h12) ؛ // محاسبه نقطه شبنم در درجه سانتیگراد (isFahreheit = false) float 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:: هیچ: Serial.println (F ("بدون نتیجه"))؛ زنگ تفريح؛ پیش فرض: Serial.println (F ("خطای ناشناخته")) ؛ زنگ تفريح؛ }

// دما را به صورت سانتیگراد بخوانید (به طور پیش فرض)

float t12 = dht12.readTemperature ()؛ // دما را به صورت فارنهایت بخوانید (isFahrenheit = true) float f12 = dht12.readTemperature (true) ؛ // قرائت سنسور نیز ممکن است تا 2 ثانیه "قدیمی" باشد (سنسور آن بسیار کند است) float h12 = dht12.readHumidity ()؛ // محاسبه شاخص حرارت در فارنهایت (به طور پیش فرض) float hif12 = dht12.computeHeatIndex (f12، h12)؛ // محاسبه شاخص حرارت در درجه سانتیگراد (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12 ، h12 ، false) ؛ // محاسبه نقطه شبنم در فارنهایت (به طور پیش فرض) شناور dpf12 = dht12.dewPoint (f12 ، h12) ؛ // محاسبه نقطه شبنم در درجه سانتیگراد (isFahreheit = false) float dpc12 = dht12.dewPoint (t12 ، h12 ، false) ؛

مرحله 9: نمودار اتصال

با مثال ، نمودار اتصال وجود دارد ، مهم است که از مقاومت کشش صحیح استفاده کنید.

با تشکر از Bobadas ، dplasa و adafruit ، برای به اشتراک گذاشتن کد در github (جایی که من کد و ایده ها را می گیرم).

مرحله 10: آردوینو: OneWire

آردوینو: OneWire
آردوینو: OneWire

مرحله 11: آردوینو: I2c

آردوینو: I2c
آردوینو: I2c

مرحله 12: Esp8266 (D1Mini) OneWire

Esp8266 (D1Mini) OneWire
Esp8266 (D1Mini) OneWire

مرحله 13: Esp8266 (D1Mini) I2c

Esp8266 (D1Mini) I2c
Esp8266 (D1Mini) I2c

مرحله 14: با تشکر

زمین بازی آردوینو (https://playground.arduino.cc/Main/DHT12SensorLibrary)

سری پروژه i2c (مجموعه):

  • سنسور رطوبت دما
  • گسترش دهنده آنالوگ
  • گسترش دهنده دیجیتال
  • صفحه نمایش ال سی دی

توصیه شده: