Mündəricat:

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 Nəmlik və Temperatur Ölçmə: 4 addım

Video: HTS221 və Arduino Nano istifadə edərək Nəmlik və Temperatur Ölçmə: 4 addım

Video: HTS221 və Arduino Nano istifadə edərək Nəmlik və Temperatur Ölçmə: 4 addım
Video: Программирование МК STM32. УРОК 55. Подключаем датчик влажности HTS221. Часть 1 2024, Iyun
Anonim
Image
Image

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 təlimatda HTS221 sensor modulunun arduino nano ilə qarşılıqlı əlaqəsi təsvir edilmişdir. Rütubət və temperatur dəyərlərini oxumaq üçün I2c adapterli arduino istifadə etdik. Bu I2C adapteri sensor moduluna qoşulmağı asanlaşdırır və daha etibarlıdır.

Addım 1: Lazım olan avadanlıq:

Avadanlıq tələb olunur
Avadanlıq tələb olunur
Avadanlıq tələb olunur
Avadanlıq tələb olunur
Avadanlıq tələb olunur
Avadanlıq tələb olunur

Məqsədimizə çatmaq üçün ehtiyacımız olan materiallar aşağıdakı aparat komponentlərindən ibarətdir:

1. HTS221

2. Arduino Nano

3. I2C Kabeli

4. Arduino Nano üçün I2C Shield

Addım 2: Hardware Bağlantısı:

Avadanlıq Bağlama
Avadanlıq Bağlama
Avadanlıq Bağlama
Avadanlıq Bağlama

Donanım bağlama bölməsi əsasən sensor və arduino nano 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:

Rütubət və Temperatur Ölçmə Kodu
Rütubət və Temperatur Ölçmə Kodu

İndi Arduino kodu ilə başlayaq.

Sensor modulunu Arduino ilə birlikdə istifadə edərkən Wire.h kitabxanasına daxil oluruq. "Tel" kitabxanası, sensor və Arduino lövhəsi arasındakı i2c əlaqəsini asanlaşdıran funksiyaları ehtiva edir.

İstifadəçinin rahatlığı üçün bütün Arduino kodu aşağıda verilmişdir:

#daxil edin

// HTS221 I2C ünvanı 0x5F -dir

#Addr 0x5F təyin edin

boş quraşdırma ()

{

// 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

üzən 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);

int temp = (dəyər [3] * 256) + dəyər [2];

float cTemp = ((((T1 - T0) / 8.0) * (temp - T2)) / (T3 - T2) + (T0 / 8.0);

float fTemp = (cTemp * 1.8) + 32;

// Məlumatların serial monitora çıxarılması

Serial.print ("Nisbi rütubət:");

Serial çap (rütubət);

Serial.println (" % RH");

Serial.print ("Selsi temperaturu:");

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

Serial.print ("Fahrenheitdəki temperatur:");

Serial.print (fTemp);

Serial.println ("F");

gecikmə (500);

}

Tel kitabxanasında Wire.write () və Wire.read () əmrləri yazmaq və sensor çıxışını oxumaq üçün istifadə olunur.

Sensorun çıxışını Arduino IDE -nin serial monitorunda göstərmək üçün Serial.print () və Serial.println () istifadə olunur.

Sensorun çıxışı yuxarıdakı şəkildə göstərilmişdir.

Addım 4: Tətbiqlər:

Tətbiqlər
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ə: