Daftar Isi:

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

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

Video: Arduino Nano - HTS221 Kelembaban Relatif dan Tutorial Sensor Suhu: 4 Langkah
Video: #12 Arduino Nano 33 BLE Sense | Unboxing, Review, Tutorial 2024, November
Anonim
Image
Image

HTS221 adalah sensor digital kapasitif ultra kompak untuk kelembaban dan suhu relatif. Ini mencakup elemen penginderaan dan sirkuit terintegrasi khusus aplikasi sinyal campuran (ASIC) untuk memberikan informasi pengukuran melalui antarmuka serial digital. Terintegrasi dengan begitu banyak fitur, ini adalah salah satu sensor yang paling tepat untuk pengukuran kelembaban dan suhu kritis. Berikut adalah demonstrasi dengan arduino nano.

Langkah 1: Yang Anda Butuhkan.

Apa yang kau butuhkan..!!
Apa yang kau butuhkan..!!

1. Arduino Nano

2. HTS221

3. Kabel I²C

4. Perisai I²C untuk Arduino Nano

Langkah 2: Koneksi:

Koneksi
Koneksi
Koneksi
Koneksi
Koneksi
Koneksi
Koneksi
Koneksi

Ambil pelindung I2C untuk Arduino Nano dan dorong perlahan ke pin Nano.

Kemudian sambungkan salah satu ujung kabel I2C ke sensor HTS221 dan ujung lainnya ke pelindung I2C.

Koneksi ditunjukkan pada gambar di atas.

Langkah 3: Kode:

Kode
Kode

Kode arduino untuk HTS221 dapat diunduh dari repositori github kami - Komunitas DCUBE.

Berikut ini tautan untuk hal yang sama:

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

Kami menyertakan library Wire.h untuk memfasilitasi komunikasi I2c dari sensor dengan board Arduino.

Anda juga dapat menyalin kode dari sini, diberikan sebagai berikut:

// Didistribusikan dengan lisensi kehendak bebas.

// Gunakan sesuka Anda, untung atau gratis, asalkan sesuai dengan lisensi karya terkait.

// HTS221

// Kode ini dirancang untuk bekerja dengan Modul Mini HTS221_I2CS I2C

#termasuk

// Alamat HTS221 I2C adalah 0x5F

#define Addr 0x5F

batalkan pengaturan()

{

// Inisialisasi komunikasi I2C sebagai MASTER

Kawat.mulai();

// Inisialisasi komunikasi serial, setel baud rate = 9600

Serial.begin(9600);

// Mulai Transmisi I2C

Wire.beginTransmission(Addr);

// Pilih register konfigurasi rata-rata

Kawat.tulis (0x10);

// Sampel rata-rata suhu = 256, Sampel rata-rata kelembaban = 512

Kawat.tulis (0x1B);

// Hentikan Transmisi I2C

Kawat.endTransmisi();

// Mulai Transmisi I2C

Wire.beginTransmission(Addr);

// Pilih register kontrol1

Kawat.tulis (0x20);

// Hidupkan, Pembaruan berkelanjutan, Laju keluaran data = 1 Hz

Kawat.tulis (0x85);

// Hentikan Transmisi I2C

Kawat.endTransmisi();

penundaan (300);

}

lingkaran kosong()

{

data int yang tidak ditandatangani [2];

unsigned int val[4];

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

// Nilai kalibrasi kelembaban

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

{

// Mulai Transmisi I2C

Wire.beginTransmission(Addr);

// Kirim data register

Wire.write((48 + i));

// Hentikan Transmisi I2C

Kawat.endTransmisi();

// Meminta 1 byte data

Wire.requestFrom(Addr, 1);

// Baca 1 byte data

if(Wire.available() == 1)

{

data = Wire.read();

}

}

// Konversi data Kelembaban

H0 = data[0] / 2;

H1 = data[1] / 2;

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

{

// Mulai Transmisi I2C

Wire.beginTransmission(Addr);

// Kirim data register

Wire.write((54 + i));

// Hentikan Transmisi I2C

Kawat.endTransmisi();

// Meminta 1 byte data

Wire.requestFrom(Addr, 1);

// Baca 1 byte data

if(Wire.available() == 1)

{

data = Wire.read();

}

}

// Konversi data Kelembaban

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

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

{

// Mulai Transmisi I2C

Wire.beginTransmission(Addr);

// Kirim data register

Wire.write((58 + i));

// Hentikan Transmisi I2C

Kawat.endTransmisi();

// Meminta 1 byte data

Wire.requestFrom(Addr, 1);

// Baca 1 byte data

if(Wire.available() == 1)

{

data = Wire.read();

}

}

// Konversi data Kelembaban

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

// Nilai kalibrasi suhu

// Mulai Transmisi I2C

Wire.beginTransmission(Addr);

// Kirim data register

Kawat.tulis (0x32);

// Hentikan Transmisi I2C

Kawat.endTransmisi();

// Meminta 1 byte data

Wire.requestFrom(Addr, 1);

// Baca 1 byte data

if(Wire.available() == 1)

{

T0 = Kawat.baca();

}

// Mulai Transmisi I2C

Wire.beginTransmission(Addr);

// Kirim data register

Kawat.tulis (0x33);

// Hentikan Transmisi I2C

Kawat.endTransmisi();

// Meminta 1 byte data

Wire.requestFrom(Addr, 1);

// Baca 1 byte data

if(Wire.available() == 1)

{

T1 = Kawat.baca();

}

// Mulai Transmisi I2C

Wire.beginTransmission(Addr);

// Kirim data register

Kawat.tulis (0x35);

// Hentikan Transmisi I2C

Kawat.endTransmisi();

// Meminta 1 byte data

Wire.requestFrom(Addr, 1);

// Baca 1 byte data

if(Wire.available() == 1)

{

mentah = Wire.read();

}

mentah = mentah & 0x0F;

// Ubah nilai kalibrasi suhu menjadi 10-bit

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

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

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

{

// Mulai Transmisi I2C

Wire.beginTransmission(Addr);

// Kirim data register

Wire.write((60 + i));

// Hentikan Transmisi I2C

Kawat.endTransmisi();

// Meminta 1 byte data

Wire.requestFrom(Addr, 1);

// Baca 1 byte data

if(Wire.available() == 1)

{

data = Wire.read();

}

}

// Konversi data

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

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

{

// Mulai Transmisi I2C

Wire.beginTransmission(Addr);

// Kirim data register

Wire.write((62 + i));

// Hentikan Transmisi I2C

Kawat.endTransmisi();

// Meminta 1 byte data

Wire.requestFrom(Addr, 1);

// Baca 1 byte data

if(Wire.available() == 1)

{

data = Wire.read();

}

}

// Konversi data

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

// Mulai Transmisi I2C

Wire.beginTransmission(Addr);

// Kirim data register

Wire.write(0x28 | 0x80);

// Hentikan Transmisi I2C

Kawat.endTransmisi();

// Meminta 4 byte data

Wire.requestFrom(Addr, 4);

// Baca 4 byte data

// kelembaban msb, kelembaban lsb, suhu msb, suhu lsb

if(Wire.available() == 4)

{

val[0] = Wire.read();

val[1] = Wire.read();

val[2] = Wire.read();

val[3] = Wire.read();

}

// Konversi data

kelembaban mengambang = (val[1] * 256.0) + val[0];

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

// Keluarkan data ke monitor serial

Serial.print("Kelembaban relatif: ");

Serial.print(kelembaban);

Serial.println("% RH");

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

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

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

Serial.print(fTemp);

Serial.println("F");

penundaan (500);

}

Langkah 4: Aplikasi:

HTS221 dapat digunakan di berbagai produk konsumen seperti pelembab udara dan lemari es dll. Sensor ini juga menemukan penerapannya di arena yang lebih luas termasuk otomatisasi rumah pintar, otomatisasi industri, peralatan pernapasan, pelacakan aset dan barang.

Direkomendasikan: