Halo Fanbot!
Kalian pecinta kucing?
Buat kalian yang memelihara kucing. Perawatan kucing pastinya sangat diperlukan. Banyak yang perlu diperhatikan, baik dari makanannya maupun lingkungannya. Nah pada project kali ini, kita akan membuat monitoring suhu dan kelembabang dengan Arduino Uno dan DHT11. Bagaimana cara membuatnya? yuk kita simak.
Alat dan Bahan
Berikut ini merupakan alat dan bahan yang diperlukan untuk project kali ini.
- Smartphone terinstall aplikasi Arduino Droid.
- Kabel USB Type B (untuk Arduino Uno) dan OTG (untuk menghubungkan dengan smartphone)
- Arduino Uno (1)
- Sensor DHT11 (1)
- LCD 16X2 (1)
- I2C LCD (1)
- Breadboard (1)
- Kabel jumper (secukupnya).
Library yang dibutuhkan untuk project kali ini.
- Sensor DHT11 (download di sini)
- Adafruit Sensor (download di sini )
- I2C Liquid Crystal (download di sini)
Rangkaian
Rangkai bahan di atas menjadi seperti gambar berikut ini.
Belajar Elektronika, Arduino, dan IoT step by step dengan bantuan tangga belajar? Daftar sekarang dan dapatkan PROMO
Program
Ikuti langkah berikut ini untuk memahami program dengan baik.
- Buka aplikasi Arduino Droid.
- Masukkan library DHT untuk pembacaan sensor DHT11 dilengkapi dengan Library Adafruit Sensor. I2C Liquid Crystal untuk menuliskan teks di LCD.
- Jika sudah, buka Libraries Examples > User Libraries > DHT Sensor Library > DHTTester. Hapus statemen yang ada comment-nya (//) untuk memperjelas program. Sehingga program menjadi seperti berikut.
#include "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT22 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); Serial.println("DHTxx test!"); dht.begin(); } void loop() { delay(2000); float h = dht.readHumidity(); float t = dht.readTemperature(); float f = dht.readTemperature(true); if (isnan(h) || isnan(t) || isnan(f)) { Serial.println("Failed to read from DHT sensor!"); return; } float hif = dht.computeHeatIndex(f, h); float hic = dht.computeHeatIndex(t, h, false); Serial.print("Humidity: "); Serial.print(h); Serial.print(" %\t"); Serial.print("Temperature: "); Serial.print(t); Serial.print(" *C "); Serial.print(f); Serial.print(" *F\t"); Serial.print("Heat index: "); Serial.print(hic); Serial.print(" *C "); Serial.print(hif); Serial.println(" *F"); } |
baca juga: Perbedaan Arduino Droid dengan Arduino IDE
- Selanjutnya kita hapus Serial Print yang tidak kita gunakan dalam project ini. Project hanya membutuhkan nilai Humidity (kelembaban) dan Temperature (suhu). Sehingga program menjadi seperti berikut.
#include "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT22 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); Serial.println("DHTxx test!"); dht.begin(); } void loop() { delay(2000); float h = dht.readHumidity(); float t = dht.readTemperature(); float f = dht.readTemperature(true); if (isnan(h) || isnan(t) || isnan(f)) { Serial.println("Failed to read from DHT sensor!"); return; } float hif = dht.computeHeatIndex(f, h); float hic = dht.computeHeatIndex(t, h, false); Serial.print("Humidity: "); Serial.print(h); Serial.print(" %\t"); Serial.print("Temperature: "); Serial.print(t); Serial.print(" *C "); } |
- Selanjutnya, masukkan program dari LCD untuk dapat menampilkan hasil baca sensor secara langsung. Berikut ini merupakan program untuk menampilkan teks pada LCD.
#include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); void setup() { lcd.init(); lcd.backlight(); } void loop() { lcd.setCursor(0,0); lcd.print("Teks di sini"); } |
(teman-teman juga dapat membukanya di examples LiquidCrystal_I2C)
baca juga: Tutorial Lengkap Menggunakan Arduino Droid untuk Pemula
- Jika kita masukkan di antara keduanya, maka hasilnya menjadi seperti berikut.
#include <LiquidCrystal_I2C.h> #include "DHT.h" #define DHTPIN 2 LiquidCrystal_I2C lcd(0x27,16,2); #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); Serial.println("DHTxx test!"); lcd.init(); lcd.backlight(); dht.begin(); } void loop() { delay(2000); float h = dht.readHumidity(); float t = dht.readTemperature(); float f = dht.readTemperature(true); if (isnan(h) || isnan(t) || isnan(f)) { Serial.println("Failed to read from DHT sensor!"); return; } float hif = dht.computeHeatIndex(f, h); float hic = dht.computeHeatIndex(t, h, false); Serial.print("Lembab: "); Serial.print(h); Serial.print(" %\t"); Serial.print("Suhu: "); Serial.print(t); Serial.print(" *C "); lcd.setCursor(0,0); lcd.print("Lembab = "); lcd.print(h); lcd.print(" %"); lcd.setCursor(0,1); lcd.print("Suhu = "); lcd.print(t); lcd.print(" C"); } |
- Coba kirimkan program di atas ke Arduino Uno anda.
baca juga: Arduino Droid Project : Pakan Ikan Otomatis dengan Arduino Uno dan RTC DS1307
Penjelasan program.
- Program #define DHTPIN 2 digunakan untuk membuat pin 2 menjadi input untuk sensor DHT11. Jika kita menggunakan pin lainnya, silakan ubah sesuai dengan kebutuhan.
- Program LiquidCrystal_I2C lcd(0x27,16,2); pada bagian 0x27 merupakan alamat I2C. 16,2 adalah banyaknya baris dan kolom untuk LCD.
- Program #define DHTTYPE DHT11 digunakan untuk menjelaskan jenis DHT yang digunakan adalah DHT11.
- Program untuk menampilkan suhu dan kelembaban di LCD ada pada lcd.setCursor(0,0);, lcd.print(“Lembab = “); dan seterusnya. Pada setCursor, angka di belakangnya (0,0) adalah kolom dan baris untuk memulai teks. sedangkan LCD print berfungsi untuk menampilkan teks di dalamnya.
Bagaimana? Paham kan teman-teman? atau masih ada yang dibingungkan?
Kalau kalian sudah bisa di bagian ini, kalian bisa mulai upgrade dengan menambahkan buzzer yang dapat berbunyi ketika suhu tidak sesuai dengan kondisi seharusnya. Selamat mencoba ya semuanya.
Mau belajar elektronika dasar? Arduino? atau bahkan Internet of Things? Ikuti kursus online Indobot Academy!