Мазмұны:

Arduino Nano - HTS221 салыстырмалы ылғалдылық пен температура сенсорының оқулығы: 4 қадам
Arduino Nano - HTS221 салыстырмалы ылғалдылық пен температура сенсорының оқулығы: 4 қадам

Бейне: Arduino Nano - HTS221 салыстырмалы ылғалдылық пен температура сенсорының оқулығы: 4 қадам

Бейне: Arduino Nano - HTS221 салыстырмалы ылғалдылық пен температура сенсорының оқулығы: 4 қадам
Бейне: Arduino Nano 33 BLE Sense — плата с голосовым управлением, IMU, датчиком цвета и метеосенсором. 2024, Шілде
Anonim
Image
Image

HTS221 - салыстырмалы ылғалдылық пен температураның ультра жинақы сыйымдылықты сандық сенсоры. Ол сандық сериялық интерфейстер арқылы өлшеу ақпаратын беру үшін сенсорлық элементті және аралас сигналдық арнайы интегралды схеманы (ASIC) қамтиды. Бұл көптеген мүмкіндіктермен біріктірілген, бұл ылғалдылық пен температураны өлшеуге арналған ең қолайлы сенсорлардың бірі. Мұнда arduino nano көмегімен демонстрация.

1 -қадам: Сізге не керек..

Сізге не керек.. !!
Сізге не керек.. !!

1. Ардуино Нано

2. HTS221

3. I²C кабелі

4. Arduino Nano үшін I²C қалқаны

2 -қадам: Қосылымдар:

Қосылымдар
Қосылымдар
Қосылымдар
Қосылымдар
Қосылымдар
Қосылымдар
Қосылымдар
Қосылымдар

Arduino Nano үшін I2C қалқанын алып, оны нано түйреуіштерінен ақырын басыңыз.

Содан кейін I2C кабелінің бір ұшын HTS221 сенсорына, екінші ұшын I2C қалқанына қосыңыз.

Қосылымдар жоғарыдағы суретте көрсетілген.

3 -қадам: код:

Код
Код

HTS221 үшін arduino кодын біздің github репозиторийінен жүктеуге болады- DCUBE қауымдастығы.

Міне, сол үшін сілтеме:

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

Біз сенсордың Arduino тақтасымен I2c байланысын жеңілдету үшін Wire.h кітапханасын қосамыз.

Сіз кодты осы жерден көшіре аласыз, ол келесі түрде берілген:

// Ерікті лицензиямен таратылды.

// Оны қалаған жолмен пайдаланыңыз немесе тегін, егер ол онымен байланысты жұмыстардың лицензиясына сәйкес келсе.

// HTS221

// Бұл код HTS221_I2CS I2C шағын модулімен жұмыс жасауға арналған

#қосу

// HTS221 I2C мекенжайы - 0x5F

#Addr 0x5F анықтаңыз

жарамсыз орнату ()

{

// I2C байланысын MASTER ретінде баптаңыз

Wire.begin ();

// Сериялық байланысты орнатыңыз, жіберу жылдамдығы = 9600

Serial.begin (9600);

// I2C берілуін бастау

Wire.beginTransmission (Addr);

// Орташа конфигурация регистрін таңдаңыз

Wire.write (0x10);

// Температураның орташа үлгілері = 256, Ылғалдылықтың орташа үлгілері = 512

Wire.write (0x1B);

// I2C берілуін тоқтату

Wire.endTransmission ();

// I2C берілуін бастау

Wire.beginTransmission (Addr);

// Басқару регистрін таңдаңыз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 (Addr);

// Деректер регистрін жіберу

Wire.write ((48 + i));

// I2C берілуін тоқтату

Wire.endTransmission ();

// 1 байт деректерді сұрау

Wire.requestFrom (Addr, 1);

// 1 байт деректерді оқу

егер (Wire.available () == 1)

{

деректер = Wire.read ();

}

}

// Ылғалдылық туралы деректерді түрлендіру

H0 = деректер [0] / 2;

H1 = деректер [1] / 2;

үшін (int i = 0; i <2; i ++)

