جدول المحتويات:

Arduino Nano - HTS221 البرنامج التعليمي لمستشعر الرطوبة النسبية ودرجة الحرارة: 4 خطوات
Arduino Nano - HTS221 البرنامج التعليمي لمستشعر الرطوبة النسبية ودرجة الحرارة: 4 خطوات

فيديو: Arduino Nano - HTS221 البرنامج التعليمي لمستشعر الرطوبة النسبية ودرجة الحرارة: 4 خطوات

فيديو: Arduino Nano - HTS221 البرنامج التعليمي لمستشعر الرطوبة النسبية ودرجة الحرارة: 4 خطوات
فيديو: Arduino Nano - HTS221 Relative Humidity and Temperature Sensor Tutorial 2024, يوليو
Anonim
Image
Image

HTS221 عبارة عن مستشعر رقمي سعوي مدمج للغاية للرطوبة النسبية ودرجة الحرارة. وهو يتضمن عنصر استشعار ودائرة متكاملة خاصة بتطبيق إشارة مختلطة (ASIC) لتوفير معلومات القياس من خلال السطوح البينية التسلسلية الرقمية. مدمج مع العديد من الميزات ، يعد هذا أحد أكثر أجهزة الاستشعار ملاءمةً لقياسات الرطوبة ودرجة الحرارة الحرجة. هذا هو العرض التوضيحي باستخدام اردوينو نانو.

الخطوة 1: ماذا تحتاج..

ماذا تحتاج..!!
ماذا تحتاج..!!

1. اردوينو نانو

2. HTS221

3. كابل I²C

4. I²C Shield لـ Arduino Nano

الخطوة الثانية: التوصيلات:

روابط
روابط
روابط
روابط
روابط
روابط
روابط
روابط

خذ درع I2C لـ Arduino Nano وادفعه برفق فوق دبابيس Nano.

ثم قم بتوصيل أحد طرفي كابل I2C بمستشعر HTS221 والطرف الآخر بغطاء I2C.

تظهر الاتصالات في الصورة أعلاه.

الخطوة الثالثة: الكود:

الشفرة
الشفرة

يمكن تنزيل كود اردوينو الخاص بـ HTS221 من مستودع جيثب- مجتمع DCUBE.

هنا هو الرابط لنفسه:

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

نقوم بتضمين مكتبة Wire.h لتسهيل اتصال I2c للمستشعر بلوحة Arduino.

يمكنك أيضًا نسخ الكود من هنا ، ويُعطى على النحو التالي:

// موزعة بترخيص الإرادة الحرة.

// استخدمها بالطريقة التي تريدها ، سواء كانت ربحًا أو مجانًا ، شريطة أن تتناسب مع تراخيص الأعمال المرتبطة بها.

// HTS221

// تم تصميم هذا الرمز للعمل مع الوحدة المصغرة HTS221_I2CS I2C

#يشمل

// HTS221 عنوان I2C هو 0x5F

#define Addr 0x5F

الإعداد باطل()

{

// تهيئة اتصال I2C باعتباره MASTER

Wire.begin () ؛

// تهيئة الاتصال التسلسلي ، اضبط معدل الباود = 9600

Serial.begin (9600) ؛

// بدء نقل I2C

Wire.beginTransmission (العنوان) ؛

// حدد متوسط سجل التكوين

Wire.write (0x10) ؛

// عينات متوسط درجة الحرارة = 256 عينة متوسط الرطوبة = 512

Wire.write (0x1B) ؛

// إيقاف ناقل الحركة I2C

Wire.endTransmission () ؛

// بدء نقل I2C

Wire.beginTransmission (العنوان) ؛

// حدد سجل التحكم 1

Wire.write (0x20) ؛

// الطاقة قيد التشغيل ، التحديث المستمر ، معدل إخراج البيانات = 1 هرتز

Wire.write (0x85) ؛

// إيقاف ناقل الحركة I2C

Wire.endTransmission () ؛

تأخير (300) ؛

}

حلقة فارغة()

