TỔNG QUAN VỀ ĐỀ TÀI
Lý do chọn đề tài
Trong bối cảnh cuộc sống hiện đại, nhu cầu phòng cháy chữa cháy ngày càng trở nên cấp thiết do sự hiện diện của nhiều khu vực dễ cháy, có thể gây thiệt hại nghiêm trọng về người và tài sản Việc lắp đặt hệ thống báo cháy và chữa cháy không chỉ có vai trò quan trọng trong việc ngăn chặn mà còn giúp xử lý kịp thời các đám cháy, đặc biệt khi con người chưa thể can thiệp.
Lý do chọn đề tài này là nhằm củng cố kiến thức về vi xử lý, nâng cao kỹ năng lập trình và thiết kế mạch điện tử Đề tài không chỉ đáp ứng nhu cầu thực tế mà còn tạo cơ hội phát triển các ý tưởng và sản phẩm mới, bắt kịp với xu hướng công nghệ hiện đại.
Mục tiêu của đề tài
Với đề tài này chúng em mong muốn sẽ chế tạo được một sản phẩm có thể đáp ứng được các chức năng:
Đo nhiệt độ, độ ẩm không khí.
Hiển thị kết quả đo được lên LCD và điện thoại
Phân công công việc
Sau các buổi họp nhóm, các công việc được phân công cụ thể để hoàn thành đúng hạn các nhiệm vụ:
Bảng 1.1 Phân công công việc
Tên công việc Người thực hiện
Tìm hiểu khái quát về đề tài Cả nhóm
Phân tích cụ thể các phần
Cả nhóm Đ.Trung, A.Du T.Dũng, B.Đạt Q.Minh
Test lại mạch Đ.Trung, A.Du
1 Tổng quan về đề tài
2 Giới thiệu chung về hệ thống
3 Phân tích kiến trúc hệ thống
A.Du, B.ĐạtT.Dũng, Q.Minh Đ.Trung, A.Du Đ.Trung
Kế hoạch dự kiến
Sau khi phân tích hệ thống và khả năng nhóm phát triển cũng như quá trình vận hành hệ thống Kế hoạch có thể thực hiện theo trình tự:
Bảng 1.2 Kế hoạch cụ thể
GIỚI THIỆU VỀ HỆ THỐNG
Yêu cầu chức năng
Sử dụng NODEMCU ESP8266 để điều khiển và thu thập dữ liệu từ các cảm biến, cho phép đọc độ ẩm và nhiệt độ Dữ liệu sau đó được truyền đến màn hình LCD để hiển thị kết quả, bao gồm nhiệt độ (°C), độ ẩm không khí (%) và nồng độ khí ga (PPM).
Mạch phải có Jac DC để cấp nguồn và nạp code, thiết bị có khả năng reset.
Yêu cầu phi chức năng
Màn hình LCD hiển thị rõ nét chính xác các thông số đo được.
Quá trình thực hiện dự án bao gồm các bước chính với thời gian cụ thể: Nghiên cứu sơ bộ diễn ra trong 2 tuần từ 10/10/2020 đến 24/10/2020, tiếp theo là phân tích trong 3 tuần từ 25/10/2020 đến 20/11/2020 Sau đó, giai đoạn lập trình và mô phỏng kéo dài 3 tuần từ 22/11/2020 đến 14/12/2020 Cuối cùng, việc làm báo cáo và chỉnh sửa được thực hiện trong 2 tuần từ 15/12/2020 đến 31/12/2020.
Mạch nhỏ gọn 15x15x5 (cm) dễ dàng lắp đặt ở bất kì các vị trí trong phòng mà không làm ảnh hưởng đến không gian hay mỹ quan ngôi nhà.
Trọng lượng sản phẩm: 0.2-0.3kg.
Thời gian hoàn thành: dự kiến trong 2 tháng.
Giá thành sản phẩm sẽ khoảng 300.000 đ.
Sơ đồ khối của hệ thống
Sơ đồ khối hệ thống bao gồm 4 khối: khối nguồn, khối hiển thị, khối cảm biến, khối xử lý điều khiển như sau:
Giải thích sơ đồ khối:
Khối xử lý điều khiển sử dụng NODEMCU ESP8266 đóng vai trò quan trọng trong việc quản lý trạng thái hoạt động của hệ thống Khi nhận thông tin từ các cảm biến về nhiệt độ, độ ẩm và nồng độ khí ga, khối này sẽ hiển thị dữ liệu trên màn hình LCD và ứng dụng di động.
Tín hiệu độ ẩm Ứng dụng điện thoại
H^nh 2.1 Sơ đồ khối của hệ thống
CHƯƠNG 1 Khối cảm biến: dùng các sensor cảm biến về nhiệt độ, độ ẩm, nồng độ khí GA để đo và gửi thông tin về khối xử lí điều khiển.
CHƯƠNG 3 Khối hiển thị: hiển thị giá trị về nhiệt độ, độ ẩm của môi trường mà các sensor đo được.
CHƯƠNG 4 Khối nguồn: cung cấp nguồn 1 chiều cho mạch hoạt động.
PHÂN TÍCH KIẾN TRÚC HỆ THỐNG
Khối nguồn
Hệ thống được cấp nguồn 5V từ cổng USB của mạch nạp USB ISP, cung cấp năng lượng cho toàn bộ hệ thống Mạch nạp này cũng đóng vai trò quan trọng trong việc nạp chương trình từ máy tính vào vi xử lý.
Khối cảm biến
Khối cảm biến thu thập dữ liệu về khí ga và độ ẩm môi trường, chuyển đổi chúng thành các tín hiệu điện tương ứng Dữ liệu này sau đó được gửi về cho vi xử lý và bao gồm hai thành phần chính: cảm biến khí ga và cảm biến độ ẩm.
Cảm biến nhiệt độ, độ ẩm
Nhóm chúng em đã tìm hiểu về hai loại cảm biến độ ẩm và nhiệt độ là DHT-22 vàDHT-11:
Bảng 3.1 So sánh sensor DHT-11 và DHT-22
Dòng sử dụng Up to 2.5mA Up to 2.5mA
Nhiệt độ làm việc 0-50 ℃ -10-80 ℃ Độ ẩm làm việc 20-70%RH 0-100%RH
Tần số lấy mẫu 1Hz 0.5Hz
Sau khi so sánh các thông số cần thiết, chúng tôi nhận thấy DHT-11 và DHT-22 tương đương về nguồn và dòng sử dụng Mặc dù DHT-22 có dải nhiệt độ và độ ẩm rộng hơn cùng với sai số thấp hơn, nhóm chúng tôi đã quyết định chọn DHT-11 Điều này là do nhu cầu đo nhiệt độ và độ ẩm trong phòng, dải làm việc của DHT-11 hoàn toàn đáp ứng được Hơn nữa, kích thước nhỏ gọn của DHT-11 là một lợi thế trong thiết kế mạch, và tần số lấy mẫu của DHT-11 cao gấp đôi so với DHT-22, cho phép tái tạo tín hiệu nhanh hơn trong một phút.
Cảm biến DHT11 là một trong những cảm biến độ ẩm và nhiệt độ phổ biến nhất hiện nay nhờ vào chi phí thấp, kích thước nhỏ gọn và khả năng thu thập dữ liệu dễ dàng qua giao tiếp 1 wire (TTL).
Thông số kĩ thuật DHT-11:
- Dòng sử dụng: 2.5mA max (khi truyền dữ liệu).
- Đo tốt ở độ ẩm 20 to 70%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.
- Chuẩn giao tiếp: TTL, 1 wire.
Sự khác biệt giữa cảm biến DHT11 và Module DHT11:
Hiệu suất của cảm biến và module là tương đương, nhưng có sự khác biệt về cấu trúc Cảm biến có gói 4 chân, trong đó chỉ ba chân được sử dụng, trong khi module có ba chân như hình Điểm khác biệt chính là module tích hợp tụ lọc và điện trở kéo lên, trong khi cảm biến yêu cầu người dùng phải thêm các linh kiện này bên ngoài nếu cần thiết.
The DHT11 sensor is factory-calibrated and outputs data in a serial format, making it easy to set up The connection diagram for this sensor is illustrated in the provided reference.
H^nh 3.3 Sơ đồ khối DHT11
Chân dữ liệu của cảm biến DHT11 được kết nối với chân I/O của MCU và sử dụng điện trở kéo lên 5K Cảm biến này xuất giá trị nhiệt độ và độ ẩm dưới dạng dữ liệu nối tiếp Để giao diện DHT11 với Arduino, có sẵn nhiều thư viện hỗ trợ giúp bạn bắt đầu một cách nhanh chóng.
Để giao tiếp với các MCU khác, biểu dữ liệu cần thiết bao gồm độ ẩm 8bit, dữ liệu thập phân độ ẩm, nhiệt độ 8bit, dữ liệu nhiệt độ phân đoạn 8bit và bit chẵn lẻ 8bit Để yêu cầu mô-đun DHT11 gửi các dữ liệu này, chân I/O phải được đặt ở mức thấp và sau đó giữ ở mức cao theo sơ đồ thời gian đã chỉ định.
H^nh 3.4 Tín hiệu Bus điều khiển
Thời lượng của mỗi tín hiệu máy chủ được giải thích trong biểu dữ liệu DHT11, với các bước gọn gàng và sơ đồ thời gian minh họa.
Khối hiển thị
Sau khi vi xử lý xử lý dữ liệu về khí ga, màn hình LCD sẽ hiển thị kết quả với các thông số nồng độ khí ga, nhiệt độ và độ ẩm.
Nhóm em đã chọn màn hình text LCD1604 xanh với driver HD44780, một loại LCD phổ biến trên thị trường Màn hình này có khả năng hiển thị 4 dòng, mỗi dòng 20 ký tự, rất phù hợp để hiển thị thông tin về nhiệt độ và độ ẩm Với độ bền cao, LCD1604 có ưu điểm là hiển thị đầy đủ các ký tự trong bảng mã ASCII, tuy nhiên, nhược điểm của nó là khoảng cách nhìn gần.
Thông số kĩ thuật và tính năng:
-Điện áp hoạt động là 5 V.
-Khoảng cách giữa hai chân kết nối là 0.1inch 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
Bảng 3.2 Thứ tự các chân của LCD 20x04
THIẾT KẾ MẠCH
Sơ đồ kết nối
H^nh 4.7 Sơ đồ kết nối NODE MCU ESP8266 với DHT 11
Kết nối giữa NODE MCU ESP8266 và cảm biến DHT11 được thực hiện như sau: chân Vcc của DHT11 được nối với nguồn 3V3 của NODE MCU, chân GND của DHT11 nối với GND của NODE MCU, và chân tín hiệu Sig kết nối với chân D4 của NODE MCU Chân Nc của DHT11 để thả nổi Giao tiếp giữa DHT11 và NODE MCU ESP8266 sử dụng giao thức 1 wire.
H^nh 4.28 Sơ đồ kết nối LCD 20x04
Hnh 4 28 Mô tả kết nối giữa LCD 16x02 với NODE MCU ESP8266 Giao tiếp giữa Arduino với LCD 16x02 là giao tiếp I2C.
Kết quả mô phỏng
H^nh 4.3 Kết quả mô phỏng
Hnh 4 Thể hiện kết quả mô phỏng đo nhiệt độ bằng DHT11
4.3 Kết quả thử nghiệm trên board trắng
H^nh 4.4 Kết quả thực nghiệm
Hnh 4 mô tả kết quả đo nhiệt độ, độ ẩm
Sản phẩm đã đạt được tất cả các yêu cầu chức năng, tuy nhiên các yêu cầu phi chức năng chưa có thời gian để kiểm tra toàn bộ.
Qua quá trình thiết kế sản phẩm, nhóm đã tích lũy được nhiều kinh nghiệm và kiến thức quý báu Bài tập lớn trong môn học này không chỉ nâng cao khả năng lập trình và thiết kế mà còn giúp cải thiện kỹ năng sản xuất mạch in và làm việc nhóm Quan trọng hơn, nó giúp phát triển kỹ năng thiết kế sản phẩm điện tử theo quy trình chuẩn.
Thông qua bài tập lớn, chúng em đã tích lũy nhiều kiến thức thực tế về điện tử viễn thông Thầy Nguyễn Huy Hoàng đã truyền cảm hứng học tập và khuyến khích chúng em khám phá kiến thức mới Ngoài kiến thức chuyên môn, thầy còn chia sẻ những kinh nghiệm và kỹ năng thiết thực, giúp chúng em cải thiện khả năng thực hiện nhiệm vụ và bài tập, bao gồm kỹ năng mềm và kỹ năng làm việc nhóm.
Trong quá trình thực hiện đề tài, nhóm em đã nỗ lực hết mình, nhưng do kiến thức còn hạn chế nên không thể tránh khỏi sai sót Chúng em rất mong nhận được sự đóng góp, phê bình và chia sẻ từ thầy để cải thiện chất lượng cho các đề tài tiếp theo.
Chúng em xin chân thành cảm ơn thầy!
Code được thực hiện trên phần mềm Arduino IDE (Integrated Development
#define BLYNK_PRINT Serial // Comment this out to disable prints and save space
LiquidCrystal_I2C lcd(0x27,20,4); char auth[] = "Nr1168ZfT0zXAzRHUegVSe2588RQrIh7"; //Enter the Auth code which was send by Blink
// Set password to "" for open networks. char ssid[] = "Phan Dinh Trung"; //Enter your WIFI Name char pass[] = "11111111"; //Enter your WIFI Password
{ float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!"); return;
Blynk.virtualWrite(V5, h); //V5 is for Humidity Blynk.virtualWrite(V6, t); //V6 is for Temperature } void setup()
Blynk.begin(auth, ssid, pass);
Wire.begin(4, 5); dht.begin(); timer.setInterval(1000L, sendSensor); lcd.clear(); lcd.init(); lcd.backlight();
Blynk.run(); timer.run(); float h = dht.readHumidity(); float t = dht.readTemperature(); Serial.print("Nhiet do: ");
Serial.println(t); Serial.print("Do am: ");
Serial.println(h); lcd.clear(); lcd.setCursor(1,0); lcd.print("Nhiet do: ");
// lcd.setCursor(1,1); lcd.print(t); lcd.setCursor(1,2); lcd.print("Do am: ");
/// lcd.setCursor(1,3); lcd.print(h); delay(1000); } lcd.setCursor(10,1); lcd.print("VOC "); lcd.print(ccs.getTVOC(),DEC);
} else{ lcd.print("ERROR!"); while(1);