Nó có lực ảnh hưởng khá lớn đến sự phát triển và sinh sảncủa thực vật và động vật.Độ ẩm không khí là chỉ mức hơi nước có trong không khí, nó ảnh hưởng rất nhiềuđến sự phát triển của sinh
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN TỬ - VIỄN THÔNG
BÁO CÁO BÀI TẬP LỚN
ĐO LƯỜNG ĐIỆN TỬ
Đề tài:
Đo nhiệt độ & độ ẩm không khí sử dụng cảm biến DHT22
Nhóm sinh viên thực hiện: Bùi Vũ Bình Giang 20203897 Hoàng Thế Huy 20203902 Phạm Quốc An 20200007
Trang 2Giảng viên hướng dẫn: PGS TS Nguyễn Thúy Anh
Hà Nội, 2 – 2023
LỜI NÓI ĐẦU
Nhiệt độ không khí là hiện tượng khi các tia bức xạ của mặt trời đi qua khí quyển, mặt đất hấp thụ năng lượng nhiệt của mặt trời Sau đó bức xạ lại vào không khí, khiến cho không khí nóng lên Nhiệt độ của không khí còn được coi là thước đo mức độ nóng lạnh của không khí Nó có lực ảnh hưởng khá lớn đến sự phát triển và sinh sản của thực vật và động vật
Độ ẩm không khí là chỉ mức hơi nước có trong không khí, nó ảnh hưởng rất nhiều đến sự phát triển của sinh vật đặc biệt là trong lĩnh vực nuôi trồng
Vì những lí do trên, nhiệt độ và độ ẩm không khí có vai trò vô cùng to lớn trong nghiên cứu khoa học cũng như trong cuộc sống thường nhật
Ngoài việc trau dồi các kiến thức về môn học Đo lường Điện tử qua lý thuyết và bài tập trên lớp, chúng em cũng mong muốn được áp dụng các kiến thức này vào các vấn đề thiết thực và gần gũi trong thực tế Vì vậy, nhóm chúng em đã lựa chọn đề tài:
Đo nhiệt độ và độ ẩm không khí sử dụng cảm biến DHT22 làm chủ đề cho bài tập
lớn của môn học này
Chúng em xin chân thành cảm ơn cô Nguyễn Thúy Anh đã tận tình giảng dạy và củng cố các kiến thức của môn học để chúng em có thể hoàn thành bài tập lớn này
Trang 3MỤC LỤC
DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT 2
DANH MỤC HÌNH VẼ 3
TÓM TẮT BÁO CÁO 4
CHƯƠNG 1 PHÂN TÍCH ĐỀ TÀI 5
1.1 Cấu tạo cảm biến 5
1.2 Nguyên lý hoạt động cảm biến 6
1.2.1 Yêu cầu trong xử lý 7
1.2.2 Chi tiết các bước giao tiếp 8
1.3 Yêu cầu chức năng 10
1.4 Yêu cầu phi chức năng 10
CHƯƠNG 2 THIẾT KẾ 11
2.1 Sơ đồ nguyên lý và mạch thực tế 11
2.2 Lập trình cho vi xử lý 13
2.2.1 Các thư viện 13
2.2.2 Code Ardurino 14
CHƯƠNG 3 KẾT QUẢ ĐO 16
CHƯƠNG 4 KẾT LUẬN 17
TÀI LIỆU THAM KHẢO 18
Trang 4DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT
NTC Negative Temparature Coefficient Hệ số nhiệt độ âm MSB Most Significant Bit Bit có trọng số lớn nhất
Trang 5DANH MỤC HÌNH VẼ
Hình 1.1 Cảm biến nhiệt độ - độ ẩm DHT22 5
Hình 1.2 Cấu tạo cảm biến nhiệt độ - độ ẩm DHT22 5
Hình 1.3 Cấu tạo bộ phận cảm biến độ ẩm 6
Hình 1.4 Cấu tạo và hoạt động của nhiệt điện trở 6
Hình 1.5 Kết nối giữa cảm biến DHT22 và Vi xử lý 7
Hình 1.6 Tổng quan quá trình giao tiếp giữa vi điều khiển và DHT22 8
Hình 1.7 Quá trình vi điều khiển gửi tín hiệu khởi động tới MCU 9
Hình 1.8 Quá trình truyền bit 0 9
Hình 1.9 Quá trình truyền bit 1 10
Hình 2.1 Sơ đồ nguyên lý 11
Hình 2.2 Mạch thực tế 12
Trang 6TÓM TẮT BÁO CÁO
Báo cáo thể hiện quá trình nghiên cứu và thiết kế mạch đo nhiệt độ sử dụng cảm biến DHT22 cũng như xử lý số liệu đo được của nhóm, bao gồm 4 phần:
− Phần I: Phân tích đề tài
− Phần II: Thiết kế
− Phần III: Kết quả đo
− Phần IV: Kết luận
Trang 7CHƯƠNG 1 PHÂN TÍCH ĐỀ TÀI
1.1 Cấu tạo cảm biến
Không chỉ dành cho các ngành kỹ thuật khác nhau mà theo dõi các thông số của môi trường là thật sự cần thiết đối với mỗi một cá nhân Vì lý do này mà có nhiều cảm biến khác nhau có thể giúp ta đọc được các thông số đó, bao gồm nhiệt độ và độ ẩm Ở đây, DHT22 được lựa chọn để theo dõi nhiệt độ trong môi trường xung quanh
Hình 1.1 Cảm biến nhiệt độ - độ ẩm DHT22
Cảm biến DHT22 là một trong những cảm biến thông dụng nhất hiện nay vì kích thước nhỏ gọn, chi phí thấp và dễ dàng sử dụng 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 Cấu tạo cảm biến DHT22 bao gồm cảm biến nhiệt độ NTC (hay còn gọi là điện trở nhiệt), thành phần cảm biến độ ẩm và một IC ở mặt sau của cảm biến
Trang 8Hình 1.2 Cấu tạo cảm biến nhiệt độ - độ ẩm DHT22
Để đo độ ẩm, bộ phận cảm biến tương ứng có hai điện cực với chất nền giữ ẩm giữa chúng Khi độ ẩm thay đổi, độ dẫn của chất nền thay đổi hay điện trở giữa hai điện cực này sẽ thay đổi Sự thay đổi điện trở này được đo và xử lý bởi IC giúp cho vi điều khiển luôn sẵn sàng để đọc
Hình 1.3 Cấu tạo bộ phận cảm biến độ ẩm
Để đo nhiệt độ, DHT22 sử dụng cảm biến nhiệt độ NTC hay điện trở nhiệt Một nhiệt điện trở thực chất là một biến trở có thể thay đổi điện trở của nó khi nhiệt độ thay đổi Các cảm biến này được chế tạo bằng cách nung kết các vật liệu bán dẫn như gốm
sứ hoặc polyme để tạo ra những thay đổi lớn hơn về điện trở chỉ với những thay đổi nhỏ về nhiệt độ Khi nhiệt độ tăng lên, giá trị của điện trở sẽ giảm
Trang 9Hình 1.4 Cấu tạo và hoạt động của nhiệt điện trở
1.2 Nguyên lý hoạt động cảm biến
Để bắt đầu yêu cầu DHT22 cung cấp dữ liệu về độ ẩm và nhiệt độ, kết nối cảm biến với vi điều khiển theo Hình 1 5, quá trình thực hiện gồm 2 bước:
− Vi điều khiển gửi tín hiệu khởi động tới DHT22, sau đó DHT22 phản hồi lại
− Khi đã khởi động chính xác, cảm biến sẽ gửi lại 5 byte dữ liệu gồm nhiệt độ đo được
Hình 1.5 Kết nối giữa cảm biến DHT22 và Vi xử lý
Cảm biến gồm 1 chân không được kết nối sử dụng và 3 chân với nhiệm vụ sau:
Trang 10− VCC: Cấp nguồn cho cảm biến 5V.
− GND: Nối cực âm của mạch
− Data : Chân tín hiệu vào/ ra
1.2.1 Yêu cầu trong xử lý
1.2.1.1 Nguồn và PIN
Điện áp của nguồn rơi vào khoảng 3.3 – 6 V DC Khi nguồn được cấp cho cảm biến, không gửi bất kỳ lệnh nào đến cảm biến trong vòng 1 giây để vượt qua trạng thái không ổn định Một tụ điện có giá trị 100 nF có thể được đặt giữa Vdd và GND có tác dụng lọc sóng nhiễu
1.2.1.2 Giao tiếp và tín hiệu
Dữ liệu bus đơn được sử dụng để liên lạc giữa vi điều khiển và DHT22, chi phí 5ms cho 1 lần giao tiếp Dữ liệu bao gồm phần nguyên và phần thập phân, sau đây là công thức cho dữ liệu:
− DHT22 sẽ gửi giá trị độ ẩm trước tiên, sau đó là giá trị nhiệt độ Cả hai đều là dữ liệu 16 bit, nhưng được gửi 8 bit (hay 1 byte) cùng một lúc MSB của byte cao hơn được gửi đầu tiên Bit này của giá trị nhiệt độ là bit dấu, nếu bit này cao, nhiệt độ
âm Ngược lại, nhiệt độ là dương
−
Với Byte1 = 8 bit giá trị phần nguyên độ ẩm, Byte2 = 8 bit giá trị phần thập phân độ ẩm, Byte3 = 8 bit giá trị phần nguyên nhiệt độ, Byte4 = 8 bit giá trị phần thập phân nhiệt độ, Byte5 = 8 bit kiểm tra Tổng
− Nếu Byte5 = Byte1 + Byte2 + Byte3 + Byte4 thì việc truyền dữ liệu là chính xác Khi MCU gửi tín hiệu khởi động, DHT22 sẽ chuyển từ chế độ tiêu thụ điện năng thấp sang chế độ chạy Khi MCU kết thúc việc gửi tín hiệu khởi động này, DHT22 sẽ gửi tín hiệu phản hồi của dữ liệu gồm 40 bit chứa thông tin phản ánh thông tin nhiệt độ và độ ẩm tương đối đến MCU
Ngược lại, nếu không có tín hiệu khởi động từ MCU, DHT22 sẽ không cung cấp tín hiệu phản hồi Lúc này, cảm biến sẽ chuyển sang chế độ tiêu thụ điện năng thấp khi quá trình thu thập dữ liệu kết thúc
Trang 11Xem Hình 1 6 với tổng quan quá trình giao tiếp giữa DHT với vi điều khiển
Hình 1.6 Tổng quan quá trình giao tiếp giữa vi điều khiển và DHT22
1.2.2 Chi tiết các bước giao tiếp
1.2.2.1 Bước 1: Vi điều khiển gửi tín hiệu khởi động tới DHT22
Hình 1.7 Quá trình vi điều khiển gửi tín hiệu khởi động tới MCU
Trạng thái ban đầu của bus dữ liệu là mức điện áp cao Khi giao tiếp giữa MCU và DHT22 bắt đầu, chương trình của MCU thiết lập Data là Output, biến đổi mức điện áp của bus dữ liệu từ mức cao xuống mức thấp Quá trình này cần tối thiểu 18 ms nhằm đảm bảo DHT22 có thể phát hiện ra tín hiệu của vi điều khiển
MCU nâng điện áp bus dữ liệu lên mức cao và thiết lập nó là Input, đồng thời đợi phản hồi lại từ DHT22 từ 20 – 40 Nếu trên 40 mà mức điện áp của Data vẫn chưa được hạ xuống nghĩa là quá trình giao tiếp với DHT22 gặp vấn đề
Ngay khi DHT22 phát hiện được tín hiệu khởi động, nó kéo mức điện áp của Data xuống thấp và giữ tại mức điện áp này trong 80 dưới dạng tín hiệu phản hồi Tiếp tục nâng mức điện áp của Data lên mức cao trong 80 Kết thúc quá trình này sẽ hoàn thành việc bước đầu giao tiếp với cảm biến DHT22 và chuẩn bị gửi dữ liệu
Trang 12Vi điều khiển có thể kiểm soát được việc giao tiếp với DHT22 thành công hay không bằng việc theo dõi mức điện áp tại Data
1.2.2.2 Bước 2: DHT22 gửi dữ liệu cho MCU
Hình 1.8 Quá trình truyền bit 0
Khi DHT22 gửi dữ liệu tới vi điều khiển, việc truyền mỗi bit sẽ được bắt đầu với mức điện áp thấp kéo dài 50 , tiếp theo đó, độ dài của tín hiệu mức điện áp cao sẽ quyết định bit được truyền đi: nếu khoảng thời gian này từ 26 – 28 , bit được truyền là bit 0, khoảng thời gian kéo dài 70 , bit được truyền là bit 1
Quá trình tiếp tục tiếp diễn theo trình tự như vậy
Hình 1.9 Quá trình truyền bit 1
1.3 Yêu cầu chức năng
− Đo nhiệt độ của không khí sử dụng cảm biến DHT22 lập trình bởi Vi điều khiển ESP32
− Hiển thị số liệu đo được thông qua website qua wifi
Trang 131.4 Yêu cầu phi chức năng
− Giá thành rẻ, dễ dàng lắp đặt, sửa chữa, phù hợp với việc thực hành của sinh viên
− Ổn định, tiêu thụ điện năng thấp
− Dải điện áp hoạt động: 3.3 – 6V DC
− Điện áp vào thực hiện: nguồn trực tiếp từ ESP32 với điện áp 3.3VDC
− Dòng hoạt động: 0.3 mA (chế độ đo) và 60 A (chế độ chờ)
− Tín hiệu ra: tín hiệu kỹ thuật số thông qua bus đơn nối tiếp
− Phạm vi đo nhiệt độ: -40 – 80°C
− Tần số lấy mẫu: 0.5 Hz
Trang 14CHƯƠNG 2 THIẾT KẾ
2.1 Sơ đồ nguyên lý và mạch thực tế
Hình 2.10 Sơ đồ nguyên lý
Hình 2 10 thể hiện sơ đồ nguyên lý việc kết nối giữa vi điều khiển ESP32 và cảm biến nhiệt độ - độ ẩm DHT22 Chân Data của DHT22 được kết nối với chân vào/ ra của Vi xử lý và điện trở pull – up 10k được sử dụng Chân dữ liệu này gửi các giá trị đầu ra của cả nhiệt độ và độ ẩm dưới dạng dữ liệu nối tiếp
Trang 15Hình 2.11 Mạch thực tế
Trang 16Hình 2 11 chụp mạch thực tế đã được hoàn chỉnh lắp đặt và trong quá trình đo nhiệt độ và độ ẩm, bao gồm nguồn pin, vi điều khiển ESP32 và cảm biến nhiệt độ DHT22 Kết quả đo sẽ được hiển thị lên website thông qua wifi
2.2 Lập trình cho vi xử lý
2.2.1 Các thư viện
Thư viện <DHT.h>
Thư viện DHT bao gồm 6 hàm có nhiệm vụ như sau:
− Kiểm soát lỗi trong quá trình giao tiếp và truyền dữ liệu
− Đọc giá trị, trả về và lấy giá trị độ ẩm/ nhiệt độ
− Lấy mức level điện áp tín hiệu
Thư viện “Wifi.h”
- Thiết lập kết nối wifi cho ESP32 và trả về địa chỉ IP
Thư viện “ESPAsyncWebServer.h”
- Xây dựng các kết nối không đồng bộ
- Xử lí nhiều kết nối cùng lúc
Thư viện <Adafruit_Sensor.h>
Trang 17Kết nối wifi và đẩy dữ liệu lên website
void setup() // Serial port for debugging and connect WIfi const char index_html[] PROGMEM //Template HTML
String processor() //Set value for Template HTML
String readDHTTemperature(); //read temperature
String readDHTHumidity(); //read humidity
String readDHTTemperature() {
float t = dht.readTemperature();
if (isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return " ";
}else {
Serial.println(t);
return String(t);
}
}
String readDHTHumidity() {
float h = dht.readHumidity();
if (isnan(h)) {
Serial.println("Failed to read from DHT sensor!");
return " ";
}else {
Serial.println(h);
return String(h);
}
}
Serial.begin(115200);
while(!Serial);
Serial.println("Test");
dht.begin();
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi ");
}
Serial.println(WiFi.localIP());
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){ request->send_P(200, "text/html", index_html, processor);
});
server.on("/temperature", HTTP_GET, [](AsyncWebServerRequest *request) {
request->send_P(200, "text/plain", readDHTTemperature().c_str()); });
server.on("/humidity", HTTP_GET, [](AsyncWebServerRequest *request){ request->send_P(200, "text/plain", readDHTHumidity().c_str()); });
server.begin();
}
Trang 18CHƯƠNG 3 KẾT QUẢ ĐO
Đo nhiệt độ trong phòng Kết quả đo 30 lần mỗi lần cách nhau 10 giây lúc 22h00
Bảng 3.1 Kết quả đo nhiệt độ
Nhiệt độ
(°C)
25.6 25.5 25.6 25.4 25.6 25.4 25.6 25.6 25.6 25.6
Độ ẩm(%) 82.6 82.6 82.7 83.4 82.6 83.7 82.6 82.5 82.6 83.6
Nhiệt độ (°C) 24.9 25.6 25.6 25.7 24.6 25.6 25.8 25.6 25.6 25.9
Độ ẩm(%) 82.2 82.6 82.7 83.6 82.6 82.6 82.1 82.6 82.3 82.6
Nhiệt độ (°C) 25.6 25.5 25.6 25.4 25.6 25.4 24.7 24.6 24.8 24.6
Độ ẩm(%) 82.5 82.6 82.7 82.5 82.6 82.9 82.4 82.6 82.6 82.3
Trang 19CHƯƠNG 4 KẾT LUẬN
Nhóm chúng em đã hoàn thành bài tập lớn theo đề tài: Đo nhiệt độ và độ ẩm không khí sử dụng cảm biến DHT22 của môn học này với một sản phẩm nhỏ gọn,
hiệu quả và ứng dụng thực tiễn vào cuộc sống hằng ngày
Qua bài tập lớn lần này, chúng em đã cải thiện thêm cả năng làm việc nhóm của mình, đồng thời thành thạo hơn trong việc tra datasheet của các linh kiện như cảm biến DHT11, lập trình cho vi xử lý cũng như việc xử lý số liệu cho sản phẩm này và các sản phẩm về sau
Chúng em xin chân thành cảm ơn cô Nguyễn Thúy Anh đã tận tình giảng dạy và củng cố các kiến thức của môn học để chúng em có thể hoàn thành bài tập lớn này Trong quá trình làm Bài tập lớn chắc chắn chúng em sẽ gặp phải các sai sót, kính mong cô có thể góp ý, chỉnh sửa để nhóm hoàn thiện bài tập và có thêm kinh nghiệm trong các sản phẩm về sau
Trang 20TÀI LIỆU THAM KHẢO
https://vi.wikipedia.org/wiki/Nhiệt_độ
https://html.alldatasheet.com/html-pdf/1132459/ETC2/DHT22/225/2/DHT22.html https://circuits-diy.com/dht22-digital-temperature-and-humidity-sensor/
https://www.theengineeringprojects.com/2019/02/introduction-to-dht22.html https://howtomechatronics.com/tutorials/arduino/dht11-dht22-sensors-temperature-and-humidity-tutorial-using-arduino/
https://datasheetspdf.com/pdf-file/792211/Aosong/DHT22/1
https://www.teachmemicro.com/how-dht22-sensor-works/
https://lastminuteengineers.com/dht11-dht22-arduino-tutorial/