Pada saat ini saya ingin berbagi pengalaman interfacing mikrokontroller Arduino UNO untuk melakukan pembacaan suhu dan kelembaban ruangan. Peralatan yang harus disiapkan antara lain :
- Arduino UNO + Kabel USB
- Breadboard
- Jumper Kabel
- Resistor 4k7
Sketch/program dibuat dengan menggunakan Arduino IDE 1.6.7, bisa di download disini dan diperlukan library DHT11 dalam pemrograman. Jika belum punya, silahkan download disini. Sensor DHT11 mempunyai 4 pin seperti gbr dibawah :
Sesuai datasheet dari sensor DHT11, antara pin VCC (1) dan DATA (2) harus dikoneksikan dengan resistor 4k7. Pin NC (3) tidak digunakan, pin VCC (1) disambungkan ke pin +5V dari Arduino UNO dan pin GND (4) disambungkan ke pin GND dari Arduino UNO. Sehingga rangkaian selengkapnya akan terlihat seperti gambar di bawah :
Ekstrak library DHT11.zip dan taruh hasil ekstrak tersebut pada folder libraries pada Arduino IDE. Jalankan Arduino IDE, kemudian copy paste contoh sketch bawaan dari library seperti di bawah ini :
/* DHT11 Humidity and Temperature Sensor test */ /-----( Import needed libraries )-----/ #include <dht11.h> dht11 DHT11; define DHT11PIN 2; void setup(){ Serial.begin(9600); Serial.println("DHT11 TEST PROGRAM"); Serial.print("LIBRARY VERSION: "); Serial.println(DHT11LIB_VERSION); Serial.println(); } void loop(){ Serial.println(); int chk = DHT11.read(DHT11PIN); Serial.print("Read sensor: "); switch (chk){ case 0: Serial.println("OK"); break; case -1: Serial.println("Checksum error"); break; case -2: Serial.println("Time out error"); break; default: Serial.println("Unknown error"); break; }Serial.print("Humidity (%): ");
Serial.println((float)DHT11.humidity, 2);
Serial.print("Temperature (oC): ");
Serial.println((float)DHT11.temperature, 2);
Serial.print("Temperature (oF): ");
Serial.println(Fahrenheit(DHT11.temperature), 2);
Serial.print("Temperature (K): ");
Serial.println(Kelvin(DHT11.temperature), 2);
Serial.print("Dew Point (oC): ");
Serial.println(dewPoint(DHT11.temperature, DHT11.humidity));
Serial.print("Dew PointFast (oC): ");
Serial.println(dewPointFast(DHT11.temperature, DHT11.humidity));
delay(2000);
}/ --(end main loop )-- / /-----( Declare User-written Functions )-----/ // //Celsius to Fahrenheit conversion double Fahrenheit(double celsius){ return 1.8 * celsius + 32; } //Celsius to Kelvin conversion double Kelvin(double celsius){ return celsius + 273.15; } // dewPoint function NOAA double dewPoint(double celsius, double humidity){ double A0= 373.15/(273.15 + celsius); double SUM = -7.90298 * (A0-1); SUM += 5.02808 * log10(A0); SUM += -1.3816e-7 * (pow(10, (11.344*(1-1/A0)))-1) ; SUM += 8.1328e-3 * (pow(10,(-3.49149*(A0-1)))-1) ; SUM += log10(1013.246); double VP = pow(10, SUM-3) * humidity; double T = log(VP/0.61078); // temp var return (241.88 * T) / (17.558-T); } // delta max = 0.6544 wrt dewPoint() // 5x faster than dewPoint() // reference: http://en.wikipedia.org/wiki/Dew_point double dewPointFast(double celsius, double humidity){ double a = 17.271; double b = 237.7; double temp = (a * celsius) / (b + celsius) + log(humidity/100); double Td = (b * temp) / (a - temp); return Td; } /* ( THE END ) */
Upload sketch ke board Arduino UNO, setelah sukses terupload, buka menu : Tools –> Serial Monitor. Data pembacaan dari sensor DHT11 akan ditampilkan pada window Serial Monitor tsb.
Selain DHT11 atau DHT22, ada sensor suhu dan kelembaban dari pabrikan Dallas Semiconductor yang cukup terkenal dan banyak digunakan yaitu DS18B20. Kemudian ada juga sensor suhu non kontak dengan teknologi inframerah yaitu GY-906 MLX90614. Untuk mengetahui lebih detail tentang masing-masing sensor suhu tersebut beserta contoh programnya, silahkan buka artikel dibawah :
- Pemrograman Sensor Suhu DS18b20 dengan NodeMCU Menggunakan Arduino IDE
- Belajar Program Sensor Suhu Non Contact IR (Infra Red) GY-906 MLX90614 Dengan Arduino
+++ Selamat Mencoba +++
Leave a Reply