آموزش راه اندازی ماژول سنسور دما و رطوبت SHT20 با آردوینو

فهرست مطالب

ویژگی های ماژول سنسور دما و رطوبت SHT20

ماژول SHT20 یک ماژول اندازه گیری دما و رطوبت دقیق، کاملا کالیبره شده، دارای مصرف توان بسیار پایین و با سرعت پاسخ بالاست. این سنسور در واقع از ترکیب یک سنسور رطوبت خازنی و یک سنسور دمای شکاف باند سیلیکونی (silicon bandgap temperature) تشکیل شده است. برخی از ویژگی‌های این ماژول را در زیر مشاهده می‌کنید.

  • محدوده اندازه گیری دما در بازه 40- تا 125+ درجه سلیسیوس
  • دقت اندازه‌گیری دما 0.3 درجه سلیسوس
  • محدوده انداه‌گیری رطوبت هوا در بازه 0 تا 100% RH
  • دقت اندازه‌گیری رطوبت هوا 3% RH
  • پروتکل ارتباطی I2C

معرفی پایه ها (Pinout) ماژول سنسور دما و رطوبت SHT20

ماژول سنسور دما و رطوبت SHT20 دارای 4 پایه به شرح زیر است:

  • VCC: تغذیه ماژول – 3.6-2.1 ولت
  • GND: زمین
  • SDA: پایه دیتا برای پروتکل I2C
  • SCL: پایه کلاک برای پروتکل I2C

پین اوت (Pinout) این سنسور را می‌توانید در تصویر زیر مشاهده کنید.

لوازمی که به آن احتیاج دارید

قطعات مورد نیاز

آردوینو UNO R3 × 1
ماژول سنسور دما و رطوبت SHT20 × 1
سیم جامپر نری به مادگی × 1

نرم افزارهای مورد نیاز

آردوینو IDE

راه اندازی ماژول سنسور دما و رطوبت SHT20 با آردوینو

گام اول: سیم بندی

مطابق مدار زیر، ماژول را به آردوینو وصل کنید.

گام دوم: نصب کتابخانه

کتابخانه DFRobot_SHT20-master را از اینجا دانلود کنید.

سپس به قسمت Include Library رفته و کتابخانه را نصب کنید.

توجه

اگر برای نصب کتابخانه نیاز به راهنمایی بیشتر دارید، به اینجا مراجعه کنید.

گام سوم: کد

کد زیر را روی برد آردوینو آپلود کنید. پس از آپلود کد، پنجره Serial Monitor را باز کنید.

/*
modified on Apr 10, 2021
Modified by MehranMaleki from Arduino Examples
Home
*/ #include <Wire.h> #include "DFRobot_SHT20.h" DFRobot_SHT20 sht20; void setup() { Serial.begin(9600); Serial.println("SHT20 Example!"); sht20.initSHT20(); // Init SHT20 Sensor delay(100); sht20.checkSHT20(); // Check SHT20 Sensor } void loop() { float humd = sht20.readHumidity(); // Read Humidity float temp = sht20.readTemperature(); // Read Temperature Serial.print(" Temperature: "); Serial.print(temp, 1); Serial.print("C"); Serial.print("\t Humidity: "); Serial.print(humd, 1); Serial.println("%"); delay(1000); }

در کد بالا، ابتدا کتابخانه مربوطه اضافه شده و سنسور شروع به کار می‌کند. سپس اطلاعات دما و رطوبت در هر ثانیه از سنسور دریافت شده و در پنجره Serial Monitor نمایش داده می‌شود.

خروجی کد به شکل زیر است.

آموزش های مشابه

Comments (13)

  • پدرام Reply

    سلام اقا من این کارو کردم تقریبا بعد یک ساعت اردوینو هنگ میکنه مشگل از چیه؟

    آگوست 1, 2021 at 3:17 ق.ظ
    • مهران ملکی Reply

      سلام دوست عزیز،
      موقعی که آردوینو هنگ میکنه، منظورتون این هست که روی Serial Monitor دیگه دما ورطوبت رو نمایش نمیده؟ تو اون شرایط این رو امتحان کنید که Serial Monitor رو یک بار ببندید و باز کنید ببینید آیا دوباره دما و رطوبت رو نمایش میده یا نه. ممکنه صرفا مشکل از نمایش اطلاعات باشه و نه از آردوینو و سنسور SHT20.
      یک احتمال دیگه میتونه مشکل داشتن برد آردوینو یا سنسور دماتون باشه. بعد از یک ساعت که آردوینو هنگ میکنه، چک کنید که آیا حرارت المانی داخل برد آردوینو و یا سنسور SHT20 بیشتر شده یا خیر.
      و در آخر هم یک راه‌حل دیگه که میتونید امتحان کنید که پایه I2C سنسور رو pull-up کنید. این کار باعث میشه که تاثیرگذاری نویز محیطی روی انتقال اطلاعات کاهش پیدا کنه و ارتباط بین سنسور و آردوینو کمتر دچار ایراد بشه.

      آگوست 1, 2021 at 9:25 ق.ظ
    • Jafar Mousavi Reply

      درود
      به یکی از پایه ها یک LED متصل کنید و در داخل loop دستوری بنویسید که هر با خاموش و روشن شود
      بجای delay(1000); بنویسید

      digitalWrite(LED_BUILTIN, HIGH);
      delay(500);
      digitalWrite(LED_BUILTIN, LOW);
      delay(500);

      جولای 22, 2023 at 7:44 ب.ظ
  • vala Reply

    با سلام
    کد برای من در اینجا sht20.checkSHT20(); گیر میکنه
    مشکل از کجاس؟

    آگوست 8, 2021 at 10:58 ق.ظ
    • مهران ملکی Reply

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

      آگوست 8, 2021 at 12:46 ب.ظ
  • ali Reply

    سلام من بعد از آپلود کردن ارور دریافت میکنم نمیدونم مشکل از کجاست
    Arduino: 1.8.15 (Windows 7), Board: “Arduino Uno”

    Sketch uses 6626 bytes (20%) of program storage space. Maximum is 32256 bytes.

    Global variables use 526 bytes (25%) of dynamic memory, leaving 1522 bytes for local variables. Maximum is 2048 bytes.

    avrdude: stk500_recv(): programmer is not responding

    avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x8d

    avrdude: stk500_recv(): programmer is not responding

    avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x8d

    avrdude: stk500_recv(): programmer is not responding

    avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x8d

    avrdude: stk500_recv(): programmer is not responding

    avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x8d

    avrdude: stk500_recv(): programmer is not responding

    avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x8d

    avrdude: stk500_recv(): programmer is not responding

    avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x8d

    avrdude: stk500_recv(): programmer is not responding

    avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x8d

    avrdude: stk500_recv(): programmer is not responding

    avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x8d

    avrdude: stk500_recv(): programmer is not responding

    avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x8d

    avrdude: stk500_recv(): programmer is not responding

    avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x8d

    Problem uploading to board. See https://support.arduino.cc/hc/en-us/sections/360003198300 for suggestions.

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

    دسامبر 19, 2021 at 10:30 ق.ظ
    • مهران ملکی Reply

      سلام
      در ابتدا مطمئن بشید که پورت رو به درستی انتخاب کردید. اگر پورت رو به درستی انتخاب کردید و همچنان این ارور رو دارید احتمالا آردوینوتون دچار مشکل شده.

      دسامبر 19, 2021 at 4:45 ب.ظ
  • حسین Reply

    سلام دقت دماش 3 درجه هست یه 3 دهم درجه؟ به نظر میاد اشتباه نوشتید

    ژانویه 11, 2022 at 10:04 ق.ظ
    • مهران ملکی Reply

      سلام.
      بله درست می‌فرمایید. تصحیح شد، ممنون بابت توجهتون.

      آوریل 21, 2022 at 11:03 ق.ظ
  • حسین Reply

    سلام

    رطوبت رو 10 درصد بیشتر نشون میده
    چرا؟

    آوریل 20, 2022 at 2:25 ب.ظ
    • مهران ملکی Reply

      سلام.
      اگر همیشه 10 درصد هست مشکلی نداره و میتونید با کالیبراسیون مناسب در کدتون 10 درصد رو از مقداری که سنسور میده کم کنید تا رطوبت صحیح رو بدست بیارید. اما اگر در حالت‌های مختلف متفاوت هست و بعضی وقت‌ها اختلاف مقدار خروجی سنسور با مقدار واقعی متغیر هست، احتمالا سنسور مشکل داشته باشه.

      آوریل 21, 2022 at 11:08 ق.ظ
  • مصطفی Reply

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

    دسامبر 2, 2022 at 8:40 ق.ظ
    • علی عبدالملکی Reply

      سلام
      ممنون بابت اینکه تجربیات خودتون رو با بقیه به اشتراک میگذارید
      بنده هم با شما موافقم

      دسامبر 13, 2022 at 9:09 ق.ظ

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

نشانی ایمیل شما منتشر نخواهد شد.