جدول المحتويات:
فيديو: Arduino Nano - HTS221 البرنامج التعليمي لمستشعر الرطوبة النسبية ودرجة الحرارة: 4 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:38
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 في العديد من المنتجات الاستهلاكية مثل أجهزة ترطيب الهواء والثلاجات وما إلى ذلك. يجد هذا المستشعر أيضًا تطبيقه في مجال أوسع بما في ذلك أتمتة المنزل الذكي والأتمتة الصناعية ومعدات الجهاز التنفسي وتتبع الأصول والسلع.
موصى به:
اردوينو نانو - SI7050 البرنامج التعليمي لمستشعر درجة الحرارة: 4 خطوات
برنامج Arduino Nano - SI7050 لمستشعر درجة الحرارة: SI7050 عبارة عن مستشعر درجة حرارة رقمي يعمل على بروتوكول اتصال I2C ويوفر دقة عالية على نطاق جهد التشغيل ودرجة الحرارة بالكامل. تُعزى هذه الدقة العالية للمستشعر إلى معالجة الإشارات الجديدة والتحليل الشرجي
Arduino Nano - STS21 البرنامج التعليمي لمستشعر درجة الحرارة: 4 خطوات
Arduino Nano - STS21 برنامج تعليمي لمستشعر درجة الحرارة: يوفر مستشعر درجة الحرارة الرقمي STS21 أداءً فائقًا وبصمة موفرة للمساحة. يوفر إشارات خطية معايرة بتنسيق رقمي I2C. يعتمد تصنيع هذا المستشعر على تقنية CMOSens ، والتي تنسب إلى
Arduino Nano - البرنامج التعليمي لمستشعر درجة الحرارة TMP100: 4 خطوات
اردوينو نانو - برنامج تعليمي لمستشعر درجة الحرارة TMP100: وحدة TMP100 عالية الدقة ومنخفضة الطاقة ومستشعر درجة الحرارة الرقمية I2C. يعتبر TMP100 مثاليًا لقياس درجة الحرارة الممتدة. يوفر هذا الجهاز دقة تبلغ ± 1 درجة مئوية دون الحاجة إلى معايرة أو تكييف إشارة مكون خارجي. هو
الفوتون الجسيمي - البرنامج التعليمي لمستشعر درجة الحرارة TCN75A: 4 خطوات
فوتون الجسيمات - TCN75A مستشعر درجة الحرارة التعليمي: TCN75A عبارة عن مستشعر درجة حرارة تسلسلي ثنائي الأسلاك مدمج مع محول درجة حرارة إلى رقمي. تم دمجه مع سجلات المستخدم القابلة للبرمجة والتي توفر المرونة لتطبيقات استشعار درجة الحرارة. تسمح إعدادات التسجيل للمستخدمين
فوتون الجسيمات - البرنامج التعليمي لمستشعر درجة الحرارة ADT75: 4 خطوات
جسيم الفوتون - دليل تعليمي لمستشعر درجة الحرارة ADT75: ADT75 هو مستشعر درجة حرارة رقمي عالي الدقة. وهو يتألف من مستشعر درجة حرارة فجوة النطاق ومحول تناظري رقمي 12 بت لمراقبة درجة الحرارة ورقمنتها. مستشعره شديد الحساسية يجعله كفؤًا بدرجة كافية بالنسبة لي