Isi kandungan:

Pengukuran Kelembapan dan Suhu Menggunakan HTS221 dan Arduino Nano: 4 Langkah
Pengukuran Kelembapan dan Suhu Menggunakan HTS221 dan Arduino Nano: 4 Langkah

Video: Pengukuran Kelembapan dan Suhu Menggunakan HTS221 dan Arduino Nano: 4 Langkah

Video: Pengukuran Kelembapan dan Suhu Menggunakan HTS221 dan Arduino Nano: 4 Langkah
Video: #3 Arduino Nano 33 BLE Sense | Membaca Suhu & Kelembaban 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.

Dalam tutorial ini antara muka modul sensor HTS221 dengan arduino nano telah digambarkan. Untuk membaca nilai kelembapan dan suhu, kami telah menggunakan arduino dengan penyesuai I2c. Penyesuai I2C ini menjadikan sambungan ke modul sensor mudah dan lebih dipercayai.

Langkah 1: Perkakasan Diperlukan:

Perkakasan Diperlukan
Perkakasan Diperlukan
Perkakasan Diperlukan
Perkakasan Diperlukan
Perkakasan Diperlukan
Perkakasan Diperlukan

Bahan yang kami perlukan untuk mencapai tujuan kami merangkumi komponen perkakasan berikut:

1. HTS221

2. Arduino Nano

3. Kabel I2C

4. Perisai I2C untuk Arduino Nano

Langkah 2: Penyambungan Perkakasan:

Penyambungan Perkakasan
Penyambungan Perkakasan
Penyambungan Perkakasan
Penyambungan Perkakasan

Bahagian penyambungan perkakasan pada dasarnya menerangkan sambungan pendawaian yang diperlukan antara sensor dan arduino nano. Memastikan sambungan yang betul adalah keperluan asas semasa mengerjakan sistem apa pun untuk output yang diinginkan. Jadi, sambungan yang diperlukan adalah seperti berikut:

HTS221 akan berfungsi di atas I2C. Berikut adalah contoh rajah pendawaian, yang menunjukkan cara memasang setiap antara muka sensor.

Di luar kotak, papan dikonfigurasikan untuk antara muka I2C, oleh itu kami mengesyorkan menggunakan penyambungan ini jika anda tidak agnostik.

Yang anda perlukan hanyalah empat wayar! Hanya diperlukan empat sambungan pin Vcc, Gnd, SCL dan SDA dan ini disambungkan dengan bantuan kabel I2C.

Sambungan ini ditunjukkan dalam gambar di atas.

Langkah 3: Kod untuk Pengukuran Kelembapan dan Suhu:

Kod untuk Pengukuran Kelembapan dan Suhu
Kod untuk Pengukuran Kelembapan dan Suhu

Mari mulakan dengan kod Arduino sekarang.

Semasa menggunakan modul sensor dengan Arduino, kami menyertakan perpustakaan Wire.h. Perpustakaan "Wire" mengandungi fungsi yang memudahkan komunikasi i2c antara sensor dan papan Arduino.

Keseluruhan kod Arduino diberikan di bawah untuk kemudahan pengguna:

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

}

Di perpustakaan wayar Wire.write () dan Wire.read () digunakan untuk menulis perintah dan membaca output sensor.

Serial.print () dan Serial.println () digunakan untuk memaparkan output sensor pada monitor bersiri dari Arduino IDE.

Output sensor ditunjukkan pada gambar di atas.

Langkah 4: Aplikasi:

Permohonan
Permohonan

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: