DHT22 giao tiếp ESP32, Cảm biến Nhiệt độ, độ ẩm + Oled + ESP

cam-bien-do-am-nhiet-do-dht22-giao-tiep-esp32-hien-thi-lcd1602-4
DHT22 giao tiếp ESP32 là cảm biến thông dụng tích hợp vừa đo được nhiệt độ và độ ẩm, độ chính xác khá cao qua chuẩn giao tiếp 1 dây. Cảm biến độ ẩm nhiệt độ DHT22 ra chân được tích hợp sẳn điện trở 5.1 KOhm giúp người dung kết nối và sử dụng đơn giản hơn cảm biến DHT22 chưa ra chân. So với DHT11 thì DHT22 có độ chính xác cao và khoảng đo hoạt động rộng hơn. Module truyền dữ liệu thông qua giao tiếp 1 dây nên dễ dàng kết nối và lấy dữ liệu. Module được thiết kế hoạt động ở mức điện áp 5V.  
Liên hệ làm Đồ án và Mạch điện tử Phone : 0967.551.477 Zalo    : 0967.551.477 FB      : Huỳnh Nhật Tùng Email : dientunhattung@gmail.com Địa Chỉ: 171/25 Lê Văn Thọ, P8, Gò Vấp, Tp HCM Chi tiết: Nhận làm mạch và đồ án Điện tử  

1. Linh kiện cần thiết làm mạch Cảm biến DHT22 giao tiếp ESP32

1.1 Vi điều khiển ESP trong mạch cảm biến  DHT22 giao tiếp ESP32 

a. Giới thiệu

ESP32 là một hệ thống vi điều khiển trên chip (SoC) của Espressif Systems, nhà phát triển của ESP8266 SoC. Nó là sự kế thừa của SoC ESP8266 và có cả hai biến thể lõi đơn và lõi kép của bộ vi xử lý 32-bit Xtensa LX6 của Tensilica với Wi-Fi và Bluetooth tích hợp. Điểm tốt về ESP32, giống như ESP8266 là các thành phần RF tích hợp của nó như bộ khuếch đại công suất, bộ khuếch đại nhận tiếng ồn thấp, công tắc ăng-ten, bộ lọc và Balun RF. Điều này làm cho việc thiết kế phần cứng xung quanh ESP32 rất dễ dàng vì bạn cần rất ít thành phần bên ngoài. Một điều quan trọng khác cần biết về ESP32 là nó được sản xuất bằng công nghệ 40 nm công suất cực thấp của TSMC. Vì vậy, việc thiết kế các ứng dụng hoạt động bằng pin như thiết bị đeo, thiết bị âm thanh, đồng hồ thông minh, …, sử dụng ESP32 sẽ rất dễ dàng. cam-bien-do-am-nhiet-do-dht22-giao-tiep-esp32-hien-thi-lcd1602-1

Một số chức năng khác

Vi xử lý có rất nhiều loại bắt đầu từ 4 bit cho đến 32 bit, vi xử lý 4 bit hiện nay không còn nhưng vi xử lý 8 bit vẫn còn mặc dù đã có vi xử lý 64 bit. Lý do sự tồn tại của vi xử lý 8 bit là phù hợp với một số yêu cầu điều khiển trong công nghiệp. Các vi xử lý 32 bit, 64 bit thường sử dụng cho các máy tính vì khối lượng dữ liệu của máy tính rất lớn nên cần các vi xử lý càng mạnh càng tốt. Các hệ thống điều khiển trong công nghiệp sử dụng các vi xử lý 8 bit hay 16 bit như hệ thống điện của xe hơi, hệ thống điều hòa, hệ thống điều khiển các dây chuyền sản xuất, … các ứng dụng của vi điều khiển

b. Chức năng của Arduino R3:

Các chân không khởi động được khi:
Chân ký hiệu thực tếKhông cho phép khi khởi động
D2Lỗi nếu kéo lên cao
D12Lỗi nếu kéo lên cao
D34Lỗi khi kéo xuống thấp
D35Lỗi khi kéo xuống thấp

Analog to Digital Converter (ADC)

ESP32 có 18 kênh input ADC và độ phân giải 12 bit (trong khi ESP8266 chỉ có 1 kênh ADC độ phân giải 10 bit). Đây là các GPIO có thể được sử dụng làm ADC và các kênh tương ứng:

  • ADC1_CH0 (GPIO 36)
  • ADC1_CH1 (GPIO 37)
  • ADC1_CH2 (GPIO 38)
  • ADC1_CH3 (GPIO 39)
  • ADC1_CH4 (GPIO 32)
  • ADC1_CH5 (GPIO 33)
  • ADC1_CH6 (GPIO 34)
  • ADC1_CH7 (GPIO 35)
  • ADC2_CH0 (GPIO 4)
  • ADC2_CH1 (GPIO 0)
  • ADC2_CH2 (GPIO 2)
  • ADC2_CH3 (GPIO 15)
  • ADC2_CH4 (GPIO 13)
  • ADC2_CH5 (GPIO 12)
  • ADC2_CH6 (GPIO 14)
  • ADC2_CH7 (GPIO 27)
  • ADC2_CH8 (GPIO 25)
  • ADC2_CH9 (GPIO 26)

Digital to Analog Converter (DAC)

  • DAC1 (GPIO25)
  • DAC2 (GPIO26)

Một số chức năng khác

PWM

Bộ điều khiển ESP32 LED PWM có 16 kênh độc lập có thể được cấu hình để tạo tín hiệu PWM với các đặc tính khác nhau. Tất cả các chân có thể hoạt động như output đều có thể được sử dụng làm chân PWM (GPIO từ 34 đến 39 không thể tạo PWM). Các thông số cấu hình:

  • Tần số tín hiệu.
  • Duty cycle.
  • Kênh PWM.
  • Chân GPIO xuất tín hiệu.

I2C

ESP32 có hai kênh I2C và bất kì chân nào cũng có thể cấu hình làm chân SDA và SCL. Khi sử dụng ESP32 với Arduino IDE, chân I2C mặc định là:

  • GPIO 21 (SDA)
  • GPIO 22 (SCL)

SPI

  • ESP32 có module giao tiếp SPI với thiết bị ngoại vi, gọi là SPI0, SPI1, HSPI, VSPI. SPI0 chỉ dành riêng để kết nối bộ nhớ flash của ESP32 với các thiết bị bố nhớ flash khác bên ngoài.
  • SPI1 được kết nối cũng tương tự như SPI0 nhưng nó dùng để ghi dữ liệu cho bộ nhớ Flash của chip.
  • HSPI và VSPI và sử dụng tự do. SPI1 và HSPI và VSPI đều có 3 cổng kết với chip, giúp chúng ta dễ dàng kết nối đồng thời với 3 slave bằng giao tiếp SPI mà ESP32 sẽ là thiết bị master.

Interrupts

Tất cả các GPIO có thể được cấu hình như ngắt.

Một số chức năng khác

Các chân thời gian thực RTC Các chân này có tác dụng đánh thức ESP32 khi trong chế độ Low Power Mode. Sử dụng như 1 chân ngắt ngoài. Các chân RTC:
  • RTC_GPIO0 (GPIO36)
  • RTC_GPIO3 (GPIO39)
  • RTC_GPIO4 (GPIO34)
  • RTC_GPIO5 (GPIO35)
  • RTC_GPIO6 (GPIO25)
  • RTC_GPIO7 (GPIO26)
  • RTC_GPIO8 (GPIO33)
  • RTC_GPIO9 (GPIO32)
  • RTC_GPIO10 (GPIO4)
  • RTC_GPIO11 (GPIO0)
  • RTC_GPIO12 (GPIO2)
  • RTC_GPIO13 (GPIO15)
  • RTC_GPIO14 (GPIO13)
  • RTC_GPIO15 (GPIO12)
  • RTC_GPIO16 (GPIO14)
  • RTC_GPIO17 (GPIO27)
Chân tích hợp Flash trên ESP32 GPIO 6 đến GPIO 11 dùng để kết nối Flash SPI, không khuyến khích sử dụng trong các ứng dụng khác
  • GPIO 6 (SCK/CLK)
  • GPIO 7 (SDO/SD0)
  • GPIO 8 (SDI/SD1)
  • GPIO 9 (SHD/SD2)
  • GPIO 10 (SWP/SD3)
  • GPIO 11 (CSC/CMD)
Chân cám biến điện dung Các chân ESP32 này có chức năng như 1 nút nhấn cảm ứng, có thể phát hiện sự thay đổi về điện áp cảm ứng trên chân. Các cảm biến cảm ứng bên trong đó được kết nối với các GPIO sau:
  • T0 (GPIO 4)
  • T1 (GPIO 0)
  • T2 (GPIO 2)
  • T3 (GPIO 15)
  • T4 (GPIO 13)
  • T5 (GPIO 12)
  • T6 (GPIO 14)
  • T7 (GPIO 27)
  • T8 (GPIO 33)
  • T9 (GPIO 32)
cam-bien-do-am-nhiet-do-dht22-giao-tiep-esp32-hien-thi-lcd1602-2  

1.2 Cảm biến DHT22 giao tiếp ESP32

a. Giới thiệu

Cảm biến độ ẩm nhiệt độ DHT22 là cảm biến thông dụng tích hợp vừa đo được nhiệt độ và độ ẩm, độ chính xác khá cao. Giao tiếp với vi điều khiển qua chuẩn giao tiếp 1 dây. Cảm biến độ ẩm nhiệt độ DHT22 ra chân được tích hợp sẳn điện trở 5.1 KOhm giúp người dung kết nối và sử dụng đơn giản hơn cảm biến DHT22 chưa ra chân. So với DHT11 thì DHT22 có độ chính xác cao và khoảng đo hoạt động rộng hơn. Module truyền dữ liệu thông qua giao tiếp 1 dây nên dễ dàng kết nối và lấy dữ liệu. Module được thiết kế hoạt động ở mức điện áp 5V.
cam-bien-do-am-nhiet-do-dht22-giao-tiep-esp32-hien-thi-lcd1602

b. Thông số kỹ thuật DHT22 giao tiếp ESP32

  • Nguồn điện 3,3v đến 6v
  • Mức tiêu thụ hiện tại 2,5mA
  • Tín hiệu đầu ra kỹ thuật số
  • Phạm vi nhiệt độ từ -40ºC đến 125ºC
  • Độ chính xác để đo nhiệt độ ở 25ºC thay đổi 0.5ºC
  • Độ phân giải để đo nhiệt độ là 8-bit, 0,1ºC
  • Độ ẩm có thể đo từ 0% RH đến 100% RH
  • Độ ẩm chính xác 2-5% RH cho nhiệt độ từ 0-50ºC
  • Độ phân giải là 0,1% RH, nó không thể nhận các biến thể dưới mức đó
  • Tốc độ lấy mẫu 2 mẫu mỗi giây: 2Hz
Lưu ý: Cảm biến này khi làm các bạn phải để ý chân, vì rất dễ chết khi các bạn cấp sai.

1.3 Oled cho cảm biến DHT22 giao tiếp ESP32 

a. Giới thiệu

Màn hình Oled 1.3 inch giao tiếp I2C cho khả năng hiển thị đẹp, sang trọng, rõ nét vào ban ngày và khả năng tiết kiệm năng lượng tối đa với mức chi phí phù hợp, màn hình sử dụng giao tiếp I2C cho chất lượng đường truyền ổn định và rất dễ giao tiếp chỉ với 2 chân GPIO. Màn hình OLED SH1106 với kích thước 1.3 inch, cho khả năng hiển thị hình ảnh tốt với khung hình 128×64 pixel. Ngoài ra, màn hình còn tương thích với hầu hết các vi điều khiển hiện nay thông qua giao tiếp SPI. Màn hình sử dụng driver SH1106 cùng thiết kế nhỏ gọn sẽ giúp bạn phát triển các sản phẩm DIY hoặc các ứng dụng khác một cách nhanh chóng. màn hình oled 1.3in chuẩn i2c

Màn hình Oled chuẩn truyền I2C

màn hình oled chuẩn truyền SPI

Màn hình Oled chuẩn truyền SPI

b. Thông số kỹ thuật

  • Điện áp sử dụng: 2.2~5.5VDC
  • Công suất tiêu thụ: 0.04w
  • Góc hiển thị: lớn hơn 160 độ
  • Số điểm hiển thị: 128×64 điểm.
  • Độ rộng màn hình: 1.3 inch.
  • Màu hiển thị: Trắng / Xanh Dương.
  • Giao tiếp: I2C hoặc SPI tùy loại
  • Driver: SH1106
  • Kích thước 1.3 inch (128x64px)
  • Góc nhìn tối đa: 160°
  • Nhiệt độ làm việc: -30°V đến 80°C
  • Tương thích với hầu hết các board như: Arduino, ESP8266, ESP32, STM32,
Lưu ý khi dùng Oled 1.3in Hiện trên thị trường sẽ có: +  2 loại chính là 0.96in1.3in +  2 mã số là SH1106SH1306 +  2 chuẩn truyền SPII2C Vì thế việc lựa chọn đúng đối tượng để lập trình mới có thể hiển thị được thông tin mong muốn.

2. Hướng dẫn đồ án cảm biến DHT22 giao tiếp ESP32 hiển thị Oled

Sử dụng một chương trình cho hai DHT11 và DHT22

Phần cứng

cam-bien-do-am-nhiet-do-dht22-giao-tiep-esp32-hien-thi-lcd1602-3

Phần mềm

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>

#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels

// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

#define DHTPIN 14     // Digital pin connected to the DHT sensor

// Uncomment the type of sensor in use:
//#define DHTTYPE    DHT11     // DHT 11
#define DHTTYPE    DHT22     // DHT 22 (AM2302)
//#define DHTTYPE    DHT21     // DHT 21 (AM2301)

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200);

  dht.begin();

  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;);
  }
  delay(2000);
  display.clearDisplay();
  display.setTextColor(WHITE);
}

void loop() {
  delay(5000);

  //read temperature and humidity
  float t = dht.readTemperature();
  float h = dht.readHumidity();
  if (isnan(h) || isnan(t)) {
    Serial.println("Failed to read from DHT sensor!");
  }
  // clear display
  display.clearDisplay();
  
  // display temperature
  display.setTextSize(1);
  display.setCursor(0,0);
  display.print("Temperature: ");
  display.setTextSize(2);
  display.setCursor(0,10);
  display.print(t);
  display.print(" ");
  display.setTextSize(1);
  display.cp437(true);
  display.write(167);
  display.setTextSize(2);
  display.print("C");
  
  // display humidity
  display.setTextSize(1);
  display.setCursor(0, 35);
  display.print("Humidity: ");
  display.setTextSize(2);
  display.setCursor(0, 45);
  display.print(h);
  display.print(" %"); 
  
  display.display(); 
}

3. Hoạt động của mạch cảm biến DHT22 giao tiếp ESP32

Khi cấp điện hệ thống hoạt động, vi điều khiển đưa tín hiệu ban đầu cho Oled hiển thị thông tin người dùng, lúc này vi điều khiển chờ tín hiệu được gửi vào từ cảm biến dht11 nhiệt độ, độ ẩm. Khi nhận được tín hiệu vi điều khiển xử lý và gửi giá trị nhiệt độ, độ ẩm ra ngoài màn hình để hiển thị giá trị ra màn hình Oled đã được quy định.

4. Cụ thể hoạt động của mạch Cảm biến DHT22 giao tiếp ESP32 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

Sẽ còn các phần khác nữa nhé.

Chúc các bạn thành công…!!!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *