(Đồ án tốt nghiệp) Thiết kế và thi công hệ thống thu thập dữ liệu môi trường, hiển thị thông tin trên web và cảnh báo hỏa hoạn qua SMS(Đồ án tốt nghiệp) Thiết kế và thi công hệ thống thu thập dữ liệu môi trường, hiển thị thông tin trên web và cảnh báo hỏa hoạn qua SMS(Đồ án tốt nghiệp) Thiết kế và thi công hệ thống thu thập dữ liệu môi trường, hiển thị thông tin trên web và cảnh báo hỏa hoạn qua SMS(Đồ án tốt nghiệp) Thiết kế và thi công hệ thống thu thập dữ liệu môi trường, hiển thị thông tin trên web và cảnh báo hỏa hoạn qua SMS(Đồ án tốt nghiệp) Thiết kế và thi công hệ thống thu thập dữ liệu môi trường, hiển thị thông tin trên web và cảnh báo hỏa hoạn qua SMS(Đồ án tốt nghiệp) Thiết kế và thi công hệ thống thu thập dữ liệu môi trường, hiển thị thông tin trên web và cảnh báo hỏa hoạn qua SMS(Đồ án tốt nghiệp) Thiết kế và thi công hệ thống thu thập dữ liệu môi trường, hiển thị thông tin trên web và cảnh báo hỏa hoạn qua SMS(Đồ án tốt nghiệp) Thiết kế và thi công hệ thống thu thập dữ liệu môi trường, hiển thị thông tin trên web và cảnh báo hỏa hoạn qua SMS(Đồ án tốt nghiệp) Thiết kế và thi công hệ thống thu thập dữ liệu môi trường, hiển thị thông tin trên web và cảnh báo hỏa hoạn qua SMS(Đồ án tốt nghiệp) Thiết kế và thi công hệ thống thu thập dữ liệu môi trường, hiển thị thông tin trên web và cảnh báo hỏa hoạn qua SMS(Đồ án tốt nghiệp) Thiết kế và thi công hệ thống thu thập dữ liệu môi trường, hiển thị thông tin trên web và cảnh báo hỏa hoạn qua SMS(Đồ án tốt nghiệp) Thiết kế và thi công hệ thống thu thập dữ liệu môi trường, hiển thị thông tin trên web và cảnh báo hỏa hoạn qua SMS(Đồ án tốt nghiệp) Thiết kế và thi công hệ thống thu thập dữ liệu môi trường, hiển thị thông tin trên web và cảnh báo hỏa hoạn qua SMS(Đồ án tốt nghiệp) Thiết kế và thi công hệ thống thu thập dữ liệu môi trường, hiển thị thông tin trên web và cảnh báo hỏa hoạn qua SMS(Đồ án tốt nghiệp) Thiết kế và thi công hệ thống thu thập dữ liệu môi trường, hiển thị thông tin trên web và cảnh báo hỏa hoạn qua SMS(Đồ án tốt nghiệp) Thiết kế và thi công hệ thống thu thập dữ liệu môi trường, hiển thị thông tin trên web và cảnh báo hỏa hoạn qua SMS(Đồ án tốt nghiệp) Thiết kế và thi công hệ thống thu thập dữ liệu môi trường, hiển thị thông tin trên web và cảnh báo hỏa hoạn qua SMS
BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH - ĐỒ ÁN TỐT NGHIỆP NGÀNH KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG ĐỀ TÀI: Thiết kế thi công hệ thống thu thập liệu môi trường, hiển thị thông tin web cảnh báo hỏa hoạn qua SMS GVHD: ThS Võ Đức Dũng SVTH: Lâm Đường Nguyên Nguyễn Quốc Trọng Nhân Tp Hồ Chí Minh – 8/2020 15141224 15141228 LỜI CAM ĐOAN Nhóm sinh viên – Lâm Đường Nguyên và Nguyễn Quốc Trọng Nhân xin cam đoan là đồ án nhóm tự thực dưới sự hướng dẫn thầy Võ Đức Dũng Nhóm chỉ tham khảo các tài liệu trước đó và các nghiên cứu mạng online Kết quả công bố khóa luận tốt nghiệp là trung thực không chép từ tài liệu hay công trình có trước đó Tp.HCM, ngày tháng 08 năm 2020 SV thực đồ án ( Ký và ghi rõ họ tên) Lâm Đường Nguyên Nguyễn Quốc Trọng Nhân v LỜI CẢM ƠN Nhóm thực đồ án xin được gửi lời cảm ơn đặc biệt đến giảng viên hướng dẫn thầy Võ Đức Dũng vì giúp đỡ nhóm quá trình thực đồ án, người đưa hướng nghiên cứu, giải đáp thắc mắc, tận tình quan sát nhóm làm việc Trong quá trình thực nhóm tiếp thu được những kiến thức thực tế và cách làm việc nghiêm túc, hiệu quả từ thầy Nhóm em xin gửi lời tri ân thành nhất đến các quý thầy cô khoa Điện điện tử hỗ trợ chúng em về những kiến thức nền tảng vững vàng, tạo điều kiện tốt nhất cho sinh viên quá trình học tập và nghiên cứu Sự hỗ trợ thầm lặng và vô quan trọng từ gia đình và bạn bè là động lực để nhóm có thể làm việc hết khả và hoàn thành đồ án một cách tốt nhất Một lần nữa nhóm vô hân hạnh được làm sinh viên trường ĐH Sư Phạm Kỹ Thuật TPHCM, là học trò những giảng viên đầy tâm huyết, lời cảm ơn này là sự ghi nhận sâu sắc mà nhóm muốn gửi đến thầy cô, gia đình và bạn bè vi MỤC LỤC NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP i LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP iii LỜI CAM ĐOAN v LỜI CẢM ƠN vi MỤC LỤC vii LIỆT KÊ HÌNH VẼ ix DANH SÁCH BẢN VẼ xi TÓM TẮT xii Chương TỔNG QUAN 1.1 ĐẶT VẤN ĐỀ 1.2 MỤC TIÊU 1.3 NỘI DUNG NGHIÊN CỨU 1.4 GIỚI HẠN 1.5 BỐ CỤC Chương CƠ SỞ LÝ THUYẾT 2.1 QUY TRÌNH GIÁM SÁT CỦA HỆ THỐNG 2.2 GIỚI THIỆU PHẦN CỨNG 2.2.1 Khối cảm biến 2.2.2 Khối vi điều khiển 2.2.3 Khối hiển thị 10 2.2.4 Mạch chuyển đổi I2C cho LCD 12 2.2.5 Khối nhận tín hiệu 13 2.2.6 Module Sim 800L 15 2.2.7 Module L298 17 2.2.8 Mạch thu phát RF NRF24L01+ 18 2.2.9 Khối nguồn 19 2.3 CÁC CHUẨN TRUYỀN DỮ LIỆU 20 2.3.1 Giao tiếp SPI 20 2.3.2 Giao tiếp UART 21 2.3.3 Giao tiếp I2C 22 Chương TÍNH TỐN VÀ THIẾT KẾ 27 vii 3.1 GIỚI THIỆU 27 3.2 TÍNH TỐN VÀ THIẾT KẾ HỆ THỐNG 28 3.2.1 Thiết kế sơ đồ khối hệ thống 28 3.2.2 Tính toán và thiết kế mạch 32 Chương THI CÔNG HỆ THỐNG 48 4.1 GIỚI THIỆU 48 4.2 THI CÔNG HỆ THỐNG 48 4.2.1 Thi công khối thu thập dữ liệu 48 4.2.2 Khối xử lý trung tâm 51 4.3 ĐÓNG GÓI VÀ THI CƠNG MƠ HÌNH 54 4.3.1 Thi công hộp bảo vệ mạch 54 4.3.2 Thi công mô hình 55 4.4 LẬP TRÌNH HỆ THỐNG 55 4.4.1 Lưu đồ giải thuật 55 4.4.2 Phần mềm lập trình cho vi điều khiển 60 4.5 TÀI LIỆU HƯỚNG DẪN SỬ DỤNG VÀ THAO TÁC 68 Chương KẾT QUẢ THỰC HIỆN, ĐÁNH GIÁ HỆ THỐNG 70 5.1 KẾT QUẢ THỰC HIỆN 70 5.2 ĐÁNH GIÁ HOẠT ĐỘNG CỦA HỆ THỐNG 84 Chương KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 85 6.1 KẾT LUẬN 85 6.2 HƯỚNG PHÁT TRIỂN ĐỀ TÀI 85 TÀI LIỆU THAM KHẢO 86 Trích dẫn 86 Tài liệu tham khảo 86 Trang web tham khảo 86 PHỤ LỤC 87 Code điều khiển NodeMCU ESP8266 87 Code điều khiển Arduino thu thập dữ liệu 90 Code điều khiển Arduino xử lý trung tâm 95 viii LIỆT KÊ HÌNH VẼ Hình 2-1: Hình ảnh thực tế module cảm biến khí Gas MQ-2 Hình 2-2: Module cảm biến phát lửa Hình 2-3: Cảm biến DHT22 Hình 2-4: Quang trở Hình 2-5:Sơ đồ chân Arduino Nano 10 Hình 2-6: Hình ảnh LCD 16x2 10 Hình 2-7: Module I2C chuyển đổi LCD 12 Hình 2-8: Module ESP8266 NodeMCU Lua CP2102 13 Hình 2-9: Sơ đồ chân Module ESP8266 NodeMCU Lua CP2102 14 Hình 2-10: Module SIM 800L 15 Hình 2-11: Module L298 17 Hình 2-12: Mạch Thu Phát RF NRF24L01+ 18 Hình 2-13: Sơ đồ chân Mạch Thu Phát RF NRF24L01+ 19 Hình 2-14: Kết nối thiết bị với Arduino theo chuẩn giao tiếp SPI 20 Hình 2-15: Cấu trúc một Frame dữ liệu 21 Hình 2-16: Bus I2C và các thiết bị ngoại vi 23 Hình 2-17: Kết nối thiết bị vào bus I2C chế độ chuẩn và chế độ nhanh 23 Hình 2-18: Hướng xung Clock và hướng đường dữ liệu 24 Hình 2-19: Trình tự truyền bit 24 Hình 2-20: Start bit và Stop bit 25 Hình 3-1: Sơ đồ khối thu thập dữ liệu 28 Hình 3-2: Sơ đồ khối thu thập dữ liệu thực tế 29 Hình 3-3: Sơ đồ khối xử lý trung tâm 30 Hình 3-4: Sơ đồ khối xử lý trung tâm thực tế 31 Hình 3-5: Sơ đồ nguyên lý khối cảm biến 33 Hình 3-6: sơ đồ khối khối nguồn 34 Hình 3-7: Adapter 12v/3A 34 Hình 3-8: Module hạ áp LM2596 35 Hình 3-9: sơ đồ chân NRF24L01 35 Hình 3-10: Sơ đồ nguyên lý khối thu thập dữ liệu giao tiếp với NRF24L01 36 Hình 3-11: Sơ đồ nguyên lý khối xử lý trung tâm giao tiếp với NRF24L01 36 Hình 3-12:Chi tiết các chân L298 37 Hình 3-13: sơ đồ nguyên lý kết nối với L298 38 Hình 3-14: Các chân LCD 39 Hình 3-15:Module I2C chuyển đổi LCD 39 Hình 3-16: Sơ đồ nguyên lý khối giao tiếp với LCD 40 Hình 3-17: Sơ đồ chân Esp8266 41 Hình 3-18: Sơ đồ nguyên lý khối giao tiếp với Esp8266 41 Hình 3-19: Sơ đồ chân module Sim 800L 42 Hình 3-20: sơ đồ nguyên lý khối giao tiếp với module sim 43 Hình 3-21: Sơ đồ nguyên lý khối thu thập dữ liệu 45 Hình 3-22: Sơ đồ khối xử lý trung tâm 47 Hình 4-1: PCB mặt sau khối thu thập 48 Hình 4-2: PCB mặt trước khối thu thập 49 ix Hình 4-3: Khối thu thập sau lắp linh kiện 50 Hình 4-4: PCB mặt sau khối trung tâm 51 Hình 4-5: PCB mặt trước khối trung tâm 52 Hình 4-6: Khối trung tâm sau kết nối linh kiện 53 Hình 4-7: Hình ảnh hệ thống sau hoàn thiện hộp bảo vệ 54 Hình 4-8: Hình ảnh mô hình đề tài 55 Hình 4-9: Lưu đồ khối thu thập dữ liệu 56 Hình 4-10: Lưu đồ truyền dữ liệu qua Module NRF24L01 57 Hình 4-11: Lưu đồ chương trình truyền dữ liệu UART sang NodeMCU 57 Hình 4-12: Lưu đồ NodeMCU 58 Hình 4-13: Lưu đồ khối xử lý trung tâm 59 Hình 4-14: Giao diện Arduino IDE 60 Hình 4-15: Chọn Arduino sử dụng 61 Hình 4-16: Chọn cổng COM kết nối với Arduino 62 Hình 4-17: Trình duyệt truy cập vào ThingSpeak 64 Hình 4-18: Giao diện ban đầu Thingspeak 64 Hình 4-19: Giao diện khởi tạo tài khoản ThingSpeaks 65 Hình 4-20: Giao diện cài đặt một số thông số Web 65 Hình 4-21: Giao diện điểm thể giá trị cảm biến đo được các khoảng thời gian khác ThingSpeaks 66 Hình 4-22: Thông tin cảm biến muốn hiển thị lên Server Web 67 Hình 4-23: Giáo sát bằng giao diện đồng hồ Thingspeaks 67 Hình 4-24: Thông tin quang trở với giao diện đồng hồ 68 Hình 4-25: Quy trình thao tác sử dụng hệ thống 69 Hình 5-1: Hình ảnh thực tế mặt trước mô hình 71 Hình 5-2: LCD hiển thị dữ liệu môi trường 71 Hình 5-3: Mạch phát dữ liệu môi trường và gửi dữ liệu lên thinkspeak 72 Hình 5-4: Mạch nhận dữ liệu môi trường và xử lý có hỏa hoạn 73 Hình 5-5: Hình ảnh kết quả so một thời điểm 74 Hình 5-6: Hình ảnh test sự cố hỏa hoạn 75 Hình 5-7: LCD có sự cố hỏa hoạn 75 Hình 5-8: Hình ảnh test sự cố rò rỉ khí gas 76 Hình 5-9: LCD có sự cố rò rỉ khí gas 76 Hình 5-10: Hình ảnh hệ thống gửi cảnh báo đến người dùng 77 Hình 5-11: Hình ảnh giao diện web biểu diễn nhiệt độ dạng máy đo 78 Hình 5-12: Hình ảnh giao diện web biểu diễn nhiệt độ dạng biểu đồ 78 Hình 5-13: Hình ảnh giao diện web biểu diễn độ ẩm dạng máy đo 79 Hình 5-14: Hình ảnh giao diện web biểu diễn độ ẩm dạng biểu đồ 79 Hình 5-15: Hình ảnh giao diện web biểu diễn khí gas dạng máy đo 80 Hình 5-16: Hình ảnh giao diện web biểu diễn khí gas dạng biểu đờ 80 Hình 5-17: Hình ảnh giao diện web biểu diễn trạng thái lửa dạng máy đo 81 Hình 5-18: Hình ảnh giao diện web biểu diễn trạng thái lửa dạng biểu đồ 81 Hình 5-19: Hình ảnh giao diện web biểu diễn ánh sáng dạng máy đo 82 Hình 5-20: Hình ảnh giao diện web biểu diễn ánh sáng dạng biểu đồ 82 Hình 5-21: Các trường hiển thị giá trị các cảm biến thời điểm 83 x DANH SÁCH BẢN VẼ Bảng 2-1: Thơng số kỹ thuật cảm biến khí gas MQ-2 Bảng 2-2: Thông số kỹ thuật DHT22 Bảng 2-3: Chức các chân LCD 16x2 11 Bảng 3-1: Danh sách linh kiện sử dụng nguồn 5V 44 Bảng 3-2: Danh sách linh kiện sử dụng nguồn 3.3V 44 Bảng 3-3: Danh sách linh kiện khối xử lý trung tâm 46 Bảng 4-1: Bảng thống kê linh kiện sử dụng cho khối thu dữ liệu 50 Bảng 4-2: Bảng thống kê linh kiện sử dụng cho khối trung tâm 52 Bảng 5-1: Bảng so sánh giá trị thu được so với nhiệt ẩm kế FY-11 74 xi TÓM TẮT Ngày nay, sự phát triển khoa học kỹ thuật làm cho đời sống người ngày càng được nâng cao Khi mức sống người được nâng cao thì đòi hỏi môi trường sống người cần được cải thiện nhiều Sống một xã hội mà các chỉ số môi trường an toàn với sức khỏe người là mục tiêu hướng tới cợng đờng Chính vì lẽ đó người cần phải biết được các chỉ số môi trường sống để từ đó có các biện pháp phòng tránh và cải thiện nó Hiện với sự phát triển mạnh mẽ IoT (Internet of Things) và giám sát dữ liệu được mở rộng thông qua web và các thiết bị được kết nối Internet Từ đó tạo được sự thuận tiện và đại cuộc sống người Nội dung đề tài là áp dụng những kiến thức điện tử học để thiết kế mạch đo các chỉ số môi trường Mạch gồm các cảm biến nhiệt độ, độ ẩm, cường độ ánh sáng, lửa, gas giao tiếp với bộ điều khiển trung tâm là Aduino Nano Không chỉ hiển thị các dữ liệu thông qua LCD 16x2, mạch còn giám sát dữ liệu qua Web nhờ module ESP8266 và báo động nhờ module Sim800L.Bên cạnh đó mạch còn có hệ thống phòng cháy và rò rỉ khí gas thơng qua máy bơm và quạt Mơ hình được thiết kế dạng hình khối chứa đựng tất cả mạch và cảm biến sử dụng Số liệu hiển thị trên LCD và Web trực quan, dễ nhìn Người dùng có thể dựa vào những dữ liệu đó để có các quyết định và biện pháp phòng tránh hiệu quả xii CHƯƠNG 1: TỔNG QUAN Chương TỔNG QUAN 1.1 ĐẶT VẤN ĐỀ Theo số liệu thống kê tháng đầu năm 2020, địa bàn cả nước xảy 1490 vụ cháy, nổ, làm 48 người chết và 111 người bị thương, thiệt hại ước tính gần 336,65 tỷ đồng [1] Số liệu là một số đáng báo động về tình trạng phòng chống cháy nổ nhân dân chưa có đủ thiết bị an toàn để phòng chống hỏa hoạn Trong đó yếu tố môi trường ảnh hưởng rất lớn, vì thế với mục đích kiểm soát chỉ số mơi trường phòng ngừa nguy cháy nổ nhóm chúng em quyết định thực đề tài “Thiết kế thi công hệ thống thu thập liệu môi trường, hiển thị thông tin web cảnh báo hỏa hoạn qua SMS” Dựa thực tế là chỉ có những thiết bị phòng cháy đơn giản là đầu báo cháy, đầu báo khói, đầu báo xì gas, hay các bình chữa cháy di động vẫn chỉ giải quyết được phần nào tượng cháy nổ và chưa hiệu quả Vấn đề đặt là cần một hệ thống có thể thu thập dữ liệu môi trường hiển thị lên website, cảnh báo cho người dùng có hỏa hoạn, rò rỉ khí gas và người dùng có thể giám sát trực tiếp số liệu internet thông qua laptop là smart phone Nhóm em vận dụng các kiến thức được học trường [2] khảo sát thực tế để có thể hoàn thành được hệ thống Hệ thống thu thập dữ liệu môi trường, hiển thị thông tin web và cảnh báo hỏa hoạn qua SMS dựa nền tảng kiến thức về lĩnh vực điện tử, xã hội và môi trường Nhóm phát triển hệ thống dựa đồ án môn học trước là hệ thống báo quá nhiệt độ qua SMS Hệ thống sẽ được cải tiến thêm về khả phát lửa, báo cháy, rò rỉ khí gas, có sở dữ liệu trực tuyến cho người dung 1.2 MỤC TIÊU Thiết kế và thi công hệ thống thu thập dữ liệu môi trường, hiển thị thông tin web và cảnh báo hỏa hoạn qua SMS để giúp người dùng hạn chế tượng cháy nổ, rò rỉ khí gas, đảm bảo an toàn về tính mạng tài sản Sử dụng được vi điều khiển Arduino Nano, module NodeMCU8266, các loại cảm biến, BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Chương KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 6.1 KẾT LUẬN Thiết kế và thi công được “Hệ thống thu thập liệu môi trường, hiển thị thông tin web cảnh báo hỏa hoạn qua SMS” với mục đích giám sát dữ liệu môi trường và cảnh báo hỏa hoạn để hạn chế sự tổn thất về người và tài sản Bổ sung thêm kiến thức quá trình thực đề tài, khả làm việc nhóm được cải thiện Hệ thống hoạt động tương đối ổn định So với mục tiêu ban đầu đặt ra, nhóm hoàn thành được 95% ❖ Ưu điểm của hệ thống Giải quyết được các vấn đề đặt đề tài - Hệ thống tiêu thụ điện - Dễ quan sát, dễ sử dụng - Chi không quá cao - Phát được nguy hỏa hoạn nhanh chóng ❖ Nhược điểm của hệ thống - Khoảng cách truyền nhận không xa - Tốc độ gửi lên web phụ thuộc vào tốc độ mạng - Mạch không có nguồn dự phòng 6.2 HƯỚNG PHÁT TRIỂN ĐỀ TÀI Hệ thống cần được chỉnh sửa để hoàn chỉnh hơn, dưới là những vấn đề nhóm đề nhằm hoàn thiện và để hệ thống gần với thực tế: - Lắp thêm camera giám sát để bảo vệ an ninh - Sử dụng module thu phát sóng RF có ăng ten tăng đợ xác trùn xa (Module thu phát sóng RF CC2530) - Thêm cảm biến để thu thập thêm dữ liệu từ môi trường - Thiết kế web tự tạo để có giao diện mới - Thêm tính tiện nghi điều khiển thiết bị từ xa BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 85 TÀI LIỆU THAM KHẢO TÀI LIỆU THAM KHẢO Trích dẫn [1] http://thoibaotaichinhvietnam.vn/ Tài liệu tham khảo [2] Nguyễn Đình Phú, Giáo Trình: Vi Xử Lý, Xuất bản ĐH Quốc Gia, Tp.HCM, 2016 [3] Trần Thu Hà, Giáo trình Điện tử bản, Đại học SPKT Tp.HCM 2013 [4] Phạm Quang Huy, Nguyễn Cảnh Trung, Lập Trình Điều Khiển Với Arduino, NXB Khoa Học và Kỹ Thuật [5] Trương Đình Nhơn, Phạm Quang Huy, Hướng Dẫn Sử Dụng Arduino, NXB Đại Học Quốc Gia TPHCM [6] Phạm Minh Tuấn “Internet of Things (IoT) cho người mới bắt đầu”, tên Web IoTMAKER, 2017 [7] Trần Xuân Thức - Trần Văn Trí, “Thiết kế và thi cơng hệ thống giám giám sát chỉ số môi trường và hiển thị thông tin Web”, đồ án tốt nghiệp, Trường Đại Học Sư Phạm Kỹ Thuật, 2019 [8] Trần Minh Tâm – Đỗ Thị Huệ, “Thiết kế và thi công hệ thống cảnh báo, phòng chống hỏa hoạn và rò rỉ khí gas”, đồ án tốt nghiệp, Trường Đại Học Sư Phạm Kỹ Thuật, 2019 Trang web tham khảo [9] www.alldatasheet.com [10] http://www.datasheetcatalog.com/ [11] arduino.vn BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 86 PHỤ LỤC PHỤ LỤC Code điều khiển NodeMCU ESP8266 #include "ThingSpeak.h" #include "secrets.h" #include #include "SoftwareSerial.h" SoftwareSerial mySerial(D3, D4); //Rx-Tx char ssid[] = "Nguyen";// your network SSID (name) char pass[] = "12345678";// your network password int keyIndex = 0;// your network key Index number (needed only for WEP) WiFiClient client; int qt= A0;// quang tro anh sang int gtqt; unsigned long myChannelNumber = 1067306; const char * myWriteAPIKey = "663GWDP3BGIV74H3"; String s; String chuoi[] = ""; String a, b, c, d, e, f, g, h, i, j, k, l, m; int a1, b1, c1, d1, e1, f1, g1, h1, i1, r1, k1, l1, m1; long int timer1; void setup() { // put your setup code here, to run once: Serial.begin(115200); mySerial.begin(115200); WiFi.mode(WIFI_STA); ThingSpeak.begin(client); timer1 = 0; } void loop() { // put your main code here, to run repeatedly: if(WiFi.status() != WL_CONNECTED){ Serial.print("Attempting to connect to SSID: "); Serial.println(SECRET_SSID); while(WiFi.status() != WL_CONNECTED){ WiFi.begin(ssid, pass); Serial.print("."); delay(5000); } Serial.println("\nConnected."); } int analogValue = analogRead(qt); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 87 PHỤ LỤC float millivolts = (analogValue/1023.0) * 5000; //5000 is the voltage provided by NodeMCU // bo adc la 10 bit => 2^10 = 1024-1 =1023 gtqt = 100-(millivolts/50);// adc doc ve - 5000 => % adc/50 =% while (mySerial.available() > 0) { char recieved = mySerial.read(); s += recieved; if (recieved == '\n') { //Serial.print("Arduino Received: ") chuoi[0] = s; a = s.charAt(0);//temp b = s.charAt(1);//temp c = s.charAt(2);//temp d = s.charAt(3);//temp e = s.charAt(4);//humi f = s.charAt(5);//humi g = s.charAt(6);//humi h = s.charAt(7);//humi i = s.charAt(8);//gas j = s.charAt(9);//gas k = s.charAt(10);//gas l = s.charAt(11);//gas m = s.charAt(12);//fire a1 = a.toInt();//temp b1 = b.toInt();//temp c1 = c.toInt();//temp d1 = d.toInt();//temp e1 = e.toInt();//humi f1 = f.toInt();//humi g1 = g.toInt();//humi h1 = h.toInt();//humi i1 = i.toInt();//gas r1 = j.toInt();//gas k1 = k.toInt();//gas l1 = l.toInt();//gas m1 = m.toInt();//fire //mode = s.toInt(); Serial.println(s); s = ""; // Clear recieved buffer } } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 88 PHỤ LỤC if (millis() - timer1 > 20000) { float temp = a1 * 10 + b1 + c1 * 0.1 + d1 * 0.01; float humi = e1 * 10 + f1 + g1 * 0.1 + h1 * 0.01; int gas = i1 * 1000 + r1 *100 + k1 * 10 + l1; int fire = not(m1); Serial.print("T:"); Serial.println(temp); Serial.print("H:"); Serial.println(humi); Serial.print("Gas:"); Serial.println(gas); Serial.print("Fire:"); Serial.println(fire); ThingSpeak.setField(1, temp); ThingSpeak.setField(2, humi); ThingSpeak.setField(3, gas); ThingSpeak.setField(4, fire); ThingSpeak.setField(5, gtqt); int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey); if(x == 200){ Serial.println("Channel update successful."); } else { // loi 404 tren web Serial.println("Problem updating channel HTTP error code " + String(x)); } timer1 = millis(); } } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 89 PHỤ LỤC Code điều khiển Arduino thu thập liệu #include "DHT.h" #include #include #include #include #include RF24 radio(7, 8); // CE, CSN const byte address[6] = "00001"; int DHTPIN = A1; // what digital pin we're connected to D4 #define DHTTYPE DHT22 // DHT 22 int a; int smokeA0 = A0; int flameD3 = 3; long int timer1; // Your threshold value int sensorThres = 500;// 400 float h, t; DHT dht(DHTPIN, DHTTYPE); String s,s1; String t_send, h_send, g_send, f_send, send_all; const int numReadings = 10; LiquidCrystal_I2C lcd(0x27,20,4); int readings[numReadings];// the readings from the analog input int readIndex = 0;// the index of the current reading int total = 0;// the running total int average = 0;// the average int flame_value; void uart_send() { send_all = ""; t_send = ""; h_send = ""; g_send = ""; f_send = ""; int temperature = 0; int huminity = 0; int gas = 0; int fire = 0; temperature = t * 100; huminity = h * 100; gas = average; fire = flame_value; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 90 PHỤ LỤC if(temperature < 10) { String trans = "000"; String a = String(temperature); t_send += trans; t_send += a; } else if(temperature >=10 && temperature < 100) { String trans = "00"; String a = String(temperature); t_send += trans; t_send += a; } else if(temperature >=100 && temperature < 1000) { String trans = "0"; String a = String(temperature); t_send += trans; t_send += a; } else { //String trans = "0"; String a = String(temperature); t_send += a; } if(huminity < 10) { String trans = "000"; String a = String(huminity); h_send += trans; h_send += a; } else if(huminity >=10 && huminity < 100) { String trans = "00"; String a = String(huminity); h_send += trans; h_send += a; } else if(huminity >=100 && huminity < 1000) { BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 91 PHỤ LỤC String trans = "0"; String a = String(huminity); h_send += trans; h_send += a; } else { //String trans = "0"; String a = String(huminity); h_send += a; } if(gas < 10) { String trans = "000"; String a = String(gas); g_send += trans; g_send += a; } else if(gas >=10 && gas < 100) { String trans = "00"; String a = String(gas); g_send += trans; g_send += a; } else if(gas >=100 && gas < 1000) { String trans = "0"; String a = String(gas); g_send += trans; g_send += a; } else { String a = String(gas); g_send += a; } String b = String(fire); f_send += b; send_all += t_send; send_all += h_send; send_all += g_send; send_all += f_send; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 92 PHỤ LỤC Serial.println(send_all); } void setup() { pinMode(smokeA0, INPUT); pinMode(flameD3, INPUT); dht.begin(); Serial.begin(115200); radio.begin(); radio.openWritingPipe(address); radio.setPALevel(RF24_PA_MIN); radio.stopListening(); // truyen du lieu for (int thisReading = 0; thisReading < numReadings; thisReading++) { readings[thisReading] = 0; } while (!Serial) delay(50); lcd.init(); lcd.backlight(); s = "O"; s1 = "O"; timer1 = 0; } void loop() { h = dht.readHumidity(); t = dht.readTemperature(); int H=h*100; int T=t*100; lcd.setCursor(0,0); lcd.print("T="); lcd.print(T/1000); lcd.print((T%1000)/100); lcd.print(","); lcd.print(((T%1000)%100)/10); lcd.print(T%10); lcd.write(0xDF); lcd.print("C"); lcd.setCursor(0,1); lcd.print("H="); lcd.print(H/1000); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 93 PHỤ LỤC lcd.print((H%1000)/100); lcd.print(","); lcd.print(((H%1000)%100)/10); lcd.print(H%10); lcd.print("%"); lcd.setCursor(11,0); lcd.print("GAS:"); lcd.print(s); lcd.setCursor(10,1); lcd.print("FIRE:"); lcd.print(s1); total = total - readings[readIndex]; // read from the sensor: readings[readIndex] = analogRead(smokeA0); // add the reading to the total: total = total + readings[readIndex]; // advance to the next position in the array: readIndex = readIndex + 1; // if we're at the end of the array if (readIndex >= numReadings) { // wrap around to the beginning: readIndex = 0; } average = total / numReadings; if (average > sensorThres) { s = "X"; } else { s = "O"; } flame_value = digitalRead(flameD3); if(flame_value == 1) { s1 = "O"; } else { s1 = "X"; } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 94 PHỤ LỤC if(millis() - timer1 > 500) { uart_send(); int str_len = send_all.length() + 1; const char text[str_len]; send_all.toCharArray(text, str_len); radio.write(&text, sizeof(text)); timer1 = millis(); } } Code điều khiển Arduino xử lý trung tâm #define bump // connect to pin D2 #define fan // connect to pin D3 #include #include #include #include #include #include SoftwareSerial mySerial(2, 3); RF24 radio(7, 8); // CE, CSN const byte address[6] = "00001"; String s1; String chuoi[] = ""; String a, b, c, d, e, f, g, h, i, j, k, l, m; int a1, b1, c1, d1, e1, f1, g1, h1, i1, r1, k1, l1, m1; int sensorThres = 500; String SDT="0393051508"; void updateSerial() { delay(100); while (Serial.available()) { mySerial.write(Serial.read());//Forward what Serial received to Software Serial Port } while(mySerial.available()) { Serial.write(mySerial.read());//Forward what Software Serial received to Serial Port } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 95 PHỤ LỤC } void at(String _atcm,unsigned long _dl) { mySerial.print(_atcm+"\r\n"); delay(_dl); } void revice() { if (radio.available()) { char text[32] = ""; radio.read(&text, sizeof(text)); String s(text); s1 += s; chuoi[0] = s1; a = s1.charAt(0);//temp b = s1.charAt(1);//temp c = s1.charAt(2);//temp d = s1.charAt(3);//temp e = s1.charAt(4);//humi f = s1.charAt(5);//humi g = s1.charAt(6);//humi h = s1.charAt(7);//humi i = s1.charAt(8);//gas j = s1.charAt(9);//gas k = s1.charAt(10);//gas l = s1.charAt(11);//gas m = s1.charAt(12);//fire a1 = a.toInt();//temp b1 = b.toInt();//temp c1 = c.toInt();//temp d1 = d.toInt();//temp e1 = e.toInt();//humi f1 = f.toInt();//humi g1 = g.toInt();//humi h1 = h.toInt();//humi i1 = i.toInt();//gas r1 = j.toInt();//gas k1 = k.toInt();//gas l1 = l.toInt();//gas m1 = m.toInt();//fire BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 96 PHỤ LỤC s1 = ""; } } void send_sms() { mySerial.println("AT+CMGF=1"); //To send SMS in Text Mode delay(50); mySerial.println("AT+CMGS=\"+84393051508\"\r"); // change to the phone number you using delay(50); mySerial.println("Co gas phong cua ban"); //the content of the message delay(50); mySerial.println((char)26); //the stopping character delay(50); } void setup() { Serial.begin(9600); radio.begin(); radio.openReadingPipe(0, address); radio.setPALevel(RF24_PA_MIN); radio.startListening(); mySerial.begin(9600); pinMode(bump, OUTPUT); pinMode(fan, OUTPUT); Serial.println("Initializing "); delay(500); s1 = ""; at("AT",1000); } void loop() { updateSerial(); revice(); delay(50); int gas = i1 * 1000 + r1 *100 + k1 * 10 + l1; int fire = m1; if (gas > sensorThres) { digitalWrite(fan, HIGH); send_sms(); delay(10); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 97 PHỤ LỤC } else { digitalWrite(fan, LOW); delay(10); } if(fire == 0) { at("ATD"+SDT+";",500); digitalWrite(bump, HIGH); delay(10); } else { digitalWrite(bump, LOW); delay(10); } } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 98 S K L 0 ... TỬ CÔNG NGHIỆP – Y SINH CHƯƠNG 1: TỔNG QUAN 1.3 NỘI DUNG NGHIÊN CỨU Đối với đồ án: ? ?Thi? ??t kế thi công hệ thống thu thập liệu môi trường, hiển thị thông tin web cảnh báo hỏa hoạn qua SMS? ?? thi? ?... NGHIỆP – Y SINH 27 CHƯƠNG 3: TÍNH TỐN VÀ THI? ??T KẾ 3.2 TÍNH TỐN VÀ THI? ??T KẾ HỆ THỐNG 3.2.1 Thi? ??t kế sơ đồ khối hệ thống Hình 3-1: Sơ đồ khối thu thập dữ liệu ❖ Chức khối • Khối xử lý : nhận... vi điều khiển • Nội dung 6: Thi? ?́t kế và thi công hệ thống thu thập dữ liệu môi trường, hiển thi? ? thông tin web và cảnh báo hỏa hoạn qua SMS • Nội dung 7: Lắp gáp các khối vào mô