سنسور های سری DHT از سنسور های پر استفاده و دقیقی هستند که همزمان قابلیت محاسبه و نمایش مقادیر دما و رطوبت را دارند، از مدل های پر استفاده این سنسور ها میتوان DHT11 , DHT22 و DHT21 را نام برد، موضوعی که معمولا ذهن مارا مشغول می کند محاسبه همزمان مقادیر این سنسور هاست به این دلیل که هر کدام دارای درصد خطای متفاوتی هستند و در پروژه هایی که این موضوع مدنظر است میتواند مفید باشد. پس دراین آموزش اقدام به راهاندازی همزمان این سنسور ها تنها با یک پردازنده خواهیم کرد. در ادامه این آموزش روش اتصالات چندین سنسور DHT با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
سنسور DHT21 یا AM2301
سنسور دما دیجیتال DHT21 یکی از رایج ترین سنسورهای دما از سری سنسور های DHT است و دارای دقت اندازه گیری درجه حرارت نسبتاً بالای ۰٫۵ درجه سانتیگراد است و همچنین این اندازه گیری با دقت ۰٫۱ درجه سانتیگراد با دقت رطوبت نسبی ۳ درصد. این سنسور فقط از ۳ سیم برای راهاندازی استفاده می کند که دو پین برای تغذیه و یک پین دیتای دما و رطوبت را در اختیار ما قرار میدهد. یعنی فقط یک پایه دیجیتال برای اتصال به یک میکروکنترلر مورد نیاز است. این سنسور از ۳٫۳-۵V DC برای تغذیه استفاده میکند به همین دلیل میتوانید براحتی از میکروکنترل های مختلف تغذیه این سنسور را فراهم کنید. این سنسور برای اندازه گیری رطوبت از خازن رطوبت پلیمر استفاده میکند. رنج محاسبه رطوبت در این سنسور ۰-۱۰۰%RH و همچنین رنج اندازهگیری دما -۴۰~۸۰Celsius است. دقت اندازهگیری این سنسور ها بر اساس دیتاشیت های موجد برای اندازهگیری رطوبت ۰٫۱%RH و برای اندازه گیری دما ۰٫۱Celsius معرفی شده.
سنسور DHT11
سنسور دما و رطوبت DHT11 سنسوری ارزان قیمت جهت اندازه گیری دما و رطوبت هوا است. اندازه، مصرف کم انرژی آن را به یکی از بهترین گزینهها جهت استفاده در پروژههای مختلف، تبدیل کرده است. با توجه به خروجی دیجیتال این سنسور، به راحتی می تواند به pyboard و یا سایر میکروکنترلر ها متصل گردد. سنسور DHT11 کالیبره شده و دارای خروجی دیجیتال است. محدوده اندازه گیری رطوبت بین ۲۰ تا ۹۰% RH و محدودهی دما از ۰ تا ۵۰ درجه سانتی گراد میباشد. ولتاژ کاری ماژول DHT بین ۳٫۳ تا ۵ ولت DC است. فاصله انتقال سیگنال در ماژول DHT11 تا ۲۰ متر میباشد. ماژول دما و رطوبت DHT11 بسیار مقرون به صرفه، دارای کیفیت عالی و واکنش سریع نسبت به تغییر دمای محیط است. ماژول DHT11 به ترتیب دارای ۳ پایه GND, VCC, Signal میباشد.
سنسور DHT22
برای سنجش دما رطوبت سنسورهای مختلفی طراحی شده است. اما سنسورهای DHT22 یکی از بهترین نوع برای اندازه گیری دما و رطوبت هستند. از دو بخش رطوبت خازنی و یک مقاومت گرمایی تشکیل شده اند، همچنین یک واحد مبدل آنالوگ به دیجیتال در DHT22 وجود دارد، که خروجی دیجیتال تولید میکند که کاربر می توانید از آن در میکروکنترلرها از آن برای خواندن مقادیر استفاده کند.
برد NodeMcu با تراشه ESP8266
تراشه های ESP8266 از موارد محبوب در زمینه اینترنت اشیا هستند که نسبت به دیگر نمونه ها کیفیت بهتر و همچنین قیمت پایین تری نیز دارند، هسته مرکزی این ماژول ESP8266 EX می باشد که در واقع زیر این شیلد فلزی قرار گرفته است، در ضمن این شیلد فلزی به منظور کاهش نویز و همچنین محافظت از قطعات SMD حساس این ماژول قرار داده شده است. این ماژول ها در سری های مختلفی تولید میشوند از جمله esp01 و esp12، در واقع تفاوتی که مدل ها با یکدیگر دارند تعداد GPIO ها و همچنین حافظه آن ها است البته معمولا از نظر ظاهری نیز تفاوت هایی که با یکدیگر دارند که قابل تشخیص است. این ماژول ها از شبکه WIFI داخلی پشتیبانی میکنند، این میکرو کنترلر ها اولین بار در سال ۲۰۱۴ به بازار عرضه شدند. ESP8266 دارای ۱۳ GPIO و همچنین یک ورودی آنالوگ (A0) است.
شرح آموزش
در این آموزش با استفاده از پین های دیجیتال برد ESP8266 اقدام به مانتیورینگ دما و رطویت محیط خواهیم کرد، این پروژه برای مواردی کاربرد دارد که قصد داریم دمای چند نقطه از یک محیط را اندازه گیری کنیم و تنها از یک برد به عنوان پردازنده و تحلیل گر این مقادیر استفاده کنیم، در این پروژه من تنها از سه عدد سنسور سری DHT استفاده کردم اما در اجرای این پروژه میتوانیم این تعداد را تا ۹ عدد افزایش دهیم.
وسایل مورد نیاز
نصب کتابخانه مرجع سنسورهای DHT
ابتدا در نرم افزار Arduino IDE اقدام به نصب کتابخانه مرجع سنسور های DHT می کنیم. مراحل زیر را دنبال کنید.
- این مسیر را دنبال کنید Sketch > Include Library > Manage Libraries
- کلمه DHT sensor را جستجو کنید.
- کتابخانه را نصب کنید.
- در نهایت با جستجوی کلمه “Adafruit Unified Sensor” این کتابخانه را نیز نصب کنید.
شماتیک و اتصالات
در این پروژه از پین های D1 تا D3 برای اتصال سه عدد سنسور DHT استفاده شده، البته شما قادر خواهید بود این تعداد را تا ۹ عدد افزایش دهید با توجه به تعداد پین های دیجیتال میکروکنترلری که استفاده میکنید. همچنین میتوانید برای نتیجه بهتر یک مقاومت بین پین ها دیتا و Vcc سنسور قرار دهید. اتصالات را مطابق جدول و شماتیک زیر برقرار کنید.
-
شماتیک اتصالات پروژه نمایش همزمان مقادیر چندین سنسور DHT
کد و راهاندازی مدار
در این بخش کد های پروژه را بررسی خواهیم کرد. در کد این پروژه از کتابخانهای که قبل تر معرفی شده استفاده کردیم که مناسب ترین کتابخانه برای این سری بشمار میرود استفاده کردهایم. در این پروژه پس از فراخوانی کتابخانه پین برای اتصال سنسور و نوع سنسور از بین سنسور های DHT22 , DHT11 و DHT21 را انتخاب میکینم سپس برای هریک از سنسور ها دو عدد متغیر تعریف خواهیم کرد که مقادیر بدست آمده از هر سنسور در آنها ذخیره شود، یک متغیر برای دما و یکی برای رطوبت محیط. سپس با فانکشن sensor2.begin(); در بخش setup فرمان شروع به سنسور ها داده میشود. و د رادامه تمام مقادیر بصورت جداگانه از سنسور دریافت شده و در سریال مانیتور نمایش داده میشود.
#include "DHT.h" // کتابخانه مرجع برای سنسور DHT sensor1(D4, DHT21); // معرفی نوع سنسور متصل شده به پین مریوط DHT sensor2(D3, DHT11); DHT sensor3(D2, DHT22); // ساخت متغیر برای نگه داری مقادیر بدست آمده توسط سنسور float sensor1_temp, // متغیر های دما sensor2_temp, sensor3_temp, float sensor1_humi, // متغیر های رطوبت sensor2_humi, sensor3_humi, void setup(void) { Serial.begin(9600); sensor1.begin(); //آغاز کار سنسور sensor2.begin(); sensor3.begin(); } void loop() { // خواندن مقادیر دما و رطوبت بای سنسور اول sensor1_temp = sensor1.readTemperature(); sensor1_humi = sensor1.readHumidity(); // خواندن مقادیر دما و رطوبت بای سنسور دوم sensor2_temp = sensor2.readTemperature(); sensor2_humi = sensor2.readHumidity(); // خواندن مقادیر دما و رطوبت بای سنسور سوم sensor3_temp = sensor3.readTemperature(); sensor3_humi = sensor3.readHumidity(); // چاپ مقادیر بدست آمده در سریال مانیتور Serial.print("Sensor 1: "); Serial.print(sensor1_temp,1); Serial.print(String(char(176))+"C "); Serial.print(sensor1_humi,1); Serial.println("%RH"); Serial.println(); Serial.print("Sensor 2: "); Serial.print(sensor2_temp,1); Serial.print(String(char(176))+"C "); Serial.print(sensor2_humi,1); Serial.println("%RH"); Serial.println(); Serial.print("Sensor 3: "); Serial.print(sensor3_temp,1); Serial.print(String(char(176))+"C "); Serial.print(sensor3_humi,1); Serial.println("%RH"); Serial.println(); Serial.println("------------------------------------------"); delay(3000); }
- در نهایت با این تصویر مواجه خواهید شد.
جمع بندی
در نهایت توانستیم مقادیر چند سنسور را همزمان با یک میکروکنترلر اندازه گیری کنیم و همچنین نمایش دهیم، از این پروژه میتوانید برای مواردی که نیاز دارید دمای چند نقطه از یک محیط را بدست آورید، استفاده کنید.تنها مشکل این پروژه را میتوان سیم کشی طولانی برای ارتباط سنسور ها با هم معرفی کرد که البته برای این مورد هم راه حلی به نام ESO-NOW وجود دارد که چند آموزش با این عنوان منتشر کردهام.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
سلام
اگه بخوام چند سنسور دما و چند تا رطوبت را بررسی کنم و هر سنسوری به لحاظ مکان حضور متفاوت باشه یکی این سر خونه یکی اون سر خوب
ارزانترین راه و البته بهترین راه چیه که بشه دادها دریافت و تحلیل کرد
اگه از راه دور هم باشه که بهتر
(چون فاصله زیاده نمیشه از سیم استفاده کرد)
سلام، در این مورد چند پروژه با ESP NOW و ESP MESH منتشر کردم، به وسیله این موارد امکان اجرای این سناریو را به راحتی دارید.