{

// I2C берілуін бастау

Wire.beginTransmission (Addr);

// Деректер регистрін жіберу

Wire.write ((54 + i));

// I2C берілуін тоқтату

Wire.endTransmission ();

// 1 байт деректерді сұрау

Wire.requestFrom (Addr, 1);

// 1 байт деректерді оқу

егер (Wire.available () == 1)

{

деректер = Wire.read ();

}

}

// Ылғалдылық туралы деректерді түрлендіру

H2 = (деректер [1] * 256.0) + деректер [0];

үшін (int i = 0; i <2; i ++)

{

// I2C берілуін бастау

Wire.beginTransmission (Addr);

// Деректер регистрін жіберу

Wire.write ((58 + i));

// I2C берілуін тоқтату

Wire.endTransmission ();

// 1 байт деректерді сұрау

Wire.requestFrom (Addr, 1);

// 1 байт деректерді оқу

егер (Wire.available () == 1)

{

деректер = Wire.read ();

}

}

// Ылғалдылық туралы деректерді түрлендіру

H3 = (деректер [1] * 256.0) + деректер [0];

// Температураны калибрлеу мәндері

// I2C берілуін бастау

Wire.beginTransmission (Addr);

// Деректер регистрін жіберу

Wire.write (0x32);

// I2C берілуін тоқтату

Wire.endTransmission ();

// 1 байт деректерді сұрау

Wire.requestFrom (Addr, 1);

// 1 байт деректерді оқу

егер (Wire.available () == 1)

{

T0 = Wire.read ();

}

// I2C берілуін бастау

Wire.beginTransmission (Addr);

// Деректер регистрін жіберу

Wire.write (0x33);

// I2C берілуін тоқтату

Wire.endTransmission ();

// 1 байт деректерді сұрау

Wire.requestFrom (Addr, 1);

// 1 байт деректерді оқу

егер (Wire.available () == 1)

{

T1 = Wire.read ();

}

// I2C берілуін бастау

Wire.beginTransmission (Addr);

// Деректер регистрін жіберу

Wire.write (0x35);

// I2C берілуін тоқтату

Wire.endTransmission ();

// 1 байт деректерді сұрау

Wire.requestFrom (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 (Addr);

// Деректер регистрін жіберу

Wire.write ((60 + i));

// I2C берілуін тоқтату

Wire.endTransmission ();

// 1 байт деректерді сұрау

Wire.requestFrom (Addr, 1);

// 1 байт деректерді оқу

егер (Wire.available () == 1)

{

деректер = Wire.read ();

}

}

// Деректерді түрлендіру

T2 = (деректер [1] * 256.0) + деректер [0];

үшін (int i = 0; i <2; i ++)

{

// I2C берілуін бастау

Wire.beginTransmission (Addr);

// Деректер регистрін жіберу

Wire.write ((62 + i));

// I2C берілуін тоқтату

Wire.endTransmission ();

// 1 байт деректерді сұрау

Wire.requestFrom (Addr, 1);

// 1 байт деректерді оқу

егер (Wire.available () == 1)

{

деректер = Wire.read ();

}

}

// Деректерді түрлендіру

T3 = (деректер [1] * 256.0) + деректер [0];

// I2C берілуін бастау

Wire.beginTransmission (Addr);

// Деректер регистрін жіберу

Wire.write (0x28 | 0x80);

// I2C берілуін тоқтату

Wire.endTransmission ();

// 4 байт деректерді сұрау

Wire.requestFrom (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];

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

float fTemp = (cTemp * 1.8) + 32;

// Деректерді сериялық мониторға шығару

Serial.print («Салыстырмалы ылғалдылық:»);

Сериялық баспа (ылғалдылық);

Serial.println («RH %»);

Serial.print («Цельсий бойынша температура:»);

Serial.print (cTemp); Serial.println («C»);

Serial.print («Фаренгейт температурасы:»);

Serial.print (fTemp);

Serial.println («F»);

кешіктіру (500);

}

4 -қадам: Өтініштер:

HTS221 ауаны ылғалдандырғыштар мен тоңазытқыштар сияқты әр түрлі тұтыну өнімдерінде қолданыла алады. Бұл сенсор ақылды үйді автоматтандыру, өнеркәсіптік автоматтандыру, тыныс алу құралдары, активтер мен тауарларды бақылау сияқты кең ауқымда қолданылады.

Ұсынылған: