Table of Contents
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.
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, …
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 |
D2 | Lỗi nếu kéo lên cao |
D12 | Lỗi nếu kéo lên cao |
D34 | Lỗi khi kéo xuống thấp |
D35 | Lỗ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)
- GPIO 6 (SCK/CLK)
- GPIO 7 (SDO/SD0)
- GPIO 8 (SDI/SD1)
- GPIO 9 (SHD/SD2)
- GPIO 10 (SWP/SD3)
- GPIO 11 (CSC/CMD)
- 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)

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.
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
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 chuẩn truyền I2C

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,
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à DHT22Phần cứng

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:
cNgoà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…!!!