راهنمای ماژول سنسور دما و رطوبت HTU21D + کد آردوینو

آیا میخواهید وضعیت آب و هوای گلخانه را ثبت کنید، یک کنترلر هامیدور بسازید یا در پروژه ایستگاه هواشناسی دما و رطوبت را اندازهگیری کنید؟ سنسور HTU21D یک گزینه مناسب است. این حسگر دیجیتال به صورت کارخانهای کالیبره شده و بدون قطعات خارجی نیاز به راهاندازی پیچیده ندارد؛ با چند اتصال ساده و کمی کد آردوینو میتوانید مقدار رطوبت نسبی و دما را دریافت کنید.
معرفی سختافزار
ماژول شامل یک سنسور دیجیتال دما و رطوبت ساخت MEAS Switzerland به نام HTU21D است که هزینه کم، سهولت استفاده و دقت مناسبی ارائه میدهد.

ابعاد کوچک ماژول اجازه میدهد آن را داخل ترموستاتها، رطوبتسنجها، ایستگاههای هواشناسی داخلی و دستگاههای مشابه نصب کنید تا دما و رطوبت را پایش یا کنترل کنید.
HTU21D قادر است رطوبت را در بازه کامل 0 تا 100% RH اندازهگیری کند و دقت معمول ±2% را در بازه 5% تا 95% RH ارائه میدهد.
بازه دمایی کاری سنسور -40 تا +125°C است و دقت معمول آن ±0.3°C در بازه 0 تا 70°C گزارش شده است.
در حالت عادی اندازهگیری، وضوح اندازهگیری رطوبت 0.7% RH و دما 0.040°C است و زمان تبدیل بهترتیب 2ms و 11ms میباشد. در صورت نیاز به وضوح بالاتر میتوانید وضوح را افزایش دهید که زمان تبدیل نیز افزایش مییابد. در حالت وضوح حداکثر، HTU21D میتواند 0.04% RH با زمان تبدیل 14ms و 0.01°C با زمان تبدیل 44ms ارائه دهد.
هشدار:
سنسور HTU21D یک پنجره کوچک دارد که فیلم پلیمری حسگر را در معرض هوا قرار میدهد. تماس با مایعات، گرد و غبار یا آلایندهها میتواند دقت اندازهگیری را تحت تأثیر قرار دهد، بنابراین از تماس مستقیم با آلایندهها خودداری کنید.
برخی بردهای breakout نسخه فیلتردار HTU21D-F دارند که با یک فیلتر هیدروفوبیک PTFE (یک پوشش سفید کوچک روی IC) تجهیز شدهاند. این فیلتر از ورود آلودگیها جلوگیری کرده و در عین حال بخار آب را عبور میدهد تا سنسور در برابر آسیب آب محافظت شود و در عین حال خواندنهای دقیق حفظ گردد.
نیاز تغذیه
ماژول دارای یک رگولاتور ولتاژ دقیق 3.3V و مبدل سطح منطقی است، بنابراین میتوانید آن را بدون نگرانی به میکروکنترلرهای 3.3V یا 5V متصل کنید.

مصرف HTU21D در هنگام اندازهگیری کمتر از 0.5mA و در حالت خواب کمتر از 0.14µA است. این مصرف کم اجازه استفاده در دستگاههای باتریمحور مانند دستیارها، پوشیدنیها یا ساعتهای هوشمند را میدهد.
رابط I2C
HTU21D یک سنسور I2C است؛ یعنی با دو سیم داده/ساعت I2C روی اکثر میکروکنترلرها کار میکند و میتواند این خطوط را با سایر حسگرهای I2C به اشتراک بگذارد مشروط بر اینکه تداخل آدرس نداشته باشند.
این سنسور دارای آدرس ثابت I2C است و آدرس آن 0x40HEX تنظیم شده است. برای استفاده از چندین سنسور HTU21D روی یک باس واحد لازم است از یک مولتیپلکسر (Mux) استفاده کنید.
مشخصات فنی
مشخصات کامل به شرح زیر است:
| Power supply | 3.3V to 5.5V |
| Current draw | ~0.5mA (during measurements) |
| ~0.14µA (during sleep mode) | |
| Minimum Sampling Period | 50ms |
| Humidity Range | 0 to 100 %RH |
| Humidity Accuracy | ±2% over the range of 5% to 95% RH |
| Temperature Range | -40˚C to +125˚C |
| Temperature Accuracy | ±0.3˚C at 25°C |
For more details, please refer below datasheet. HTU21D Datasheet
پین اوت ماژول HTU21D
در ادامه نگاهی به پینها میاندازیم.

VCC پایه تغذیه است. آن را میتوانید به خروجی 3.3V یا 5V آردوینو متصل کنید.
GND زمین مشترک برای تغذیه و منطق است.
SCL پایه ساعت I2C است؛ به خط ساعت I2C میکروکنترلر متصل شود.
SDA پایه داده I2C است؛ به خط داده I2C میکروکنترلر متصل شود.
سیمکشی ماژول HTU21D به آردوینو
سیمکشی این سنسور بسیار ساده است!
فقط چهار پایه باید متصل شوند: VCC و GND برای تغذیه و دو خط داده برای ارتباط I2C.
پایه SCL را به پایه ساعت I2C و SDA را به پایه داده I2C در آردوینو متصل کنید. توجه داشته باشید هر مدل آردوینو ممکن است پینهای I2C متفاوتی داشته باشد که باید مطابق آنها اتصال انجام شود. در بردهایی که طرح R3 دارند، SDA (خط داده) و SCL (خط ساعت) در هدرهای نزدیک به پایه AREF قرار گرفتهاند و همچنین به عنوان A4 (SDA) و A5 (SCL) شناخته میشوند.
نقشه اتصال در تصویر زیر نمایش داده شده است.

نصب کتابخانه
برای راهاندازی سنسور باید کتابخانه Adafruit HTU21DF را نصب کنید. این کتابخانه از طریق Library Manager در محیط آردوینو قابل نصب است.
برای نصب از منو به Sketch > Include Library > Manage Libraries… بروید و منتظر بمانید تا Library Manager فهرست کتابخانهها را بهروزرسانی کند.

جستجو را با عبارت HTU21D فیلتر کنید و کتابخانه Adafruit HTU21DF را نصب نمایید.

کتابخانه Adafruit_HTU21DF به صورت داخلی از کتابخانه کمکی Adafruit Bus IO برای انتزاع عملیات I2C و SPI استفاده میکند. بنابراین در Library Manager عبارت adafruit bus را جستجو کرده و آن را نیز نصب کنید.

کد آردوینو — خواندن دما و رطوبت
در ادامه یک اسکچ پایه آردوینو قرار دارد. آن را آپلود کنید تا دمای فعلی و رطوبت را روی سریال مانیتور ببینید.
#include <Wire.h>
#include "Adafruit_HTU21DF.h"
Adafruit_HTU21DF htu = Adafruit_HTU21DF();
void setup() {
Serial.begin(9600);
if (!htu.begin()) {
Serial.println("Couldn't find sensor!");
while (1);
}
}
void loop() {
float temp = htu.readTemperature();
float rel_hum = htu.readHumidity();
Serial.print("Temp: "); Serial.print(temp); Serial.print(" C");
Serial.print("\t\t");
Serial.print("Humidity: "); Serial.print(rel_hum); Serial.println(" %");
delay(500);
} پس از آپلود کد، مانیتور سریال را با نرخ 9600bps باز کنید. باید خروجی مشابه مثال زیر ببینید. میتوانید با بازدم روی سنسور، تغییرات رطوبت و دما را مشاهده کنید.

توضیح کد:
کد نسبتاً ساده است. در ابتدا کتابخانههای Wire.h و Adafruit_HTU21DF.h اضافه شده و یک شیء Adafruit_HTU21DF در فضای global ساخته شده است.
#include <Wire.h> #include "Adafruit_HTU21DF.h" Adafruit_HTU21DF htu = Adafruit_HTU21DF();
در تابع setup ارتباط سریال با کامپیوتر راهاندازی شده و سپس تابع begin() فراخوانی میشود.
تابع htu.begin() سنسور را مقداردهی اولیه میکند. این تابع در صورت یافتن و پاسخدهی صحیح سنسور مقدار True و در صورت عدم یافتن مقدار False برمیگرداند.
void setup() {
Serial.begin(9600);
if (!htu.begin()) {
Serial.println("Couldn't find sensor!");
while (1);
}
} پس از مقداردهی اولیه میتوانید با عملگر نقطه متدهای شیء htu را فراخوانی کنید.
htu.readTemperature() یک مقدار اعشاری دما را بر حسب °C بازمیگرداند. برای تبدیل به درجه فارنهایت از رابطه °F = °C × 1.8 + 32 استفاده کنید.
htu.readHumidity() مقدار رطوبت را به صورت اعشاری بین 0 و 100 برمیگرداند (درصد رطوبت).
void loop() {
float temp = htu.readTemperature();
float rel_hum = htu.readHumidity();
Serial.print("Temperature: "); Serial.print(temp); Serial.print(" C");
Serial.print("\t");
Serial.print("Humidity: "); Serial.print(rel_hum); Serial.println(" %");
delay(500);
}











