Giải thích code
Hàm createChar()
lcd.createChar(1, degree);
Dùng để tạo một ký tự tùy chỉnh để sử dụng trên màn hình LCD 16×2. Tối đa có 8 ký tự được hỗ trợ là 5×8 pixel (được đánh số từ 0 đến 7).Sự xuất hiện của mỗi ký tự tùy chỉnh được chỉ định bởi một mảng gồm 8 byte, 1 byte cho mỗi hàng.
Để hiển thị một ký tự tùy chỉnh trên màn hình ta dùng hàm write() để viết ra con số đó.
Cú pháp
lcd.createChar(số, dữ liệu)
Thông số
lcd: là một biến của kiểu dư liệu LiquidCrystal.
số: tạo ký tự (0 đến 7).
dữ liệu: dữ liệu của các ký tự là pixel.
Hàm isnan()
if (isnan(t) || isnan(h))
Hàm isnan() là hàm trả về true hoặc false nếu giá trị cần kiểm tra không phải là một biểu thức toán học đúng.
Ở đoạn code trên mình kiểm tra xem thử việc đọc giá trị của nhiệt độ hoặc độ ẩm trả về có bị thất bại hay không.
Cú pháp
isnan(double x) ;
Hàm round()
lcd.print(round(t));
Hàm round() là hàm làm tròn của một giá trị nào từ số thập phân làm tròn tới số nguyên gần nhất.
Table of Contents
Introduction
The integration of a DHT11 temperature and humidity sensor with a 16×2 LCD display presents a unique opportunity to explore the realm of IoT and home automation. This project brings together the functionality of a sensor that accurately measures the temperature and humidity of the environment and a compact and easily readable display module. By utilizing an Arduino UNO microcontroller, the data obtained from the DHT11 sensor can be seamlessly processed and displayed on the 16×2 LCD screen. The result is a dynamic system that provides real-time information about the temperature and humidity levels, allowing for a deeper understanding of the surrounding environment.
The DHT11 is a basic, low-cost digital temperature and humidity sensor. It measures both temperature and humidity in the surrounding environment and outputs this data as a digital signal. The DHT11 consists of a capacitive humidity sensor and a thermistor to measure the temperature. The sensor provides a simple, one-wire interface for communication with microcontrollers, making it easy to integrate into various applications.
Introduction: Temp & Humidity Sensor With LCD Disp & LED Indicator
In this instructable, I have used the DHT11 Temperature & Humidity sensor & Arduino UNO to display the current temperature & humidity readings into a 16 x 2 LCD Display. Alongside, I have also created a 3-LED setup which indicates 3 sets of temperature readings (cold, hot, extreme).
The DHT11 is a digital sensor that lets you easily get relative humidity and temperature readings in your projects. Because of their low cost and small size, DHT11 sensors are perfect for lots of different DIY electronics projects. Some projects where the DHT11 would be useful include remote weather stations, home environment control systems, and agricultural/garden monitoring systems.
DHT11 Technical Specifications :
- Humidity Range: 20-90% RH
- Humidity Accuracy: ±5% RH
- Temperature Range: 0-50 °C
- Temperature Accuracy: ±2% °C
- Operating Voltage: 3V to 5.5V
Next, I will be describing step-wise with relevant images, how to hook up the 16 x 2 LCD Display to the Arduino, the relative connections of the DHT11 sensor & the 3-LED setup.
Step 5: Describing the Setup Overall
After the code/sketch has been successfully compiled & uploaded to the Arduino, you will see the current temperature & humidity of your surroundings. The sensor basically refreshes every 1 second to update you with the accurate temperature. Alongside this, you will notice any one of the LED being lit, depending upon your surroundings.
3-LED setup has been initiated with the following :
- If the temperature is below 22℃, the Cold LED will glow. (Green)
- If the temperature is between 22 – 35℃, the Hot LED will glow. (Yellow)
-
If the temperature is above 35℃, the Extreme LED will glow. (Red)
One can obviously modify the readings in the code as per your choice.
I have uploaded two images above with the normal temperature of our area 31 ℃ (with the Yellow/Hot LED being lit). I then, put the sensor near an Ice cube to drop the temperature below 22℃ (to make the Green/Cold LED lit up).
You can see the video attached, where i have shown the temperature change from 19℃ to 24℃ and the corresponding change in LED indicators. P.S : Sorry, I could not rise up to the temperature of 35℃ (to show the Red LED glow), but it will definitely work like the other two LEDs.That’t it !Thanks a lot for following this. Hope I can upload a few more projects soon.
Incase you face any queries, feel free to ask in the comments 🙂
Participated in the Internet of Things Contest 2016
Participated in the Sensors Contest 2016
Working Explanation
The setup() function is executed once at the beginning of the program. In this function, the necessary libraries for the DHT11 sensor and the 16×2 LCD display are included. Then, the DHT11 sensor and the LCD display are initialized by specifying their connection pins. The baud rate of serial communication is also set in this function.
The loop() function is executed repeatedly, providing continuous readings of the temperature and humidity data. In this function, the code retrieves the temperature and humidity data from the DHT11 sensor using the dht.read() function. The retrieved data is then displayed on the 16×2 LCD screen using the lcd.print() function. The temperature and humidity readings are updated continuously, providing real-time information about the environment.
Linh kiện cần thiết làm mạch Cảm biến DHT11 giao tiếp Arduino
1.1 Vi điều khiển Arduino trong mạch cảm biến DHT11 giao tiếp Arduino
Giới thiệu
Arduino Uno R3 (Dip) có 14 chân digital dùng để đọc hoặc xuất tín hiệu. Chúng chỉ có 2 mức điện áp là 0V và 5V với dòng vào/ra tối đa trên mỗi chân là 40mA. Ở mỗi chân đều có các điện trở pull-up từ được cài đặt ngay trong vi điều khiển ATmega328 (mặc định thì các điện trở này không được kết nối).
Các chức năng khác
Arduino Uno R3 là một bảng mạch vi điều khiển nguồn mở dựa trên vi điều khiển Microchip ATmega328 được phát triển bởi Arduino.cc. Bảng mạch được trang bị các bộ chân đầu vào/ đầu ra Digital và Analog có thể giao tiếp với các bảng mạch mở rộng khác nhau. Mạch Arduino Uno thích hợp cho những bạn mới tiếp cận và đam mê về điện tử, lập trình…Dựa trên nền tảng mở do Arduino.cc cung cấp các bạn dễ dàng xây dựng cho mình một dự án nhanh nhất ( lập trình Robot, xe tự hành, điều khiển bật tắt led…).
Chức năng của Arduino R3:
- 2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận (receive – RX) dữ liệu TTL Serial. Arduino Uno có thể giao tiếp với thiết bị khác thông qua 2 chân này. Kết nối bluetooth thường thấy nói nôm na chính là kết nối Serial không dây. Nếu không cần giao tiếp Serial, bạn không nên sử dụng 2 chân này nếu không cần thiết
- Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép bạn xuất ra xung PWM với độ phân giải 8bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàm analogWrite(). Nói một cách đơn giản, bạn có thể điều chỉnh được điện áp ra ở chân này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V và 5V như những chân khác.
Các chức năng khác
- Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Ngoài các chức năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu bằng giao thức SPI với các thiết bị khác.
- LED 13: trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L). Khi bấm nút Reset, bạn sẽ thấy đèn này nhấp nháy để báo hiệu. Nó được nối với chân số 13. Khi chân này được người dùng sử dụng, LED sẽ sáng.
- Arduino Uno R3 có 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10bit (0 → 210-1) để đọc giá trị điện áp trong khoảng 0V → 5V. Với chân AREF trên board, bạn có thể để đưa vào điện áp tham chiếu khi sử dụng các chân analog. Tức là nếu bạn cấp điện áp 2.5V vào chân này thì bạn có thể dùng các chân analog để đo điện áp trong khoảng từ 0V → 2.5V với độ phân giải vẫn là 10bit. Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI với các thiết bị khác.
c.Thông số kỹ thuật Arduino Uno R3 (Dip)
Datasheets | Atmega328 |
Standard Package | 27 |
Category | Integrated Circuits (ICs) |
Family | Embedded – Atmel |
Series | Atmega |
Packaging | Tube |
Core Processor | AVR |
Core Size | 8-Bit |
Speed | 16MHz |
Connectivity | I²C, SPI, UART / USART, USB |
Peripherals | Brown-out Detec t/ Reset, HLVD, POR, PWM, WDT |
Number of I /O | 14 |
Program Memory Size | 32KB |
Program Memory Type | FLASH |
EEPROM Size | 1KB |
RAM Size | 2K |
Voltage – Supply (Vcc/Vdd) | 4.2 V ~ 5.5 V |
Data Converters | A/D 6 x 10bit |
Oscillator Type | Internal |
Operating Temperature | -40°C ~ 85°C |
Package / Case | 28-SOIC (0.295″, 7.50mm Width) |
Other Names | Atmega328 |
Power
- LED: Có 1 LED được tích hợp trên bảng mạch và được nối vào chân D13. Khi chân có giá trị mức cao (HIGH) thì LED sẽ sáng và LED tắt khi ở mức thấp (LOW).
- VIN: Chân này dùng để cấp nguồn ngoài (điện áp cấp từ 7-12VDC).
- 5V: Điện áp ra 5V (dòng điện trên mỗi chân này tối đa là 500mA).
- 3V3: Điện áp ra 3.3V (dòng điện trên mỗi chân này tối đa là 50mA).
- GND: Là chân mang điện cực âm trên board.
- IOREF: Điệp áp hoạt động của vi điều khiển trên Arduino UNO và có thể đọc điện áp trên chân IOREF. Chân IOREF không dùng để làm chân cấp nguồn.
e.Bộ nhớ
Vi điều khiển ATmega328:
- 32 KB bộ nhớ Plash: trong đó bootloader chiếm 0.5KB.
- 2 KB cho SRAM: (Static Random Access Menory): giá trị các biến khai báo sẽ được lưu ở đây. Khai báo càng nhiều biến thì càng tốn nhiều bộ nhớ RAM. Khi mất nguồn dữ liệu trên SRAM sẽ bị mất.
- 1 KB cho EEPROM: (Electrically Eraseble Programmable Read Only Memory): Là nơi có thể đọc và ghi dữ liệu vào đây và không bị mất dữ liệu khi mất nguồn.
Các chân đầu vào và đầu ra
Trên Board Arduino Uno có 14 chân Digital được sử dụng để làm chân đầu vào và đầu ra và chúng sử dụng các hàm pinMode(), digitalWrite(), digitalRead(). Giá trị điện áp trên mỗi chân là 5V, dòng trên mỗi chân là 20mA và bên trong có điện trở kéo lên là 20-50 ohm. Dòng tối đa trên mỗi chân I/O không vượt quá 40mA để tránh trường hợp gây hỏng board mạch. Ngoài ra, một số chân Digital có chức năng đặt biệt:
- Serial: 0 (RX) và 1 (TX): Được sử dụng để nhận dữ liệu (RX) và truyền dữ liệu (TX) TTL.
- Ngắt ngoài: Chân 2 và 3.
- PWM: 3, 5, 6, 9 và 11 Cung cấp đầu ra xung PWM với độ phân giải 8 bit bằng hàm analogWrite ().
- SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Các chân này hỗ trợ giao tiếp SPI bằng thư viện SPI.
- LED: Có 1 LED được tích hợp trên bảng mạch và được nối vào chân D13. Khi chân có giá trị mức cao (HIGH) thì LED sẽ sáng và LED tắt khi ở mức thấp (LOW).
- TWI/I2C: A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI với các thiết bị khác.
1.2 Cảm biến DHT11 giao tiếp Arduino
Giới thiệu DHT11 giao tiếp Arduino
Cảm biến độ ẩm và nhiệt độ DHT11 là cảm biến rất thông dụng hiện nay vì chi phí rẻ và rất dễ lấy dữ liệu thông qua giao tiếp 1 wire (giao tiếp digital 1 dây truyền dữ liệu duy nhất). Bộ tiền xử lý tín hiệu tích hợp trong cảm biến giúp bạn có được dữ liệu chính xác mà không phải qua bất kỳ tính toán nào. So với cảm biến đời mới hơn là DHT22 thì DHT11 cho khoảng đo và độ chính xác kém hơn rất nhiều.
Thông số kỹ thuật DHT11 giao tiếp Pic16F
- Nguồn: 3 -> 5 VDC.
- Dòng sử dụng: 2.5mA max (khi truyền dữ liệu).
- Đo tốt ở độ ẩm 2080%RH với sai số 5%.
- Đo tốt ở nhiệt độ 0 to 50°C sai số ±2°C.
- Tần số lấy mẫu tối đa 1Hz (1 giây 1 lần)
- Kích thước 15mm x 12mm x 5.5mm.
- 4 chân, khoảng cách chân 0.1”.
1.3 LCD1602 cho cảm biến DHT11 giao tiếp Arduino
Giới thiệu DHT11 giao tiếp Arduino
Thông số kỹ thuật
- Điện áp hoạt động là 5 V.
- Kích thước: 80 x 36 x 12.5 mm
- Chữ đen, nền xanh lá
- Khoảng cách giữa hai chân kết nối là 0.1 inch tiện dụng khi kết nối với Breadboard.
- Tên các chân được ghi ở mặt sau của màn hình LCD hổ trợ việc kết nối, đi dây điện.
- Có đèn led nền, có thể dùng biến trở hoặc PWM điều chình độ sáng để sử dụng ít điện năng hơn.
- Có thể được điều khiển với 6 dây tín hiệu
- Có bộ ký tự được xây dựng hổ trợ tiếng Anh và tiếng Nhật, xem thêm HD44780 datasheet để biết thêm chi tiết.
Sơ đồ chân LCD 16×2
Số chân | Ký hiệu chân | Mô tả chân |
Vss | Cấp điện 0v | |
Vcc | Cấp điện 5v | |
V0 | Chỉnh độ tương phản | |
RS | Lựa chọn thanh ghi địa chỉ hay dữ liệu | |
RW | Lựa chọn thanh ghi Đọc hay Viết | |
EN | Cho phép xuất dữ liệu | |
D0 | Đường truyền dữ liệu 0 | |
D1 | Đường truyền dữ liệu 1 | |
D2 | Đường truyền dữ liệu 2 | |
10 | D3 | Đường truyền dữ liệu 3 |
11 | D4 | Đường truyền dữ liệu 4 |
12 | D5 | Đường truyền dữ liệu 5 |
13 | D6 | Đường truyền dữ liệu 6 |
14 | D7 | Đường truyền dữ liệu 7 |
15 | Chân dương đèn màn hình | |
16 | Chân âm đèn màn hình |
- Các chân cấp nguồn: Chân số 1 là chân nối mass (0V), chân thứ 2 là Vdd nối với nguồn+5V. Chân thứ 3 dùng để chỉnh contrast thường nối với biến trở.
- Các chân điều khiển: Chân số 4 là chân RS dùng để điều khiển lựa chọn thanh ghi. ChânR/W dùng để điều khiển quá trình đọc và ghi. Chân E là chân cho phép dạng xung chốt.
- Các chân dữ liệu D7÷D0: Chân số 7 đến chân số 14 là 8 chân dùng để trao đổi dữ liệu giữa thiết bị điều khiển và LCD.
Địa chỉ ba vùng nhớ
- Bộ điều khiển LCD có ba vùng nhớ nội, mỗi vùng có chức năng riêng. Bộ điều khiển phải khởi động trước khi truy cập bất kỳ vùng nhớ nào. a. Bộ nhớ DDRAM
- Bộ nhớ chứa dữ liệu để hiển thị (Display Data RAM: DDRAM) lưu trữ những mã ký tự để hiển thị lên màn hình. Mã ký tự lưu trữ trong vùng DDRAM sẽ tham chiếu với từng bitmap kí tự được lưu trữ trong CGROM đã được định nghĩa trước hoặc đặt trong vùng do người sử dụng định nghĩa. b. Bộ phát kí tự ROM – CGROM
- Bộ phát kí tự ROM (Character Generator ROM: CGROM) chứa các kiểu bitmap cho mỗi kí tự được định nghĩa trước mà LCD có thể hiển thị, như được trình bày bảng mã ASCII. Mã kí tự lưu trong DDRAM cho mỗi vùng kí tự sẽ được tham chiếu đến một vị trí trong CGROM. Ví dụ: mã kí tự số hex 0x53 lưu trong DDRAM được chuyển sang dạng nhị phân 4 bit cao là DB[7:4] = “0101” và 4 bit thấp là DB[3:0] = “0011” chính là kí tự chữ ‘S’ sẽ hiển thị trên màn hình LCD. c. Bộ phát kí tự RAM – CGRAM
- Bộ phát kí tự RAM (Character Generator RAM: CG RAM) cung cấp vùng nhớ để tạo ra 8 kí tự tùy ý. Mỗi kí tự gồm 5 cột và 8 hàng.
Các lệnh điều khiển của LCD
-
Lệnh thiết lập chức năng giao tiếp “Function set”:
- Bit DL (data length) = 1 thì cho phép giao tiếp 8 đường data D7 ÷ D0, nếu bằng 0 thì cho phép giao tiếp 4 đường D7 ÷ D4.
- Bit N (number of line) = 1 thì cho phép hiển thị 2 hàng, nếu bằng 0 thì cho phép hiển thị 1 hàng.
- Bit F (font) = 1 thì cho phép hiển thị với ma trận 5×8, nếu bằng 0 thì cho phép hiển thị với ma trận 5×11.
- Các bit cao còn lại là hằng số không đổi.
-
Lệnh xoá màn hình “Clear Display”: khi thực hiện lệnh này thì LCD sẽ bị xoá và bộ đếm địa chỉ được xoá về 0.
- Lệnh di chuyển con trỏ về đầu màn hình “Cursor Home”: khi thực hiện lệnh này thì bộ đếm địa chỉ được xoá về 0, phần hiển thị trở về vị trí gốc đã bị dịch trước đó. Nội dung bộ nhớ RAM hiển thị DDRAM không bị thay đổi.
-
Lệnh thiết lập lối vào “Entry mode set”: lệnh này dùng để thiết lập lối vào cho các kí tự hiển thị,
- Bit I/D = 1 thì con trỏ tự động tăng lên 1 mỗi khi có 1 byte dữ liệu ghi vào bộ hiển thị, khi I/D = 0 thì con trỏ sẽ tự động giảm đi 1 mỗi khi có 1 byte dữ liệu ghi vào bộ hiển thị.
- Bit S = 1 thì cho phép dịch chuyển dữ liệu mỗi khi nhận 1 byte hiển thị.
-
Lệnh điều khiển con trỏ hiển thị “Display Control”:
- Bit D: cho phép LCD hiển thị thì D = 1, không cho hiển thị thì bit D = 0.
- Bit C: cho phép con trỏ hiển thị thì C= 1, không cho hiển thị con trỏ thì bit C = 0.
- Bit B: cho phép con trỏ nhấp nháy thì B= 1, không cho con trỏ nhấp nháy thì bit B = 0.
- Với các bit như trên thì để hiển thị phải cho D = 1, 2 bit còn lại thì tùy chọn, trong thư viện thì cho 2 bit đều bằng 0, không cho phép mở con trỏ và nhấp nháy, nếu bạn không thích thì hiệu chỉnh lại.
-
Lệnh di chuyển con trỏ “Cursor /Display Shift”: lệnh này dùng để điều khiển di chuyển con trỏ hiển thị dịch chuyển
- Bit SC: SC = 1 cho phép dịch chuyển, SC = 0 thì không cho phép.
- Bit RL xác định hướng dịch chuyển: RL = 1 thì dịch phải, RL = 0 thì dịch trái. Nội dung bộ nhớ DDRAM vẫn không đổi.
- Vậy khi cho phép dịch thì có 2 tùy chọn: dịch trái và dịch phải.
- Lệnh thiết lập địa chỉ cho bộ nhớ RAM phát kí tự “Set CGRAM Addr”: lệnh này dùng để thiết lập địa chỉ cho bộ nhớ RAM phát kí tự.
- Lệnh thiết lập địa chỉ cho bộ nhớ RAM hiển thị “Set DDRAM Addr”: lệnh này dùng để thiết lập địa chỉ cho bộ nhớ RAM lưu trữ các dữ liệu hiển thị.
- Hai lệnh cuối cùng là lệnh đọc và lệnh ghi dữ liệu LCD.
Bảng mã ASCII sử dụng cho LCD
Bảng địa chỉ cho LCD
Temperature Humidity Sensor LCD with Arduino
- Start by including the necessary libraries:
#include
#include#include
Here, we are including the libraries for the I2C communication with the LCD module, the LiquidCrystal library, and the DHT library.
- Initialize the sensor and the LCD module:
#define DHTPIN 2 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); LiquidCrystal_I2C lcd(0x27,16,2);
Here, we are defining the type and pin of the DHT11 sensor and initialize the DHT11 sensor. Also, we are initializing the I2C LCD module with the address 0x27, 16 columns, and 2 rows.
- In the setup() function:
void setup() { lcd.begin(); lcd.backlight(); dht.begin(); delay(1000); }
Here, we are initializing the LCD module and enabling its backlight. We are also initializing the DHT11 sensor and adding a delay of 1000ms.
- In the loop() function:
void loop() { float h = dht.readHumidity(); float t = dht.readTemperature(); lcd.setCursor(0,0); lcd.print("Temp: "); lcd.print(t); lcd.print("C"); lcd.setCursor(0,1); lcd.print("Hum: "); lcd.print(h); lcd.print("%"); delay(1000); }
Here, we are reading the temperature and humidity values from the DHT11 sensor and storing them in variables and . We are then printing the values on the LCD display. The values are printed on the first line of the LCD display with the label “Temp: ” and on the second line with the label “Hum: “. The values are displayed in Celsius and percent. We are adding a delay of 1000ms.
Schematic
Make connections according to the circuit diagram given below.
Wiring / Connections
Arduino | Humidity Sensor | LCD |
3V3 | VCC | |
GND | GND | GND |
D2 | DATA | |
5V | VCC | |
A4 | SDA | |
A5 | SCL |
Installing Arduino IDE
First, you need to install Arduino IDE Software from its official website Arduino. Here is a simple step-by-step guide on “How to install Arduino IDE“.
Installing Libraries
Before you start uploading a code, download and unzip the following libraries at /Progam Files(x86)/Arduino/Libraries (default), in order to use the sensor with the Arduino board. Here is a simple step-by-step guide on “How to Add Libraries in Arduino IDE“.
Code
Now copy the following code and upload it to Arduino IDE Software.
#include#include "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT11 LiquidCrystal_I2C lcd(0x3F, 16, 2); // I2C address 0x3F, 16 column and 2 rows DHT dht(DHTPIN, DHTTYPE); void setup() { dht.begin(); // initialize the sensor lcd.init(); // initialize the lcd lcd.backlight(); // open the backlight } void loop() { delay(2000); // wait a few seconds between measurements float humi = dht.readHumidity(); // read humidity float tempC = dht.readTemperature(); // read temperature lcd.clear(); // check if any reads failed if (isnan(humi) || isnan(tempC)) { lcd.setCursor(0, 0); lcd.print("Failed"); } else { lcd.setCursor(0, 0); // start to print at the first row lcd.print("Temp: "); lcd.print(tempC); // print the temperature lcd.print((char)223); // print ° character lcd.print("C"); lcd.setCursor(0, 1); // start to print at the second row lcd.print("Humi: "); lcd.print(humi); // print the humidity lcd.print("%"); } }
Code mẫu
#include
#include
#includeLiquidCrystal_I2C lcd(0x3F,16,2); const int DHTPIN = 4; const int DHTTYPE = DHT11; DHT dht(DHTPIN, DHTTYPE); byte degree[8] = { 0B01110, 0B01010, 0B01110, 0B00000, 0B00000, 0B00000, 0B00000, 0B00000 }; void setup() { lcd.init(); lcd.backlight(); lcd.print(“Nhiet do: “); lcd.setCursor(0,1); lcd.print(“Do am: “); lcd.createChar(1, degree); dht.begin(); } void loop() { float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(t) || isnan(h)) { } else { lcd.setCursor(10,0); lcd.print(round(t)); lcd.print(” “); lcd.write(1); lcd.print(“C”); lcd.setCursor(10,1); lcd.print(round(h)); lcd.print(” %”); } }
Bạn sẽ học được gì
- Có kiến thức cơ bản về Robotics
- Chế tạo Robot dò đường thông minh
- Đánh thức nhà khoa học bên trong bạn
- Tìm hiểu thêm về Robotics, các thuật toán Robot tự động
- Kiến thức nền tảng để chế tạo các máy móc tự động phục vụ đời sống sinh hoạt, lao động sản xuất
- Kiến thức để chế tạo sản phẩm, tham gia các cuộc thi khoa học công nghệ trong nước và quốc tế
Step 4: The Sketch (a.k.a Arduino Code)
This is the code, you will have to compile & upload to your Arduino UNO board. If you have made all the connections & library installation exactly as described, the code compilation should probably produce no errors.
#include
#include
#include “DHT.h”
#define DHTPIN A0 // what pin we’re connected to
#define DHTTYPE DHT11 // we are using the DHT11 sensor
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
DHT dht(DHTPIN, DHTTYPE);
void setup() { Serial.begin(9600); for (int DigitalPin = 7; DigitalPin <= 9; DigitalPin++) { pinMode(DigitalPin, OUTPUT); } lcd.begin(16,2); //16 by 2 character display dht.begin(); } void loop() { delay(1000); // Reading temperature or humidity takes about 250 milliseconds! float h = dht.readHumidity(); float t = dht.readTemperature(); // Read temperature as Celsius (the default)
lcd.clear(); lcd.setCursor(0,0); lcd.print(“Temp: “); lcd.print(t); //printing temperarture to the LCD display
lcd.print(“‘C”); lcd.setCursor(0,1); lcd.print(“Humid: “); lcd.print(h); //printing humidity to the LCD display lcd.print(“%”);
//the 3-led setup process if (t<=22) { digitalWrite(7, HIGH); digitalWrite(8, LOW); digitalWrite(9, LOW); } else if (t>22) { digitalWrite(8, HIGH); digitalWrite(7, LOW); digitalWrite(9, LOW); } else if (t>=35) { digitalWrite(9, HIGH); digitalWrite(7, LOW); digitalWrite(8, LOW); } }
Cụ thể hoạt động của mạch Cảm biến DHT11 giao tiếp Arduino các bạn xem video:
c
Ngoài ra còn nhiều Phần và các môn khác
Đồ án điện tử, Lập trình vi điều khiển tổng hợp File đồ án – Phần 1 Mạch điện tử, Lập trình vi điều khiển tổng hợp File đồ án – Phần 2 Thiết kế mạch điện tử, Lập trình vi điều khiển tổng hợp File đồ án – Phần 3 Thiết kế mạch điện tử, Lập trình vi điều khiển tổng hợp File đồ án – Phần 3 Tổng hợp File ĐỒ ÁN Điện tử cơ bản Tổng hợp File ĐỒ ÁN Viễn thông Tổng hợp File ĐỒ ÁN PLC Tổng hợp File ĐỒ ÁN Cung cấp điện
Conclusion.
We hope you have found this Temperature Humidity Sensor LCD Circuit very useful. If you feel any difficulty in making it feel free to ask anything in the comment section.
Arduino – Temperature Humidity Sensor – LCD
We will learn how to:
- Read temperature and humidity from DHT11 sensor and display on LCD I2C
- Read temperature and humidity from DHT22 sensor and display on LCD I2C
Step 1: Stuffs You Will Need for This Project
- Breadboard
- 16 X 2 LCD Display
- Jumper wires
- Arduino UNO Board & Arduino IDE installed on your computer
- 3-LEDs (of 3 different colors)
- Mini Breadboard (not necessary)
- DHT11 Temp & Humidity Sensor
That’s all you need to get started . . .
CHI TIẾT BÀI VIẾT
HƯỚNG DẪN SỬ DỤNG CẢM BIẾN DHT11 VÀ ARDUINO HIỂN THỊ NHIỆT ĐỘ VÀ ĐỘ ẨM LÊN MÀN HÌNH LCD
1. Giới thiệu
Bài viết này sẽ hướng dẫn các bạn cách sử dụng Sensor (cảm biến) DHT11 với Arduino và LCD để hiển thị nhiệt độ, độ ẩm.
2. Nội dung chính
- Sử dụng cảm biến nhiệt độ và độ ẩm DTH11 kết nối với Arduino.
- Sử dụng LCD hiển thị nhiệt độ và độ ẩm từ DHT11.
3. Phần cứng cần thiết
- Arduino Uno R3
- LCD Text LCD1602
- Module giao tiếp I2C
– LCD có quá nhiều chân gây khó khăn trong quá trình đấu nối và chiếm dụng nhiều chân trên vi điều khiển. – Module I2C ra đời để giải quyết vấn để này. – Thay vì phải sử dụng 6 chân vi điều khiển để kết nối với LCD 16×2 (RS, EN, D7, D6, D5 và D4) thì module IC2 bạn chỉ cần tốn 2 chân (SCL, SDA) để kết nối. – Module I2C hỗ trợ các loại LCD sử dụng driver HD44780(LCD 16×2, LCD 20×4, …) và tương thích với hầu hết các vi điều khiển hiện nay. |
-
Module DHT11 (sensor đo độ ẩm và nhiệt độ)
-
BreadBoard
4. Kết nối các thiết bị
-
Nối nguồn Arduino với Breadboard
– Nối trực tiếp chân 5V từ Arduino ra Board mạch tại cực dương.
– Nối trực tiếp chân GND từ Arduino ra Board mạch tại cực âm.
- Thực hiện kết nối DHT11 với Arduino
- Kết nối Module I2C & LCD với Arduino
5. Code thiết bị Arduino
Để sử sensor DHT11 giao tiếp với Arduino thì ta cần cài đặt thư viện DHT_Sensor
– Mở phần mềm Arduino 🡪 Sketch 🡪 Include Lirbary 🡪 Add .zip Library 🡪 chọn tới file zip DHT-sensor.zip. – Tương tự ta add tiếp 🡪 file zip Adafruit_Sensor-master.zip – Sau khi add thư viện nên thoát khỏi phần mềm Arduino rồi mở lại. – Gọi thư viện DHT Sensor , LiquidCrystal_I2C. – Mở Phần mềm Arduino 🡪 Sketch 🡪 Include Lirbary 🡪 Kéo xuống dưới chọn DHT_Sensor. – Mở Phần mềm Arduino 🡪 Sketch 🡪 Include Lirbary 🡪 Kéo xuống dưới chọn LiquidCrystal_I2C. |
LiquidCrystal_I2C lcd(0x27,16,2); // Khai báo LCD
- Đặt địa chỉ LCD là 0x27 cho màn hình LCD 16×2.
- 16 là số cột của màn hình (nếu dùng loại màn hình 20×4) thì thay bằng 20.
- 2 là số dòng của màn hình (nếu dùng loại màn hình 20×4) thì thay bằng 4.
Code cấu hình DHT11, Arduino, LCD
#include #include LiquidCrystal_I2C lcd(0x27,16,2); const int DHTPIN = 2; const int DHTTYPE = DHT11; DHT dht(DHTPIN, DHTTYPE); byte degree[8] = { 0B01110, 0B01010, 0B01110, 0B00000, 0B00000, 0B00000, 0B00000, 0B00000 }; void setup() { lcd.init(); lcd.backlight(); lcd.print(“Nhiet do: “); lcd.setCursor(0,1); lcd.print(“Do am: “); lcd.createChar(1, degree); dht.begin(); void loop() { float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(t) || isnan(h)) { else { lcd.setCursor(10,0); lcd.print(round(t)); lcd.print(” “); lcd.write(1); lcd.print(“C”); lcd.setCursor(10,1); lcd.print(round(h)); lcd.print(” %”); |
Thực hiện: Nguyễn Mạnh Cương
Components and supplies
I2C 16×2 Arduino LCD Display Module
Arduino UNO
DHT11 Temperature & Humidity Sensor (3 pins)
Tools and machines
Premium Male/Male Jumper Wires, 40 x 3″ (75mm)
Premium Female/Male Extension Jumper Wires, 40 x 6″ (150mm)
Breadboard, 170 Pin
Apps and platforms
Arduino Web Editor
Project description
Code
Temperature and Humidity sensing with LCD 1602 I2C display
c_cpp
We are using the LCD display using the I2C module to display the temperature and humidity with the DHT 11 sensor.
Temperature and Humidity sensing with LCD 1602 I2C display
c_cpp
We are using the LCD display using the I2C module to display the temperature and humidity with the DHT 11 sensor.
Downloadable files
Temperature and Humidity sensing with LCD 1602 I2C display
Please download it if required
Temperature and Humidity sensing with LCD 1602 I2C display
Comments
Only logged in users can leave comments
Druhi_C
0 Followers
•
0 Projects
Table of contents
Intro
Hiển thị nhiệt độ, độ ẩm lên LCD 16×2 giao tiếp bằng I2C sử dụng Arduino
EBOOK ARDUINO CHO NGƯỜI MỚI BẮT ĐẦU
Trong bài viết hôm trước mình đã hướng dẫn các bạn làm thế nào để hiển thị các ký tự lên màn hình LCD 16×2 bằng giao tiếp I2C.
Tiếp tục trong chuỗi bài viết về LCD hôm nay mình sẽ hướng dẫn các bạn làm thế nào để hiển thị các thông số của cảm biến nhiệt độ, độ ẩm lên LCD.
Để hiểu hơn về bài viết này các bạn đọc lại 2 bài viết bên dưới rồi chúng ta tiếp tục bài này tiếp nha.
- Đọc thêm: Tổng quan LCD 16×2 và giao tiếp I2C LCD sử dụng Arduino
- Đọc thêm: Đọc nhiệt độ, độ ẩm (DHT11) sử dụng Arduino Uno
Hiển thị nhiệt độ, độ ẩm lên LCD sử dụng I2C
Màn hình LCD I2C | Arduino UNO R3 |
GND | GND |
VCC | 5V |
SDA | A4 |
SCL | A5 |
Cảm biến nhiệt độ, độ ẩm DHT11 | |
VCC | 5V |
DATA | D4 |
GND | GND |
Sơ đồ đấu nối
Các linh kiện cần thiết cho dự án:
Linh kiện | Số lượng | Shoppe |
Arduino Uno R3 | Xem ngay | |
Dây cáp nạp | Xem ngay | |
Màn hình LCD 16×2 | Xem ngay | |
Module I2C LCD 16×2 | Xem ngay | |
Cảm biến nhiệt độ, độ ẩm DHT11 | Xem ngay | |
Bread Board (Bo Test) | Xem ngay | |
Dây cắm ( Đực – Cái) | Xem ngay | |
Dây cắm ( Đực – Cái) | Xem ngay | |
Nguồn 12V/2A Jack DC (Nếu có rồi không cần mua) | Xem ngay |
Step 2: Setting Up the Connections With the Arduino
The connection part is the most important part of the whole project. Make sure you follow the directions properly or else you might end up destroying the sensor directly. The image above (and in Step 3 below) shows the connections of the setup in the breadboard in a clean way. Deep-Blue wires correspond to the 5V connection & Black wires correspond to the Ground connection
1. The 16 x 2 LCD Display consists of 16 pins which are labelled with different names, written on the back of the display module. Make sure you follow the pin numbers correctly.
2. To know the pins of the DHT11 sensor, refer to the wiring diagram above.
In case, the wiring diagram feels a bit too complex, here is the connection setup list pin wise :
- Arduino GND to breadboard Negative power rail (All black wires goes to this rail)
- Arduino 5V to breadboard Positive power rail (All deep-blue wires goes to this rail)
- DHT11 Positive pin to breadboard positive power rail
- DHT11 Negative pin to breadboard negative power rail
- DHT11 Signal pin to Arduino Analog A0 (this feeds data from DHT11 to Arduino)
- LCD 1 to breadboard Negative power rail
- LCD 2 to breadboard Positive power rail
- LCD 3 to breadboard Negative power rail (if you connect this to a potentiometer, this helps to change the LCD brightness)
- LCD 4 to Arduino Digital Pin 12 (LCD character coordinates)
- LCD 5 to breadboard Negative power rail
- LCD 6 to Arduino Digital Pin 11 (LCD initiate command)
- LCD 11 to Arduino Digital Pin 5
- LCD 12 to Arduino Digital Pin 4
- LCD 13 to Arduino Digital Pin 3
- LCD 14 to Arduino Digital Pin 2
- LCD 15 to breadboard Positive power rail
- LCD 16 to breadboard Negative power rail
-
Cold/Green LED Positive Pin to Arduino Digital Pin 7 (negative pin to breadboard negative rail)
-
Hot/Yellow LED Positive Pin to Arduino Digital Pin 8 (negative pin to breadboard negative rail)
-
Extreme/Red LED Positive Pin to Arduino Digital Pin 9 (negative pin to breadboard negative rail)
If you have made the connections properly, you are almost half-way through the project since the rest steps are easy to follow with.
Hướng dẫn đồ án cảm biến DHT11 giao tiếp Arduino hiển thị LCD1602
Phần này chưa được chia sẻ.
LIÊN HỆ thông tin ở TẠI ĐÂY để được hổ trợ tốt hơn.
Sử dụng một chương trình cho hai DHT11 và DHT22
Phần cứng
Phần mềm
// include the library code: #include
#include “DHT.h” // set the DHT Pin #define DHTPIN 8 // initialize the library with the numbers of the interface pins LiquidCrystal lcd(12, 11, 5, 4, 3, 2); #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); void setup() { // set up the LCD’s number of columns and rows: lcd.begin(16, 2); dht.begin(); // Print a message to the LCD. lcd.print(“Temp: Humidity:”); } void loop() { delay(500); // set the cursor to column 0, line 1 // (note: line 1 is the second row, since counting begins with 0): lcd.setCursor(0, 1); // read humidity float h = dht.readHumidity(); //read temperature in Fahrenheit float f = dht.readTemperature(true); if (isnan(h) || isnan(f)) { lcd.print(“ERROR”); return; } lcd.print(f); lcd.setCursor(7,1); lcd.print(h); }
Arduino Code – DHT11 Sensor – LCD I2C
※ NOTE THAT:
The I2C address of LCD can vary according to the manufacturers. In the code, we used 0x27 that is specified by DIYables manufacturer
Quick Steps
- Connect Arduino to PC via USB cable
- Open Arduino IDE, select the right board and port
- Navigate to the Libraries icon on the left bar of the Arduino IDE.
- Search “DHT”, then find the DHT sensor library by Adafruit
- Click Install button to install the library.
- You will be asked for intalling some other library dependencies
- Click Install All button all library dependencies.
- Search “LiquidCrystal I2C”, then find the LiquidCrystal_I2C library by Frank de Brabander
- Click Install button to install LiquidCrystal_I2C library.
- Copy the above code and open with Arduino IDE
- Click Upload button on Arduino IDE to upload code to Arduino
- Make enviroment around sensor hotter or colder
- See the result in LCD
The above code also work for Arduino Nano. A grandfather, who learns through this tutorial to guide his grandchild has tested this code with Arduino Nano and send us the result like below:
If LCD displays nothing, see Troubleshooting on LCD I2C
Step 3: What Your Setup Will Probably Look Like
I have uploaded few images above to see how each connections look like. Since this is a complex circuit, I have tried my best to keep wiring connections as simple as possible. Hope this might help you at some stage.
Next before moving on the coding part, what we need are two Arduino Libraries for our LCD Display & DHT11 sensors to work properly. I have had a tough time finding the correct library for the DHT11 sensor because most of them were outdated. However, the LCD Display library is inbuilt within the Arduino IDE.Nevertheless, I have attached the two library files. If you don’t know how to install an Arduino Library inside the IDE, it’s quite easy : Open Arduino IDE –> Sketch –> Include Library –> Add Library and select the .zip files.
Hardware Components
You will require the following hardware for Temperature Humidity Sensor.
S.no | Component | Value | Qty |
1. | Arduino UNO | ||
2. | USB Cable Type A to B | ||
3. | LED | I2C | |
4. | Temperature and Humidity Sensor | DHT11 | |
5. | Power Adapter for Arduino | 9V | |
6. | Jumper Wires |
Keywords searched by users: dht11 with lcd arduino
Categories: Tóm tắt 69 Dht11 With Lcd Arduino
See more here: kientrucannam.vn
See more: https://kientrucannam.vn/vn/