راه اندازی سنسور دمای DHT11 و DHT22 با رزبری پای

DHT22/DHT11 نام دو سنسور دما و رطوبت دیجیتال فوق العاده مقرون به صرفه است . این سنسور دما و رطوبت در حقیقت در درون خود از یک سنسور رطوبت خازنی و یک ترمیستور برای اندازه گیری دما استفاده می کند و دارای مداری برای تبدیل مقادیر به صورت دیجیتال بوده و برای خواندن مقادیر، شما نیازی به پین های آنالوگ نخواهید داشت. تنها نکته ای که در کار با این سنسور باید رعایت شود، زمان بندی دقیق در هنگام خواندن مقادیر از سنسور می باشد و نکته ای که برای این سنسور یک عیب محسوب می شود ، اینست که اطلاعات هر 2 ثانیه یکبار قابل خواندن است. اما محاسن دیگر این سنسور باعث شده تا این سنسور به صورت گسترده استفاده شود.هم اکنون می خواهیم با استفاده از رزبری این سنسور را راه اندازی کنیم. پیش نیاز کار با این سنسور آشنایی با GPIO های رزبری است. راه اندارزی و شکل ضاهری این دو سنسور شبیه به هم بوده و تنها تفاوت در دقت بیشتر DHT22 نسبت به DHT11 می باشد.

پردازش اطلاعات دریافتی از سنسور:
برای راه اندازی سنسور تنها از یک پین سنسور استفاده میشود. برای ایجاد ارتباط رزبری با سنسور باید یک همزمانی میان این دو ایجاد کنیم. هرباری که اطلاعاتی از سنسور توسط رزبری دریافت میشود باید مدت زمان دریافت کمتر از 4 میلی ثانیه باشد.
اطلاعاتی که از سنسور به رزبری ارسال میشود دارای پنج بخش مختلف به ترتیب زیر است.

اگر اطلاعات دریافتی از سنسور درست باشند باید مقدار check sum کمتر از 8bit باشد. مقدار check sum برابر است با جمع سایر اطلاعات.

در حالت عادی پین data سنسور برابر high است. زمانی سنسور شروع به ارسال اطلاعات میکند که رزبری پین خود را به مدت کمتر از 18 میلی ثانیه pull down کند. به اینکار سیگنال شروع میگویند. سپس رزبری برای دریافت اطلاعات بهتر سنسور باید مدت 20-40 میکرو ثانیه پین خود را pull up کند.
زمانی که سنسور سیگنال شروع را دریافت میکند، سنسور برای مدت 80 میکرو ثانیه پین data را pull down میکند. به این سیگنال، سیگنال پاسخ میگویند.
سپس سنسور پین data را برای مدت 80 میکرو ثانیه pull up میکند. حالا اطلاعات از سنسور به رزبری ارسال میشود.
در طول زمان ارسال اطلاعات، هر بیت از اطلاعات به مدت 50 میکرو ثانیه طول میکشد. در مجموع رزبری باید 5*8=40 بیت اطلاعات از سنسور در یافت کند.
نکته ی مهم در هنگام راه اندازی این دوسنسور استفاده از مقاومت پول آپ در سنسور است بطوری که مقاومت پول آپ به خروجی سنسور و تغذیه سنسور متصل شود .
تذکر :درهنگام استفاده از این برنامه هرباری که اقدام به خواندن اطلاعات از سنسور میکنید ممکن است اطلاعات ناقص دریافت شود. علت دریافت ناقص اطلاعات این است که تابع delay استفاده شده دقیق نیست و ممکن است که مقداری اختلاف با مقدار زمان موردنظر داشته باشد.

زمان بندی دریافت اطلاعات از سنسور:
سیگنالهایی که بارنگ سیاه مشخص شده اند از طرف MCU یا رزبری ارسال میشوند و بنام Host Signal مشخص شده اند. سیگنال هایی که با رنگ خاکستری مشخص شده اند سیگنال ارسالی از سنسور به MCU میباشد.

برنامه راه اندازی:
الگوریتم راه اندازی و شماتیک این دو سنسور مشابه به هم بوده و در نتیجه از برنامه نوشته شده میتوان برای راه اندازی هر دو سنسور استفاده کرد. این برنامه را میتوانید در فایل های ضمیمه دریافت کنید. شما میتواند با تغییر متغییر ثابتی با نام DHTPIN پین دریافت اطلاعات از سنسور را تغییر دهید. البته بسته به انتخاب نوع شماره گذاری با توابع wiringPi عدد متغییر ثابت DHTPIN متفاوت خواهد بود.
در این مثال اگر از شماره گذاری wiringPi استفاده کنید باید باید مقدار DHTPIN برابر 7 و اگر از شماره گذاری مربوط به GPIO ها استفاده کنید عدد این متغییر 4 خواهد بود

اجرای برنامه:
این برنامه در هر یک ثانیه یک بار از سنسور اطلاعات دریافت میکند و در صفحه نمایش ،نشان میدهد. خروجی برنامه به شکل زیر است . همانطور که کفته شد در هنگامی که اطلاعات دریافت میشود، ممکن است در زمان بندی دریافت اطلاعات از سنسور رزبری دچار مشکل شود.بنابراین زمانی که در این برنامه با این مشکل روبرو میشود سیستم بروی صفحه حروف زیرا تایپ میکند.

Raspberry Pi DHT11 Module
3.3v P1 ————————– VCC (V)
GND P6 ———————- GND (G)
GPIO4 P7 ———————– DATA (S)

نویسنده: میثم سعیدی msimeysamsaeedi @ gmail.com

 

منبع وبسایت ECA

 

3 دیدگاه دربارهٔ «راه اندازی سنسور دمای DHT11 و DHT22 با رزبری پای;

دیدگاهتان را بنویسید

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.