آموزش رزبری پای رزبری پای پایتون Python پروژه رزبری پای

بخش پنجم برنامه نویسی DHT پایتون Python با رزبری پای سنسور DHT

آموزش برنامه نویسی پایتون برای IoT با برد رزبری پای - دیجی اسپارک
نوشته شده توسط پریسا پوربلورچیان

در بجث اتوماسیون خانگی و هوشمند سازی اندازه گیری دما و رطوبت با دقت بالا بسیار حائز اهمیت است. به همین دلیل شرکت‌های معتبر شروع به تولید و طراحی گجت‌های هوشمند در این حوزه کرده‌اند. از جدیدترین آن‌ها می‌توان به ترموستات هوشمند و حرفه‌ای Nest اشاره کرد. طراحی منحصر به فرد آن از نظر ابعاد، ظاهر محیط گرافیکی UI ساده با نرم افزار Node-RED دست به دست هم داده اند تا به یکی از قدرتمندترین ترموستات‌های هوشمند دنیا تبدیل گردد. در این آموزش سنسور دما رطوبت DHT را با پایتون راه اندازی خواهیم کرد. در ادامه با مرجع تخصصی پایتون رزبری پای به زبان فارسی، دیجی اسپارک همراه باشید.

 


انتخاب سنسور دما


با یک جستجوی ساده در شاخه دما رطوبت دانشجو کیت متوجه خواهید شد که سنسورهای مختلف با دقت اندازه گیری کم و زیاد، ظاهر متفاوت، ابعاد کوچک تا بزرگ، تک سیم و چند سیمه در بازار معرفی شده است. در نگاه اول شاید در انتخاب سنسور مناسب دچار سردرگمی شویم و نتوانیم انتخاب مناسبی با توجه به محیط مورد نظر خود داشته باشیم. ما برای برطرف شدن این موضوع راه حل های زیادی را در برابر شما قرار داده‌ایم. نکته اول در انتخاب سنسور مناسب، بررسی دیتاشیت و پارامترهای معرفی شده برای آن سنسور است. از جمله رنج اندازه‌گیری دما، دقت اندازه گیری، ابعاد سنسور، ضد آب بودن و یا نبودن آن، طول کابل سنسور و بسیاری دیگری از ویژگی ها که همه و همه در دیتاشیت کالا نوشته شده و در اختیار ما قرار گرفته شده است. نکته دوم بررسی محیط مورد استفاده، نویز پذیری محیط، شرایط آب و هوایی، بزرگ و کوچک بودن محیط است که بایستی عواملی که منجر به خطا در اندازه گیری خواهد شد، را کامل بررسی و سپس نسبت به خرید اقدام نمایید. در این آموزش از سنسور دما رطوبت DHT مدل DHT22 با رنج اندازه گیری – ۴۰ تا +۱۲۵ درجه سانتی گراد استفاده می‌کنیم. سنسور DHT22 از چهار پایه تشکیل شده است که فقط از سه پایه آن جهت راه اندازی استفاده می‌کنیم. دقت داشته باشید، سنسور DHT دارای پایه‌های بسیار نازک و نویز پذیر است و در صورتیکه در محل مورد نظر به درستی نصب نگردد، سبب ایجاد خطا و عدم شناسایی توسط میکروکنترلر می‌گردد.

 


اتصالات DHT پایتون


سنسورهای سری DHT اکثرا ۴ پایه هستند. دو مدل DHT11 و DHT22 هر دو از نظر ظاهر و اتصالات مشابه بوده و فقط در رنگ سنسور با هم تفاوت دارند. جهت اتصال سنسور DHT22 به رزبری پای همانند زیر عمل کنید:

 


نصب کتابخانه DHT پایتون


جهت راه اندازی سنسور DHT پایتون ، نیاز به نصب کتابخانه و آپدیت تنظبمات خواهیم داشت. همانند زیر به ترتیب دستورات را در ترمینال وارد کرده و منتظر بمانید تا دستورات نصب گردد.

  • مرحله اول نصب کتابخانه openssl جهت دسترسی به openssl است.
sudo apt-get install build-essential python-dev python-openssl git
  • مرحله دوم نصب کتابخانه Adafruit جهت خواندن دیتا از سنسورهای سری DHT است:
git clone https://github.com/adafruit/Adafruit_Python_DHT.git && cd Adafruit_Python_DHT
  • مرحله سوم توزیع کتابخانه های نصب شده در پیکج کتابخانه های مربوط به پایتون است:
sudo python setup.py install

 تا این مرحله کتابخانه پایتون جهت دسترسی به پروژه نصب شده است.

 

 


تست سنسور DHT و دریافت اطلاعات


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

  • در مرحله اول یک مثال ایجاد می‌کنیم. برای اینکار دستور زیر را در ترمینال وارد کنید.
cd examples
  • در مرحله دوم با توجه به اینکه از کتابخانه Adafruit استفاده می‌کنیم، بایستی نوع سنسور مورد استفاده و پایه GPIO استفاده شده در دستور مشخص گردد. به عنوان مثال در این آموزش از سنسور DHT22 و پایه ۳۷ رزبری پای یعنی GPIO26 استفاده شده است. پس دستور خواندن دیتا از پایه ۳۷ بایستی به صورت زیر نوشته شود:
sudo ./AdafruitDHT.py 22 26
  • با وارد کردن دستور در صورتیکه اتصالات را به درستی انجام داده باشید، دما و رطوبت به صورت زیر برای شما نمایش داده می‌شود.
Temp=27.5*  Humidity=31.1%

اتصال سنسور DHT پایتون و برد رزبری پای - دیجی اسپارک

 


کد DHT22 پایتون بدون استفاده ترمینال


در این مرحله در صورتیکه بخواهید در محیط پایتون، کدنویسی سنسور DHT را انجام دهید، همانند زیر عمل کنید:

  • فراخوانی کتابخانه Adafruit

در خط اول کتابخانه Adafruit sensor را فراخوانی کنید:

import Adafruit_DHT as dht
  • فراخوانی کتابخانه Time برای ایجاد Delay

کتابخانه time sleepجهت ایجاد Delay بر حسب میکرو ثانیه در برنامه فراخوانی می‌شود:

from time import sleep
  • خواندن دما و رطوبت

در این مرحله از تابع try که در بخش های قبل آموزش داده شد، جهت ایجاد حلقه و تکرار داده ها در برنامه استفاده می‌کنیم. در این مرحله دیتا از پایه سنسور توسط دستور زیر خوانده می‌شود:

try:
    while 1:                
        humi, temp = dht.read_retry(dht.DHT22, 26)

دقت کنید در صورتیکه از سنسور DHT11 استفاده می‌کنید، به جای DHT22 در کدها DHT11 جایگزین گردد.

  • نمایش دیتا print

در مرحله بعد، دیتای دریافتی توسط تابع print در محیط پایتون نمایش داده می‌شود:

print 'Temp: {0:0.1f}*C  Humidity: {1:0.1f}%'.format(temp, humi)
  • مرحله آخر ایجاد Delay بین ارسال دیتا است:
        sleep(3)

 

 


کد کامل DHT پایتون Python


 

 

 

import Adafruit_DHT as dht   
from time import sleep         
try:
    while 1:                
        humi, temp = dht.read_retry(dht.DHT22, 26)  
        print 'Temp: {0:0.1f}*C  Humidity: {1:0.1f}%'.format(temp, humi) 
        sleep(3)


except KeyboardInterrupt:
    pass  			

کد را به پایتون انتقال داده و سپس RUN کنید. دیتا به صورت زیر نمایش داده می‌شود:

 


وسایل مورد نیاز


خرید رزبری پای Raspberry Pi از دانشجوکیت

خرید سنسور دما رطوبت DHT22 از دانشجوکیت

خرید کابل فلت از دانشجوکیت

 

 

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

 


پروژه و دریافت بن ارسال رایگان


برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکه‌های اجتماعی از جمله آپارات و اینستگرام، با هشتگ‌های دیجی_اسپارک   دانشجوکیت    digispark    daneshjookit منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۲۰۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.

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

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۲۷ دیدگاه

  • سلام و خسته نباشید
    در مقایسه با آردوینو کار بسیار ساده تر شده و تنها با چند کامند دما و رطوبت نمایش داده میشه
    از توضیحات دقیق و جامع ممنونم و تقاضا دارم آموزش های مرتبط با پایتون رو افزایش دهید

  • سلام

    متاسفانه Library Adafruit_DHT را به هیج عنوان Load نمیکند سیستم من
    من از MU استفاده میکنم –
    تمام مراحل مربوط به setup این Library را هم انجام دادم – حتی از یک سایت اینترنتی هم انجام دادم که همین مراحلی بود که شما نمایش داده اید. و همه مراحل هم با موفقیت انجام میشود ولی Adafruit_DHT را پیدا نمیکند
    لطفا راهنمایی بفرمایید.

    با تشکر
    شهریار شاهین

    • با سلام
      کتابخانه Adafruit dht را پس از نصب از فایل زیپ خارج کرده و سپس تست کنید. بررسی و نتیجه را از همین طریق اعلام فرمایید.

  • با عرض سلام
    بسیار ممنونم از آموزشهای ارزشمندتان
    یک سوالی داشتم ممنون میشم در صورت امکان راهنمایی فرمایین.
    بنده در رزبری یک برنامه ای رو با پایتون نوشتم مثلا به اسم hello.py و در یک دایرکتوری ذخیره شده. بنده می خواستم رزبری رو طوری تنظیم کنم که وقتی روشن شد( سیستم عامل رزبری بالا آمد) این فایل به صورت خودکار اجرا بشه؟

    • با سلام
      در این خصوص ابتدا فایل hello.py را در یک مسیر مشخص قرار دهید.
      سپس کامند sudo nano /etc/profile در ترمینال وارد کرده و در صفحه باز شده دستور sudo python به همراه آدرس محل ذخیره فایل و نام فایل را تایپ کنید. مانند:
      sudo python /home/pi/hello.py
      در نهایت با ctrl+X و Y مراحل را سیو کرده و ریبوت کنید.

    • سلام و عرض ادب خدمت شما بزرگواران
      وتشکر فراوان بابت مطالب مفیدتان.
      بنده موقع نصب کتابخانه DHT
      sudo python setup.py install
      با خطای syntax مواجه میشم ، من دستورات را کپی و انتقال میدم نمیدونم مشکلش چیه ممنون میشم راهنماییم کنید

  • با سلام
    من یه رزبری ۳b+ دارم تقریبا دوهفته باهاش کارکردم.کابل hdmi و lan رو باهم به لپ تاپ وصل کردم بعد برق رفت.بعد اینکه برق اومد رزبری پای من دیگه چراغ acp روشن نشد.کارت حافظمو عوض کردم سیستم عاملم از نو عوض کردم اما درست نشد.الان که میزنمش برق چراغ پاور قرمز و روشن میمونه و تمام قطعات برد هم سرد هستن و گرم نمیشن.خواستم بدونم سوخته رزبری من یا امیدی ب تعمیرش هست؟
    ممنون میشم پاسخ بدید

    • با سلام
      قطع و وصل برق باعث آسیب به برد نمی‌شود.
      در این خصوص توضیحات بیشتری ارائه دهید تا بررسی شود.

  • با سلام
    من یه رزبری ۳b+ دارم تقریبا دوهفته باهاش کارکردم.کابل hdmi و lan رو باهم به لپ تاپ وصل کردم بعد برق رفت.بعد اینکه برق اومد رزبری پای من دیگه چراغ acp روشن نشد.کارت حافظمو عوض کردم سیستم عاملم از نو عوض کردم اما درست نشد.الان که میزنمش برق چراغ پاور قرمز و روشن میمونه و تمام قطعات برد هم سرد هستن و گرم نمیشن.خواستم بدونم سوخته رزبری من یا امیدی ب تعمیرش هست؟
    ممنون میشم پاسخ بدید

    • با سلام
      قطع و وصل برق باعث آسیب به برد نمی‌شود.
      در این خصوص توضیحات بیشتری ارائه دهید تا بررسی شود.

  • سلام خسته نباشید من یه مشکلی دارم با استفاده از ترمینال دما رو نشون داد ولی وقتی کد پایتون رو توی mu آپلود می کنم این ارور رو میگیرم و چیزی نمایش نمیده
    File “/home/pi/Desktop/DHT22.py”, line 1
    رimport Adafruit_DHT as dht
    ^
    SyntaxError: invalid syntax

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

  • سلام ممنونم از آموزش روان و خوبتون
    یه سوال دارم چرا در برخی آموزش های برای اتصال dht به رزبری پای از مقاومت استفاده میکنند ؟ آیا ربطی به سنسور یا ماژول بودن آن دارد؟ اگر هر دو روش امکانپذیر است کدام روش در طولانی مدت بهتر است؟

    • با سلام
      با توجه به اینکه سنسور دارای مقاومت داخلی پول آپ است، نیازی به استفاده از مقاومت برای آن نیست.