جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-23 12:53
HTS221 عبارة عن مستشعر رقمي سعوي مدمج للغاية للرطوبة النسبية ودرجة الحرارة. وهو يتضمن عنصر استشعار ودائرة متكاملة خاصة بتطبيق إشارة مختلطة (ASIC) لتوفير معلومات القياس من خلال السطوح البينية التسلسلية الرقمية. مدمج مع العديد من الميزات ، يعد هذا أحد أكثر أجهزة الاستشعار ملاءمةً لقياسات الرطوبة ودرجة الحرارة الحرجة.
في هذا البرنامج التعليمي ، تم توضيح واجهة وحدة الاستشعار HTS221 مع فوتون الجسيمات. لقراءة قيم الرطوبة ودرجة الحرارة ، استخدمنا الجسيمات مع محول I2c. يجعل هذا المحول I2C الاتصال بوحدة المستشعر أسهل وأكثر موثوقية.
الخطوة 1: الأجهزة المطلوبة:
تشمل المواد التي نحتاجها لتحقيق هدفنا مكونات الأجهزة التالية:
1. HTS221
2. جسيم الفوتون
3. كابل I2C
4. I2C Shield للفوتون الجسيمي
الخطوة 2: ربط الأجهزة:
يشرح قسم توصيل الأجهزة بشكل أساسي اتصالات الأسلاك المطلوبة بين المستشعر وفوتون الجسيمات. يعد التأكد من التوصيلات الصحيحة ضرورة أساسية أثناء العمل على أي نظام للإخراج المطلوب. إذن ، الاتصالات المطلوبة هي كما يلي:
سيعمل HTS221 على I2C. فيما يلي مثال على مخطط الأسلاك ، يوضح كيفية توصيل كل واجهة من أجهزة الاستشعار.
خارج الصندوق ، تم تكوين اللوحة لواجهة I2C ، لذلك نوصي باستخدام هذا التوصيل إذا كنت غير مدرك.
كل ما تحتاجه هو أربعة أسلاك! مطلوب أربعة اتصالات فقط دبابيس Vcc و Gnd و SCL و SDA ويتم توصيلها بمساعدة كابل I2C.
هذه الوصلات موضحة في الصور أعلاه.
الخطوة الثالثة: كود قياس الرطوبة ودرجة الحرارة:
لنبدأ الآن برمز الجسيمات.
أثناء استخدام وحدة المستشعر مع الجسيمات ، نقوم بتضمين مكتبة application.h و spark_wiring_i2c.h. تحتوي مكتبة "application.h" و spark_wiring_i2c.h على الوظائف التي تسهل اتصال i2c بين المستشعر والجسيم.
يتم توفير رمز الجسيمات بالكامل أدناه لراحة المستخدم:
#يشمل
#يشمل
// HTS221 عنوان I2C هو 0x5F
#define Addr 0x5F
رطوبة مزدوجة = 0.0 ؛
مزدوج cTemp = 0.0 ؛
مزدوج fTemp = 0.0 ؛
درجة الحرارة int = 0 ؛
الإعداد باطل()
{
// تعيين متغير
Particle.variable ("i2cdevice"، "HTS221") ؛
متغير الجسيمات ("الرطوبة" ، الرطوبة) ؛
Particle.variable ("cTemp" ، cTemp) ؛
// تهيئة اتصال 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) ؛
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 في العديد من المنتجات الاستهلاكية مثل أجهزة ترطيب الهواء والثلاجات وما إلى ذلك. يجد هذا المستشعر أيضًا تطبيقه في مجال أوسع بما في ذلك أتمتة المنزل الذكي والأتمتة الصناعية ومعدات الجهاز التنفسي وتتبع الأصول والسلع.
موصى به:
قياس الرطوبة باستخدام HYT939 والفوتون الجزيئي: 4 خطوات
قياس الرطوبة باستخدام HYT939 وفوتون الجسيمات: HYT939 هو مستشعر رطوبة رقمي يعمل على بروتوكول اتصال I2C. الرطوبة هي عامل محوري عندما يتعلق الأمر بالنظم الطبية والمختبرات ، لذلك من أجل تحقيق هذه الأهداف ، حاولنا ربط HYT939 مع التوت باي. أنا
قياس الرطوبة ودرجة الحرارة باستخدام HTS221 و Arduino Nano: 4 خطوات
قياس الرطوبة ودرجة الحرارة باستخدام HTS221 و Arduino Nano: HTS221 عبارة عن مستشعر رقمي بالسعة مدمج للغاية للرطوبة النسبية ودرجة الحرارة. يتضمن عنصر استشعار ودائرة متكاملة خاصة بتطبيق إشارة مختلطة (ASIC) لتوفير معلومات القياس من خلال التسلسل الرقمي
قياس درجة الحرارة باستخدام MCP9803 والفوتون الجزيئي: 4 خطوات
قياس درجة الحرارة باستخدام MCP9803 والفوتون الجسيمي: MCP9803 عبارة عن مستشعر درجة حرارة عالي الدقة بسلكين. وهي مُجسَّدة بسجلات قابلة للبرمجة بواسطة المستخدم تسهل تطبيقات استشعار درجة الحرارة. هذا المستشعر مناسب لنظام مراقبة درجة الحرارة متعدد المناطق المتطور للغاية
قياس الرطوبة ودرجة الحرارة باستخدام HTS221 و Raspberry Pi: 4 خطوات
قياس الرطوبة ودرجة الحرارة باستخدام HTS221 و Raspberry Pi: HTS221 عبارة عن مستشعر رقمي سعوي مدمج للغاية للرطوبة النسبية ودرجة الحرارة. يتضمن عنصر استشعار ودائرة متكاملة خاصة بتطبيق إشارة مختلطة (ASIC) لتوفير معلومات القياس من خلال التسلسل الرقمي
قياس الرطوبة ودرجة الحرارة باستخدام HIH6130 والفوتون الجزيئي: 4 خطوات
قياس الرطوبة ودرجة الحرارة باستخدام HIH6130 وفوتون الجسيمات: HIH6130 عبارة عن مستشعر للرطوبة ودرجة الحرارة بإخراج رقمي. توفر هذه المستشعرات مستوى دقة يبلغ ± 4٪ رطوبة نسبية. مع الاستقرار الرائد في الصناعة على المدى الطويل ، I2C الرقمي الحقيقي المعوض لدرجة الحرارة ، الموثوقية الرائدة في الصناعة ، كفاءة الطاقة