Monitoring Suhu Kelembaban dengan STM32 dan DHT11

Kesempatan kali ini kita akan membuat sebuah proyek / aplikasi mikrokontroler STM32 (STM32F103) yaitu Monitoring suhu kelembaban dengan sensor DHT11. Cukup dengan sebuah sensor saja maka kita dapat mengetahui besaran temperatur (suhu) dan kelembaban udara (ruang). Sensor DHT11 ini relatif murah dari segi harga, walaupun tentu kualitas hasil pengukurannya tidak seakurat sensor lain seperti SHT11 (harga lebih mahal).

Berikut ini Spesifikasi sensor suhu kelembaban DHT11 :

  • Tegangan input : 3,5 – 5 VDC
  • Sistem komunikasi : Serial (single – Wire Two way)
  • Range suhu : 00C – 500C
  • Range kelembaban : 20% – 90% RH
  • Akurasi                 : ±20C (temperature) ±5% RH (humidity)

Range pengukuran suhu memang hanya sampai 50 C, tetapi cukuplah untuk belajar sensor, toh suhu ruangan yang diukur biasanya tidak sampai lebih dari 50 C. Sensor suhu dan kelembaban DHT11 terdiri dari 4 kaki/pin, tetapi yang dipakai hanya 3 pin saja. Biasanya kalau kita membeli dalam bentuk modul jumlah pin-nya menjadi 3 :

  • VCC(+) : tegangan input (5V)
  • GND(-) : Ground
  • DOUT : Data output serial

Sekarang langsung saja kita buat proyek monitoring suhu kelembabang STM32 dengan sensor DHT11. Hasil pembacaan sensor ditampilkan ke LCD dan juga Serial Monitor. Berikut ini kebutuhan hardwarenya :

  • STM32F103 development board (blue pill)
  • Breadboard
  • LCD 16×2
  • Trimpot 10 k
  • Modul Sensor DHT11
  • USB to TTL/USB to Serial (CH340/CP2102)
  • Kabel konektor

Selanjutnya kita buat alatnya dengan rangkaian monitoring suhu kelembaban DHT11 dan STM32 tampak seperti gambar berikut ini :

Koneksi DHT11 dengan STM32 agar lebih jelas :

Sedangkan untuk rangkaian LCD 16×2 dengan STM32 blue pill cukup 6 pin ditambah 2 pin untuk tegangan :

Ok rangkaian sudah siap ? Kita lanjutkan membuat programnya yaitu dengan Arduino IDE. Bagi yang masih baru mengenal STM32 silakan cek dulu tulisan sebelumnya “Mengenal Mikrokontroler STM32 dan Cara Pemrogramannya”.

Ohya untuk pemrograman DHT11 dengan STM32 ini kita perlu menambahkan library DHT11, silakan unduh 2 library berikut :

  1. DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library
  2. Adafruit Unified Sensor Lib: https://github.com/adafruit/Adafruit_Sensor

Setelah didownload dan di-unzip (extract) silakan masukkan ke folder libraries dimana anda menyimpan file aplikasi Arduino IDE.

Atau bisa juga melalui menu Sketch > Include Library > Add.ZIP Library… kemudian pilih file .ZIP yang sudah didownload tadi (2 file).

Cara lain menambahkan library Arduino melalui Library Manager. Dari menu Sketch > Include Library >  Manage Libraries …

Muncul jendela Library Manager di Arduino IDE, ketik dht11 pada kolom pencarian sehingga muncul beberapa nama library. Pilih DHT sensor library kemudian klik Instal dan tunngu hingga instalasi selesai.

Buka/jalankan Arduino IDE kemudian tulis kode program berikut.

/*********************************
 * Monitoring Suhu Kelembaban DHT11 STM32
  Download library berikut :
  DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library
  Adafruit Unified Sensor Lib: https://github.com/adafruit/Adafruit_Sensor
  www.ardutech.com
**********************************/
#include "DHT.h"
#include <LiquidCrystal.h> 
#define DHTPIN PB0  // DATA OUT DHT11 terhubung pin PB0

#define DHTTYPE DHT11   // Type sensor DHT : DHT 11
DHT dht(DHTPIN, DHTTYPE);//inisialisasi sensor DHT
LiquidCrystal lcd(PA0, PA1,PA2,PA3,PA4,PA5); 

void setup() {
  lcd.begin(16, 2);
  lcd.setCursor(0, 0); 
  lcd.print("Monitoring Suhu"); 
  lcd.setCursor(0, 1); 
  lcd.print("Kelembaban STM32");
  Serial.begin(9600);
  Serial.println("Monitoring Suhu Kelembaban STM32");
  dht.begin();
  delay(2000);
  lcd.clear();
  lcd.print("Humi=");
  lcd.setCursor(0,1);
  lcd.print("Temp=");
}
//========================================================
void loop() {  
  delay(2000);
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  float f = dht.readTemperature(true);
  // Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println(F("Gagal membaca data sensor DHT11"));
    return;
  }
  // Compute heat index in Fahrenheit (the default)
  float hif = dht.computeHeatIndex(f, h);
  // Compute heat index in Celsius (isFahreheit = false)
  float hic = dht.computeHeatIndex(t, h, false);

  Serial.print("Humidity: ");
  Serial.print(h);
  Serial.print("%  Temperature: ");
  Serial.print(t);
  Serial.println("°C ");
  
  lcd.setCursor(5,0);
  lcd.print(h);
  lcd.print(" %");
  lcd.setCursor(5,1);
  lcd.print(t);
  lcd.print(" C");
}

Simpan (save) dan upload. Buka Serial Monitor dari menu Tools -> Serial Monitor dan seting baudrate 9600. Hasilnya akan tampil seperti gambar berikut :

 

Pada LCD juga menampilkan hasil pembacaan sensor DHT11 yaitu kelembaban pada baris 1 dan nilai suhu pada baris ke-2. Nilai/data akan di-update setiap 2 detik.

Ok lain kali kita bahas program monitoring suhu kelembaban dengan STM32 dan sensor DHT11. Untuk saat ini sampai disini dulu ya. Kalau alat yang dibuat belum berjalan sesuai dengan yang ada di postingan ini, cek lagi koneksi kabelnya, sesuaikan dengan skematik. Perhatikan juga program yang dibuat.

Semoga bermanfaat.

Ardutech – “Sahabat Inovasi Anda

 

Leave a Reply

Your email address will not be published.