সুচিপত্র:

HTS221 এবং কণা ফোটন ব্যবহার করে আর্দ্রতা এবং তাপমাত্রা পরিমাপ: 4 টি ধাপ
HTS221 এবং কণা ফোটন ব্যবহার করে আর্দ্রতা এবং তাপমাত্রা পরিমাপ: 4 টি ধাপ
Anonim
Image
Image

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

এই টিউটোরিয়ালে কণা ফোটনের সাথে HTS221 সেন্সর মডিউলের ইন্টারফেসিং চিত্রিত করা হয়েছে। আর্দ্রতা এবং তাপমাত্রার মান পড়ার জন্য, আমরা একটি I2c অ্যাডাপ্টারের সাথে কণা ব্যবহার করেছি এই I2C অ্যাডাপ্টার সেন্সর মডিউলের সাথে সংযোগ সহজ এবং আরো নির্ভরযোগ্য করে তোলে।

পদক্ষেপ 1: হার্ডওয়্যার প্রয়োজন:

হার্ডওয়্যার প্রয়োজন
হার্ডওয়্যার প্রয়োজন
হার্ডওয়্যার প্রয়োজন
হার্ডওয়্যার প্রয়োজন
হার্ডওয়্যার প্রয়োজন
হার্ডওয়্যার প্রয়োজন

আমাদের লক্ষ্য পূরণের জন্য আমাদের যে উপকরণগুলির প্রয়োজন তা নিম্নলিখিত হার্ডওয়্যার উপাদানগুলি অন্তর্ভুক্ত করে:

1. HTS221

2. কণা ফোটন

3. I2C কেবল

4. কণা ফোটনের জন্য I2C শিল্ড

পদক্ষেপ 2: হার্ডওয়্যার সংযুক্তি:

হার্ডওয়্যার সংযুক্তি
হার্ডওয়্যার সংযুক্তি
হার্ডওয়্যার সংযুক্তি
হার্ডওয়্যার সংযুক্তি

হার্ডওয়্যার হুকআপ বিভাগটি মূলত সেন্সর এবং কণা ফোটনের মধ্যে প্রয়োজনীয় তারের সংযোগ ব্যাখ্যা করে। কাঙ্ক্ষিত আউটপুটের জন্য যে কোনো সিস্টেমে কাজ করার সময় সঠিক সংযোগ নিশ্চিত করা মৌলিক প্রয়োজনীয়তা। সুতরাং, প্রয়োজনীয় সংযোগগুলি নিম্নরূপ:

HTS221 I2C এর উপর কাজ করবে। সেন্সরের প্রতিটি ইন্টারফেসকে কিভাবে ওয়্যার আপ করতে হয় তা দেখানো হচ্ছে ওয়্যারিং ডায়াগ্রামের উদাহরণ।

বাক্সের বাইরে, বোর্ডটি একটি I2C ইন্টারফেসের জন্য কনফিগার করা হয়েছে, যেমন আপনি অন্যথায় অজ্ঞেয়বাদী হলে আমরা এই হুকআপটি ব্যবহার করার পরামর্শ দিই।

আপনার প্রয়োজন শুধু চারটি তারের! VCC, Gnd, SCL এবং SDA পিনের জন্য মাত্র চারটি সংযোগ প্রয়োজন এবং এগুলি I2C তারের সাহায্যে সংযুক্ত।

এই সংযোগগুলি উপরের ছবিতে প্রদর্শিত হয়েছে।

ধাপ 3: আর্দ্রতা এবং তাপমাত্রা পরিমাপের জন্য কোড:

আর্দ্রতা এবং তাপমাত্রা পরিমাপের জন্য কোড
আর্দ্রতা এবং তাপমাত্রা পরিমাপের জন্য কোড

এখন কণা কোড দিয়ে শুরু করা যাক।

কণার সাথে সেন্সর মডিউল ব্যবহার করার সময়, আমরা application.h এবং spark_wiring_i2c.h লাইব্রেরি অন্তর্ভুক্ত করি। "application.h" এবং spark_wiring_i2c.h লাইব্রেরিতে ফাংশন রয়েছে যা সেন্সর এবং কণার মধ্যে i2c যোগাযোগ সহজ করে।

ব্যবহারকারীর সুবিধার জন্য সম্পূর্ণ কণা কোড নিচে দেওয়া হল:

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

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

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

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

দ্বিগুণ আর্দ্রতা = 0.0;

ডবল cTemp = 0.0;

ডবল fTemp = 0.0;

int temp = 0;

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

{

// পরিবর্তনশীল সেট করুন

Particle.variable ("i2cdevice", "HTS221");

Particle.variable ("আর্দ্রতা", আর্দ্রতা);

Particle.variable ("cTemp", cTemp);

// মাস্টার হিসাবে 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);

temp = (val [3] * 256) + val [2]; cTemp = (((T1 - T0) / 8.0) * (temp - T2)) / (T3 - T2) + (T0 / 8.0);

fTemp = (cTemp * 1.8) + 32;

// ড্যাশবোর্ডে আউটপুট ডেটা

Particle.publish ("আপেক্ষিক আর্দ্রতা:", স্ট্রিং (আর্দ্রতা));

বিলম্ব (1000);

Particle.publish ("সেলসিয়াস তাপমাত্রা:", স্ট্রিং (cTemp));

বিলম্ব (1000);

Particle.publish ("ফারেনহাইট তাপমাত্রা:", স্ট্রিং (fTemp));

বিলম্ব (1000);

}

Particle.variable () ফাংশন সেন্সরের আউটপুট সংরক্ষণ করার জন্য ভেরিয়েবল তৈরি করে এবং Particle.publish () ফাংশন সাইটের ড্যাশবোর্ডে আউটপুট প্রদর্শন করে।

আপনার রেফারেন্সের জন্য উপরের ছবিতে সেন্সর আউটপুট দেখানো হয়েছে।

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

অ্যাপ্লিকেশন
অ্যাপ্লিকেশন

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

প্রস্তাবিত: