Penulisan kali ini adalah berkenaan tentang bagaimana cara untuk menggunakan sensor suhu dan kelembapan DHT11 / DHT22 dengan papan Wemos Lolin32. Sensor DHT11 / DHT22 sering digunakan dalam mendapatkan bacaan suhu dan kelembapan kawasan sekeliling sensor. Sensor ini sangat popular di kalangan penggemar elektronik DIY. – Pengenalan –

Oleh Muhammad Ilyasaa dalam Tutorial Arduino
Tahap Kesukaran : Baru Mula Belajar

Ikuti tutorial ini terlebih dahulu >> IoT ESP32 Menggunakan Paparan OLED SSD1306.

PERHATIAN : Versi Arduino IDE yang digunakan untuk penulisan tutorial ini adalah Arduino IDE Versi 1.8.4. Kami tidak menjamin penulisan tutorial ini berfungsi pada versi Arduino IDE yang lain.

>> Muat turun Arduino IDE Versi 1.8.4 di sini <<

Kami persembahkan bacaan di laman NADI Eleczone Solutions ini kepada para pelajar, mahasiswa dan peminat teknologi, demi kepentingan perkembangan ilmu teknologi ilmiah dan amaliah di Malaysia tercinta kita.
Semoga diberkahi dan diredhai Allah Subhanahu wa Ta’ala – Amin!

>> PEngenalan <<

Penulisan kali ini adalah berkenaan tentang bagaimana cara untuk menggunakan sensor suhu dan kelembapan DHT11 / DHT22 dengan papan Wemos Lolin32. Sensor DHT11 / DHT22 sering digunakan dalam mendapatkan bacaan suhu dan kelembapan kawasan sekeliling sensor. Sensor ini sangat popular di kalangan penggemar elektronik DIY.

>> tentang DHT11 dan DHT22  <<

Sensor ini mengandungi cip analog ke digital yang terbina di dalamnya dan seterusnya mengeluarkan isyarat digital yang mengandungi maklumat tentang suhu dan kelembapan kawasan sekeliling sensor.

DHT11 dan DHT22 adalah dua sensor yang boleh dikatakan serupa cuma berbeza sedikit dalam spesifikasi mereka. Secara amnya, DHT22 lebih hebat daripada DHT11 dan semestinya DHT22 lebih mahal daripada DHT11.

Antara perbezaan yang menarik untuk disentuh mengenai kedua dua sensor ini adalah julat suhu yang boleh diukur oleh kedua dua sensor ini adalah seperti berikut :

  • DHT11 : Julat suhu dari 0 hingga 50 ºC dengan ketepatan +/-2 ºC
  • DHT22 : Julat suhu dari  -40 hingga 80 ºC dengan ketepatan +/-0.5ºC

Sensor DHT22 mempunyai kadar ketepatan yang lebih baik dan julat pengukuran suhu yang lebih luas. Walau bagaimanapun, ia sedikit lebih mahal dan anda hanya boleh membuat setiap pembacaan hanya dengan selang 2 saat.

Sensor DHT11 pula mempunyai julat pengukuran suhu yang lebih kecil dan kurang tepat berbanding DHT22. Walau bagaimanapun, kadar tindak balasnya lebih cepat yang mana membolehkan permintaan bacaan sensor setiap 1 saat. Yang penting, DHT11 lebih murah harganya.

Walaupun mempunyai spesifikasi suhu yang berbeza, kedua dua sensor ini berfungsi dengan cara yang serupa dan anda boleh menggunakan kod yang sama (dengan hanya sedikit perubahan) untuk membaca suhu dan kelembapan.

>> SAMBUNGAN LITAR <<

Untuk penulisan kali ini, anda perlu mendapatkan sensor suhu dan kelembapan DHT11 atau DHT22 dan papan Wemos Lolin32 ESP32 :

Buat sambungan sensor DHT11 atau DHT22 ke papan Wemos Lolin32 anda seperti yang ditunjukkan dalam gambar di atas. Kita akan menyambungkan pin data DHT (yang berlabel OUT) ke pin GPIO 25 papan Wemos Lolin32.

>> memasang PUSTAKA <<

Sebelum meneruskan tentang pemasangan pustaka DHT, pastikan anda telah memasang pustaka OLED. Jika masih belum memasang pustaka OLED, anda boleh ikuti cara caranya melalui penulisan IoT ESP32 Menggunakan Paparan OLED SSD1306.

>> memasang PUSTAKA DHT11 dan DHT22 <<

Terdapat beberapa pustaka (Library) untuk mengawal sensor jenis DHT dengan ESP32 yang boleh didapati di internet. Dalam penulisan ini, kita akan menggunakan dua pustaka yang agak popular dari Adafruit iaitu DHT Sensor dan Adafruit Unified Sensor.

Buka Arduino IDE dan pergi ke Sketch Include Library > Manage Libraries. Buat carian DHT di kotak carian dan pasang pustaka DHT Sensor by Adafruit.

Selepas memasang pustaka DHT dari Adafruit, buat carian Adafruit Unified Sensor di kotak carian dan pasang pustaka Adafruit Unified Sensor by Adafruit.

Setelah selesai memasang kedua dua pustaka yang diperlukan, tutup dan buka semula Arduino IDE anda bagi membolehkan pustaka bersedia untuk digunakan.

>> muat naik kod ke papan Wemos Lolin32 <<

Buka perisian Arduino IDE dan copy paste kod di bawah ke Arduino IDE anda.

/* Programmer : Muhammad Ilyasaa Bin Abdul Rahman
 * More info at https://www.nadieleczone.com.my
 */

// Bahagian Pustaka
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include "DHT.h"

// Tetapan Paparan OLED
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
const int oledSDA = 5;
const int oledSCL = 4;

// Tetapan Sensor DHT
#define DHTTYPE DHT11
const int sensorDHT = 25;
DHT dht(sensorDHT, DHTTYPE);

void setup() 
{
  // Tetapan untuk OLED
  Wire.begin(oledSDA, oledSCL);
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C, false, false)) 
  {
    Serial.println(F("SSD1306 Tiada Dalam Carian"));
    for(;;);
  }

  // Tetapan untuk DHT
  dht.begin();
 
  // Kosongkan Paparan
  display.clearDisplay();
  display.display(); // Arahan dilaksanakan  
  
  // Menetapkan Saiz Perkataan
  display.setTextSize(3);
  display.display(); // Arahan dilaksanakan

  // Menetapkan Warna Perkataan
  display.setTextColor(WHITE);
  display.display(); // Arahan dilaksanakan
}
 
void loop() 
{
  delay(2000);

  float t = dht.readTemperature();
  float h = dht.readHumidity();

  // Kosongkan Paparan
  display.clearDisplay();
  display.display(); // Arahan dilaksanakan 
  
  // Menetapkan posisi pixel
  display.setCursor(0, 0);
  display.display(); // Arahan dilaksanakan
  
  // Memaparkan perkataan
  display.print(t);
  display.println(" C");
  display.display(); // Arahan dilaksanakan 

  // Memaparkan perkataan
  display.print(h);
  display.println(" %");
  display.display(); // Arahan dilaksanakan   
}

Hubungkan papan Wemos Lolin32 ESP32 ke komputer menggunakan wayar USB. Pilih jenis papan ESP32 anda (dalam penulisan ini, jenis papan yang dipilih adalah WEMOS LOLIN32).

Kemudian, pilih Port yang betul. Pemilihan Port yang salah akan menyebabkan kod gagal dimuat naik. Jika anda tidak dapat melihat Port COM yang memberi tindak balas kepada papan ESP32 di Arduino IDE anda, anda perlu memasang pemacu CP210x USB to UART Bridge VCP terlebih dahulu. Antara satu komputer dengan komputer yang lain akan memberikan nombor COM yang berbeza atau mungkin sama dengan gambar di bawah.

Tekan butang Upload di Arduino IDE. Selepas menekan butang, kod akan mula di compile dan seterusnya mula untuk dimuat naik ke papan Wemos Lolin32 ESP32 anda.

Jika kesemua proses berjalan dengan lancar, anda akan melihat mesej Done uploading yang menandakan proses memuat naik kod ke papan ESP32 sudah berjaya dan selesai.

Sepatutnya sejurus selesai berjaya memasukkan kod, bacaan suhu di dalam unit Celcius dan bacaan kelembapan di dalam unit peratus akan terus terpapar pada paparan OLED. Jika tiada bacaan suhu dan kelembapan yang terpapar, tekan butang EN (untuk reset) yang terdapat pada papan Wemos Lolin32 ESP32. Bacaan suhu dan bacaan kelembapan akan terpapar pada paparan OLED seperti gambar di bawah.

>> jom kita lihat bagaimana kod berfungsi? <<

Memasukkan Pustaka

Pertama, kita perlu memasukkan pustaka yang diperlukan. Pustaka DHT diperlukan bagi membolehkan komunikasi dengan sensor DHT dilakukan.


#include "DHT.h"

Penetapan Sensor DHT

Kita akan menetapkan jenis sensor DHT yang akan gunakan. Pustakan DHT di atas menyokong sensor DHT11, DHT22, dan DHT21. Dalam penulisan kali ini, kita akan menggunakan sensor DHT11. Jika anda ingin menggunakan sensor DHT22, apa yang perlu anda lakukan adalah anda perlu mengubah perkataan DHT11 kepada perkataan DHT22 sahaja.


#define DHTTYPE DHT11

Seterusnya kita akan menetapkan pin digital yang akan disambungkan kepada pin data sensor DHT. Dalam penulisan kali ini, sensor DHT akan disambungkan ke pin GPIO 25 pada papan Wemos Lolin32.


const int sensorDHT = 25;

Kod di bawah pula adalah bagaimana kita akan mewujudkan objek DHT yang mempunyai maklumat jenis sensor dan pin yang akan digunakan.


DHT dht(sensorDHT, DHTTYPE);

Memulakan Sensor DHT

Di dalam fungsi setup(), kita akan memulakan sensor DHT dengan menggunakan arahan kod di bawah.


dht.begin();

Di dalam fungsi loop(), kita akan berjumpa dengan fungsi delay() selama 2000ms atau bersamaan dengan 2 saat. Fungsi delay() ini akan memastikan pengambilan data suhu dan kelembapan dari DHT11 sekurang kurangnya paling cepat terjadi adalah 2 saat.


delay(2000);

Data suhu dan kelembapan yang diperoleh adalah di dalam format float (nombor perpuluhan). Oleh itu, kita perlu membuat memori berbentuk float bernama h dan t untuk menyimpan data kelembapan dan suhu Celsius.

Fungsi readHumidity() dan readTemperature() pada objek dht akan membolehkan kita mendapatkan data bacaan kelembapan dan suhu daripada sensor DHT.


float t = dht.readTemperature();
float h = dht.readHumidity();

Akhirnya setelah mendapatkan data bacaannya, kita akan memaparkan nilai suhu dan kelembapan pada paparan OLED.


// Memaparkan perkataan
display.print(t);
display.println(" C");
display.display(); // Arahan dilaksanakan 

// Memaparkan perkataan
display.print(h);
display.println(" %");
display.display(); // Arahan dilaksanakan   

>> TAHNIAH, ANDA HEBAT <<

Baca artikel tentang Piawaian IoT – Teknologi Radio, Internet Kebendaan Dan Peranti Berkuasa Rendah.

Baca artikel tentang ESP32-S2 Bukan Sebagai Pengganti ESP32.

Kunjungi sekarang kedai Internet of Things ESP32 Pulau Pinang di

Nadi Eleczone Solutions
Lot 1667, Tingkat 1, Jalan Teluk Air Tawar, Taman Air Tawar Indah, 13050 Butterworth, Penang
04 – 351 1802

TINGGALKAN JAWAPAN BALAS ANDA

Sila masukkan ulasan anda!
Sila masukkan nama anda di sini