سنسور دما و رطوبت sht10
سنسور دما و رطوبت sht10
SHT10 یک سنسور دما و رطوبت دیجیتال است که توسط شرکت Sensirion تولید میشود. این سنسور با دقت و قابلیت اندازهگیری دما و رطوبت بالا معروف است. SHT10 قادر به اندازهگیری دما در محدوده دمایی -40 درجه سانتیگراد تا 125 درجه سانتیگراد است. این محدوده مناسب برای بسیاری از برنامهها است.SHT10 قادر به اندازهگیری رطوبت در محدوده 0٪ تا 100٪ است. این محدوده رطوبتی از نظر بسیاری از برنامهها کافی است. سنسور SHT10 دقت بالایی دارد. در اندازهگیری دما، دقت آن حدود ±0.5 درجه سانتیگراد است و در اندازهگیری رطوبت، دقت آن حدود ±3٪ است. این دقت مناسب برای بسیاری از کاربردها است. SHT10 از رابط دیجیتال استفاده میکند و از طریق پروتکل ارتباطی سریال (Serial Interface) با میکروکنترلرها و سایر دستگاهها ارتباط برقرار میکند. این ویژگی باعث استفاده آسان و انعطافپذیری در اندازهگیری دما و رطوبت میشود.سنسور SHT10 مصرف انرژی کمی دارد که باعث میشود بتواند در برنامههایی که نیاز به مصرف انرژی کمی دارند، استفاده شود. سنسور SHT10 دارای خروجی کالیبره شده است SHT10 دارای پوشش ضدآب است که امکان استفاده در محیطهای رطوبتی و حتی تحت تأثیر قطرات آب را فراهم میکند. این ویژگی به خصوص برای برنامههایی که نیاز به اندازهگیری رطوبت در محیطهای مرطوب دارند، بسیار مفید است. SHT10 به طور خاص برای اندازهگیری سریع و دقیق طراحی شده است. با سرعت نمونهبرداری بالا، میتوانید به سرعت دادههای دما و رطوبت را دریافت کنید و برای کنترل و نظارت بهینه استفاده کنید. سنسور SHT10 قابلیت کالیبراسیون را دارد، به این معنی که میتوانید آن را با استفاده از استانداردهای دقیق محیطی خود کالیبره کنید. این امکان به شما اجازه میدهد تا دقت بیشتری در اندازهگیری دما و رطوبت به دست آورید. سنسور SHT10 از رابط I2C (Inter-Integrated Circuit) برای انتقال داده استفاده میکند. این رابط معمولاً در برنامههایی که نیاز به اتصال چندین سنسور به یکدیگر دارند، بسیار مناسب است.
ویژگی های سنسور دما و رطوبت sht10
- محدوده اندازهگیری دما: -40 درجه سانتیگراد تا 125 درجه سانتیگراد
- دقت اندازهگیری دما: ±0.5 درجه سانتیگراد
- محدوده اندازهگیری رطوبت: 0٪ تا 100٪ RH (رطوبت نسبی)
- دقت اندازهگیری رطوبت: ±3٪ RH
- ولتاژ تغذیه: 2.4 ولت تا 5.5 ولت
- رابط ارتباطی: رابط سریال دیجیتال (Serial Interface)
- رابط انتقال داده: پشتیبانی از پروتکل ارتباطی سریال I2C
- زمان پاسخگویی: کمتر از 5 ثانیه در شرایط استاندارد
- مصرف جریان: کمتر از 30 میکروآمپر در حالت عملیاتی
- قابلیت کالیبراسیون: دارای قابلیت کالیبراسیون
- محدوده رطوبت عملکردی: 0٪ تا 100٪ RH (بدون تشکیل شبنم)
- روش تشخیص شبنم: تشخیص شبنم با ترکیب اندازهگیری رطوبت و دما
- ابعاد فیزیکی: 5.1 میلیمتر در 7.5 میلیمتر در 2.5 میلیمتر
- قابلیت مقاومت در برابر رطوبت و قطرات آب: دارای پوشش ضدآب
بررسی پایه های سنسور sht10
پایههای سنسور دما و رطوبت SHT10 به شکل زیر است:
- VDD: پایه تغذیه سنسور (مثبت). میتوانید ولتاژ تغذیه بین 2.4 ولت تا 5.5 ولت را به این پایه متصل کنید.
- GND: پایه زمین سنسور (منفی). این پایه به منبع منفی متصل میشود.
- DATA: پایه ارتباط دیتا. از طریق این پایه، سنسور دما و رطوبت دادههای خروجی خود را ارسال میکند. میتوانید این پایه را به پینهای داده میکروکنترلر خود متصل کنید.
- SCK: پایه ساعت ارتباطی (Clock). این پایه در رابط ارتباطی سریال I2C استفاده میشود و به پین ساعت میکروکنترلر متصل میشود.
به همراه سنسور دما رطوبت SHT10 چه اقلامی باید خریداری شود؟
- برد میکروکنترلر مانند Arduino , ESP, RP2040
- کابل فلت
- برد بورد
- فیبر مدار چاپی
- نمایشگر OLED و یا نمایشگر LCD
راه اندازی سنسور SHT10 با آردوینو
در ادامه نمونه کد آردوینو برای خواندن دادههای دما و رطوبت از سنسور SHT10 نوشته شده است. کد را در نزم افزار آردوینو اجرا کنید.در تابع setup، ارتباط سریال را با سرعت 9600 بیت در ثانیه شروع میکنیم و ارتباط I2C را راهاندازی میکنیم.در تابع loop، ابتدا دستور اندازهگیری دما را به سنسور SHT10 ارسال میکنیم و سپس صبر میکنیم تا اندازهگیری انجام شود. سپس دادههای دما را از سنسور خوانده و به واحد درجه سانتیگراد تبدیل میکنیم. نتیجه را از طریق ارتباط سریال نمایش میدهیم.سپس دستور اندازهگیری رطوبت را به سنسور SHT10 ارسال میکنیم و صبر میکنیم تا اندازهگیری انجام شود. سپس دادههای رطوبت را از سنسور خوانده و به رطوبت نسبی تبدیل میکنیم. نتیجه را از طریق ارتباط سریال نمایش میدهیم.توجه کنید که در هر مرحله، از توابع Wire.beginTransmission، Wire.write، Wire.endTransmission، Wire.requestFrom و Wire.read برای ارتباط با سنسور SHT10 از طریق رابط I2C استفاده میشود.این کد، دما و رطوبت را به صورت تقریبی و با استفاده از فرمولهای محاسبه شده از دیتاشیت سنسور، نمایش میدهد. برای دقت بیشتر و دریافت مقادیر دقیقتر، ممکن است نیاز به کالیبراسیون و تنظیمات دیگر در سنسور وجود داشته باشد.
البته! در زیر یک نمونه کد آردوینو برای خواندن دادههای دما و رطوبت از سنسور SHT10 را مشاهده میکنید:
arduino
Copy code
#include <Wire.h> // باید کتابخانه Wire را به پروژه اضافه کنید
#define SHT10_ADDRESS 0x40 // آدرس I2C سنسور SHT10
void setup() {
Serial.begin(9600); // شروع ارتباط سریال با سرعت 9600 بیت در ثانیه
Wire.begin(); // شروع ارتباط I2C
}
void loop() {
// ارسال دستور اندازهگیری دما
Wire.beginTransmission(SHT10_ADDRESS);
Wire.write(0x03); // دستور اندازهگیری دما با دقت بالا
Wire.write(0x11); // فرکانس نمونهبرداری 14 بیتی
Wire.endTransmission();
delay(100); // صبر برای اندازهگیری
// خواندن دادههای دما
Wire.requestFrom(SHT10_ADDRESS, 3);
while (Wire.available() < 3);
byte msb = Wire.read();
byte lsb = Wire.read();
byte crc = Wire.read();
int temperature = ((msb << 8) | lsb) & 0xFFFC; // محاسبه دما با فرمول
temperature = -40.1 + 0.01 * temperature; // تبدیل به دما به واحد درجه سانتیگراد
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" °C");
// ارسال دستور اندازهگیری رطوبت
Wire.beginTransmission(SHT10_ADDRESS);
Wire.write(0x05); // دستور اندازهگیری رطوبت با دقت بالا
Wire.write(0x11); // فرکانس نمونهبرداری 14 بیتی
Wire.endTransmission();
delay(100); // صبر برای اندازهگیری
// خواندن دادههای رطوبت
Wire.requestFrom(SHT10_ADDRESS, 3);
while (Wire.available() < 3);
msb = Wire.read();
lsb = Wire.read();
crc = Wire.read();
int humidity = ((msb << 8) | lsb) & 0xFFFC; // محاسبه رطوبت با فرمول
humidity = -4 + 0.0405 * humidity - 2.8e-6 * (humidity * humidity); // تبدیل به رطوبت نسبی
Serial.print("Humidity: ");
Serial.print(humidity);
Serial
راه اندازی سنسور SHT10 با میکروپایتون ESP32, RP2040
در ادمه یک نمونه کد میکروپایتون برای خواندن دادههای دما و رطوبت از سنسور SHT10 نوشته شده است.در ابتدا، کتابخانه smbus2 را وارد میکنیم و تاخیر زمانی را نیز برای استفاده از توابع sleep در میانه کد تعریف میکنیم.آدرس I2C سنسور SHT10 را با استفاده از متغیر SHT10_ADDRESS مشخص میکنیم.ابتدا دستور اندازهگیری دما را به سنسور SHT10 ارسال میکنیم. برای این منظور، تابع write_i2c_block_data.تابع write_i2c_block_data برای ارسال دستور اندازهگیری دما به سنسور SHT10 استفاده میشود. این تابع سه پارامتر دریافت میکند: آدرس I2C سنسور، آدرس رجیستر دستور و دادههای ارسالی. در این حالت، ما دستور اندازهگیری دما را با مقدار 0x03 و 0x11 به سنسور ارسال میکنیم.سپس با استفاده از تابع sleep، برنامه را به مدت 0.1 ثانیه متوقف میکنیم تا سنسور بتواند اندازهگیری را انجام دهد.برای خواندن دادههای دما، از تابع read_i2c_block_data استفاده میکنیم. این تابع سه پارامتر دریافت میکند: آدرس I2C سنسور، آدرس رجیستر خواندن داده و تعداد بایتی که میخواهیم بخوانیم. در این حالت، ما 3 بایت اطلاعات دما را از سنسور میخوانیم.سپس دادههای خوانده شده را با استفاده از اپراتورهای بیتی، ترکیب میکنیم تا مقدار دما را بدست آوریم. سپس محاسباتی روی این مقدار انجام میدهیم تا آن را به واحد درجه سانتیگراد تبدیل کنیم.نتیجه دما را با استفاده از تابع print نمایش میدهیم.توابع write_i2c_block_data و read_i2c_block_data از کتابخانه smbus2 برای برقراری ارتباط با سنسور SHT10 از طریق رابط I2C استفاده میشوند. این توابع بر اساس پروتکل I2C، دستورات و دادههای مورد نیاز را به سنسور ارسال میکنند و پاسخها را دریافت میکنند.آدرس I2C سنسور SHT10 که در این مثال برابر با 0x40 است، با استفاده از متغیر SHT10_ADDRESS مشخص شده است.برای خواندن دادهها، از تابع read_i2c_block_data استفاده میکنیم. این تابع از سنسور SHT10 3 بایت داده را خوانده و در آرایهای با نام data ذخیره میکند. این آرایه شامل دو بایت داده دما و یک بایت CRC برای اعتبارسنجی داده است. با استفاده از متغیرهای msb و lsb دادههای دما را استخراج میکنیم. سپس با استفاده از فرمول محاسبه شده برای دما، مقدار دما را محاسبه میکنیم و در متغیر temperature ذخیره میکنیم.همچنین، مقادیر خوانده شده برای رطوبت نیز به همین ترتیب استخراج و محاسبه میشوند و در متغیر humidity ذخیره میشوند.در نهایت، نتایج دما و رطوبت را با استفاده از تابع print نمایش میدهیم.
import smbus2
import time
# آدرس I2C سنسور SHT10
SHT10_ADDRESS = 0x40
# برقراری ارتباط با رابط I2C
bus = smbus2.SMBus(1)
# ارسال دستور اندازهگیری دما
bus.write_i2c_block_data(SHT10_ADDRESS, 0x03, [0x11])
# صبر برای اندازهگیری
time.sleep(0.1)
# خواندن دادههای دما
data = bus.read_i2c_block_data(SHT10_ADDRESS, 0x00, 3)
msb, lsb, crc = data[0], data[1], data[2]
temperature = ((msb << 8) | lsb) & 0xFFFC
temperature = -40.1 + 0.01 * temperature
# نمایش دما
print("Temperature: {} °C".format(temperature))
# ارسال دستور اندازهگیری رطوبت
bus.write_i2c_block_data(SHT10_ADDRESS, 0x05, [0x11])
# صبر برای اندازهگیری
time.sleep(0.1)
# خواندن دادههای رطوبت
data = bus.read_i2c_block_data(SHT10_ADDRESS, 0x00, 3)
msb, lsb, crc = data[0], data[1], data[2]
humidity = ((msb << 8) | lsb) & 0xFFFC
humidity = -4 + 0.0405 * humidity - 2.8e-6 * (humidity * humidity)
# نمایش رطوبت
print("Humidity: {} %".format(humidity))
مشخصات
- سطح تجربه مورد نیاز
- نیمه حرفه ای
- ولتاژ مورد نياز
- 2.4 الی 5.5 ولت DC
- جریان
- 0.55 میلی آمپر
- پروتکل ارتباطی
- I2C
- دقت اندازه گیری
- ±4.5 درصد برای رطوبت، ±0.5 برای دما
- محدوده اندازه گیری
- رطوبت بین 0 الی 100 درصد، دما بین 40- الی 123.8 درجه سانتی گراد
- جریان مصرفی درحالت فعال
- 0.55 میلی آمپر
- جریان مصرفی درحالت خواب
- 1.5 میکروآمپر
این برد یک ترموستات دمایی است. برای درخواست مورد نظرتان قابل استفاده است. ولتاژ AC همان برق 220 است.
امکان راه اندازی چند سنسور DHT با ESP8266 با استفاده از MicroPython وجود دارد. سنسورهای DHT با پروتکل دیجیتال و از طریق پایههای GPIO قابل اتصال به میکروکنترلرها هستند.
برای ساخت یک سیستم کنترل دما با برد میکروکنترلر ESP32، به موارد زیر نیاز دارید:
یک برد میکروکنترلر ESP32
یک سنسور دما مثل DHT DS18B20
یک المان سرد کننده
با استفاده از کتابخانه DHT.h، میتوانید از سنسور دما برای خواندن دمای محیط استفاده کنید. سپس، میتوانید از این دما برای کنترل المان گرمایشی یا سرمایشی استفاده کنید.
در خصوص برنامه نویسی از کتابخانه DHT و در صورت نیاز کتابخانه وای فای برای ارسال دادهها به پلتفرم IoT باید استفاده کنید.