Pelajaran 20/31: Menampilkan Suhu dan Kelembapan dari DHT11 pada Layar LCD
Tutorial ini menunjukkan cara menggabungkan sensor suhu dan kelembapan DHT11 dengan layar LCD1602 yang mendukung I2C untuk membuat stasiun pemantau lingkungan yang ringkas. Alih-alih membaca data sensor mentah dari monitor serial, Anda akan belajar menampilkan pembacaan suhu dan kelembapan secara langsung di layar karakter 16x2. Proyek ini ideal untuk membuat stasiun cuaca desktop, monitor rumah kaca kecil, atau menambahkan pembacaan lokal ke proyek otomasi rumah. Antarmuka I2C menyederhanakan pengkabelan, menjadikannya proyek yang mudah diakses untuk pemula dan tambahan cepat untuk pembuat yang berpengalaman.
Berikut adalah beberapa ide praktis tentang apa yang dapat Anda bangun dengan pengetahuan ini:
- Stasiun cuaca desktop yang menampilkan kondisi ruangan saat ini.
- Layar ringkas untuk terarium reptil atau tanaman.
- Pembacaan lokal untuk ruang server atau lingkungan bengkel.
- Modul dasar untuk sistem otomasi rumah yang lebih kompleks.
Perangkat Keras dan Komponen
Untuk membangun proyek ini, Anda akan membutuhkan komponen berikut:
- Arduino Uno (atau papan yang kompatibel)
- Layar LCD1602 dengan modul antarmuka I2C
- Sensor suhu dan kelembapan DHT11
- Resistor pull-up 4,7kΩ atau 10kΩ (jika menggunakan sensor DHT11 telanjang)
- Kabel jumper
- Papan roti (opsional, untuk koneksi yang lebih mudah)
Memahami LCD1602 I2C
LCD1602 adalah layar karakter umum dengan 16 kolom dan 2 baris. Modul "I2C" yang disolder di bagian belakang layar adalah kunci kesederhanaannya. Modul ini mengubah antarmuka paralel LCD menjadi antarmuka serial I2C, yang hanya membutuhkan dua kabel untuk data (SDA dan SCL) dan dua untuk daya (VCC dan GND). Ini secara drastis mengurangi jumlah pin yang dibutuhkan di Arduino Anda, menyisakan lebih banyak untuk sensor dan aktuator lain. Modul ini juga menyertakan potensiometer kecil untuk menyesuaikan kontras layar, yang sangat penting untuk memastikan teks terlihat. Alamat I2C modul dapat diubah menggunakan jumper solder kecil (A0, A1, A2) di papan, memungkinkan beberapa perangkat I2C untuk hidup berdampingan di bus yang sama.
Panduan Pengkabelan
Hubungkan komponen seperti yang ditunjukkan pada diagram di bawah. LCD I2C menggunakan pin I2C Arduino, sementara sensor DHT11 menggunakan pin digital.
Untuk LCD1602-I2C:
- VCC ke Arduino 5V
- GND ke Arduino GND
- SDA ke Arduino A4
- SCL ke Arduino A5
Untuk sensor DHT11:
- VCC (Pin 1) ke Arduino 5V
- Data (Pin 2) ke Arduino Pin Digital 2 (dengan resistor pull-up 10kΩ ke 5V)
- NC (Pin 3) - Tidak Terhubung
- GND (Pin 4) ke Arduino GND
(di video pada 25:16)
Menyiapkan Pustaka
Proyek ini membutuhkan dua pustaka. Pustaka Wire.h adalah bagian dari instalasi Arduino standar. Anda perlu menginstal pustaka LiquidCrystal_I2C dan pustaka dht11. Video ini menunjukkan cara menginstalnya. Anda dapat mengunduh pustaka dari tautan yang disediakan di deskripsi video atau dari situs web Robojax. Setelah diunduh, Anda dapat menginstalnya melalui Arduino IDE dengan menavigasi ke Sketch > Include Library > Add .ZIP Library... dan memilih file yang diunduh. (di video pada 06:16)
Menemukan Alamat I2C LCD Anda
Sebelum Anda dapat menggunakan layar, Anda harus menentukan alamat I2C-nya. Alamat yang paling umum adalah 0x27 atau 0x3F, tetapi dapat bervariasi. Untuk menemukannya, Anda dapat menggunakan sketsa pemindai I2C. Ini adalah program sederhana yang memindai bus I2C dan melaporkan alamat apa pun yang ditemukannya ke Monitor Serial. Unggah kode pemindai, buka Monitor Serial pada 9600 baud, dan itu akan menampilkan alamat LCD Anda. (di video pada 08:11)
Penjelasan Kode
Bagian ini menjelaskan bagian-bagian kunci yang dapat dikonfigurasi pengguna dari kode. Program lengkap tersedia untuk diunduh di bawah artikel.
Kode dimulai dengan menyertakan pustaka yang diperlukan dan mendefinisikan pin serta objek yang digunakan.
// file header dari GetHub: https://github.com/adidax/dht11
#include <dht11.h>
dht11 DHT11; // buat objek dari DHT11
#define dhtpin 2 // atur pin untuk menghubungkan ke DHT11
// awal pengaturan untuk LCD1602-I2C
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Atur alamat LCD ke 0x3F untuk layar 16 karakter dan 2 baris
LiquidCrystal_I2C lcd(0x3F, 16, 2);
// akhir pengaturan untuk LCD1602-I2C
Ini adalah baris paling penting untuk dikonfigurasi untuk pengaturan Anda:
#define dhtpin 2: Ini mendefinisikan pin Arduino yang terhubung ke pin data sensor DHT11. Ubah angka2jika Anda menggunakan pin yang berbeda.LiquidCrystal_I2C lcd(0x3F, 16, 2);: Baris ini membuat objek LCD. Parameter pertama,0x3F, adalah alamat I2C yang Anda temukan di langkah sebelumnya.16dan2mendefinisikan jumlah kolom dan baris layar Anda. Perbarui alamat jika pemindai Anda menemukan yang berbeda (misalnya,0x27).
Kode ini menggunakan fungsi khusus, getTemp(), untuk membaca suhu dan mengubahnya ke satuan yang berbeda. Ini adalah fitur yang kuat yang membuat kode dapat digunakan kembali untuk berbagai aplikasi.
float getTemp(char type) {
float temp = (float)DHT11.temperature;//ambil suhu
if(type =='F')
{
return temp * 1.8 + 32;// ubah ke Fahrenheit
}else if(type =='K')
{
return temp + 274.15;// ubah ke Kelvin
}else{
return temp;
}
}
Untuk menggunakan fungsi ini, Anda memanggilnya dengan argumen satu karakter yang mewakili satuan yang diinginkan. Misalnya, getTemp('C') mengembalikan suhu dalam Celsius, getTemp('F') mengembalikannya dalam Fahrenheit, dan getTemp('K') mengembalikannya dalam Kelvin. Fungsi ini membaca suhu mentah dari sensor DHT11 dan menerapkan rumus konversi yang diperlukan. Ini memungkinkan Anda untuk dengan mudah mengubah satuan yang ditampilkan di loop() utama tanpa menulis ulang logika pembacaan sensor. Loop utama mencetak suhu dan kelembaban ke LCD menggunakan fungsi lcd.setCursor() dan lcd.print() untuk mengontrol di mana nilai muncul di layar.
Menampilkan Simbol Derajat
Set karakter LCD HD44780 standar tidak menyertakan simbol derajat khusus (°). Untuk menampilkannya, Anda harus menggunakan fungsi lcd.write() dengan nilai desimal dari karakter dari ROM LCD. Untuk simbol derajat, nilai ini adalah 223. Kode ini menunjukkan hal ini dengan menggunakan lcd.print((char)223); untuk mencetak simbol setelah nilai suhu. (di video pada 30:16)
Demonstrasi Proyek Langsung
Setelah kode diunggah, layar akan menampilkan pesan startup sebelum membersihkan dan menampilkan suhu dan kelembaban saat ini. Baris pertama layar menampilkan teks "LCD1602 DHT11", sedangkan baris kedua menampilkan suhu dalam Celsius, diikuti simbol derajat dan "C", lalu suhu dalam Fahrenheit, diikuti simbol derajat dan "F". Nilai kelembaban dicetak ke monitor serial. Demonstrasi dalam video menunjukkan layar memperbarui setiap setengah detik saat sensor dipegang, secara akurat mencerminkan kondisi sekitar. (di video pada 29:42)
Menampilkan tegangan dari potensiometer di LCD dibahas di Pelajaran 20/31: Menampilkan tegangan di LCD1602.
Menggunakan LCD yang sama untuk menampilkan jarak dari sensor ultrasonik dibahas di Pelajaran 20/31: Menggunakan LCD1602 dengan Arduino untuk menampilkan suhu, tegangan, dan jarak | Robojax.
Proyek terkait dari video ini
- Pelajaran 20/31: Menggunakan LCD1602 dengan Arduino untuk menampilkan suhu, tegangan, dan jarak | Robojax
- Pelajaran 20/31: Menampilkan tegangan di LCD1602
Bab
- [00:00] Pengenalan ke LCD1602 dan gambaran proyek
- [01:30] Penjelasan perangkat keras LCD1602 dan modul I2C
- [02:47] Menyesuaikan kontras LCD
- [03:14] Konfigurasi pin LCD dan alamat I2C
- [05:28] Diagram pengkabelan untuk LCD1602
- [06:16] Menginstal pustaka LiquidCrystal_I2C
- [08:11] Menemukan alamat I2C dengan pemindai
- [09:28] Kode dasar untuk mencetak teks di LCD
- [11:10] Contoh: kursor berkedip dan karakter khusus
- [13:46] Membuat dan menggunakan karakter khusus
- [18:51] Contoh tampilan serial
- [23:16] Menggulir teks di LCD
- [24:36] Menggabungkan kode sensor DHT11 dengan LCD
- [30:16] Menampilkan simbol derajat
- [32:03] Menghapus titik desimal dari suhu
- [33:00] Menampilkan tegangan dari potensiometer di LCD
- [35:56] Menampilkan jarak dari sensor ultrasonik
/*
Lesson 20/31: Displaying Temperature and humidity from DHT11 on LCD screen
Get this code and watch video Download and resource page https://robojax.com/RJT603
YouTube video https://www.youtube.com/watch?v=NXAswOc_2zg
* This is the Arduino code for DHT11 module to read temperature and humidity
* This code can display temperature in:
* C is used to get Celsius
* F is used to get Fahrenheit
* K is used for Kelvin
* *
* Written by Ahmad Shamshiri for Robojax
* on Jan 04, 2018
* Robojax.com
Please watch video instruction here https://youtu.be/0XMLnCYkvbE
This code is available at http://robojax.com/course1/?vid=lecture11
with over 100 lectures Free On YouTube Watch it here http://robojax.com/L/?id=338
Get the code for the course: http://robojax.com/L/?id=339
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been download from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
// header file from GetHub: https://github.com/adidax/dht11
#include <dht11.h>
dht11 DHT11; // create object of DHT11
#define dhtpin 2 // set the pin to connect to DHT11
// start of settings for LCD1602-I2C
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x3F for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x3F, 16, 2);
// end of settings for LCD1602-I2C
void setup() {
Serial.begin(9600);// setting up serial monitor
// initialize the LCD,
lcd.begin();
// Turn on the blacklight and print a message.
lcd.backlight();
lcd.clear();
lcd.setCursor (0,0); //
lcd.print("DHT11 Sensor");
delay(2000);
}
void loop() {
//Robojax Step By Step Arduino Course YouTube Watch it here http://robojax.com/L/?id=338
DHT11.read(dhtpin);// initialize the reading
int humidity = DHT11.humidity;// get humidity
lcd.clear();// clear previous values from screen
lcd.setCursor (0,0); //character zero, line 1
lcd.print("LCD1602 DHT11"); // print text
// print distance in degrees C
lcd.setCursor (0,1); //character 0, line 2
lcd.print(getTemp('C'));// print Temperature Celsius
lcd.setCursor (4,1); //character 5, line 2
lcd.print((char)223);// print degree
lcd.setCursor (5,1); //character 6, line 2
lcd.print("C");// print C
// print distance degrees F
lcd.setCursor (7,1); //character 8, line 2
lcd.print(getTemp('F'));// print distance in cm
lcd.setCursor (13,1); //character 14, line 2
lcd.print((char)223);// print degree
lcd.setCursor (14,1); //character 16, line 2
lcd.print("F");// print F
//code for Robojax.com video
Serial.print(getTemp('C'));
Serial.print("C ");
Serial.print(getTemp('F'));
Serial.print("F ");
Serial.print(getTemp('K'));
Serial.print("K ");
Serial.print(" humidity:");
Serial.print (humidity);
Serial.print("% ");
Serial.println();
delay(500);
}
/*
* getTemp(char type)
* type character of upper case
* C is used to get Celsius
* F is used to get Fahrenheit
* K is used for Kelvin
*/
float getTemp(char type) {
//Robojax Step By Step Arduino Course YouTube Watch it here http://robojax.com/L/?id=338
float temp = (float)DHT11.temperature;//get temp
if(type =='F')
{
return temp * 1.8 + 32;// convert to Fahrenheit
}else if(type =='K')
{
return temp + 274.15;// convert to Kelvin
}else{
return temp;
}
}
Hal-hal yang mungkin Anda butuhkan
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
Sumber daya & referensi
-
DokumentasiDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
EksternalPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
Berkas📁
Pustaka Arduino (zip)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB
Panduan Pengguna
-
SunFounder 3-in-1 Arduino Smart Car assembly manualThis document shows step by step assembly of SunFounder 3-in-1 Arduino Smart Car
SunFounder_car_assembly_manual.pdf1.20 MB