Mündəricat:

Arduino Nano - HTS221 Nisbi Nəmlik və İstilik Sensoru Dərsliyi: 4 addım
Arduino Nano - HTS221 Nisbi Nəmlik və İstilik Sensoru Dərsliyi: 4 addım

Video: Arduino Nano - HTS221 Nisbi Nəmlik və İstilik Sensoru Dərsliyi: 4 addım

Video: Arduino Nano - HTS221 Nisbi Nəmlik və İstilik Sensoru Dərsliyi: 4 addım
Video: STC-3028 Thermostat with Heat and Humidity Fully Explained and demonstrated 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. Budur arduino nano ilə nümayiş.

Addım 1: Nə Lazımdır..

Nə Lazımdır.. !!
Nə Lazımdır.. !!

1. Arduino Nano

2. HTS221

3. I²C Kabel

4. Arduino Nano üçün I²C Shield

Addım 2: Bağlantılar:

Əlaqələr
Əlaqələr
Əlaqələr
Əlaqələr
Əlaqələr
Əlaqələr
Əlaqələr
Əlaqələr

Arduino Nano üçün bir I2C qalxanı götürün və Nanonun sancaqlarından yumşaq bir şəkildə itələyin.

Sonra I2C kabelinin bir ucunu HTS221 sensoruna, digər ucunu isə I2C ekranına bağlayın.

Bağlantılar yuxarıdakı şəkildə göstərilmişdir.

Addım 3: Kod:

Kod
Kod

HTS221 üçün arduino kodu github depomuzdan yüklənə bilər- DCUBE Birliyi.

İşdə bunun üçün bağlantı:

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

Sensorun Arduino lövhəsi ilə I2c əlaqəsini asanlaşdırmaq üçün Wire.h kitabxanasına daxildir.

Kodu buradan da kopyalaya bilərsiniz, belə verilir:

// Azad iradə lisenziyası ilə paylanmışdır.

// İstənilən şəkildə, mənfəət və ya pulsuz istifadə edin, əlaqəli əsərlərinin lisenziyalarına uyğun gəlir.

// HTS221

// Bu kod HTS221_I2CS I2C Mini Modulu ilə işləmək üçün hazırlanmışdır

#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);

}

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ə: