Tutorial Arduino Indonesia : rangkaian Arduino untuk menampilkan suhu ruangan pada 7 segment 4 digit
Kita akan menggunakan sensor suhu DHT11/DHT22 dan modul 7 segment 4 digit dengan driver TM1637, karena ini adalah kombinasi yang paling umum dan mudah digunakan untuk proyek semacam ini.
Komponen yang Dibutuhkan
Sebelum memulai, pastikan Anda memiliki komponen-komponen berikut:
Arduino Uno (atau model Arduino lain yang kompatibel)
Modul Sensor Suhu DHT11 atau DHT22 (DHT22 lebih akurat dan memiliki rentang yang lebih luas, tetapi DHT11 juga bisa digunakan)
Modul 7 Segment 4 Digit dengan Driver TM1637
Kabel Jumper (male-to-male dan male-to-female secukupnya)
Breadboard (opsional, untuk kerapian)
Rangkaian Arduino
Berikut adalah skema rangkaian untuk menghubungkan semua komponen ke Arduino Uno:
_______________________
| |
| ARDUINO |
| |
| Pin Digital: |
| D2 <-------------> DATA (DHT11/DHT22)
| D3 <-------------> DIO (TM1637)
| D4 <-------------> CLK (TM1637)
| |
| Pin Power: |
| 5V <-------------> VCC (DHT11/DHT22 & TM1637)
| GND <------------> GND (DHT11/DHT22 & TM1637)
|_______________________|
Penjelasan Koneksi:
Sensor DHT11/DHT22:
VCC (atau +) pada sensor ke 5V Arduino.
GND (atau -) pada sensor ke GND Arduino.
Data (atau Out) pada sensor ke Pin Digital 2 Arduino.
(Catatan: Beberapa modul DHT memiliki 3 pin, beberapa 4 pin. Jika 4 pin, pin NC (Not Connected) bisa diabaikan. Jika ada resistor pull-up eksternal, biasanya sudah terpasang pada modul.)
Modul 7 Segment TM1637:
VCC pada modul ke 5V Arduino.
GND pada modul ke GND Arduino.
DIO pada modul ke Pin Digital 3 Arduino.
CLK pada modul ke Pin Digital 4 Arduino.
Program Arduino (Sketch)
Untuk program ini, Anda memerlukan dua pustaka (library) di Arduino IDE:
DHT sensor library by Adafruit: Untuk membaca data dari sensor DHT.
TM1637Display by DIYables (atau pustaka TM1637 lainnya yang kompatibel): Untuk mengontrol modul 7 segment.
Langkah-langkah Instalasi Pustaka:
Buka Arduino IDE Anda.
Pergi ke Sketch > Include Library > Manage Libraries...
Cari "DHT sensor library" dan instal yang dibuat oleh Adafruit.
Cari "TM1637Display" dan instal yang dibuat oleh DIYables.
Setelah pustaka terinstal, Anda bisa mengunggah kode berikut ke Arduino Anda:
#include <DHT.h> // Pustaka untuk sensor DHT11/DHT22
#include <TM1637Display.h> // Pustaka untuk modul 7 segment TM1637
// --- Pengaturan Sensor DHT ---
#define DHTPIN 2 // Pin digital tempat data sensor DHT terhubung
#define DHTTYPE DHT11 // Tentukan tipe sensor: DHT11 atau DHT22
// Atau gunakan #define DHTTYPE DHT22 jika Anda menggunakan DHT22
DHT dht(DHTPIN, DHTTYPE); // Inisialisasi objek DHT
// --- Pengaturan Modul 7 Segment TM1637 ---
#define CLK 4 // Pin CLK (Clock) terhubung ke pin digital 4 Arduino
#define DIO 3 // Pin DIO (Data Input/Output) terhubung ke pin digital 3 Arduino
TM1637Display display(CLK, DIO); // Inisialisasi objek display TM1637
void setup() {
Serial.begin(9600); // Mulai komunikasi serial untuk debugging (opsional)
Serial.println("Memulai pembacaan suhu...");
dht.begin(); // Mulai sensor DHT
display.setBrightness(0x0f); // Atur kecerahan display (0x00=paling redup, 0x0f=paling terang)
}
void loop() {
// Tunggu beberapa saat di antara pembacaan (DHT11 butuh minimal 1 detik)
delay(2000); // Tunggu 2 detik untuk pembacaan berikutnya
// Baca suhu dalam Celcius
float suhuC = dht.readTemperature();
// Cek apakah pembacaan berhasil
if (isnan(suhuC)) {
Serial.println("Gagal membaca dari sensor DHT!");
// Tampilkan pesan error pada display jika pembacaan gagal
display.showNumberDecEx(8888, 0b01000000, true); // Tampilkan "Err " dengan titik desimal di digit kedua (sesuai segment code)
delay(1000);
display.clear(); // Hapus display
return;
}
// Tampilkan suhu pada Serial Monitor (untuk debugging)
Serial.print("Suhu: ");
Serial.print(suhuC);
Serial.println(" *C");
// Tampilkan suhu pada display 7 segment
// Karena 7 segment 4 digit, kita harus memastikan angkanya tidak lebih dari 99.9
// Jika suhu 25.5, tampilkan 25.5
// Jika suhu 30.0, tampilkan 30.0
// Jika suhu 5.5, tampilkan 05.5
int suhuInt = round(suhuC * 10); // Ubah float menjadi integer, misal 25.5 menjadi 255
// Tampilkan angka pada display dengan titik desimal
// Parameter pertama adalah angka yang akan ditampilkan
// Parameter kedua adalah bendera untuk menampilkan titik desimal.
// bit 0: digit 0, bit 1: digit 1, bit 2: digit 2, bit 3: digit 3
// Untuk titik desimal di antara digit kedua dan ketiga, kita set bit 1 (untuk angka sebelum desimal)
// misal 25.5 -> bit untuk digit kedua (posisi 1) di set 1.
display.showNumberDecEx(suhuInt, 0b01000000, true); // Menampilkan angka dengan titik desimal pada posisi yang tepat
// 0b01000000 artinya titik desimal ada di digit kedua (dari kiri, dimulai dari 0)
// true berarti menghilangkan nol di depan jika angkanya kurang dari 1000 (misal 025.5 menjadi 25.5)
}
Cara Kerja Program
Inklusi Pustaka: Kode dimulai dengan menyertakan pustaka
DHT.h
(untuk sensor) danTM1637Display.h
(untuk 7 segment).Definisi Pin: Mendefinisikan pin Arduino yang terhubung ke sensor DHT dan modul TM1637.
Inisialisasi Objek: Membuat objek
dht
dandisplay
yang akan digunakan untuk berinteraksi dengan sensor dan display.setup()
Fungsi:Serial.begin(9600);
: Menginisialisasi komunikasi serial untuk debugging. Anda bisa melihat output suhu di Serial Monitor Arduino IDE.dht.begin();
: Memulai komunikasi dengan sensor DHT.display.setBrightness(0x0f);
: Mengatur kecerahan maksimal untuk display 7 segment. Anda bisa mengubah0x0f
menjadi nilai yang lebih kecil (misalnya0x07
) untuk kecerahan yang lebih rendah.
loop()
Fungsi:delay(2000);
: Memberikan jeda 2 detik antara setiap pembacaan sensor. Sensor DHT11/DHT22 memerlukan waktu untuk stabil di antara pembacaan.float suhuC = dht.readTemperature();
: Membaca nilai suhu dari sensor DHT dalam derajat Celsius.if (isnan(suhuC))
: Memeriksa apakah pembacaan suhu berhasil. Jika gagal (misalnya, sensor tidak terhubung dengan benar), ia akan mencetak pesan kesalahan di Serial Monitor dan menampilkan "Err " pada display.Serial.print("Suhu: "); Serial.print(suhuC); Serial.println(" *C");
: Mencetak suhu ke Serial Monitor.int suhuInt = round(suhuC * 10);
: Ini adalah bagian penting untuk menampilkan desimal. Karena display 7 segment ini hanya bisa menampilkan angka bulat, kita mengalikan suhu dengan 10 (misalnya, 25.5times10=255). Kemudian, kita akan "memaksa" titik desimal muncul di posisi yang benar.display.showNumberDecEx(suhuInt, 0b01000000, true);
: Ini adalah fungsi utama untuk menampilkan angka pada 7 segment.suhuInt
: Angka yang akan ditampilkan (misalnya, 255).0b01000000
: Ini adalah bitmask untuk titik desimal. Dalam kasus ini,0b01000000
berarti titik desimal akan muncul di antara digit kedua dan ketiga (jika dihitung dari kanan, digit 0, 1, 2, 3. Ini berarti setelah digit kedua). Untuk angka seperti 25.5, ini akan ditempatkan di antara 5 dan .true
: Parameter ini berfungsi untuk menghilangkan nol di depan. Misalnya, jika suhunya 5.5,suhuInt
akan menjadi 55. Dengantrue
, display akan menunjukkan5.5
bukan05.5
.
Setelah Pemrograman
Pastikan semua kabel terpasang dengan benar sesuai skema rangkaian.
Hubungkan Arduino ke komputer Anda.
Pilih Board dan Port yang benar di menu Tools Arduino IDE.
Klik tombol Upload (panah kanan) untuk mengunggah program ke Arduino.
Setelah proses unggah selesai, Anda akan melihat suhu ruangan ditampilkan pada modul 7 segment. Anda juga bisa membuka Serial Monitor (Ctrl+Shift+M atau Tools > Serial Monitor) untuk melihat nilai suhu dalam format teks.
Selamat mencoba!
Komentar
Posting Komentar