این آموزش بخشی است از: سنسور رطوبت و دمای نسبی دیجیتال HTU21D
ویدیوهای مربوط به سنسور رطوبت و دمای نسبی دیجیتال HTU21D. لینک سایر ویدیوها در زیر این مقاله قرار دارد.
استفاده از دو حساس(حس کننده) رطوبت و دما HTU21DF دیگر با آردوینو
در این آموزش، ما یاد خواهیم گرفت که چگونه دو حساس(حس کننده) دما و رطوبت HTU21DF را با یک آردوینو متصل و استفاده کنیم. حساس(حس کننده) HTU21DF به خاطر دقت و مصرف انرژی پایینی که دارد، برای برنامههای مختلف ایدهآل است. در پایان این آموزش، شما قادر خواهید بود مقادیر دما و رطوبت را از هر دو حساس(حس کننده) خوانده و آنها را در نمایشگر مسلسل نمایش دهید.

برای شروع، بهطور مختصر به اجزای سختافزاری مربوط به این پروژه خواهیم پرداخت. سنسورهای HTU21DF از طریق I2C ارتباط برقرار میکنند که فقط به دو خط داده علاوه بر اتصالات برق و زمین نیاز دارد. آردوینو دادههای حساس(حس کننده) را خوانده و نتایج را در نمایشگر مسلسل چاپ میکند و به شما این امکان را میدهد که تغییرات دما و رطوبت را بهصورت زنده مشاهده کنید.
برای درک بهتر از فرآیند سیمکشی و کدنویسی، پیشنهاد میکنیم ویدئوی مرتبط را تماشا کنید (در ویدئو در :30). بیایید به جزئیات بپردازیم!
توضیح سختافزار
اجزای اصلی این پروژه حساس(حس کننده) HTU21DF است که دما و رطوبت نسبی را اندازهگیری میکند. این حساس(حس کننده) با استفاده از ارتباط I2C کار میکند که با نیاز به تنها دو خط داده، سیمکشی را ساده میکند. این حساس(حس کننده) قادر است دماهای بین -40°C تا 125°C و سطوح رطوبت بین 0% تا 100% را با دقت 0.04% اندازهگیری کند.
زمانی که حساس(حس کننده) به طور فعال اندازهگیری نمیکند، تنها ۰.۰۴ میکروآمپر مصرف میکند که آن را برای برنامههای باتریخور مناسب میسازد. هنگام اندازهگیری، مصرف جریان حدود ۴۰۰ میکروآمپر است که هنوز هم برای بسیاری از پروژهها نسبتاً کم است.
جزئیات ورق داده
| تولیدکننده | تِی ای کانکتویتی |
|---|---|
| شماره قطعه | HTU21DF |
| ولتاژ منطقی/ورودی و خروجی | ۱.۵ - ۳.۶ ولت |
| ولتاژ تامین | ۳.۳ ولت |
| جریان خروجی (به ازای هر کانال) | ۰.۴ میلیآمپر (اندازهگیری) |
| جریان اوج (به ازای هر کانال) | ۴۵۰ میکروآمپر (حداکثر) |
| راهنمایی فرکانس PWM | قابل اعمال نیست |
| آستانه های منطقی ورودی | ۰.۳ × VDDبه 0.7 x VDD |
| افت ولتاژ / RDS(on)/ اشباع | N/A |
| محدودیتهای حرارتی | -۴۰ درجه سانتیگراد تا +۱۲۵ درجه سانتیگراد |
| بسته | DFN ششپایه |
| یادداشتها / واریانتها | در اندازههای مختلف بستهبندی موجود است |
- منبع تغذیه: ۳.۳ ولت برای عملکرد بهینه توصیه میشود.
- SCL را به پایه ساعت I2C (A5 در آردوینو UNO) وصل کنید.
- سیم SDA را به پایه داده I2C (A4 در آردوینو UNO) متصل کنید.
- اطمینان حاصل کنید که سیمکشی به درستی انجام شده باشد تا از ورودیهای شناور جلوگیری شود.
- در هنگام اندازهگیری مصرف کنونی را تحت نظر داشته باشید تا عمر باتری را مدیریت کنید.
- در صورت لزوم از مقاومتهای کششی برای خطوط I2C استفاده کنید.
دستورالعملهای سیمکشی

برای سیمکشی حسگرهای HTU21DF، ابتدا شروع به اتصال V کنید.CCپایه هر حساس(حس کننده) را به پایه ۳.۳ ولت روی آردوینو متصل کنید. سپس پایه GND هر حساس(حس کننده) را به زمین مشترک متصل کنید. برای ارتباط I2C، پایه SDA هر دو حساس(حس کننده) را به پایه A4 روی آردوینو و پایه SCL را به پایه A5 متصل کنید. اطمینان حاصل کنید که سنسورها به درستی برقدار شدهاند و اتصالات داده ایمن هستند تا ارتباط تسهیل شود.
اگر از حسگرها یا اجزای اضافی استفاده میکنید، مطمئن شوید که سیمکشی آنها با باس I2C تداخل نکند. حسگرهای HTU21DF میتوانند بهصورت موازی به همان باس I2C متصل شوند و این امکان را برای آردوینو فراهم میکند که بدون ابهام دادهها را از هر دو حساس(حس کننده) بخواند.
نمونههای شِفر (کود) و راهنمای استفاده
شِفر (کود) زیر سنسورهای HTU21DF را راهاندازی کرده و مقادیر دما و رطوبت آنها را میخواند. ابتدا، کتابخانههای لازم را وارد میکنیم و نمونههایی برای هر دو حساس(حس کننده) ایجاد میکنیم:
#include
#include "Adafruit_HTU21DF.h"
Adafruit_HTU21DF htu1 = Adafruit_HTU21DF(); // create object for first sensor
Adafruit_HTU21DF htu2 = Adafruit_HTU21DF(); // create object for second sensor
شِفر (کود) بالا کتابخانههای مورد نیاز را تنظیم کرده و دو شیء حساس(حس کننده) ایجاد میکند،htu1وhtu2که برای خواندن دادهها از هر حساس(حس کننده) به طور مستقل استفاده خواهد شد.
متن بعدی درsetup()تابع، ما نمایشگر مسلسل را راهاندازی کرده و بررسی میکنیم که آیا حسگرها متصل هستند:
void setup() {
Serial.begin(9600);
if (!htu1.begin() || !htu2.begin()) {
Serial.println("Couldn't find sensor!");
while (1);
}
}
این بخش از شِفر (کود) ارتباط سریالی را با سرعت 9600 baud راهاندازی کرده و بررسی میکند که آیا هر دو حساس(حس کننده) به درستی کار میکنند یا خیر. اگر حسگری شناسایی نشود، یک پیام خطا چاپ کرده و برنامه متوقف میشود.
در حلقه اصلی، ما مقادیر دما و رطوبت را از هر دو حساس(حس کننده) خوانده و نمایش میدهیم:
void loop() {
float temp1 = htu1.readTemperature();
float rel_hum1 = htu1.readHumidity();
float temp2 = htu2.readTemperature();
float rel_hum2 = htu2.readHumidity();
Serial.print("Sensor 1 Temp: "); Serial.print(temp1); Serial.print(" C");
Serial.print("\tSensor 1 Humidity: "); Serial.print(rel_hum1); Serial.println(" %");
Serial.print("Sensor 2 Temp: "); Serial.print(temp2); Serial.print(" C");
Serial.print("\tSensor 2 Humidity: "); Serial.print(rel_hum2); Serial.println(" %");
delay(500);
}
این حلقه به طور مداوم دما و رطوبت را از هر دو حساس(حس کننده) هر ۵۰۰ میلیثانیه میخواند و چاپ میکند. شما میتوانید مشاهده کنید که چگونه مقادیر در پاسخ به شرایط محیطی تغییر میکنند.
نمایشگاه / چه انتظاری باید داشت
زمانی که شِفر (کود) را اجرا میکنید، نمایشگر مسلسل دما و رطوبت هر دو حساس(حس کننده) را نمایش خواهد داد. شما میتوانید از گرمکن، مانند تفنگ حرارتی، استفاده کنید تا ببینید چگونه اندازهگیریهای دما افزایش مییابد در حالی که سطح رطوبت ممکن است کاهش یابد (در ویدئو در ۱۲:۳۰). اگر دما از حداکثر حد قابل اندازهگیری یعنی ۱۲۵ درجه سانتیگراد فراتر رود، حساس(حس کننده) ممکن است صفر یا خطا را برگرداند که نشاندهنده عدم توانایی در خواندن مقدار است.
به اشتباهات سیمکشی توجه داشته باشید، مانند اتصالات معکوس یا ورودیهای شناور که میتوانند به خوانشهای نادرست منجر شوند. با پیروی از مراحل توضیح داده شده در این آموزش، باید قادر باشید سنسورهای HTU21DF را بهطور موفقیتآمیز پیادهسازی کرده و خوانشهای آنها را بهطور مؤثر زیر نظر داشته باشید.
برچسبهای زمانی ویدیو
- ۰۰:۰۰- مقدمه
- ۰۱:۳۰- توضیح سیمکشی
- ۰۲:۴۵- توضیح شِفر (کود)
- ۱۲:۳۰- نمایش با سشوار حرارتی
- ۱۴:۰۰- نتیجه گیری
این آموزش بخشی از: سنسور رطوبت و دمای نسبی دیجیتال HTU21D
- درس 35-1: استفاده از حساس(حس کننده) دما HTU21D
- درس 35-2: استفاده از حساس(حس کننده) دما HTU21D - شِفر (کود) سفارشی
- درس 35: استفاده از حساس(حس کننده) دمای HTU21D با آردوینو
- درس ۳۶: استفاده از حساس(حس کننده) دما HTU21D با یک LCD در دوره آموزشی مرحله به مرحله آردوینو
- نمایش دما از یک HTU21D بر روی LCD
- نمایش دما از یک HTU21D به صورت نمودار میلهای بر روی یک LCD
- نحوه استفاده از حساس(حس کننده) رطوبت و دما HTU21DF با آردوینو (شِفر (کود) پایه)
- نحوه استفاده از حساس(حس کننده) رطوبت و دما HTU21DF با آردوینو (شِفر (کود) سفارشی)
++
/***************************************************
This is an example for the HTU21D-F Humidity & Temperature Sensor
Designed specifically to work with the HTU21D-F sensor from Adafruit
----> https://www.adafruit.com/products/1899
These module use I2C to communicate; 2 pins are required to
interface
****************************************************/
#include <Wire.h>
#include "Adafruit_HTU21DF.h"
// Connect Vin to 3-5VDC
// Connect GND to ground
// Connect SCL to I2C clock pin (A5 on UNO)
// Connect SDA to I2C data pin (A4 on UNO)
Adafruit_HTU21DF htu1 = Adafruit_HTU21DF();//create object for first HTU21DF sensor
Adafruit_HTU21DF htu2 = Adafruit_HTU21DF();//create object for second HTU21DF sensor
//Adafruit_HTU21DF htu3 = Adafruit_HTU21DF();//create object for third HTU21DF sensor (disabled, remove // from begging of code)
void setup() {
Serial.begin(9600);
Serial.println("HTU21D-F test for two modules");
if (!htu.begin()) {
Serial.println("Couldn't find sensor!");
while (1);
}
}
void loop() {
//get value for sensor 1
float temp1 = htu1.readTemperature();
float rel_hum1 = htu1.readHumidity();
//get value for sensor 2
float temp2 = htu2.readTemperature();
float rel_hum2 = htu2.readHumidity();
//get value for sensor 3
float temp3 = htu3.readTemperature();
float rel_hum3 = htu3.readHumidity();
//print values for sensor 1
Serial.print("Sensor 1 Temp : "); Serial.print(temp1); Serial.print(" C");
Serial.print("\t\t");
Serial.print("Sensor 1 Humidity: "); Serial.print(rel_hum1); Serial.println(" %");
//print values for sensor 2
Serial.print("Sensor 2 Temp : "); Serial.print(temp2); Serial.print(" C");
Serial.print("\t\t");
Serial.print("Sensor 2 Humidity: "); Serial.print(rel_hum2); Serial.println(" %");
//print values for sensor 3
//Serial.print("Sensor 3 Temp : "); Serial.print(temp3); Serial.print(" C");
//Serial.print("\t\t");
//Serial.print("Sensor 3 Humidity: "); Serial.print(rel_hum3); Serial.println(" %");
delay(500);
}
مواردی که ممکن است به آنها نیاز داشته باشید
-
آمازون
-
ایبیHTU21D را از eBay خریداری کنیدebay.us
-
علیاکسپرسHTU21D یا SHT21 را از علیاکسپرس خریداری کنیدs.click.aliexpress.com
منابع و مراجع
-
خارجیکتابخانه Adafruit HTU21D (گیتهاب)github.com
فایلها📁
برگه مشخصات (pdf)
-
سند داده های دما و رطوبت HTU21D
HTU21D_temerature_humidity_datasheet.pdf0.96 MB