Isi kandungan:

Tutorial Arduino Nano - HTS221 Kelembapan dan Sensor Suhu Relatif: 4 Langkah
Tutorial Arduino Nano - HTS221 Kelembapan dan Sensor Suhu Relatif: 4 Langkah

Video: Tutorial Arduino Nano - HTS221 Kelembapan dan Sensor Suhu Relatif: 4 Langkah

Video: Tutorial Arduino Nano - HTS221 Kelembapan dan Sensor Suhu Relatif: 4 Langkah
Video: Arduino Nano - HTS221 Relative Humidity and Temperature Sensor Tutorial 2024, November
Anonim
Image
Image

HTS221 adalah sensor digital kapasitif ultra kompak untuk kelembapan dan suhu relatif. Ini merangkumi elemen penginderaan dan litar bersepadu khusus aplikasi isyarat campuran (ASIC) untuk memberikan maklumat pengukuran melalui antara muka siri digital. Bersepadu dengan begitu banyak ciri ini adalah salah satu sensor yang paling sesuai untuk pengukuran kelembapan dan suhu kritikal. Berikut adalah demonstrasi dengan arduino nano.

Langkah 1: Apa yang Anda Perlu..

Apa yang kamu perlu..!!
Apa yang kamu perlu..!!

1. Arduino Nano

2. HTS221

3. Kabel I²C

4. Perisai I²C untuk Arduino Nano

Langkah 2: Sambungan:

Sambungan
Sambungan
Sambungan
Sambungan
Sambungan
Sambungan
Sambungan
Sambungan

Ambil pelindung I2C untuk Arduino Nano dan perlahan-lahan menolaknya ke atas pin Nano.

Kemudian sambungkan satu hujung kabel I2C ke sensor HTS221 dan hujung yang lain ke pelindung I2C.

Sambungan ditunjukkan dalam gambar di atas.

Langkah 3: Kod:

Kod
Kod

Kod arduino untuk HTS221 boleh dimuat turun dari repositori github kami- Komuniti DCUBE.

Berikut adalah pautan yang sama:

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

Kami menyertakan perpustakaan Wire.h untuk memudahkan komunikasi sensor I2c dengan papan Arduino.

Anda juga boleh menyalin kod dari sini, ia diberikan seperti berikut:

// Diagihkan dengan lesen kehendak bebas.

// Gunakan dengan cara yang anda mahukan, untung atau percuma, dengan syarat ia sesuai dengan lesen karya yang berkaitan.

// HTS221

// Kod ini direka untuk berfungsi dengan Modul Mini HTS221_I2CS I2C

#sertakan

// Alamat HTS221 I2C ialah 0x5F

#tentukan Addr 0x5F

persediaan tidak sah ()

{

// Memulakan komunikasi I2C sebagai MASTER

Wire.begin ();

// Mulakan komunikasi bersiri, tetapkan kadar baud = 9600

Serial.begin (9600);

// Mulakan Penghantaran I2C

Wire.beginTransmission (Addr);

// Pilih daftar konfigurasi purata

Wire.write (0x10);

// Sampel purata suhu = 256, Sampel purata kelembapan = 512

Wire.write (0x1B);

// Hentikan Penghantaran I2C

Wire.endTransmission ();

// Mulakan Penghantaran I2C

Wire.beginTransmission (Addr);

// Pilih daftar kawalan1

Wire.write (0x20);

// Power ON, Kemas kini berterusan, Kadar output data = 1 Hz

Wire.write (0x85);

// Hentikan Penghantaran I2C

Wire.endTransmission ();

kelewatan (300);

}

gelung kosong ()

{

data int yang tidak ditandatangani [2];

int tidak bertanda tangan [4];

int H0, H1, H2, H3, T0, T1, T2, T3, mentah;

// Nilai kaliberasi kelembapan

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

{

// Mulakan Penghantaran I2C

Wire.beginTransmission (Addr);

// Hantar daftar data

Wire.write ((48 + i));

// Hentikan Penghantaran I2C

Wire.endTransmission ();

// Minta 1 bait data

Wire.requestFrom (Addr, 1);

// Baca 1 bait data

jika (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Tukar data Kelembapan

H0 = data [0] / 2;

H1 = data [1] / 2;

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

{

// Mulakan Penghantaran I2C

Wire.beginTransmission (Addr);

// Hantar daftar data

Wire.write ((54 + i));

// Hentikan Penghantaran I2C

Wire.endTransmission ();

// Minta 1 bait data

Wire.requestFrom (Addr, 1);

// Baca 1 bait data

jika (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Tukar data Kelembapan

H2 = (data [1] * 256.0) + data [0];

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

{

// Mulakan Penghantaran I2C

Wire.beginTransmission (Addr);

// Hantar daftar data

Wire.write ((58 + i));

// Hentikan Penghantaran I2C

Wire.endTransmission ();

// Minta 1 bait data

Wire.requestFrom (Addr, 1);

// Baca 1 bait data

jika (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Tukar data Kelembapan

H3 = (data [1] * 256.0) + data [0];

// Nilai kaliberasi suhu

// Mulakan Penghantaran I2C

Wire.beginTransmission (Addr);

// Hantar daftar data

Wire.write (0x32);

// Hentikan Penghantaran I2C

Wire.endTransmission ();

// Minta 1 bait data

Wire.requestFrom (Addr, 1);

// Baca 1 bait data

jika (Wire.available () == 1)

{

T0 = Wire.read ();

}

// Mulakan Penghantaran I2C

Wire.beginTransmission (Addr);

// Hantar daftar data

Wire.write (0x33);

// Hentikan Penghantaran I2C

Wire.endTransmission ();

// Minta 1 bait data

Wire.requestFrom (Addr, 1);

// Baca 1 bait data

jika (Wire.available () == 1)

{

T1 = Wire.read ();

}

// Mulakan Penghantaran I2C

Wire.beginTransmission (Addr);

// Hantar daftar data

Wire.write (0x35);

// Hentikan Penghantaran I2C

Wire.endTransmission ();

// Minta 1 bait data

Wire.requestFrom (Addr, 1);

// Baca 1 bait data

jika (Wire.available () == 1)

{

mentah = Wire.read ();

}

mentah = mentah & 0x0F;

// Tukarkan nilai kaliberasi suhu menjadi 10-bit

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

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

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

{

// Mulakan Penghantaran I2C

Wire.beginTransmission (Addr);

// Hantar daftar data

Wire.write ((60 + i));

// Hentikan Penghantaran I2C

Wire.endTransmission ();

// Minta 1 bait data

Wire.requestFrom (Addr, 1);

// Baca 1 bait data

jika (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Tukarkan data

T2 = (data [1] * 256.0) + data [0];

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

{

// Mulakan Penghantaran I2C

Wire.beginTransmission (Addr);

// Hantar daftar data

Wire.write ((62 + i));

// Hentikan Penghantaran I2C

Wire.endTransmission ();

// Minta 1 bait data

Wire.requestFrom (Addr, 1);

// Baca 1 bait data

jika (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Tukarkan data

T3 = (data [1] * 256.0) + data [0];

// Mulakan Penghantaran I2C

Wire.beginTransmission (Addr);

// Hantar daftar data

Wire.write (0x28 | 0x80);

// Hentikan Penghantaran I2C

Wire.endTransmission ();

// Minta 4 bait data

Wire.requestFrom (Addr, 4);

// Baca 4 bait data

// kelembapan msb, kelembapan lsb, temp msb, temp lsb

jika (Wire.available () == 4)

{

val [0] = Wire.read ();

val [1] = Wire.read ();

val [2] = Wire.read ();

val [3] = Wire.read ();

}

// Tukarkan data

kelembapan apungan = (val [1] * 256.0) + val [0];

kelembapan = ((1.0 * H1) - (1.0 * H0)) * (1.0 * kelembapan - 1.0 * H2) / (1.0 * H3 - 1.0 * H2) + (1.0 * H0);

int temp = (val [3] * 256) + val [2];

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

apungan fTemp = (cTemp * 1.8) + 32;

// Keluarkan data ke monitor bersiri

Serial.print ("Kelembapan relatif:");

Cetakan bersiri (kelembapan);

Serial.println ("% RH");

Serial.print ("Suhu dalam Celsius:");

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

Serial.print ("Suhu di Fahrenheit:");

Serial.print (fTemp);

Serial.println ("F");

kelewatan (500);

}

Langkah 4: Aplikasi:

HTS221 dapat digunakan dalam pelbagai produk pengguna seperti pelembap udara dan peti sejuk dll. Sensor ini juga dapat digunakan dalam arena yang lebih luas termasuk automasi rumah pintar, automasi industri, peralatan pernafasan, penjejakan aset dan barang.

Disyorkan: