Search Code

سبق 35: Arduino کے ساتھ HTU21D درجہ حرارت سینسر کا استعمال

سبق 35: Arduino کے ساتھ HTU21D درجہ حرارت سینسر کا استعمال

سبق 35: 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
لاجک/آؤٹ پٹ وولٹیج 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] کوڈ کی وضاحت (حصہ 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);
}

آپ کو جن چیزوں کی ضرورت ہو سکتی ہے

وسائل اور حوالہ جات

فائلیں📁

آرڈوینو لائبریریاں (زپ)