شِفر (کود) جستجو

درس 35: استفاده از حساس(حس کننده) دمای HTU21D با آردوینو

درس 35: استفاده از حساس(حس کننده) دمای HTU21D با آردوینو

این پروژه شما را در استفاده از یک آردوینو برای خواندن داده‌های دما و رطوبت از حساس(حس کننده) HTU21D-F راهنمایی می‌کند. این حساس(حس کننده) ارزان و به‌طور گسترده در دسترس است و آن را برای انواع پروژه‌ها ایده‌آل می‌سازد. این حساس(حس کننده) داده‌ها را از طریق I2C، یک پروتکل ارتباطی دیجیتال رایج، خروجی می‌دهد. یادگیری نحوهٔ استفاده از این حساس(حس کننده) و I2C امکانات زیادی را برای پروژه‌های شما باز خواهد کرد.

HTU21D module

کاربردهای عملی:

  • ساخت یک مانیتور محیطی برای خانه هوشمند
  • ساخت یک ایستگاه هواشناسی
  • توسعه یک محفظه با کنترل شرایط محیطی برای تجهیزات الکترونیکی حساس
  • پایش دما و رطوبت در گلخانه یا تراریوم

سخت‌افزار/قطعات

به اجزای زیر نیاز خواهید داشت:

  • برد آردوینو (مثلاً Uno, Nano)
  • حساس(حس کننده) دما و رطوبت HTU21D-F (در ویدیو، در 00:22)
  • سیم‌های اتصال
  • بردبورد (اختیاری، اما توصیه‌شده)

راهنمای سیم‌کشی

سیم‌کشی ساده است. حساس(حس کننده) را به آردوینو به‌صورت زیر وصل کنید (در ویدئو در 02:28):

  • VCC حساس(حس کننده) به 3.3V آردوینو
  • پایه GND حساس(حس کننده) به پایه GND آردوینو
  • پایه SDA حساس(حس کننده) به A4 آردوینو
  • SCL حساس(حس کننده) به پایه A5 آردوینو

Arduino wiring for HTU21DF light intesity sensor
Arduino wiring for HTU21DF light intesity sensor

توضیح شِفر (کود)

شِفر (کود) ارائه‌شده از کتابخانه Adafruit HTU21D-F (در ویدیو در 03:03) برای تعامل با حساس(حس کننده) استفاده می‌کند. بخش‌های کلیدی عبارت‌اند از:


// These are the lines that you can configure:
const int inPin =A0;//can change
const int iteration = 1000; //can change (see video at 00:22)
const float LM35_FACTOR =0.01;// do not change

inPin: پایه آنالوگ متصل به حساس(حس کننده) دما را مشخص می‌کند. می‌توانید آن را متناسب با سیم‌کشی خود تغییر دهید.

iteration: این متغیر تعداد خوانش‌هایی را که برای میانگین‌گیری دما گرفته می‌شوند کنترل می‌کند. افزایش آن دقت را بهبود می‌بخشد اما سرعت خوانش‌ها را کند می‌کند (در ویدئو در 00:22).

آنgetHTU()تابع (در ویدیو در 08:46) به شما اجازه می‌دهد با ارسال یک خصیصه ('C', 'F', 'K' یا 'H') به‌عنوان آرگومان، دما را به صورت سلسیوس، فارنهایت یا کلوین یا رطوبت را دریافت کنید. سپس شِفر (کود) از این تابع برای نمایش داده‌ها در نمایشگر مسلسل استفاده می‌کند.


float getTemperature(char type) {
  // ... (code to read temperature and humidity) ...
  if (type == 'F') {
    value = averageTemperature * 9 / 5 + 32; // Fahrenheit
  } else if (type == 'K') {
    value = averageTemperature + 273.15; // Kelvin
  } else {
    value = averageTemperature; // Celsius
  }
  return value;
}

پروژه زنده/نمایش

ویدئو عملکرد حساس(حس کننده) را نشان می‌دهد (در ویدئو در 07:34). نمایشگر مسلسل خوانش‌های دما و رطوبت را نمایش می‌دهد. ارائه‌دهنده همچنین نشان می‌دهد که چگونه شِفر (کود) می‌تواند بر اساس آستانه‌های دما اقداماتی را اجرا کند (در ویدئو در 06:45).

فصل‌ها

  • [00:00] مقدمه
  • [00:22] نمای کلی حساس(حس کننده)
  • [01:22] بررسی دیتاشیت
  • [02:28] سیم‌کشی
  • [03:03] نصب کتابخانه
  • [04:05] توضیح شِفر (کود) (قسمت 1)
  • [08:33] توضیح شِفر (کود) (بخش 2)
  • [07:34] نمایش زنده

تصاویر

thumb_robojax_HTU21DF_types-1756423961-8524
thumb_robojax_HTU21DF_types-1756423961-8524
Arduino wiring for HTU21DF light intesity sensor
Arduino wiring for HTU21DF light intesity sensor
HTU21D module
HTU21D module
HTU21D module-back
HTU21D module-back
212-Arduino code using HTU21D-F Humidity & Temperature Sensor (basic)
زبان: C++
++
/***************************************************
  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);
}

مواردی که ممکن است به آن‌ها نیاز داشته باشید

فایل‌ها📁

کتابخانه‌های آردوینو (zip)