Cari Kode

Pelajaran 35: Menggunakan Sensor Suhu HTU21D dengan Arduino

Pelajaran 35: Menggunakan Sensor Suhu HTU21D dengan Arduino

Pelajaran 35: Menggunakan Sensor Suhu HTU21D dengan Arduino

Dalam tutorial ini, kita akan mempelajari cara menghubungkan sensor suhu HTU21D dengan Arduino. Sensor ini memungkinkan pengukuran suhu dan kelembapan secara akurat menggunakan komunikasi I2C, yang membuatnya mudah diintegrasikan ke berbagai proyek. Di akhir pelajaran ini, Anda akan dapat membaca nilai suhu dan kelembapan dari sensor dan menampilkannya di Serial Monitor.

HTU21D module

Untuk proyek ini, kita akan menggunakan pustaka Adafruit, yang menyediakan cara sederhana untuk berkomunikasi dengan sensor HTU21D. Anda akan belajar cara mengatur kabel, menulis kode, dan memahami pengidentifikasi utama yang digunakan dalam program. Jika Anda memerlukan klarifikasi tentang bagian mana pun dari proses ini, Anda dapat merujuk ke video (di video pada 0:00).

Penjelasan Perangkat Keras

HTU21D adalah sensor kelembapan dan suhu digital. Sensor ini beroperasi pada rentang tegangan 1,5V hingga 3,6V, sehingga cocok untuk sistem 3,3V maupun 5V. Sensor berkomunikasi melalui I2C, hanya memerlukan dua kabel untuk transfer data: Serial Data Line (SDA) dan Serial Clock Line (SCL). Sensor ini memiliki konsumsi daya yang sangat rendah, hanya menarik 0,02 µA saat idle dan hingga 450 µA selama pengukuran.

Selain sensor, Anda akan memerlukan papan Arduino dan beberapa kabel jumper untuk menghubungkan semuanya. Koneksinya sederhana: beri daya pada sensor, hubungkan jalur data, dan Anda siap untuk melanjutkan. Pastikan koneksi Anda aman untuk menghindari masalah komunikasi.

Detail Datasheet

Produsen TE Connectivity
Nomor bagian HTU21D-F
Tegangan logika/IO 1,5 - 3,6 V
Tegangan suplai 3,3 V
Arus keluaran (khas) 0,02 µA (idle), 450 µA (aktif)
Rentang suhu -40 hingga +125 °C
Rentang kelembapan 0 hingga 100 % RH
Resolusi (suhu) 0,01 °C
Resolusi (kelembapan) 0,04 % RH
Kemasan DFN-8

 

  • Pastikan tegangan suplai yang tepat (1,5 - 3,6 V) untuk menghindari kerusakan.
  • Gunakan resistor pull-up pada jalur SDA dan SCL jika diperlukan.
  • Jaga kabel tetap pendek untuk meminimalkan noise dalam komunikasi I2C.
  • Periksa koneksi dengan hati-hati untuk menghindari input mengambang.
  • Gunakan heat sink jika beroperasi mendekati batas suhu maksimum.

Instruksi Pengkabelan

Arduino wiring for HTU21DF light intesity sensor
Arduino wiring for HTU21DF light intesity sensor

Untuk menghubungkan sensor HTU21D ke Arduino Anda, mulailah dengan menghubungkan pin daya. Hubungkan pin kiri sensor ke output 3,3V pada Arduino. Pin kedua harus dihubungkan ke ground (GND). Selanjutnya, hubungkan pin SDA sensor ke pin A4 Arduino, yang berfungsi sebagai jalur data untuk komunikasi I2C. Terakhir, hubungkan pin SCL sensor ke pin A5 pada Arduino, yang berfungsi sebagai jalur clock. Pastikan semua koneksi aman untuk menjaga komunikasi yang andal.

Jika Anda menggunakan papan yang berbeda, pin SDA dan SCL mungkin berbeda, jadi periksa spesifikasi papan Anda. Dalam video, opsi pengkabelan alternatif dibahas secara singkat (di video pada 1:30).

Contoh Kode & Penjelasan

Kita sekarang akan melihat kode yang berinteraksi dengan sensor HTU21D. Pertama, kita perlu menyertakan pustaka yang diperlukan untuk komunikasi I2C dan sensor HTU21D. Kutipan berikut menunjukkan fungsi setup:

void setup() {
  Serial.begin(9600);
  if (!htu.begin()) {
    Serial.println("Tidak dapat menemukan sensor!");
    while (1);
  }
}

Di sini, kita menginisialisasi Serial Monitor pada baud rate 9600. Kita kemudian mencoba menginisialisasi sensor dengan htu.begin(). Jika sensor tidak ditemukan, program akan mencetak pesan kesalahan dan berhenti.

Selanjutnya, kita terus membaca nilai suhu dan kelembapan dalam fungsi loop:

void loop() {
    float temp = htu.readTemperature();
    float rel_hum = htu.readHumidity();
    Serial.print("Suhu: "); Serial.print(temp); Serial.println(" C");
    Serial.print("Kelembapan: "); Serial.print(rel_hum); Serial.println(" %");
    delay(500);
}

Dalam loop ini, kita membaca suhu menggunakan htu.readTemperature() dan menyimpannya dalam variabel temp. Demikian pula, kita membaca kelembapan dengan htu.readHumidity(). Nilai-nilai tersebut kemudian dicetak ke Serial Monitor setiap 500 milidetik.

Untuk pendekatan yang lebih terstruktur, Anda dapat mendefinisikan fungsi untuk menangani pembacaan. Kode lengkap akan dimuat di bawah artikel ini, memberi Anda akses penuh ke semua fungsionalitas yang dibahas.

Demonstrasi / Apa yang Diharapkan

Ketika Anda mengunggah kode ke Arduino dan membuka Serial Monitor, Anda akan melihat pembacaan suhu dan kelembapan secara terus-menerus. Nilai akan diperbarui setiap setengah detik. Jika sensor mendeteksi suhu di atas batas maksimum 125 °C, sensor mungkin menampilkan nol atau nilai yang salah. Ini adalah jebakan umum yang perlu diperhatikan selama pengujian (di video pada 4:30).

Stempel Waktu Video

  • [00:00] Pendahuluan
  • [00:22] Tinjauan Sensor
  • [01:22] Tinjauan Datasheet
  • [02:28] Pengkabelan
  • [03:03] Instalasi Pustaka
  • [04:05] Penjelasan Kode (Bagian 1)
  • [08:33] Penjelasan Kode (Bagian 2)
  • [07:34] Demonstrasi Langsung

Gambar

thumb_robojax_HTU21DF_types-1756423961-8524
thumb_robojax_HTU21DF_types-1756423961-8524
Arduino wiring for HTU21DF light intesity sensor
Arduino wiring for HTU21DF light intesity sensor
HTU21D module
HTU21D module
HTU21D module-back
HTU21D module-back
212-Arduino code using HTU21D-F Humidity & Temperature Sensor (basic)
Bahasa: C++
++
/***************************************************
  This is an example for the HTU21D-F Humidity & Temperature Sensor

  Designed specifically to work with the HTU21D-F sensor from Adafruit
  ----> https://www.adafruit.com/products/1899

  These module use I2C to communicate; 2 pins are required to
  interface
 ****************************************************/

#include <Wire.h>
#include "Adafruit_HTU21DF.h"

// Connect Vin to 3-5VDC
// Connect GND to ground
// Connect SCL to I2C clock pin (A5 on UNO)
// Connect SDA to I2C data pin (A4 on UNO)

Adafruit_HTU21DF htu1 = Adafruit_HTU21DF();//create object for first HTU21DF sensor
Adafruit_HTU21DF htu2 = Adafruit_HTU21DF();//create object for second HTU21DF sensor
//Adafruit_HTU21DF htu3 = Adafruit_HTU21DF();//create object for third HTU21DF sensor (disabled, remove // from begging of code)

void setup() {
  Serial.begin(9600);
  Serial.println("HTU21D-F test for two modules");

  if (!htu.begin()) {
    Serial.println("Couldn't find sensor!");
    while (1);
  }
}

void loop() {
	//get value for sensor 1
    float temp1 = htu1.readTemperature();
    float rel_hum1 = htu1.readHumidity();

	//get value for sensor 2
    float temp2 = htu2.readTemperature();
    float rel_hum2 = htu2.readHumidity();	

	//get value for sensor 3
    float temp3 = htu3.readTemperature();
    float rel_hum3 = htu3.readHumidity();	
	
	//print values for sensor 1
    Serial.print("Sensor 1 Temp : "); Serial.print(temp1); Serial.print(" C");
    Serial.print("\t\t");
    Serial.print("Sensor 1 Humidity: "); Serial.print(rel_hum1); Serial.println(" %");

	//print values for sensor 2
    Serial.print("Sensor 2 Temp : "); Serial.print(temp2); Serial.print(" C");
    Serial.print("\t\t");
    Serial.print("Sensor 2 Humidity: "); Serial.print(rel_hum2); Serial.println(" %");	
	
	//print values for sensor 3
    //Serial.print("Sensor 3 Temp : "); Serial.print(temp3); Serial.print(" C");
    //Serial.print("\t\t");
    //Serial.print("Sensor 3 Humidity: "); Serial.print(rel_hum3); Serial.println(" %");	
	
    delay(500);
}

Hal-hal yang mungkin Anda butuhkan

Sumber daya & referensi

Berkas📁

Pustaka Arduino (zip)