ESP32 DHT11 Đọc nhiệt độ và độ ẩm trong màn hình OLED bằng Arduino IDE

Esp32 Dht11 Doc Nhiet Do Va Do Am Trong Man Hinh Oled Bang Arduino Ide



ESP32 là một bo mạch vi điều khiển tiên tiến có thể chạy nhiều lệnh để tạo đầu ra. Một màn hình OLED được sử dụng để hiển thị các loại dữ liệu khác nhau. Sử dụng ESP32 với cảm biến DHT11, chúng ta có thể đọc nhiệt độ và độ ẩm. Tất cả dữ liệu này có thể được biểu diễn trên màn hình OLED. Hướng dẫn này bao gồm tất cả các bước cần thiết để giao tiếp các cảm biến này với ESP32.

Hướng dẫn này bao gồm các nội dung sau:







1: Giới thiệu về cảm biến DHT11



2: Sơ đồ chân cảm biến DHT11



Cảm biến DHT11 2.1: 3 chân





Cảm biến DHT11 2.2: 4 chân

3: Mô-đun hiển thị OLED với ESP32



4: Cài đặt các thư viện cần thiết

4.1: Thư viện Arduino cho cảm biến DHT

4.2: Thư viện Arduino cho màn hình OLED

5: Kết nối ESP32 với Cảm biến DHT11

5.1: Sơ đồ

5.2: Mã

5.3: Đầu ra

1: Giới thiệu về cảm biến DHT11

DHT11 là một trong những cảm biến theo dõi nhiệt độ và độ ẩm được sử dụng phổ biến trong cộng đồng điện tử. Nó chính xác hơn trong việc đưa ra nhiệt độ và độ ẩm tương đối. Nó tạo ra một tín hiệu kỹ thuật số đã được hiệu chỉnh, phát ra thành hai giá trị đọc khác nhau về nhiệt độ và độ ẩm.

Nó sử dụng kỹ thuật thu tín hiệu kỹ thuật số mang lại độ tin cậy và ổn định. Cảm biến DHT11 chứa thành phần đo độ ẩm kiểu điện trở và có thành phần đo nhiệt độ NTC. Cả hai đều được tích hợp vào một bộ vi điều khiển 8 bit hiệu quả cao, mang lại khả năng phản hồi nhanh, khả năng chống nhiễu và tiết kiệm chi phí.

Dưới đây là một số thông số kỹ thuật chính của DHT11:

    • Cảm biến DHT11 hoạt động ở mức điện áp từ 5V đến 5.5V.
    • Dòng hoạt động trong khi đo là 0,3mA và trong thời gian chờ là 60uA.
    • Nó xuất dữ liệu nối tiếp trong tín hiệu kỹ thuật số.
    • Dải nhiệt độ của cảm biến DHT11 từ 0°C đến 50°C.
    • Phạm vi độ ẩm: 20% đến 90%.
    • Độ chính xác ±1°C khi đo nhiệt độ và ±1% khi đo độ ẩm tương đối.

Như chúng ta đã giới thiệu cơ bản về cảm biến DHT11, bây giờ chúng ta hãy chuyển sang sơ đồ chân của DHT11.

2: Sơ đồ chân cảm biến DHT11

Hầu hết thời gian, cảm biến DHT11 có hai cấu hình chân cắm khác nhau. Cảm biến DHT11 có cấu hình 4 chân có 3 chân không hoạt động hoặc được dán nhãn là không có kết nối.

Mô-đun cảm biến 3 chân DHT11 có ba chân bao gồm chân nguồn, GND và chân dữ liệu.

Cảm biến DHT11 2.1: 3 chân

Hình ảnh đã cho hiển thị 3 cấu hình chân của cảm biến DHT11.


Ba chân này là:

1. Dữ liệu Nhiệt độ và độ ẩm đầu ra trong dữ liệu nối tiếp
2. Vcc Nguồn điện đầu vào 3,5V đến 5,5V
3. GND GND của mạch

Cảm biến DHT11 2.2: 4 chân

Hình ảnh sau đây minh họa mô-đun cảm biến 4 chân DHT11:


4 chân này bao gồm:

1. Vcc Nguồn điện đầu vào 3,5V đến 5,5V
2. Dữ liệu Nhiệt độ và độ ẩm đầu ra trong dữ liệu nối tiếp
3. NC Không có kết nối hoặc không được sử dụng
Bốn. GND GND của mạch

3: Mô-đun hiển thị OLED với ESP32

Màn hình OLED chủ yếu đi kèm với hai giao thức giao tiếp khác nhau. Hai giao thức là I2C và SPI. Giao diện ngoại vi nối tiếp (SPI) thường nhanh hơn I2C, nhưng chúng tôi ưu tiên I2C hơn giao thức SPI vì giao thức này yêu cầu số lượng chân cắm nhỏ hơn.

Hình ảnh sau đây minh họa sơ đồ kết nối ESP32 với màn hình OLED 128×64 pixel (0,96’’).


Dưới đây là bảng kết nối:


Khi ESP32 được giao tiếp với màn hình OLED, bước tiếp theo trong danh sách là cài đặt tất cả các thư viện cần thiết để lập trình ESP32 bằng Arduino IDE.

4: Cài đặt các thư viện cần thiết

Ở đây chúng ta sẽ giao tiếp hai cảm biến khác nhau với ESP32 để cả hai đều yêu cầu các thư viện riêng biệt để hoạt động. Bây giờ chúng ta sẽ cài đặt thư viện cho màn hình DHT11 và OLED.

4.1: Thư viện Arduino cho cảm biến DHT

Mở Arduino IDE, truy cập: Phác thảo>Bao gồm thư viện>Quản lý thư viện

Ngoài ra, chúng ta cũng có thể mở trình quản lý thư viện từ nút bên trên giao diện Arduino IDE.

Tìm kiếm thư viện DHT và cài đặt phiên bản cập nhật mới nhất. Thư viện DHT sẽ giúp đọc dữ liệu cảm biến.


Sau khi cài đặt thư viện DHT, tiếp theo chúng ta phải cài đặt một thư viện cảm biến thống nhất của Adaf nhung.

4.2: Thư viện Arduino cho màn hình OLED

Nhiều thư viện có sẵn trong Arduino IDE để lập trình ESP32 với màn hình OLED. Ở đây chúng tôi sẽ sử dụng hai thư viện từ Adaf nhung: SSD1306 và thư viện GFX.

Mở IDE và nhấp vào Trình quản lý thư viện và tìm kiếm thư viện OLED SSD1306. Cài đặt thư viện SSD1306 của Adaf nhung từ thanh tìm kiếm.

Ngoài ra, người ta cũng có thể đi đến: Phác thảo>Bao gồm thư viện>Quản lý thư viện


Thư viện tiếp theo chúng ta cần cài đặt là GFX thư viện của Adaf nhung.


Chúng tôi đã cài đặt các thư viện cho cả màn hình OLED và cảm biến DHT11. Bây giờ chúng ta có thể dễ dàng giao tiếp cả hai với ESP32.

5: Kết nối ESP32 với Cảm biến DHT11 và OLED

Để kết nối ESP32 với cảm biến DHT11, chúng ta cần một chân kỹ thuật số để đọc dữ liệu cảm biến và để cấp nguồn cho cảm biến DHT11, chúng ta có thể sử dụng chân 3V3 hoặc chân Vin của ESP32.

Đối với màn hình OLED, các chân I2C SDA và SCL sẽ được sử dụng. Để cấp nguồn, chúng ta có thể sử dụng Vin hoặc chân 3V3 của ESP32.

5.1: Sơ đồ

Trong hình ảnh đã cho, chúng ta có thể thấy sơ đồ nguyên lý của ESP32 với DHT11 và màn hình OLED được sử dụng để xuất ra. Hình ảnh này đại diện cho mô-đun cảm biến 3 chân giao tiếp với ESP32. Hãy nhớ kết nối một điện trở kéo lên 10kΩ.


Tương tự, 4 chân DHT11 cũng có thể được kết nối, điểm khác biệt duy nhất ở đây là chân 3 không có tác dụng hay còn gọi là Không kết nối. Chân dữ liệu nằm ở chân 2 của cảm biến.

Màn hình OLED được kết nối bằng các chân I2C SDA và SCL ở D21 và D22 tương ứng.

5.2: Mã

Kết nối ESP32 với PC và mở Arduino IDE. Tải mã đã cho lên bảng ESP32.

#include             /*Bao gồm thư viện giao tiếp có dây*/
#include
#include /*Thư viện màn hình OLED*/
#include
#include             /*Thư viện cảm biến nhiệt độ và độ ẩm*/
#define SCREEN_WIDTH 128    /*Chiều rộng màn hình OLED 128 pixel*/
#define SCREEN_HEIGHT 64   /*Chiều cao màn hình OLED 64 pixel*/
Màn hình Adaf nhung_SSD1306 ( SCREEN_WIDTH, SCREEN_HEIGHT, & Dây điện, - 1 ) ; /* SSD1306 I2C Hiển thị khởi tạo */
#define DHTPIN 4          /*Chốt tín hiệu cho cảm biến DHT11*/
#define DHTTYPE    DHT11
DHT dht ( DHTPIN, DHTTYPE ) ;
thiết lập vô hiệu ( ) {
Nối tiếp.bắt đầu ( 115200 ) ;
dht.bắt đầu ( ) ;
nếu ( ! hiển thị.bắt đầu ( SSD1306_SWITCHCAPVCC, 0x3C ) ) { /* Địa chỉ I2C tại cái mà OLED được kết nối */
Nối tiếp.println ( F ( 'Cấp phát SSD1306 không thành công' ) ) ;
( ;; ) ;
}
sự chậm trễ ( 2000 ) ;
hiển thị.clearDisplay ( ) ;
hiển thị.setTextColor ( TRẮNG ) ; /* Màu văn bản đầu ra màu trắng */
}
vòng lặp trống ( ) {
sự chậm trễ ( 5000 ) ;
float t = dht.readTemperature ( ) ; /* đọc nhiệt độ */
float h = dht.readĐộ ẩm ( ) ; /* đọc độ ẩm */
nếu ( là một ( h ) || là một ( t ) ) {
Nối tiếp.println ( 'Không thể đọc từ cảm biến DHT!' ) ;
}
hiển thị.clearDisplay ( ) ; /* xa lạ Màn hình OLED trước khi hiển thị giá trị đọc */
display.setTextSize ( 1 ) ; /* Phông chữ OLED kích thước */
hiển thị.setCursor ( 0 , 0 ) ;
hiển thị.print ( 'Nhiệt độ: ' ) ;
display.setTextSize ( 2 ) ;
hiển thị.setCursor ( 0 , 10 ) ;
hiển thị.print ( t ) ; /* nhiệt độ in Trong độ C */
hiển thị.print ( '' ) ;
display.setTextSize ( 1 ) ;
hiển thị.cp437 ( thật ) ;
hiển thị.write ( 167 ) ;
display.setTextSize ( 2 ) ;
hiển thị.print ( 'C' ) ;

display.setTextSize ( 1 ) ;
hiển thị.setCursor ( 0 , 35 ) ;
hiển thị.print ( 'Độ ẩm:' ) ;
display.setTextSize ( 2 ) ;
hiển thị.setCursor ( 0 , Bốn năm ) ;
hiển thị.print ( h ) ; /* in phần trăm độ ẩm */
hiển thị.print ( '%' ) ;
màn hình hiển thị ( ) ;
}


Mã bắt đầu bằng cách bao gồm các thư viện cần thiết cho cảm biến OLED và DHT11. Sau đó, kích thước màn hình OLED được xác định. Tiếp theo, loại cảm biến DHT được xác định trong trường hợp nếu bạn đang sử dụng DHT22, hãy thay thế nó cho phù hợp.

Trong phần thiết lập, cảm biến DHT và màn hình OLED được khởi tạo. Màn hình OLED được kết nối tại địa chỉ I2C là 0x3C. Trong trường hợp một người muốn kiểm tra địa chỉ I2C, hãy tải lên mã được cung cấp trong phần này mạo từ .

Các giá trị nhiệt độ và độ ẩm được lưu trữ bên trong biến float t h tương ứng. Sau đó, cả hai giá trị này được in trên màn hình OLED.

5.3: Đầu ra

Ở đầu ra, chúng ta có thể thấy nhiệt độ và độ ẩm đo được theo thời gian thực được hiển thị trên màn hình OLED.




Chúng ta đã kết nối thành công ESP32 với cảm biến DHT11 và màn hình OLED.

Phần kết luận

Màn hình OLED với ESP32 có thể hiển thị nhiều dữ liệu được đọc bằng các cảm biến bên ngoài. Ở đây bài viết này bao gồm tất cả các bước để giao tiếp ESP32 với cảm biến DHT11 để đo nhiệt độ và độ ẩm của phòng. Sau đó, tất cả dữ liệu đã đọc được hiển thị trên mô-đun màn hình OLED I2C.