সুচিপত্র:

Arduino Nano - HTS221 আপেক্ষিক আর্দ্রতা এবং তাপমাত্রা সেন্সর টিউটোরিয়াল: 4 টি ধাপ
Arduino Nano - HTS221 আপেক্ষিক আর্দ্রতা এবং তাপমাত্রা সেন্সর টিউটোরিয়াল: 4 টি ধাপ

ভিডিও: Arduino Nano - HTS221 আপেক্ষিক আর্দ্রতা এবং তাপমাত্রা সেন্সর টিউটোরিয়াল: 4 টি ধাপ

ভিডিও: Arduino Nano - HTS221 আপেক্ষিক আর্দ্রতা এবং তাপমাত্রা সেন্সর টিউটোরিয়াল: 4 টি ধাপ
ভিডিও: Arduino Nano 33 BLE Sense — плата с голосовым управлением, IMU, датчиком цвета и метеосенсором. 2024, নভেম্বর
Anonim
Image
Image

HTS221 আপেক্ষিক আর্দ্রতা এবং তাপমাত্রার জন্য একটি অতি কম্প্যাক্ট ক্যাপাসিটিভ ডিজিটাল সেন্সর। ডিজিটাল সিরিয়াল ইন্টারফেসের মাধ্যমে পরিমাপের তথ্য প্রদানের জন্য এটি একটি সেন্সিং উপাদান এবং একটি মিশ্র সংকেত অ্যাপ্লিকেশন নির্দিষ্ট সমন্বিত সার্কিট (ASIC) অন্তর্ভুক্ত করে। এতগুলি বৈশিষ্ট্যগুলির সাথে একীভূত এটি সমালোচনামূলক আর্দ্রতা এবং তাপমাত্রা পরিমাপের জন্য সবচেয়ে উপযুক্ত সেন্সরগুলির মধ্যে একটি। এখানে arduino ন্যানো সঙ্গে বিক্ষোভ।

ধাপ 1: আপনার যা প্রয়োজন..

তুমি কি চাও..!!
তুমি কি চাও..!!

1. আরডুইনো ন্যানো

2. HTS221

3. I²C কেবল

4. Arduino Nano এর জন্য I²C শিল্ড

ধাপ 2: সংযোগ:

সংযোগ
সংযোগ
সংযোগ
সংযোগ
সংযোগ
সংযোগ
সংযোগ
সংযোগ

আরডুইনো ন্যানোর জন্য একটি I2C ieldাল নিন এবং আলতো করে ন্যানোর পিনের উপরে চাপ দিন।

তারপর I2C তারের এক প্রান্তকে HTS221 সেন্সর এবং অন্য প্রান্তকে I2C ieldালের সাথে সংযুক্ত করুন।

উপরের ছবিতে কানেকশন দেখানো হয়েছে।

ধাপ 3: কোড:

কোড
কোড

HTS221 এর জন্য arduino কোডটি আমাদের github repository- DCUBE কমিউনিটি থেকে ডাউনলোড করা যাবে।

এখানে একই জন্য লিঙ্ক:

github.com/DcubeTechVentures/HTS221/blob/master/Arduino/HTS221.ino

Arduino বোর্ডের সাথে সেন্সরের I2c যোগাযোগের সুবিধার্থে আমরা লাইব্রেরি Wire.h অন্তর্ভুক্ত করি।

আপনি এখান থেকে কোডটি অনুলিপি করতে পারেন, এটি নিম্নরূপ দেওয়া হয়েছে:

// একটি স্বাধীন ইচ্ছা লাইসেন্স দিয়ে বিতরণ করা হয়।

// এটি যে কোন উপায়ে ব্যবহার করুন, মুনাফা বা বিনামূল্যে, যদি এটি তার সংশ্লিষ্ট কাজের লাইসেন্সের সাথে খাপ খায়।

// HTS221

// এই কোডটি HTS221_I2CS I2C মিনি মডিউলের সাথে কাজ করার জন্য ডিজাইন করা হয়েছে

#অন্তর্ভুক্ত

// HTS221 I2C ঠিকানা হল 0x5F

#সংযোজনকারী 0x5F

অকার্যকর সেটআপ()

{

// মাস্টার হিসাবে I2C যোগাযোগ শুরু করুন

Wire.begin ();

// সিরিয়াল যোগাযোগ শুরু করুন, বড রেট = 9600 সেট করুন

Serial.begin (9600);

// I2C ট্রান্সমিশন শুরু করুন

Wire.beginTransmission (Addr);

// গড় কনফিগারেশন রেজিস্টার নির্বাচন করুন

Wire.write (0x10);

// তাপমাত্রার গড় নমুনা = 256, আর্দ্রতার গড় নমুনা = 512

Wire.write (0x1B);

// I2C ট্রান্সমিশন বন্ধ করুন

Wire.endTransmission ();

// I2C ট্রান্সমিশন শুরু করুন

Wire.beginTransmission (Addr);

// নিয়ন্ত্রণ নিবন্ধন 1 নির্বাচন করুন

Wire.write (0x20);

// পাওয়ার অন, ক্রমাগত আপডেট, ডেটা আউটপুট হার = 1 Hz

Wire.write (0x85);

// I2C ট্রান্সমিশন বন্ধ করুন

Wire.endTransmission ();

বিলম্ব (300);

}

অকার্যকর লুপ ()

{

স্বাক্ষরবিহীন int ডেটা [2];

স্বাক্ষরবিহীন int val [4];

স্বাক্ষরবিহীন int H0, H1, H2, H3, T0, T1, T2, T3, কাঁচা;

// আর্দ্রতা calliberation মান

জন্য (int i = 0; i <2; i ++)

{

// I2C ট্রান্সমিশন শুরু করুন

Wire.beginTransmission (Addr);

// ডেটা রেজিস্টার পাঠান

Wire.write ((48 + i));

// I2C ট্রান্সমিশন বন্ধ করুন

Wire.endTransmission ();

// 1 বাইট ডেটা অনুরোধ করুন

Wire.requestFrom (Addr, 1);

// 1 বাইট ডেটা পড়ুন

যদি (Wire.available () == 1)

{

ডেটা = ওয়্যার.রেড ();

}

}

// আর্দ্রতা ডেটা রূপান্তর করুন

H0 = ডেটা [0] / 2;

H1 = ডেটা [1] / 2;

জন্য (int i = 0; i <2; i ++)

{

// I2C ট্রান্সমিশন শুরু করুন

Wire.beginTransmission (Addr);

// ডেটা রেজিস্টার পাঠান

Wire.write ((54 + i));

// I2C ট্রান্সমিশন বন্ধ করুন

Wire.endTransmission ();

// 1 বাইট ডেটা অনুরোধ করুন

Wire.requestFrom (Addr, 1);

// 1 বাইট ডেটা পড়ুন

যদি (Wire.available () == 1)

{

ডেটা = ওয়্যার.রেড ();

}

}

// আর্দ্রতা ডেটা রূপান্তর করুন

H2 = (data [1] * 256.0) + data [0];

জন্য (int i = 0; i <2; i ++)

{

// I2C ট্রান্সমিশন শুরু করুন

Wire.beginTransmission (Addr);

// ডেটা রেজিস্টার পাঠান

Wire.write ((58 + i));

// I2C ট্রান্সমিশন বন্ধ করুন

Wire.endTransmission ();

// 1 বাইট ডেটা অনুরোধ করুন

Wire.requestFrom (Addr, 1);

// 1 বাইট ডেটা পড়ুন

যদি (Wire.available () == 1)

{

ডেটা = ওয়্যার.রেড ();

}

}

// আর্দ্রতা ডেটা রূপান্তর করুন

H3 = (data [1] * 256.0) + data [0];

// তাপমাত্রা calliberation মান

// I2C ট্রান্সমিশন শুরু করুন

Wire.beginTransmission (Addr);

// ডেটা রেজিস্টার পাঠান

Wire.write (0x32);

// I2C ট্রান্সমিশন বন্ধ করুন

Wire.endTransmission ();

// 1 বাইট ডেটা অনুরোধ করুন

Wire.requestFrom (Addr, 1);

// 1 বাইট ডেটা পড়ুন

যদি (Wire.available () == 1)

{

T0 = Wire.read ();

}

// I2C ট্রান্সমিশন শুরু করুন

Wire.beginTransmission (Addr);

// ডেটা রেজিস্টার পাঠান

Wire.write (0x33);

// I2C ট্রান্সমিশন বন্ধ করুন

Wire.endTransmission ();

// 1 বাইট ডেটা অনুরোধ করুন

Wire.requestFrom (Addr, 1);

// 1 বাইট ডেটা পড়ুন

যদি (Wire.available () == 1)

{

T1 = Wire.read ();

}

// I2C ট্রান্সমিশন শুরু করুন

Wire.beginTransmission (Addr);

// ডেটা রেজিস্টার পাঠান

Wire.write (0x35);

// I2C ট্রান্সমিশন বন্ধ করুন

Wire.endTransmission ();

// 1 বাইট ডেটা অনুরোধ করুন

Wire.requestFrom (Addr, 1);

// 1 বাইট ডেটা পড়ুন

যদি (Wire.available () == 1)

{

কাঁচা = Wire.read ();

}

কাঁচা = কাঁচা এবং 0x0F;

// তাপমাত্রা কলিবেরেশন মানগুলিকে 10-বিটে রূপান্তর করুন

T0 = ((কাঁচা এবং 0x03) * 256) + T0;

T1 = ((কাঁচা এবং 0x0C) * 64) + T1;

জন্য (int i = 0; i <2; i ++)

{

// I2C ট্রান্সমিশন শুরু করুন

Wire.beginTransmission (Addr);

// ডেটা রেজিস্টার পাঠান

Wire.write ((60 + i));

// I2C ট্রান্সমিশন বন্ধ করুন

Wire.endTransmission ();

// 1 বাইট ডেটা অনুরোধ করুন

Wire.requestFrom (Addr, 1);

// 1 বাইট ডেটা পড়ুন

যদি (Wire.available () == 1)

{

ডেটা = ওয়্যার.রেড ();

}

}

// তথ্য রূপান্তর

T2 = (data [1] * 256.0) + data [0];

জন্য (int i = 0; i <2; i ++)

{

// I2C ট্রান্সমিশন শুরু করুন

Wire.beginTransmission (Addr);

// ডেটা রেজিস্টার পাঠান

Wire.write ((62 + i));

// I2C ট্রান্সমিশন বন্ধ করুন

Wire.endTransmission ();

// 1 বাইট ডেটা অনুরোধ করুন

Wire.requestFrom (Addr, 1);

// 1 বাইট ডেটা পড়ুন

যদি (Wire.available () == 1)

{

ডেটা = ওয়্যার.রেড ();

}

}

// তথ্য রূপান্তর

T3 = (data [1] * 256.0) + data [0];

// I2C ট্রান্সমিশন শুরু করুন

Wire.beginTransmission (Addr);

// ডেটা রেজিস্টার পাঠান

Wire.write (0x28 | 0x80);

// I2C ট্রান্সমিশন বন্ধ করুন

Wire.endTransmission ();

// 4 বাইট ডেটার অনুরোধ করুন

Wire.requestFrom (Addr, 4);

// 4 বাইট ডেটা পড়ুন

// আর্দ্রতা msb, আর্দ্রতা lsb, temp msb, temp lsb

যদি (Wire.available () == 4)

{

val [0] = Wire.read ();

val [1] = Wire.read ();

val [2] = Wire.read ();

val [3] = Wire.read ();

}

// তথ্য রূপান্তর

ভাসমান আর্দ্রতা = (val [1] * 256.0) + val [0];

আর্দ্রতা = ((1.0 * H1) - (1.0 * H0)) * (1.0 * আর্দ্রতা - 1.0 * H2) / (1.0 * H3 - 1.0 * H2) + (1.0 * H0);

int temp = (val [3] * 256) + val [2];

ফ্লোট cTemp = (((T1 - T0) / 8.0) * (temp - T2)) / (T3 - T2) + (T0 / 8.0);

ফ্লোট fTemp = (cTemp * 1.8) + 32;

// সিরিয়াল মনিটরে আউটপুট ডেটা

সিরিয়াল.প্রিন্ট ("আপেক্ষিক আর্দ্রতা:");

সিরিয়াল.প্রিন্ট (আর্দ্রতা);

Serial.println (" % RH");

সিরিয়াল.প্রিন্ট ("সেলসিয়াস তাপমাত্রা:");

Serial.print (cTemp); Serial.println ("C");

সিরিয়াল.প্রিন্ট ("ফারেনহাইটে তাপমাত্রা:");

Serial.print (fTemp);

Serial.println ("F");

বিলম্ব (500);

}

ধাপ 4: অ্যাপ্লিকেশন:

HTS221 বিভিন্ন ভোক্তা পণ্য যেমন এয়ার হিউমিডিফায়ার এবং রেফ্রিজারেটর ইত্যাদিতে নিযুক্ত করা যেতে পারে।

প্রস্তাবিত: