ویژگی های ماژول سنسور دما و رطوبت 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) این سنسور را میتوانید در تصویر زیر مشاهده کنید.
لوازمی که به آن احتیاج دارید
قطعات مورد نیاز
نرم افزارهای مورد نیاز
راه اندازی ماژول سنسور دما و رطوبت SHT20 با آردوینو
گام اول: سیم بندی
مطابق مدار زیر، ماژول را به آردوینو وصل کنید.
گام دوم: نصب کتابخانه
کتابخانه DFRobot_SHT20-master را از اینجا دانلود کنید.
SHT20 Sensor Library
سپس به قسمت 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)
سلام اقا من این کارو کردم تقریبا بعد یک ساعت اردوینو هنگ میکنه مشگل از چیه؟
سلام دوست عزیز،
موقعی که آردوینو هنگ میکنه، منظورتون این هست که روی Serial Monitor دیگه دما ورطوبت رو نمایش نمیده؟ تو اون شرایط این رو امتحان کنید که Serial Monitor رو یک بار ببندید و باز کنید ببینید آیا دوباره دما و رطوبت رو نمایش میده یا نه. ممکنه صرفا مشکل از نمایش اطلاعات باشه و نه از آردوینو و سنسور SHT20.
یک احتمال دیگه میتونه مشکل داشتن برد آردوینو یا سنسور دماتون باشه. بعد از یک ساعت که آردوینو هنگ میکنه، چک کنید که آیا حرارت المانی داخل برد آردوینو و یا سنسور SHT20 بیشتر شده یا خیر.
و در آخر هم یک راهحل دیگه که میتونید امتحان کنید که پایه I2C سنسور رو pull-up کنید. این کار باعث میشه که تاثیرگذاری نویز محیطی روی انتقال اطلاعات کاهش پیدا کنه و ارتباط بین سنسور و آردوینو کمتر دچار ایراد بشه.
درود
به یکی از پایه ها یک LED متصل کنید و در داخل loop دستوری بنویسید که هر با خاموش و روشن شود
بجای delay(1000); بنویسید
digitalWrite(LED_BUILTIN, HIGH);
delay(500);
digitalWrite(LED_BUILTIN, LOW);
delay(500);
با سلام
کد برای من در اینجا sht20.checkSHT20(); گیر میکنه
مشکل از کجاس؟
سلام
در کدتون دقت کنید که ایراد سینتکسی وجود نداشته باشه. عینا کد رو یک بار دیگه کپی و تو نرمافزار آردوینوتون قرار بدید تا مطمئن بشید تو فرایند کپی کردن کد ایرادی نداشتید. همچنین اگه کتابخونه SHT20 دیگهای هم از قبل روی آردوینوتون نصبه ممکنه باعث تداخل بین کتابخونهها بشه. ترجیحا اون رو پاک کنید.
سلام من بعد از آپلود کردن ارور دریافت میکنم نمیدونم مشکل از کجاست
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.
سلام
در ابتدا مطمئن بشید که پورت رو به درستی انتخاب کردید. اگر پورت رو به درستی انتخاب کردید و همچنان این ارور رو دارید احتمالا آردوینوتون دچار مشکل شده.
سلام دقت دماش 3 درجه هست یه 3 دهم درجه؟ به نظر میاد اشتباه نوشتید
سلام.
بله درست میفرمایید. تصحیح شد، ممنون بابت توجهتون.
سلام
رطوبت رو 10 درصد بیشتر نشون میده
چرا؟
سلام.
اگر همیشه 10 درصد هست مشکلی نداره و میتونید با کالیبراسیون مناسب در کدتون 10 درصد رو از مقداری که سنسور میده کم کنید تا رطوبت صحیح رو بدست بیارید. اما اگر در حالتهای مختلف متفاوت هست و بعضی وقتها اختلاف مقدار خروجی سنسور با مقدار واقعی متغیر هست، احتمالا سنسور مشکل داشته باشه.
سلام من برای سنسور کد با زبان سی و در محیط vscode نوشتم و خیلی خوب کار میکنه، پیشنهاد میکنم زیاد با آردوینو و کد های آماده وابسته نشید. آردوینو برای کار آزمایشگاهی خوبه ولی برنامه نویسی تون به خاطر کد های آماده ضعیف میکنه. البته اگه بتونید از کد های آردوینو برای خودتون کد شخصی ینوسید خیلی عالیه.
سلام
ممنون بابت اینکه تجربیات خودتون رو با بقیه به اشتراک میگذارید
بنده هم با شما موافقم