Mundarija:

Arduino Nano - HTS221 nisbiy namlik va harorat sensori qo'llanmasi: 4 qadam
Arduino Nano - HTS221 nisbiy namlik va harorat sensori qo'llanmasi: 4 qadam

Video: Arduino Nano - HTS221 nisbiy namlik va harorat sensori qo'llanmasi: 4 qadam

Video: Arduino Nano - HTS221 nisbiy namlik va harorat sensori qo'llanmasi: 4 qadam
Video: Arduino Nano 33 BLE Sense — плата с голосовым управлением, IMU, датчиком цвета и метеосенсором. 2024, Noyabr
Anonim
Image
Image

HTS221 - nisbiy namlik va harorat uchun ultra ixcham sig'imli raqamli sensor. Raqamli ketma -ket interfeyslar orqali o'lchash ma'lumotlarini etkazib berish uchun sezuvchi element va aralash signalli maxsus o'rnatilgan elektron (ASIC) o'z ichiga oladi. Ko'p funktsiyalar bilan birlashtirilgan, bu namlik va haroratni o'lchash uchun eng mos sensorlardan biridir. Bu erda arduino nano bilan namoyish.

1 -qadam: Sizga nima kerak.. !

Sizga nima kerak.. !!
Sizga nima kerak.. !!

1. Arduino Nano

2. HTS221

3. I²C kabeli

4. Arduino Nano uchun I²C qalqoni

2 -qadam: Ulanishlar:

Ulanishlar
Ulanishlar
Ulanishlar
Ulanishlar
Ulanishlar
Ulanishlar
Ulanishlar
Ulanishlar

Arduino Nano uchun I2C qalqonini oling va uni muloyimlik bilan Nano pinlariga suring.

Keyin I2C kabelining bir uchini HTS221 sensoriga, ikkinchi uchini esa I2C ekraniga ulang.

Ulanishlar yuqoridagi rasmda ko'rsatilgan.

3 -qadam: Kod:

Kod
Kod

HTS221 uchun arduino kodini bizning github omboridan- DCUBE hamjamiyatidan yuklab olish mumkin.

Mana shu havola:

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

Sensorning Arduino platasi bilan I2c aloqasini osonlashtirish uchun biz Wire.h kutubxonasini o'z ichiga olamiz.

Siz bu erdan kodni nusxalashingiz mumkin, u quyidagicha berilgan:

// Ixtiyoriy litsenziya bilan tarqatilgan.

// Agar xohlasangiz, foyda yoki tekin ishlating, agar u tegishli asarlar litsenziyalariga mos kelsa.

// HTS221

// Bu kod HTS221_I2CS I2C Mini moduli bilan ishlash uchun mo'ljallangan

#qo'shing

// HTS221 I2C manzili - 0x5F

#aniqlang Addr 0x5F

bo'sh o'rnatish ()

{

// I2C aloqasini MASTER sifatida boshlang

Wire.begin ();

// Seriyali aloqani ishga tushiring, bod tezligi = 9600 ni o'rnating

Serial.begin (9600);

// I2C uzatishni boshlang

Wire.beginTransmission (Addr);

// O'rtacha konfiguratsiya registrini tanlang

Wire.write (0x10);

// O'rtacha harorat namunalari = 256, o'rtacha namlik namunalari = 512

Wire.write (0x1B);

// I2C uzatishni to'xtating

Wire.endTransmission ();

// I2C uzatishni boshlang

Wire.beginTransmission (Addr);

// Boshqarish registrini tanlang1

Wire.write (0x20);

// Quvvat yoqish, uzluksiz yangilanish, ma'lumotlar chiqarish tezligi = 1 Hz

Wire.write (0x85);

// I2C uzatishni to'xtating

Wire.endTransmission ();

kechikish (300);

}

bo'sh halqa ()

{

imzosiz int ma'lumotlari [2];

imzosiz int val [4];

imzosiz int H0, H1, H2, H3, T0, T1, T2, T3, xom;

// Namlikni kalibrlash qiymatlari

uchun (int i = 0; i <2; i ++)

{

// I2C uzatishni boshlang

Wire.beginTransmission (Addr);

// Ma'lumotlar reestrini yuborish

Wire.write ((48 + i));

// I2C uzatishni to'xtating

Wire.endTransmission ();

// 1 bayt ma'lumotni so'rang

Wire.requestFrom (Addr, 1);

// 1 bayt ma'lumotni o'qing

agar (Wire.available () == 1)

{

ma'lumotlar = Wire.read ();

}

}

// Namlik ma'lumotlarini aylantirish

H0 = ma'lumotlar [0] / 2;

H1 = ma'lumotlar [1] / 2;

uchun (int i = 0; i <2; i ++)

{

// I2C uzatishni boshlang

Wire.beginTransmission (Addr);

// Ma'lumotlar reestrini yuborish

Wire.write ((54 + i));

// I2C uzatishni to'xtating

Wire.endTransmission ();

// 1 bayt ma'lumotni so'rang

Wire.requestFrom (Addr, 1);

// 1 bayt ma'lumotni o'qing

agar (Wire.available () == 1)

{

ma'lumotlar = Wire.read ();

}

}

// Namlik ma'lumotlarini aylantirish

H2 = (ma'lumotlar [1] * 256.0) + ma'lumotlar [0];

uchun (int i = 0; i <2; i ++)

{

// I2C uzatishni boshlang

Wire.beginTransmission (Addr);

// Ma'lumotlar reestrini yuborish

Wire.write ((58 + i));

// I2C uzatishni to'xtating

Wire.endTransmission ();

// 1 bayt ma'lumotni so'rang

Wire.requestFrom (Addr, 1);

// 1 bayt ma'lumotni o'qing

agar (Wire.available () == 1)

{

ma'lumotlar = Wire.read ();

}

}

// Namlik ma'lumotlarini aylantirish

H3 = (ma'lumotlar [1] * 256.0) + ma'lumotlar [0];

// Haroratni kalibrlash qiymatlari

// I2C uzatishni boshlang

Wire.beginTransmission (Addr);

// Ma'lumotlar reestrini yuborish

Wire.write (0x32);

// I2C uzatishni to'xtating

Wire.endTransmission ();

// 1 bayt ma'lumotni so'rang

Wire.requestFrom (Addr, 1);

// 1 bayt ma'lumotni o'qing

agar (Wire.available () == 1)

{

T0 = Wire.read ();

}

// I2C uzatishni boshlang

Wire.beginTransmission (Addr);

// Ma'lumotlar reestrini yuborish

Wire.write (0x33);

// I2C uzatishni to'xtating

Wire.endTransmission ();

// 1 bayt ma'lumotni so'rang

Wire.requestFrom (Addr, 1);

// 1 bayt ma'lumotni o'qing

agar (Wire.available () == 1)

{

T1 = Wire.read ();

}

// I2C uzatishni boshlang

Wire.beginTransmission (Addr);

// Ma'lumotlar reestrini yuborish

Wire.write (0x35);

// I2C uzatishni to'xtating

Wire.endTransmission ();

// 1 bayt ma'lumotni so'rang

Wire.requestFrom (Addr, 1);

// 1 bayt ma'lumotni o'qing

agar (Wire.available () == 1)

{

xom = Wire.read ();

}

xom = xom & 0x0F;

// Haroratni kalibrlash qiymatlarini 10 bitga aylantiring

T0 = ((xom & 0x03) * 256) + T0;

T1 = ((xom & 0x0C) * 64) + T1;

uchun (int i = 0; i <2; i ++)

{

// I2C uzatishni boshlang

Wire.beginTransmission (Addr);

// Ma'lumotlar reestrini yuborish

Wire.write ((60 + i));

// I2C uzatishni to'xtating

Wire.endTransmission ();

// 1 bayt ma'lumotni so'rang

Wire.requestFrom (Addr, 1);

// 1 bayt ma'lumotni o'qing

agar (Wire.available () == 1)

{

ma'lumotlar = Wire.read ();

}

}

// Ma'lumotni aylantirish

T2 = (ma'lumotlar [1] * 256.0) + ma'lumotlar [0];

uchun (int i = 0; i <2; i ++)

{

// I2C uzatishni boshlang

Wire.beginTransmission (Addr);

// Ma'lumotlar reestrini yuborish

Wire.write ((62 + i));

// I2C uzatishni to'xtating

Wire.endTransmission ();

// 1 bayt ma'lumotni so'rang

Wire.requestFrom (Addr, 1);

// 1 bayt ma'lumotni o'qing

agar (Wire.available () == 1)

{

ma'lumotlar = Wire.read ();

}

}

// Ma'lumotni aylantirish

T3 = (ma'lumotlar [1] * 256.0) + ma'lumotlar [0];

// I2C uzatishni boshlang

Wire.beginTransmission (Addr);

// Ma'lumotlar reestrini yuborish

Wire.write (0x28 | 0x80);

// I2C uzatishni to'xtating

Wire.endTransmission ();

// 4 bayt ma'lumotni so'rang

Wire.requestFrom (Addr, 4);

// 4 bayt ma'lumotni o'qing

// namlik msb, namlik lsb, temp msb, temp lsb

agar (Wire.available () == 4)

{

val [0] = Wire.read ();

val [1] = Wire.read ();

val [2] = Wire.read ();

val [3] = Wire.read ();

}

// Ma'lumotni aylantirish

suzuvchi namlik = (val [1] * 256,0) + val [0];

namlik = ((1.0 * H1) - (1.0 * H0)) * (1.0 * namlik - 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;

// Ma'lumotlarni ketma -ket monitorga chiqarish

Serial.print ("Nisbiy namlik:");

Ketma -ket bosma (namlik);

Serial.println (" % RH");

Serial.print ("Selsiy bo'yicha harorat:");

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

Serial.print ("Farengeytdagi harorat:");

Serial.print (fTemp);

Serial.println ("F");

kechikish (500);

}

4 -qadam: Ilovalar:

HTS221 har xil turdagi havo namlagichlari va muzlatgichlar kabi iste'molchi mahsulotlarida ishlatilishi mumkin. Bu sensor, shuningdek, aqlli uy avtomatizatsiyasi, sanoat avtomatizatsiyasi, nafas olish uskunalari, aktivlar va tovarlarni kuzatishni o'z ichiga oladi.

Tavsiya: