Mundarija:
Video: Arduino Nano - HTS221 nisbiy namlik va harorat sensori qo'llanmasi: 4 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:24
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.. !
1. Arduino Nano
2. HTS221
3. I²C kabeli
4. Arduino Nano uchun I²C qalqoni
2 -qadam: 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:
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:
Arduino bilan Servo va DHT11 harorat va namlik sensori yordamida avtomatik sovutish foniy: 8 qadam
Arduino bilan Servo va DHT11 harorat va namlik sensori yordamida avtomatik sovutish foniy: Bu qo'llanmada biz qanday boshlashni o'rganamiz & harorat ma'lum darajadan oshganda fanatni aylantiring
Arduino AMS5812_0050-D-B bosim va harorat sensori qo'llanmasi: 4 qadam
Arduino AMS5812_0050-D-B bosim va harorat sensori bo'yicha qo'llanma: Analog va raqamli chiqishlarga ega AMS5812 kuchaytirilgan bosim sensori analog kuchlanishli chiqish va raqamli I2C interfeysli yuqori aniqlikdagi sensor. U piezorezistiv sezuvchi elementni ishlashi uchun signalni sozlash elementi bilan birlashtiradi.
Arduino Nano - TCN75A harorat sensori qo'llanmasi: 4 qadam
Arduino Nano-TCN75A harorat sensori bo'yicha qo'llanma: TCN75A-ikki simli ketma-ket harorat sensori, harorat-raqamli konvertor bilan jihozlangan. U haroratni sezish uchun moslashuvchanlikni ta'minlaydigan foydalanuvchi dasturlashtiriladigan registrlari bilan birlashtirilgan. Ro'yxatdan o'tish sozlamalari foydalanuvchilarga
Simsiz namlik monitor (ESP8266 + namlik sensori): 5 qadam
Simsiz namlik o'lchagichi (ESP8266 + namlik sensori): Men maydanozni qozonda sotib olaman va kunning ko'p qismida tuproq quruq edi. Men maydanozli qozondagi tuproqning namligini sezish bo'yicha, loyihani amalga oshirishga qaror qildim, qachon kerak bo'lsa, tuproqni suv bilan to'kib tashlang, menimcha, bu sensor (sig'imli namlik sensori v1.2) yaxshi
Raspberry Pi va TE Connection MS8607-02BA01 yordamida harorat, nisbiy namlik, atmosfera bosimi yozuvchisi: 22 qadam (rasmlar bilan)
Raspberry Pi va TE Connectivity MS8607-02BA01 yordamida harorat, nisbiy namlik, atmosfera bosimi registratori: Kirish: Ushbu loyihada men sizga namlik va atmosfera bosimi uchun namlikni hisobga olish tizimini bosqichma-bosqich qurishni ko'rsataman. Ushbu loyiha Raspberry Pi 3 Model B va TE Connectivity MS8607-02BA atrof-muhit sensori chipiga asoslangan