Senin, 24 Oktober 2016

Interfacing DHT11 sensor suhu dan kelembaban pada board NodeMCU V1.0 (Arduino IDE)

DHT11 merupakan sensor suhu dan kelembaban dengan suatu kalibrasi nilai output digital. Setiap elemen dHT11 adalah dikalibrasi dilaboratorium, dan koefisien kalibrasi disimpan pada sebagai program pada OTP memori yang digunakan oleh internal sensor memberi sinyal proses deteksi. Panjang kabel serial interface ke sensor dapat mencapai 20 meter sehingga merupakan pilihan yang tepat untuk berbagai aplikasi.

Gambaran umum terkait DHT11 adalah sebagai berikut:
  1. Jangkauan pengukuran : 20 s/d 90% RH, 0 s/d50 derajat celsius
  2. Akurasi kelembaban: lebih kurang 5 %RH
  3. Akurasi temperatur: lebih kurang 2 derajat celsius
  4. Sumber tegangan: 3 - 5.5V
  5. Tidak lebih dari 1 Hz sampling rate (satu kali per-detik)
  6. Stabilitas : < ± 0.5% RH / yr in

Jika anda membutuhkan sensor suhu dan kelembaban dengan tingkat jangkauan dan akurasi yang lebih baik, maka anda dapat mempertimbangkan DHT22 dengan spesifikasi sebagai berikut.
  1. Jangkauan pengukuran : 0 s/d100% RH, -40 s/d 125 derajat celsius
  2. Akurasi kelembaban: lebih kurang 2 s/d 5 %RH
  3. Akurasi temperatur: lebih kurang 0.5 derajat celsius
  4. Sumber tegangan: 3 - 5.5V
  5. Tidak lebih dari 0.5 Hz sampling rate (dua kali per-detik)



Gambar 1. Sensor DHT11 dan DHT22

Gambar 2. Pin pada sensor DHT11

Gambar 3. Aplikasi sensor DH11

Ketika kabel koneksi adalah kurang dari 20 meter, maka suatu resistor 5k pull-up adalah direkomendasikan, ketika kabel adalah lebih dari 20 meter suatu resistor pull-up yang sesuai dibutuhkan.

Ketika dihidupkan, jangan mengirim sinyal apapun ke sensor dalam 1 detik yang pertama untuk melewati status ketidakstabilan. Suatu kapasitor 100uF dapat ditambahkan antara VDD dan GND untuk power filtering.

Langkah-langkah:
1. Buatlah rangkaian dimana hubungkan pin1 sensor ke sumber power 3V3, dan pin 4 ke GND, dan pin 2 ke pin D5 sebagai berikut:

Gambar 4. Interface antara DHT11 dengan board NodeMCU V1.0

Catatan: Sesuai dengan rekomendasi, anda dapat menambahkan tahanan sebesar 5k menghubungkan pin 2 dan VCC untuk pull-up.

2. Download library DHT11 Stable yang dapat diperoleh pada  kemudian di zip
3. Dari menu Sketch, pilih include Library, dan pilih Add .Zip Library, dan pilih DHT11Stable.zip
4. Lakukan koding sebagai berikut:

#include <dht.h>
dht DHT;

const int iPinDHT11 = D5; //pin interface DHT11 data ke pin D5 pada board

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(iPinDHT11, INPUT);
  delay(1000); //tunggu stabilisasi sensor DHT11 sebagaimana datasheet

}

void loop() {
  // put your main code here, to run repeatedly:
  int chk = DHT.read11(iPinDHT11);
  Serial.print("humidity: ");
  Serial.print(DHT.humidity);
  Serial.print("%");
  Serial.print(", suhu: ");
  Serial.print(DHT.temperature);
  Serial.print("C");
  Serial.println(); 
  delay(1000); //tidak lebih dari 1 Hz (satu kali sampling per-detik)
}

5. Klik pada Verify
6. Klik pada Upload
7. Pada menu Tools pilih serial monitor, dan set ke baud rate ke 9600

Gambar 5. Hasil monitoring

Troubleshooting:
Jika pada saat Verify, anda mendapatkan error:

In member function 'int dht::_readSensor(uint8_t, uint8_t)':

error: cannot convert 'volatile uint32_t* {aka volatile unsigned int*}' to 'volatile uint8_t* {aka volatile unsigned char*}' in initialization

 #define portInputRegister(port)     ((volatile uint32_t*) &GPI)

note: in expansion of macro 'portInputRegister'

     volatile uint8_t *PIR = portInputRegister(port);

Using library DHTLib in folder: ...\Arduino\libraries\DHTLib (legacy)
exit status 1
Error compiling for board NodeMCU 1.0 (ESP-12E Module).

Berarti Library DH11 bukanlah versi stable, silakan download ulang dan tambahkan ke Sketch dan verifikasi ulang.

Rangkaian diatas juga telah ditest dengan kabel sepanjang 7 meter (Kabel UTP CAT6) dari sensor ke board, dan dapat bekerja dengan baik.

 Gambar 6. Rangkaian sensor suhu dan kelembaban ditest dengan kabel 7 meter

Salam,
Hendra.


2 komentar:

  1. saya sudah coba dengan kabel 5 meter tetapi tidak deteksi suhu , kalau kabel jemper bisa karena pendek. yg jadi pertanyaan apakah bapak pernah coba dan gimana solusinya, soalnya sudah coba pakai resistor 2,2 k 4k7 10 k masih g detek untuk jarak 5 meter

    BalasHapus
  2. Pak dika, awalnya saya coba rangkaian dengan kabel jumper untuk tulisan tersebut diatas. Tetapi setelah ada pertanyaan dari Bapak saya juga penasaran, kebetulan dikantor ada kabel LAN CAT 6, saya ambil kabel yang panjangnya 7 meter, kemudian saya kupas kabel warna biru, kemudian saya buat rangkaian dari pin 2 DH11 ke pin D4, dan saya restart sistem, dan juga terbaca dengan baik. Resistor yang saya pakai adalah 10k, kebetulan tidak ada resistor yang 5k atau 4k7.

    Salam,
    Hendra.

    BalasHapus