آموزش کنترل دما و رطوبت DHT11 و DHT22 با استفاده از آردینو
در این آموزش آردینو ما یاد میگیریم که چگونه از سنسور DHT11 یا DHT22 برای اکنترل دما و رطوبت با آردوینو استفاده کنیم.
قطعات مورد نیاز برای کنترل دما و رطوبت با آردوینو:
- شیلد آردوینو نانو
- برد آردوینو نانو
- LCD کاراکتری به همراه ماژول I2C
- ماژول DHT11
- جامپر مادگی_مادگی 7 عدد
مرور کلی کنترل دما و رطوبت با آردوینو
این سنسورها برای افراد علاقمند به الکترونیک بسیار محبوب هستند زیرا بسیار ارزان هستند اما هنوز هم عملکرد خوبی دارند. در اینجا مشخصات و تفاوتهای اصلی بین این دو سنسور آورده شدهاست:
DHT22 نسخه گران قیمتتری است که به وضوح مشخصات بهتری دارد. محدوده دمایی آن از ۴۰ – تا ۱۲۵ + درجه سلسیوس با دقت ۰.۵ + درجه است، در حالی که محدوده دمایی DHT11 از ۰ تا ۵۰ درجه سلسیوس با دقت ۲ – درجه است. همچنین سنسور DHT22 دارای محدوده اندازهگیری رطوبت بهتری، از ۰ تا ۱۰۰ % با دقت ۲ – ۵ % است، در حالی که محدوده رطوبت DHT11 از ۲۰ تا ۸۰ % با دقت ۵ % است.
دو ویژگی وجود دارد که در آن DHT11 بهتر از DHT22 است. این نرخ نمونه برداری است که برای DHT11 1 هرتز یا یک خوانش در هر ثانیه است، در حالی که نرخ نمونه برداری DHT22 0.5 هرتز یا یک خوانش در هر دو ثانیه است و همچنین DHT11 اندازه بدنه کوچکتری دارد. ولتاژ کاری هر دو سنسور از ۳ تا ۵ ولت است، در حالی که حداکثر جریان مورد استفاده در اندازهگیری ۲.۵ میلی آمپر است.
اصل کار DHT11 /DHT22
خب، حالا ببینیم این سنسورها واقعاً چگونه کار میکنند و چگونه کنترل دما و رطوبت با آردوینو انجام میشود. آن ها شامل یک مولفه حسگر رطوبت، یک سنسور دما NTC یا (ترمیستور) و یک IC در پشت سنسور هستند.
برای کنترل دما و رطوبت با آردوینو ، آنها از مولفه حسگر رطوبت استفاده میکنند که دارای دو الکترود با زیرلایه نگهداری رطوبت بین آنها است. بنابراین همانطور که رطوبت تغییر میکند، رسانایی زیرلایه تغییر میکند یا مقاومت بین این الکترودها تغییر میکند. این تغییر در مقاومت توسط IC اندازهگیری و پردازش میشود که آن را برای خواندن با یک میکروکنترلر آماده میکند.
از سوی دیگر، برای کنترل دما و رطوبت با آردوینو ، این سنسورها از یک سنسور دما NTC یا یک ترمیستور استفاده میکنند.
یک ترمیستور در واقع یک مقاومت متغیر است که مقاومت خود را با تغییر دما تغییر میدهد. این سنسورها با سینترینگ مواد نیمهرسانا مانند سرامیک یا پلیمرها به منظور ایجاد تغییرات بیشتر در مقاومت با تغییرات کوچک در دما ساخته میشوند.
اصطلاح NTC به معنای “ضریب منفی دما” است، که به این معنی است که مقاومت با افزایش دما کاهش مییابد.
طرح کلی اتصالات کنترل دما و رطوبت با آردوینو
در هنگام اتصال ماژول DHT11 DHT22 خود به شیلد آردوینو نانو دقت کنید نام پین هایی که به یکدیگر متصل میکنید با یکدیگر مطابقت داشته باشد زیرا در صورت اتصال اشتباه پین ها ممکن است اتصال کوتاه رخ دهد و باعث از بین رفتن سنسور و یا سوختن برد شما شود. همه ی ماژول ها و سنسور ها مانند یکدیگر نیستند پس حتما نام پین های برد و سنسور خود را دوباره چک کنید.
سنسورهای DHTxx چهار پین، VCC، GND، پین داده و یک پین متصل نشده که هیچ کاربردی ندارد، دارند. یک مقاومت کششی از ۵ K تا ۱۰ K اهم برای بالا نگه داشتن خط داده و به منظور فعال کردن ارتباط بین سنسور و برد آردوینو مورد نیاز است. چند نسخه از این سنسورها وجود دارند که با یک برد breakout با مقاومت pull up ساخته شدهاند و آنها فقط ۳ پین دارند(مانند ماژول استفاده شده در فیلم).
سنسورهای DHTXX دارای پروتکل تک سیم خود هستند که برای انتقال دادهها استفاده میشوند. این پروتکل به زمانبندی دقیق نیاز دارد و نمودارهای زمانبندی برای گرفتن دادهها از حسگرها را می توان از مجموعه دادههای سنسورها پیدا کرد. با این حال، ما نگرانی زیادی در مورد این نمودارهای زمانبندی نداریم، زیرا ما از کتابخانه DHT استفاده خواهیم کرد که از همه چیز مراقبت میکند. در آینده در پروژه های آموزش رباتیک خود میتوانیم از این سنسور استفاده کنیم.
قبل از یادگیری این مطلب باید نحوه ی راه اندازی LCD کاراکتری هم مطالعه کنید.
کد منبع کنترل دما و رطوبت با آردوینو
در قدم اول کتابخانه های DHT.h و LiquidCrystal_I2C.h و Wire.h را دانلود میکنیم. در رابطه با این مطلب باید بدانیم کتابخانه ها در برنامه نویسی در قسمت پیش پردازنده ها قرارمیگیرند و تعریف میشوند. ما تمامی پروژه ها را بدون داشتن کتابخانه نیز میتوانیم انجام دهیم در این صورت باید تمامی پین ها،اتصالات، نوع آنها ، خروجی و ورودی بودن دیتاها و تمامی اطلاعات موجود در دیتاشیت محصول را که توسط کارخانه ی تولید کننده ارائه میشود در کدنویسی خود لحاظ کنیم. اما این کار زمان و انرژی بسیار زیادی را میخواهد. همین اطلاعات در واقع توسط کد نویس ها و برنامه نویس ها در کتابخانه هایی که ما برای پروژه های خود دانلود میکنیم ،قرار گرفته اند و ما با داشتن این کتابخانه ها در هر پروژه ای ک به آنها نیاز داریم آنها را در قسمت پیش پردازنده ها(ابتدای برنامه) تعریف میکنیم و در زمان و انرژی خود صرفه جویی میکنیم. (” <نام کتابخانه>include__قسمت مربوط به پیش پردازنده ها “) اما بعضی از پروژه ها نیاز دارند این قبیل اطلاعات توسط خود ما وارد شوند. همچنین در مقاله ای جداگانه نحوه ی ساخت کتابخانه ها را آموزش خواهیم داد. اما درک بهتر و کاملتر برنامه نویسی نیازمند به ثبت نام در کلاس های آموزشی حضوری و یا ساعت ها مطالعه ی هدفمند با منابع مفید و کامل میباشد.
بعد از دانلود کردن کتابخانه ها کد زیر را در آردوینو کپی کرده و سپس به وسیله ی اتصال کابل، این کدها را در پردازنده ی موجود در برد آردوینو نانو آپلود میکنیم.
#include <Wire.h> #include <LiquidCrystal_I2C.h> #include<DHT.h> #define DHTPIN 10 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); int h; int t; LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display void setup() { Serial.begin(9600); Serial.println("Temprature & Humidity Test"); dht.begin(); lcd.init(); // initialize the lcd lcd.backlight(); //open the backlight } void loop() { h = dht.readHumidity(); t = dht.readTemperature(); Serial.print("humidity:"); Serial.print(h); Serial.print("%Temprature:"); Serial.print(t); Serial.println(" C "); lcd.setCursor(0,0); lcd.print("Temprature: "); lcd.print(t); lcd.print("C"); lcd.setCursor(1,1); lcd.print("Humidity: "); lcd.print(h); lcd.print("%"); delay(4000); lcd.clear(); lcd.setCursor(1,0); lcd.print("www.chalik.net"); delay(1000); }
لطفاً هر سؤالی دارید در قسمت نظرات بپرسید.
3 دیدگاه دربارهٔ «کنترل دما و رطوبت با آردوینو»
سلام
برنامه اردوینو به کتابخانه dht.h ارور میدهد و مانع آپلود میشود. این کتابخانه را از کجا باید دانلود کنم؟
در محیط آردوینو در بخش Sketch> include library>manage libraries میتونید کتابخانه ی مورد نظرتون دانلود کنید همینطور میتونید فایل zip کتابخانه رو با سرچ در گوگل پیدا کنید و در بخش Sketch>include library>add zip library به آردوینو اضافه کنید
http://dl.chalik.net/mohamadi/ketabkhane/Arduino-master.zip
این فایل و دانلود کنید