Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-23 12:54
HTS221 nisbi rütubət və temperatur üçün ultra kompakt kapasitiv rəqəmsal sensordur. Ölçmə məlumatlarını rəqəmsal serial interfeysləri ilə təmin etmək üçün bir hissedici element və qarışıq siqnal tətbiqinin xüsusi inteqrasiya edilmiş dövrə (ASIC) daxildir. Bir çox xüsusiyyətə sahib olan bu, kritik rütubət və temperatur ölçmələri üçün ən uyğun sensorlardandır.
Bu dərslikdə HTS221 sensor modulunun hissəcik fotonu ilə qarşılıqlı əlaqəsi təsvir edilmişdir. Rütubət və temperatur dəyərlərini oxumaq üçün I2c adapteri olan hissəciklərdən istifadə etdik. Bu I2C adapteri sensor moduluna qoşulmağı asanlaşdırır və daha etibarlı edir.
Addım 1: Lazım olan avadanlıq:
Məqsədimizə çatmaq üçün ehtiyacımız olan materiallar aşağıdakı aparat komponentlərindən ibarətdir:
1. HTS221
2. Foton hissəcikləri
3. I2C Kabeli
4. Partikül fotonu üçün I2C Shield
Addım 2: Hardware Bağlantısı:
Avadanlıq bağlama bölməsi əsasən sensor və hissəcik fotonu arasında lazım olan naqillərin əlaqələrini izah edir. İstənilən çıxış üçün hər hansı bir sistem üzərində işləyərkən düzgün əlaqələrin təmin edilməsi əsas zərurətdir. Beləliklə, zəruri əlaqələr aşağıdakılardır:
HTS221 I2C üzərində işləyəcək. Sensorun hər bir interfeysini necə bağlayacağınızı göstərən nümunə naqillər diaqramı.
Qutudan kənarda, lövhə I2C interfeysi üçün konfiqurasiya olunmuşdur, buna görə də başqa cür agnostiksinizsə bu əlaqəni istifadə etməyi məsləhət görürük.
Lazım olan tək şey dörd teldir! Vcc, Gnd, SCL və SDA pinləri üçün yalnız dörd əlaqə lazımdır və bunlar I2C kabelinin köməyi ilə bağlanır.
Bu əlaqələr yuxarıdakı şəkillərdə göstərilmişdir.
Addım 3: Rütubət və İstilik Ölçmə Kodu:
İndi hissəcik kodundan başlayaq.
Sensor modulunu hissəciklə birlikdə istifadə edərkən application.h və spark_wiring_i2c.h kitabxanasını daxil edirik. "application.h" və spark_wiring_i2c.h kitabxanası, sensor və hissəcik arasındakı i2c əlaqəsini asanlaşdıran funksiyaları ehtiva edir.
İstifadəçinin rahatlığı üçün bütün hissəcik kodu aşağıda verilmişdir:
#daxil edin
#daxil edin
// HTS221 I2C ünvanı 0x5F -dir
#Addr 0x5F təyin edin
ikiqat rütubət = 0.0;
ikiqat cTemp = 0.0;
cüt fTemp = 0.0;
int temp = 0;
boş quraşdırma ()
{
// Dəyişən təyin edin
Particle.variable ("i2cdevice", "HTS221");
Particle.variable ("Rütubət", rütubət);
Particle.variable ("cTemp", cTemp);
// I2C ünsiyyətini MASTER olaraq başladın
Wire.begin ();
// Serial rabitəni işə salın, baud dərəcəsini = 9600 olaraq təyin edin
Serial.begin (9600);
// I2C ötürülməsinə başlayın
Wire.beginTransmission (Addr);
// Orta konfiqurasiya qeydini seçin
Wire.write (0x10);
// Orta temperatur nümunələri = 256, Orta rütubət nümunələri = 512
Wire.write (0x1B);
// I2C ötürülməsini dayandırın
Wire.endTransmission ();
// I2C ötürülməsinə başlayın
Wire.beginTransmission (Addr);
// Nəzarət reyestrini seçin1
Wire.write (0x20);
// Güc AÇIQ, Davamlı yeniləmə, Məlumat çıxış sürəti = 1 Hz
Wire.write (0x85);
// I2C ötürülməsini dayandırın
Wire.endTransmission ();
gecikmə (300);
}
boşluq döngəsi ()
{
imzasız int məlumatları [2];
imzasız int val [4];
işarəsiz int H0, H1, H2, H3, T0, T1, T2, T3, xam;
// Nəmlik kalibrləmə dəyərləri
üçün (int i = 0; i <2; i ++)
{
// I2C ötürülməsinə başlayın
Wire.beginTransmission (Addr);
// Məlumat qeydini göndərin
Wire.write ((48 + i));
// I2C ötürülməsini dayandırın
Wire.endTransmission ();
// 1 bayt məlumat tələb edin
Wire.requestFrom (Addr, 1);
// 1 bayt məlumat oxuyun
əgər (Tel.available () == 1)
{
data = Wire.read ();
}
}
// Nəmlik məlumatlarını çevirin
H0 = məlumat [0] / 2;
H1 = məlumat [1] / 2;
üçün (int i = 0; i <2; i ++)
{
// I2C ötürülməsinə başlayın
Wire.beginTransmission (Addr);
// Məlumat qeydini göndərin
Wire.write ((54 + i));
// I2C ötürülməsini dayandırın
Wire.endTransmission ();
// 1 bayt məlumat tələb edin
Wire.requestFrom (Addr, 1);
// 1 bayt məlumat oxuyun
əgər (Tel.available () == 1)
{
data = Wire.read ();
}
}
// Nəmlik məlumatlarını çevirin
H2 = (məlumat [1] * 256.0) + məlumat [0];
üçün (int i = 0; i <2; i ++)
{
// I2C ötürülməsinə başlayın
Wire.beginTransmission (Addr);
// Məlumat qeydini göndərin
Wire.write ((58 + i));
// I2C ötürülməsini dayandırın
Wire.endTransmission ();
// 1 bayt məlumat tələb edin
Wire.requestFrom (Addr, 1);
// 1 bayt məlumat oxuyun
əgər (Tel.available () == 1)
{
data = Wire.read ();
}
}
// Nəmlik məlumatlarını çevirin
H3 = (məlumat [1] * 256.0) + məlumat [0];
// İstilik kalibrləmə dəyərləri
// I2C ötürülməsinə başlayın
Wire.beginTransmission (Addr);
// Məlumat qeydini göndərin
Wire.write (0x32);
// I2C ötürülməsini dayandırın
Wire.endTransmission ();
// 1 bayt məlumat tələb edin
Wire.requestFrom (Addr, 1);
// 1 bayt məlumat oxuyun
əgər (Tel.available () == 1)
{
T0 = Wire.read ();
}
// I2C ötürülməsinə başlayın
Wire.beginTransmission (Addr);
// Məlumat qeydini göndərin
Wire.write (0x33);
// I2C ötürülməsini dayandırın
Wire.endTransmission ();
// 1 bayt məlumat tələb edin
Wire.requestFrom (Addr, 1);
// 1 bayt məlumat oxuyun
əgər (Tel.available () == 1)
{
T1 = Wire.read ();
}
// I2C ötürülməsinə başlayın
Wire.beginTransmission (Addr);
// Məlumat qeydini göndərin
Wire.write (0x35);
// I2C ötürülməsini dayandırın
Wire.endTransmission ();
// 1 bayt məlumat tələb edin
Wire.requestFrom (Addr, 1);
// 1 bayt məlumat oxuyun
əgər (Tel.available () == 1)
{
xam = Wire.read ();
}
xam = xam & 0x0F;
// İstilik kalibrləmə dəyərlərini 10 bitə çevirin
T0 = ((xam və 0x03) * 256) + T0;
T1 = ((xam və 0x0C) * 64) + T1;
üçün (int i = 0; i <2; i ++)
{
// I2C ötürülməsinə başlayın
Wire.beginTransmission (Addr);
// Məlumat qeydini göndərin
Wire.write ((60 + i));
// I2C ötürülməsini dayandırın
Wire.endTransmission ();
// 1 bayt məlumat tələb edin
Wire.requestFrom (Addr, 1);
// 1 bayt məlumat oxuyun
əgər (Tel.available () == 1)
{
data = Wire.read ();
}
}
// Məlumatları çevirin
T2 = (məlumat [1] * 256.0) + məlumat [0];
üçün (int i = 0; i <2; i ++)
{
// I2C ötürülməsinə başlayın
Wire.beginTransmission (Addr);
// Məlumat qeydini göndərin
Wire.write ((62 + i));
// I2C ötürülməsini dayandırın
Wire.endTransmission ();
// 1 bayt məlumat tələb edin
Wire.requestFrom (Addr, 1);
// 1 bayt məlumat oxuyun
əgər (Tel.available () == 1)
{
data = Wire.read ();
}
}
// Məlumatları çevirin
T3 = (məlumat [1] * 256.0) + məlumat [0];
// I2C ötürülməsinə başlayın
Wire.beginTransmission (Addr);
// Məlumat qeydini göndərin
Wire.write (0x28 | 0x80);
// I2C ötürülməsini dayandırın
Wire.endTransmission ();
// 4 bayt məlumat tələb edin
Wire.requestFrom (Addr, 4);
// 4 bayt məlumat oxuyun
// rütubət msb, rütubət lsb, temp msb, temp lsb
əgər (Tel.available () == 4)
{
val [0] = Wire.read ();
val [1] = Wire.read ();
val [2] = Wire.read ();
val [3] = Wire.read ();
}
// Məlumatları çevirin
rütubət = (val [1] * 256.0) + val [0];
rütubət = ((1.0 * H1) - (1.0 * H0)) * (1.0 * rütubət - 1.0 * H2) / (1.0 * H3 - 1.0 * H2) + (1.0 * H0);
temp = (val [3] * 256) + dəyər [2]; cTemp = ((((T1 - T0) / 8.0) * (temp - T2)) / (T3 - T2) + (T0 / 8.0);
fTemp = (cTemp * 1.8) + 32;
// Göstərişlər panelinə məlumat çıxarın
Particle.publish ("Nisbi rütubət:", String (rütubət));
gecikmə (1000);
Particle.publish ("Selsi İstiliyi:", String (cTemp));
gecikmə (1000);
Particle.publish ("Fahrenheitdəki temperatur:", String (fTemp));
gecikmə (1000);
}
Particle.variable () funksiyası sensorun çıxışını saxlamaq üçün dəyişənlər yaradır və Particle.publish () funksiyası saytın tablosuna çıxışı göstərir.
Sensor çıxışı istinad üçün yuxarıdakı şəkildə göstərilmişdir.
Addım 4: Tətbiqlər:
HTS221, hava nəmləndiriciləri və soyuducular kimi müxtəlif istehlak məhsullarında istifadə edilə bilər. Bu sensor, ağıllı ev avtomatlaşdırması, Sənaye avtomatlaşdırması, tənəffüs cihazları, aktiv və malların izlənməsi də daxil olmaqla daha geniş bir sahədə tətbiqini tapır.
Tövsiyə:
Arduino ilə Servo və DHT11 Temperatur və Nəmlik Sensorundan istifadə edərək Avtomatik Soyutma Fanı: 8 addım
Arduino ilə Servo və DHT11 Temperatur və Rütubət Sensorundan istifadə edərək Avtomatik Soyutma Fanı: Bu dərslikdə necə başlamağı öyrənəcəyik & temperatur müəyyən bir səviyyədən yuxarı qalxdıqda bir fanı döndərin
HTS221 və Arduino Nano istifadə edərək Nəmlik və Temperatur Ölçmə: 4 addım
HTS221 və Arduino Nano istifadə edərək Rütubət və Temperatur Ölçmə: HTS221 nisbi rütubət və temperatur üçün ultra kompakt bir kapasitiv rəqəmsal sensordur. Ölçmə məlumatlarını rəqəmsal serial vasitəsilə təmin etmək üçün bir hissedici element və qarışıq siqnal tətbiqinə xüsusi inteqrasiya edilmiş dövrə (ASIC) daxildir
SHT25 və Particle Photon istifadə edərək Temperatur və Rütubətin İzlənməsi: 5 Addım
SHT25 və Particle Photon istifadə edərək Temperatur və Nəmlik Monitorinqi: Bu yaxınlarda temperatur və rütubət monitorinqi tələb edən müxtəlif layihələr üzərində çalışdıq və sonra bu iki parametrin bir sistemin iş səmərəliliyinin qiymətləndirilməsində əsas rol oynadığını anladıq. Hər ikisi induksiyada
HIH6130 və Particle Photon istifadə edərək Nəmlik və Temperatur Ölçmə: 4 Addım
HIH6130 və Partikül Fotonundan istifadə edərək Nəmlik və Temperatur Ölçmə: HIH6130 rəqəmsal çıxışı olan rütubət və temperatur sensoru. Bu sensorlar ± 4% RH dəqiqlik səviyyəsi təmin edir. Sektorun aparıcı uzunmüddətli sabitliyi, əsl temperaturla kompensasiya edilmiş rəqəmsal I2C, Sənayenin qabaqcıl etibarlılığı, Enerji səmərəliliyi
HDC1000 və Particle Photon istifadə edərək temperatur və rütubətin ölçülməsi: 4 addım
HDC1000 və Particle Photon istifadə edərək temperatur və rütubətin ölçülməsi: HDC1000, çox aşağı gücdə əla ölçmə dəqiqliyi təmin edən inteqrasiya edilmiş temperatur sensoru olan rəqəmsal rütubət sensoru. Cihaz rütubəti yeni bir kapasitiv sensora əsaslanaraq ölçür. Rütubət və temperatur sensörləri