{

بيانات int غير الموقعة [2] ؛

int val [4]؛

غير موقعة int H0 ، H1 ، H2 ، H3 ، T0 ، T1 ، T2 ، T3 ، خام ؛

// قيم الرطوبة

لـ (int i = 0 ؛ i <2 ؛ i ++)

{

// بدء نقل I2C

Wire.beginTransmission (العنوان) ؛

// إرسال سجل البيانات

Wire.write ((48 + i)) ؛

// إيقاف ناقل الحركة I2C

Wire.endTransmission () ؛

// طلب 1 بايت من البيانات

Wire.request From (Addr، 1) ؛

// قراءة 1 بايت من البيانات

إذا (Wire.available () == 1)

{

البيانات = Wire.read () ؛

}

}

// تحويل بيانات الرطوبة

H0 = البيانات [0] / 2 ،

H1 = البيانات [1] / 2 ؛

لـ (int i = 0 ؛ i <2 ؛ i ++)

{

// بدء نقل I2C

Wire.beginTransmission (العنوان) ؛

// إرسال سجل البيانات

Wire.write ((54 + i)) ؛

// إيقاف ناقل الحركة I2C

Wire.endTransmission () ؛

// طلب 1 بايت من البيانات

Wire.request From (Addr، 1) ؛

// قراءة 1 بايت من البيانات

إذا (Wire.available () == 1)

{

البيانات = Wire.read () ؛

}

}

// تحويل بيانات الرطوبة

H2 = (البيانات [1] * 256.0) + البيانات [0] ؛

لـ (int i = 0 ؛ i <2 ؛ i ++)

{

// بدء نقل I2C

Wire.beginTransmission (العنوان) ؛

// إرسال سجل البيانات

Wire.write ((58 + i)) ؛

// إيقاف ناقل الحركة I2C

Wire.endTransmission () ؛

// طلب 1 بايت من البيانات

Wire.request From (Addr، 1) ؛

// قراءة 1 بايت من البيانات

إذا (Wire.available () == 1)

{

البيانات = Wire.read () ؛

}

}

// تحويل بيانات الرطوبة

H3 = (البيانات [1] * 256.0) + البيانات [0] ؛

// قيم درجة الحرارة

// بدء نقل I2C

Wire.beginTransmission (العنوان) ؛

// إرسال سجل البيانات

Wire.write (0x32) ؛

// إيقاف ناقل الحركة I2C

Wire.endTransmission () ؛

// طلب 1 بايت من البيانات

Wire.request From (Addr، 1) ؛

// قراءة 1 بايت من البيانات

إذا (Wire.available () == 1)

{

T0 = Wire.read () ؛

}

// بدء نقل I2C

Wire.beginTransmission (العنوان) ؛

// إرسال سجل البيانات

Wire.write (0x33) ؛

// إيقاف ناقل الحركة I2C

Wire.endTransmission () ؛

// طلب 1 بايت من البيانات

Wire.request From (Addr، 1) ؛

// قراءة 1 بايت من البيانات

إذا (Wire.available () == 1)

{

T1 = Wire.read () ؛

}

// بدء نقل I2C

Wire.beginTransmission (العنوان) ؛

// إرسال سجل البيانات

Wire.write (0x35) ؛

// إيقاف ناقل الحركة I2C

Wire.endTransmission () ؛

// طلب 1 بايت من البيانات

Wire.request From (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 (العنوان) ؛

// إرسال سجل البيانات

Wire.write ((60 + i)) ؛

// إيقاف ناقل الحركة I2C

Wire.endTransmission () ؛

// طلب 1 بايت من البيانات

Wire.request From (Addr، 1) ؛

// قراءة 1 بايت من البيانات

إذا (Wire.available () == 1)

{

البيانات = Wire.read () ؛

}

}

// تحويل البيانات

T2 = (البيانات [1] * 256.0) + البيانات [0] ؛

لـ (int i = 0 ؛ i <2 ؛ i ++)

{

// بدء نقل I2C

Wire.beginTransmission (العنوان) ؛

// إرسال سجل البيانات

Wire.write ((62 + i)) ؛

// إيقاف ناقل الحركة I2C

Wire.endTransmission () ؛

// طلب 1 بايت من البيانات

Wire.request From (Addr، 1) ؛

// قراءة 1 بايت من البيانات

إذا (Wire.available () == 1)

{

البيانات = Wire.read () ؛

}

}

// تحويل البيانات

T3 = (البيانات [1] * 256.0) + البيانات [0] ؛

// بدء نقل I2C

Wire.beginTransmission (العنوان) ؛

// إرسال سجل البيانات

Wire.write (0x28 | 0x80) ؛

// إيقاف ناقل الحركة I2C

Wire.endTransmission () ؛

// طلب 4 بايت من البيانات

Wire.request From (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.print ("الرطوبة النسبية:") ؛

Serial.print (الرطوبة) ؛

Serial.println ("٪ RH") ؛

Serial.print ("درجة الحرارة بالدرجة المئوية:") ؛

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

Serial.print ("درجة الحرارة بالفهرنهايت:") ؛

Serial.print (fTemp) ؛

Serial.println ("F") ؛

تأخير (500) ؛

}

الخطوة 4: التطبيقات:

يمكن استخدام HTS221 في العديد من المنتجات الاستهلاكية مثل أجهزة ترطيب الهواء والثلاجات وما إلى ذلك. يجد هذا المستشعر أيضًا تطبيقه في مجال أوسع بما في ذلك أتمتة المنزل الذكي والأتمتة الصناعية ومعدات الجهاز التنفسي وتتبع الأصول والسلع.

موصى به: