Search Code

لومړی ۳۵: د HTU21D تودوخې سینسر کارول د آردوینو سره

لومړی ۳۵: د HTU21D تودوخې سینسر کارول د آردوینو سره

لوست ۳۵: د HTU21D تودوخې سینسر د Arduino سره کارول

په دې لوست کې به موږ زده کړو چې څنګه د HTU21D تودوخې سینسر د Arduino سره ونښلوو. دا سینسر د I2C اړیکو په کارولو سره د تودوخې او رطوبت دقیق اندازه کولو اجازه ورکوي، چې دا په بېلابېلو پروژو کې د یوځای کولو لپاره اسانه کوي. د دې لوست په پای کې به تاسو وکولای شئ چې د سینسر څخه د تودوخې او رطوبت ارزښتونه ولولئ او په سریال مانیټر کې یې ښکاره کړئ.

HTU21D module

د دې پروژې لپاره به موږ د Adafruit کتابتون څخه کار واخلو، کوم چې د HTU21D سینسر سره د اړیکو لپاره یوه مستقیمه لار برابروي. تاسو به زده کړئ چې څنګه تارونه وتړئ، کوډ ولیکئ، او په پروګرام کې کارول شوي مهم پېژندونکي وپېژنئ. که تاسو د پروسې په هرې برخې کې روښانتیا ته اړتیا لرئ، تاسو کولای شئ ویډیو ته مراجعه وکړئ (په ویډیو کې په 0:00).

هارډویر تشریح شوی

HTU21D یو ډیجیټل رطوبت او تودوخې سینسر دی. دا د 1.5V څخه تر 3.6V پورې د ولټاژ په حد کې کار کوي، چې دا د 3.3V او 5V دواړو سیسټمونو لپاره مناسب کوي. سینسر د I2C له لارې اړیکه نیسي، چې د معلوماتو د لیږد لپاره یوازې دوه تارونو ته اړتیا لري: سریال ډیټا لاین (SDA) او سریال کلاک لاین (SCL). سینسر ډېر ټیټ بریښنا مصرف لري، چې کله بې کاره وي یوازې 0.02 µA او د اندازې په وخت کې تر 450 µA پورې راکاږي.

د سینسر سربېره، تاسو به د Arduino بورډ او ځینې جمپر تارونو ته اړتیا ولرئ ترڅو هرڅه ونښلوئ. اړیکې ساده دي: سینسر ته بریښنا ورکړئ، د ډیټا لاینونه ونښلوئ، او تاسو چمتو یاست. ډاډ ترلاسه کړئ چې ستاسو اړیکې خوندي دي ترڅو د اړیکو کومې ستونزې څخه مخنیوی وشي.

ډیټاشیټ تفصیلات

جوړونکی TE Connectivity
د پرزې شمېره HTU21D-F
منطق/IO ولټاژ 1.5 - 3.6 V
د بریښنا رسولو ولټاژ 3.3 V
د تولید جریان (عادي) 0.02 µA (بې کاره)، 450 µA (فعال)
د تودوخې حد -40 څخه تر +125 °C
د رطوبت حد 0 څخه تر 100 % RH
ریزولوشن (تودوخه) 0.01 °C
ریزولوشن (رطوبت) 0.04 % RH
بسته بندي DFN-8

 

  • د زیان څخه مخنیوي لپاره د بریښنا رسولو مناسب ولټاژ (1.5 - 3.6 V) ډاډمن کړئ.
  • که اړتیا وي په SDA او SCL لاینونو کې پل-اپ ریزسټرونه وکاروئ.
  • د I2C اړیکو کې د شور کمولو لپاره تارونه لنډ وساتئ.
  • د تېروونکو انپټونو څخه مخنیوي لپاره اړیکې په دقت سره وڅیړئ.
  • که د تودوخې اعظمي حد ته نږدې کار کوئ، د تودوخې سنک وکاروئ.

د تارونو د نښلولو لارښوونې

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

د HTU21D سینسر خپل Arduino سره د نښلولو لپاره، لومړی د بریښنا پنونه ونښلوئ. د سینسر کیڼ پن د Arduino په 3.3V آوټ پوټ سره ونښلوئ. دوهم پن باید ځمکې (GND) سره ونښلول شي. بیا، د سینسر SDA پن د Arduino د A4 پن سره ونښلوئ، کوم چې د I2C اړیکو لپاره د ډیټا لاین په توګه کار کوي. په پای کې، د سینسر SCL پن د Arduino په A5 پن سره ونښلوئ، کوم چې د کلاک لاین په توګه کار کوي. ډاډ ترلاسه کړئ چې ټولې اړیکې خوندي دي ترڅو د باوري اړیکو ساتنه وشي.

که تاسو بله بورډ کاروئ، د SDA او SCL پنونه ممکن توپیر ولري، نو د خپل بورډ مشخصات وګورئ. په ویډیو کې، د تارونو د نښلولو بدیل اختیارونه په لنډه توګه بحث شوي دي (په ویډیو کې په 1:30).

د کوډ مثالونه او تفصیل

موږ به اوس هغه کوډ وګورو چې د HTU21D سینسر سره اړیکه نیسي. لومړی، موږ اړتیا لرو چې د I2C اړیکو او HTU21D سینسر لپاره اړین کتابتونونه شامل کړو. لاندې اقتباس د سیټ اپ فنکشن ښیي:

void setup() {
  Serial.begin(9600);
  if (!htu.begin()) {
    Serial.println("Couldn't find sensor!");
    while (1);
  }
}

دلته، موږ سریال مانیټر د 9600 د بوډ نرخ سره پیل کوو. بیا موږ د htu.begin() سره د سینسر د پیل کولو هڅه کوو. که سینسر ونه موندل شي، پروګرام به د تېروتنې پیغام چاپ کړي او ودریږي.

بیا، موږ په لوپ فنکشن کې په دوامداره توګه د تودوخې او رطوبت ارزښتونه لوستل کوو:

void loop() {
    float temp = htu.readTemperature();
    float rel_hum = htu.readHumidity();
    Serial.print("Temperature: "); Serial.print(temp); Serial.println(" C");
    Serial.print("Humidity: "); Serial.print(rel_hum); Serial.println(" %");
    delay(500);
}

په دې لوپ کې، موږ د htu.readTemperature() په کارولو سره تودوخه لوستو او په temp متغیر کې یې ذخیره کوو. په ورته ډول، موږ د htu.readHumidity() سره رطوبت لوستو. ارزښتونه بیا په هر 500 ملی ثانیه کې سریال مانیټر ته چاپ کیږي.

د ډېر منظم چلند لپاره، تاسو کولای شئ د لوستلو د سمبالولو لپاره فنکشنونه تعریف کړئ. بشپړ کوډ به د دې مقالې لاندې بار شي، چې تاسو ته د بحث شویو ټولو فعالیتونو بشپړ لاسرسی درکوي.

ښکارونه / څه تمه وکړو

کله چې تاسو کوډ خپل Arduino ته پورته کړئ او سریال مانیټر خلاص کړئ، تاسو باید د تودوخې او رطوبت دوامداره لوستل وګورئ. ارزښتونه به په هر نیم ثانیه کې تازه شي. که سینسر د خپل اعظمي حد 125 °C څخه پورته تودوخه کشف کړي، دا ممکن صفر یا غلط ارزښتونه ښکاره کړي. دا د ازموینې پر مهال یوه عامه ستونزه ده چې باید یې وګورئ (په ویډیو کې په 4:30).

د ویډیو وختونه

  • [00:00] پېژندنه
  • [00:22] د سینسر کتنه
  • [01:22] د ډیټاشیټ بیاکتنه
  • [02:28] تارونه نښلول
  • [03:03] د کتابتون نصبول
  • [04:05] د کوډ تشریح (برخه ۱)
  • [08:33] د کوډ تشریح (برخه ۲)
  • [07:34] ژوندۍ ښکارونه

Images

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)
Language: 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);
}

Things you might need

Files📁

Arduino Libraries (zip)