(Đồ án hcmute) hệ thống điều khiển giám sát và thu thập dữ liệu chất lượng nước ứng dụng công nghệ iots

94 5 0
(Đồ án hcmute) hệ thống điều khiển giám sát và thu thập dữ liệu chất lượng nước ứng dụng công nghệ iots

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM KHOA ĐÀO TẠO CHẤT LƯỢNG CAO NGÀNH CNKT MÁY TÍNH ĐỒ ÁN TỐT NGHIỆP ĐỀ TÀI: HỆ THỐNG ĐIỀU KHIỂN GIÁM SÁT VÀ THU THẬP DỮ LIỆU CHẤT LƯỢNG NƯỚC ỨNG DỤNG CÔNG NGHỆ IoTs GVHD SVTH MSSV SVTH MSSV Khố : ThS NGUYỄN NGƠ LÂM : MAI QUỐC THÁI : 13119137 : VŨ ĐÌNH TỒN : 13119151 : 2013-2017 SKL 0 8 Tp Hồ Chí Minh, tháng 07/2017 an BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNG ĐẠI HỌC SƢ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH KHOA ĐÀO TẠO CHẤT LƢỢNG CAO - ĐỒ ÁN TỐT NGHIỆP Đề tài: HỆ THỐNG ĐIỀU KHIỂN GIÁM SÁT VÀ THU THẬP DỮ LIỆU CHẤT LƢỢNG NƢỚC ỨNG DỤNG CÔNG NGHỆ IoTs SVTH : MSSV : SVTH : MSSV : Khóa : Ngành : GVHD: MAI QUỐC THÁI 13119137 VŨ ĐÌNH TỒN 13119151 2013 CƠNG NGHỆ KỸ THUẬT MÁY TÍNH ThS NGUYỄN NGƠ LÂM Tp Hồ Chí Minh, tháng năm 2017 an CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc *** Tp Hồ Chí Minh, ngày tháng năm 2017 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Mai Quốc Thái MSSV: 13119137 Vũ Đình Tồn MSSV: 13119151 Ngành: Cơng Nghệ Kỹ Thuật Máy Tính Lớp Giảng viên hƣớng dẫn: ThS Nguyễn Ngô Lâm ĐT: 0908434763 Ngày nhâ ̣n đề tài: Ngày nộp đề tài: 11/7/2017 / /2017 : 13119CL2 Tên đề tài: HỆ THỐNG ĐIỀU KHIỂN GIÁM SÁT VÀ THU THẬP DỮ LIỆU CHẤT LƢỢNG NƢỚC ỨNG DỤNG CÔNG NGHỆ IoTs Các số liệu, tài liệu ban đầu: Nội dung thƣ̣c hiê ̣n đề tài : Thiết kế xây dựng hệ thống quan trắc môi trƣờng nƣớc sử dụng nguồn lƣợng mặt trời Giám sát thông số giá trị cảm biến thông qua mạng Internet mạng di động, điều khiển thiết bị ngoại vi nhƣ đèn, motor qua web server trực tiếp phần cứng Sản phẩm: Mơ hình hệ thống lƣợng mặt trời đƣợc giám sát qua mạng Internet mạng di động TRƢỞNG NGÀNH GIẢNG VIÊN HƢỚNG DẪN an CỘNG HÒA XÃ HỘI CHỦNGHĨAVIỆTNAM Độc lập – Tự – Hạnh phúc *** PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƢỚNG DẪN Họ tên Sinh viên: Mai Quốc Thái MSSV: 13119137 Vũ Đình Tồn MSSV: 13119151 Ngành: Cơng Nghệ Kỹ Thuật Máy Tính Tên đề tài: HỆ THỐNG ĐIỀU KHIỂN GIÁM SÁT VÀ THU THẬP DỮ LIỆU CHẤT LƢỢNG NƢỚC ỨNG DỤNG CÔNG NGHỆ IoTs Họ tên Giáo viên hƣớng dẫn: ThS Nguyễn Ngô Lâm NHẬN XÉT Về nội dung đề tài & khối lƣợng thực hiện: Ƣu điểm: Khuyết điểm: Đề nghị cho bảo vệ hay không? Đánh giá loại: Điểm:……………….(Bằng chữ: ) Tp Hồ Chí Minh, ngày tháng năm 2017 Giáo viên hƣớng dẫn an CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc *** PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN Họ tên Sinh viên: Mai Quốc Thái MSSV: 13119137 Vũ Đình Tồn MSSV: 13119151 Ngành: Cơng Nghệ Kỹ Thuật Máy Tính Tên đề tài: HỆ THỐNG ĐIỀU KHIỂN GIÁM SÁT VÀ THU THẬP DỮ LIỆU CHẤT LƢỢNG NƢỚC ỨNG DỤNG CÔNG NGHỆ IoTs Họ tên Giáo viên phản biện: NHẬN XÉT Về nội dung đề tài & khối lƣợng thực hiện: Ƣu điểm: Khuyết điểm: Đề nghị cho bảo vệ hay không? Đánh giá loại: Điểm:……………….(Bằng chữ: ) Tp Hồ Chí Minh, ngày tháng năm 2017 Giáo viên phản biện an LỜI CẢM ƠN Để hồn thành đề tài này, chúng em chân thành cảm ơn quý Thầy, Cô khoa Đào tạo chất lƣợng cao, Trƣờng Đại Học Sƣ Phạm Kỹ Thuật TP Hồ Chí Minh tận tình truyền đạt kiến thức năm chúng em học tập Đặc biệt, chúng em xin chân thành cảm ơn Th ầy Nguyễn Ngơ Lâm đã tâ ̣n tình hƣớng dẫn tạo điều kiện thuận lợi cho chúng em su ốt thời gian thực đồ án môn học Bên cạnh , chúng em cũng xin cảm ơn các anh , chị khóa trƣớc đã nhiê ̣t tình đóng góp ý kiến v chia s ẻ kinh nghiê ̣m để giúp chúng em hoàn thành đ ề tài Cuối cùng, kiến thức hạn hẹp nên khơng tránh khỏi sai sót Chúng em mong nhận đƣợc đóng góp ý kiến quý thầy bạn để hồn thiện Chúng em xin chân thành cảm ơn! i an TĨM TẮT Hiện tƣợng nóng lên Trái Đất vấn đề đầy thử thách cho toàn giới, hệ kéo theo làm cho môi trƣờng nƣớc biển bị ảnh hƣởng nƣớc ta không ngoại lệ, xâm nhập mặn mối lo ngại cho ngƣời nông dân, lẫn quan chức nhà khoa học Xâm nhập mặn gây hậu nặng nề tỉnh miền Tây Việt Nam, nên đời sản phẩm cần thiết ngƣời dùng cần theo dõi thông số môi trƣờng nƣớc để đƣa định việc nuôi trồng tƣới tiêu Hệ thống giám sát liệu mơi trƣờng nƣớc có chức nhƣ thu thập nhiệt độ nƣớc, độ mặn, độ đục, độ pH, để ngƣời dùng theo dõi liên tục môi trƣờng nƣớc, áp dụng vào nuôi trồng thủy sản Hệ thống hƣớng đến môi trƣờng nƣớc biển đƣa cảnh báo kịp thời thông qua chuông báo chỗ, tin nhắn thông qua mạng, ngƣời dùng tra cứu thông số môi trƣờng thông qua mạng để kịp thời xử lý Thông số đƣợc lƣu trữ lại để ngƣời dùng tham khảo có biện pháp theo dõi lâu dài nhằm đƣa phƣơng án nuôi trồng thủy sản thích hợp năm ii an Trang phụ bìa Trang NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP i PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƢỚNG DẪN ii PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN iii LỜI CẢM ƠN i TÓM TẮT ii DANH MỤC CÁC TỪ VIẾT TẮT v DANH MỤC CÁC BẢNG BIỂU vii DANH MỤC CÁC BIỂU ĐỒ VÀ HÌNH ẢNH vii Chƣơng 1: TỔNG QUAN 1.1 GIỚI THIỆU TÌNH HÌNH NGHIÊN CỨU HIỆN NAY 1.1.1 Đặt vấn đề 1.1.2 Tính cấp thiết đề tài 1.2 MỤC TIÊU NGHIÊN CỨU 1.3 ĐỐI TƢỢNG VÀ PHẠM VI NGHIÊN CỨU 1.4 PHƢƠNG PHÁP NGHIÊN CỨU 1.5 BỐ CỤC ĐỒ ÁN Chƣơng 2: CƠ SỞ LÝ THUYẾT .4 2.1 KIT INTEL GALILEO 2.1.1 Giới thiệu kit galileo 2.1.2 Cấu trúc KIT Galileo 2.1.3 Các tính hỗ trợ 2.1.4 Phƣơng thức lập trình Kit Galileo 2.2 PIN NĂNG LƢỢNG MẶT TRỜI 2.2.1 Giới thiệu pin lƣợng mặt trời 2.2.2 Cấu tạo pin lƣợng mặt trời 10 2.2.3 Nguyên lý hoạt động pin lƣợng mặt trời 11 2.3 PIN LI-ION 18650 12 2.4 LCD HIỂN THỊ 13 2.4.1 Giới thiệu LCD 13 2.4.2 Module IC2 giao tiếp với LCD 17 2.4 NGƠN NGỮ LẬP TRÌNH NODEJS .18 2.4.1 Giới thiệu Nodejs 18 2.4.2 Một số lệnh thƣ viện Nodejs 20 iii an 2.4.3 Nguyên lý xử lý yêu cầu máy chủ 23 2.5 MODULE SIM900A 23 2.5.1 Giới thiệu module SIM900A 23 2.5.2 Đặc điểm kỹ thuật GSM/GPRS SIM900A 24 2.6 NGÔN NGỮ HTML 25 2.6.1 Giới thiệu sơ lƣợc HTML 25 2.6.2 Cấu trúc HTML 25 Chƣơng 3: THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG 27 3.1 YÊU CẦU VÀ SƠ ĐỒ KHỐI HỆ THỐNG .27 3.2 THIẾT KẾ PHẦN CỨNG 28 3.3 THIẾT KẾ PHẦN MỀM .41 3.3.1 Lƣu đồ giải thuật 41 3.3.2 Thiết kế giao diện web giải thích hoạt động 47 Chƣơng 4: KẾT QUẢ PHẦN CỨNG 54 4.1 KẾT QUẢ PHẦN CỨNG 54 4.2 KẾT QUẢ PHẦN MỀM .56 4.2.1 Điều khiển qua mạng di động 56 4.2.2 Điều khiển đƣợc thiết bị qua Web 58 4.2.3 Hiển thị kết với biểu đồ 58 4.2.4 Hiển thị kết với biểu đồ chart 59 4.2.5 Thiết lập giá trị sẵn cho ngƣời dùng 60 4.2.5 Thiết lập giá trị sẵn cho ngƣời dùng 61 Chƣơng 5: KẾT QUẢ VÀ PHẠM VI ỨNG DỤNG 62 5.1 KẾT LUẬN 62 5.2 CÁC PHẠM VI ỨNG DỤNG .62 TÀI LIỆU THAM KHẢO 79 iv an DANH MỤC CÁC TỪ VIẾT TẮT PV Photovoltaic Pin lƣợng mặt trời CSP Concentrating Solar thermal Power Hệ thống tạo lƣợng từ nhiệt năng lƣợng mặt trời SIPV Smart Intergrated Photovoltaic Điện mặt trời nối lƣới SoC System On Chip Hệ thống tích hợp vi mạch MCU Microprocessor Control Unit Khối vi điều khiển IC Integrated Circuit Mạch tích hợp I/O Input/Output Ngõ vào/ngõ PWM Pulse Width Modulation Điều chế độ rộng xung UART Universal Asynchronous Receiver – Transmitter Truyền liệu nối tiếp bất đồng LDR Light-Dependent Resistor Quang trở PPM Pulse Position Modulation Điều chế vị trí xung MPPT Maximum Power Point Tracker Dị tìm điểm cơng suất cực đại P&O Perturbation and Observation Nhiễu loạn quan sát MOSFET Metal Oxide Semiconductor Field Effect Transistor Transistor hiệu ứng trƣờng LCD Liquid Crystal Display Màn hình tinh thể lỏng I2C Inter-Integrated Circuit Vi mạch tích hợp truyền thơng nối tiếp TWI Two Wire Interface Giao tiếp hai dây SDA Serial Data Line Dây truyền liệu SCL Serial Clock Line Dây truyền xung clock NTC Negative Temperature Coefficient Hệ số nhiệt độ âm HTML Hyper Text Markup Language Ngôn ngữ đánh dấu siêu văn v an display.print("Mode Control: MANU"); function displayStatusInputLCD(){ display.setCursor(1,2); display.setCursor(1,3); display.delay(10); display.delay(10); if(inputControlModeState){ if(pinOutWaterPumpState){ display.print("Motor: ON"); display.print("Mode Control: MANU"); } else{ display.setCursor(1,3); display.print("Motor:OFF"); } display.delay(10); if(pinOutWaterPumpState){ display.print("Motor: ON"); display.setCursor(11,3); } display.delay(10); else{ if(pinOutLampState){ display.print("Motor:OFF"); display.print("Lamp: ON"); } } else{ display.setCursor(11,3); display.print("Lamp:OFF"); } display.delay(10); if(pinOutLampState){ } display.print("Lamp: ON"); else{ } display.print("Mode Control: AUTO"); } else{ display.print("Lamp:OFF"); } } 67 an } } else{ if(data.indexOf("*@")!=-1){ display.print("Mode Control: AUTO"); } controlViaSMS(data); sendBackMessage(message,getPhone Num(data)); } } //******************SIM800***** **************** } var val = new Buffer("1A",'hex'); }; var configMessage = function(){ var getPhoneNum = function(data){ u.writeStr("AT+CMGF=1\n"); delay(1000); var stringSMS = data; var positonNum1 = stringSMS.indexOf("\""); u.writeStr("AT+CNMI=2,2,0,0,0\n"); delay(1000); u.writeStr("AT&W\n"); var temStringSMS = stringSMS.substring(positonNum1+1) ; var positonNum2 = temStringSMS.indexOf("\""); delay(1000); }; var processMessage = function(){ if (u.dataAvailable(10)){ var StringNUM = temStringSMS.substring(0,positonNu m2); console.log("StringNUM: "+ StringNUM); data = u.readStr(100); return StringNUM; console.log(data); if(data.indexOf("*#CHECK")!=- }; 1){ function controlViaSMS(data){ sendMessageCheck(getPhoneNum(dat a)); var stringSMS = data; 68 an var positonNum = stringSMS.indexOf("*@"); pinOutLampState = false; } var controlMotorSMS = stringSMS.substr(positonNum+2,1); var controlLampSMS = stringSMS.substr(positonNum+3,1); console.log("controlMotorSMS: "+controlMotorSMS); console.log("controlLampSMS: "+controlLampSMS); } function sendBackMessage(message,toSendNu m){ u.writeStr("AT+CMGS=\""+toSendN um+"\"\n") ; message = ""; delay(1000); if(controlMotorSMS == 1){ message = message + "Turn ON Motor\n"; u.writeStr(message); delay(500); pinOutWaterPumpState = true; } u.write(val); if(controlMotorSMS == 0){ message = message + "Turn OFF Motor\n"; pinOutWaterPumpState = false; } delay(500); } function sendWaringSMS(){ if(WaringSMS == false){ if(controlLampSMS == 1){ message = message + "Turn ON Lamp"; u.writeStr("AT+CMGS=\"090316575 1\"\n") ; delay(1000); pinOutLampState = true; } if(controlLampSMS == 0){ message = message + "Turn OFF Lamp"; u.writeStr("Do man qua cao bat thuong so voi nguong " + valueTopSan.toString()); delay(500); 69 an u.writeStr("oC\n"); u.write(val); delay(500); delay(500); WaringSMS = true; u.writeStr("Do Man cua nuoc: "); } u.writeStr(valueSAN.toString()); } u.writeStr("%o\n"); function sendMessageCheck(toSendNum) { delay(500); u.write(val); u.writeStr("AT+CMGS=\""+toSendN um+"\"\n") ; delay(1000); delay(500); }; var intervalID = setInterval(processMessage, 100) ; // start the periodic writes u.writeStr("Do Duc cua nuoc: "); u.writeStr(valueTUR.toString()); u.writeStr("%\n"); var intervalID1 = setTimeout(configMessage, 200) ; var intervalID2 = setInterval(displayLCD, 5000) ; delay(500); u.writeStr("Nong Do PH cua nuoc: "); u.writeStr(valuePH.toString()); //**********************IO PIN*********** var controlIOPin = function(){ if( inputControlMode.read() ===0 u.writeStr("pH\n"); ){ delay(500); inputControlModeState = true; } u.writeStr("Nhiet Do cua nuoc: "); u.writeStr(valueLM35.toString()); else{ inputControlModeState = false; 70 an } } } //Web control if(inputControlModeState){ if(pinOutWaterPumpState) pinOutWaterPump.write(1); //Manual mode else //Button control pinOutWaterPump.write(0); if(inputControlMotor.read() === 0){ delay(20); if(pinOutAirBlowerState) pinOutAirBlower.write(1); if (inputControlMotor.read() === 0) else pinOutAirBlower.write(0); { pinOutWaterPumpState = !pinOutWaterPumpState; } if(pinOutWaterFilterState) pinOutWaterFilter.write(1); } else // button lamp pinOutWaterFilter.write(0); //Button control if(inputControlLamp.read() === 0){ delay(20); //control Lamp if (inputControlLamp.read() if(pinOutLampState) === 0) { { pinOutLampState = !pinOutLampState; pinOutLamp.write(1); } 71 an else //************Make Warning******************* { pinOutLamp.write(0); var checkWarning = function(){ } var warnString =""; } else{ if( valueLM35 > valueTopTem ){ //Auto mode if(pinOutAirBlowerState) pinOutAirBlower.write(1); warnString = warnString + "Nhiê ̣t đô ̣ cao bấ t thƣờng! Độ chênh lê ̣ch: " + (valueLM35 valueTopTem).toString()+"°C" +"\n"; else holdStatusTem = 1; pinOutAirBlower.write(0); } if(pinOutWaterFilterState) if( valueLM35 < valueBottomTem pinOutWaterFilter.write(1); else pinOutWaterFilter.write(0); } ){ warnString = warnString + "Nhiê ̣t đô ̣ thấ p bấ t thƣờng! Độ chênh lê ̣ch: " + (valueBottomTem valueLM35).toString()+"°C" +"\n"; //Auto mode holdStatusTem = 2; displayStatusInputLCD(); } while(inputControlMotor.read() === || inputControlLamp.read() === ){} if( valuePH > valueToppH ){ warnString = warnString + "Độ pH cao vƣơ ̣t ngƣỡng! Độ chênh lệch: " + (valuePH valueToppH).toString() +"\n"; } holdStatuspH = 1; } 72 an holdStatusSan = 1; if( valuePH < valueBottompH ){ warnString = warnString + "Độ pH thấ p so với quy đinh! ̣ Độ chênh lê ̣ch: " + (valueBottompH valuePH).toString() +"\n"; holdStatuspH =2; } } if( valueSAN < valueBottomSan ){ warnString = warnString + "Độ mă ̣n thấ p so với quy đinh! ̣ Độ chênh lê ̣ch: " + (valueBottomSan valueSAN).toString(); holdStatusSan = 2; if( valueTUR > valueTopTur ){ warnString = warnString + "Độ đu ̣c cao vƣơ ̣t ngƣỡng! Độ chênh lệch: " + (valueTUR valueTopTur).toString() +"\n"; holdStatusTur = 1; } if((valueLM35 < valueTopTem) && (valueLM35 > valueBottomTem)){ holdStatusTem = 0; } } if( valueTUR < valueBottomTur ){ warnString = warnString + "Độ đu ̣c thấ p so với quy đinh! ̣ Độ chênh lê ̣ch: " + (valueBottomTur valueTUR).toString() +"\n"; holdStatusTur =2; if((valuePH < valueToppH) && (valuePH > valueBottompH)){ holdStatuspH = 0; } if((valueSAN < valueTopSan) && (valueSAN > valueBottomSan)){ holdStatusSan = 0; } } if( valueSAN > valueTopSan ){ warnString = warnString + "Độ mă ̣n cao vƣơ ̣t ngƣỡng! Độ chênh lệch: " + (valueSAN valueTopSan).toString() +"\n"; if((valueTUR < valueTopTur) && (valueTUR > valueBottomTur)){ holdStatusTur = 0; } 73 an if(inputControlModeState == false break; ){ case 1: CalTotalSansor(); pinOutWaterFilterState = true; } break; case 2: if((holdStatusSan != 0)&&((valueSAN valueTopSan)>5)){ pinOutWaterFilterState = true; break; sendWaringSMS(); } } if((holdStatusSan == 0)&&((valueTopSan valueSAN)>2)){ switch(holdStatusSan){ case 0: pinOutAirBlowerState = false; WaringSMS = false; break; } case 1: pinOutAirBlowerState = true; io.emit('warningLimit', {value: warnString}); break; } case 2: pinOutAirBlowerState = true; //************************Auto Process***** break; } var CalTotalSansor = function() }; { //*******************READANA LOG************** switch (holdStatusTur){ case 0: pinOutWaterFilterState = false; // ham gia tri nhiet LM35 74 an var getvalueTemp = function() { { var tem_San = 0; var tem_LM35 = 0; for(i=0; i

Ngày đăng: 02/02/2023, 09:11

Tài liệu cùng người dùng

Tài liệu liên quan