(Luận văn tốt nghiệp) giám sát mức tiêu thụ điện, nước bằng công nghệ iot đề tài nghiên cứu khoa học

52 1 0
(Luận văn tốt nghiệp) giám sát mức tiêu thụ điện, nước bằng công nghệ iot đề tài nghiên cứu khoa học

Đ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 BÀ RỊA VŨNG TÀU BÁO CÁO ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CẤP TRƯỜNG Đề tài: GIÁM SÁT MỨC TIÊU THỤ ĐIỆN, NƯỚC BẰNG CÔNG NGHỆ IOT Họ tên GVHD : Th.S Phan Thanh Hoàng Anh Họ tên SVTH : Nguyễn Hoàng Quân Luan van LỜI CẢM ƠN Em xin gửi lời cảm ơn sâu sắc đến thầy Phan Thanh Hoàng Anh, người thầy cung cấp ý tưởng đề tài, đồng thời tận tình hướng dẫn, giúp đỡ, tạo điều kiện cho em suốt trình thực đề tài Đồng thời trình thực em nhận nhiều giúp đỡ thầy cô giáo môn, em xin chân thành cảm ơn thầy giúp em hồn thành đề tài Em xin gửi lời cảm ơn đến bạn lớp, người thân gia đình, anh, có kinh nghiệm chun mơn chia sẻ, trao đổi kiến thức hướng dẫn em thực tốt đề tài Xin chân thành cảm ơn! SV thực đề tài Nguyễn Hoàng Quân Luan van Vũng Tàu, tháng 06 năm 2020 TRƯỜNG ĐH BÀ RỊA VŨNG TÀU CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM KCN KT – NNCNC Độc lập - Tự - Hạnh phúc o0o - NHIỆM VỤ NGHIÊN CỨU ĐỀ TÀI KHOA HỌC CẤP TRƯỜNG NĂM 2019 - 2020 Họ tên sinh viên thực chính: NGUYỄN HỒNG QN I - MSSV: 16031555 - Ngày, tháng, năm sinh: 16/03/1998 - Nơi sinh: DAKLAK - Chuyên ngành: Điện công nghiệp Dân dụng TÊN ĐỀ TÀI: ỨNG DỤNG CÔNG NGHỆ IOT GIÁM SÁT MỨC TIÊU THỤ ĐIỆN – NƯỚC II NHIỆM VỤ VÀ NỘI DUNG: Các số liệu ban đầu: - Kit Arduino Mega, NodeMCU ngơn ngữ lập trình - Tài liệu nghiên cứu Arduino Mega, NodeMCU, tạo web NODE RED - Tài liệu nghiên cứu cảm biến dòng ACS712 lưu lượng S201 Nội dung thực hiện: Kết nối cảm biến, nodemcu, mạch đo dòng lưu lượng S201 vào mạch Arduino - Lập trình cho kit Arduino nodemcu - Thiết kế mơ hình hộp chứa mạch điều khiển - Xây dựng giao diện lập trình trang web giám sát từ xa - Chạy thử nghiệm Luan van III NGÀY GIAO NHIỆM VỤ ĐỀ TÀI: 01/12/2018 IV NGÀY HOÀN THÀNH ĐỀ TÀI: 15/07/2019 V HỌ TÊN CÁN BỘ HƯỚNG DẪN: ThS Phan Thanh Hoàng Anh Bà Rịa - Vũng Tàu, ngày tháng năm 2020 SINH VIÊN THỰC HIỆN CHÍNH (Ký ghi rõ họ tên) CÁN BỘ HƯỚNG DẪN (Ký ghi rõ họ tên) ThS Phan Thanh Hồng Anh PHỊNG KHOA ĐÀO TAỌ - KHCN (Ký ghi rõ họ tên) Luan van Nguyễn Hoàng Quân TRƯỞNG KHOA (Ký ghi rõ họ tên) LỜI NÓI ĐẦU Trong năm gần đây, dường thuật ngữ IoT (hay Internet of Things) hay “Vạn vật kết nối internet” khơng cịn trở nên q xa lạ, ta đơi lần bắt gặp cụm từ đâu, từ tin thời công nghệ tivi, trang mạng điện tử, cụ thể ứng dụng thiết thực đời sống Đúng tên gọi, hệ thống thiết bị cơng nghệ có liên quan đến nhau, vật kết nối với dựa giao thức chung, mạng truyền thơng – hay Internet Chỉ cần thiết bị có kết nối mạng, bạn hồn tồn kiểm tra, điều khiển thiết bị nhà, bạn đâu Công nghệ IoT phát triển nhiều lĩnh vực Với lợi ích trơng thấy, bạn muốn sở hữu ứng dụng IoT cho nhà bạn phải không nào? Vậy ứng dụng vào đâu bây giờ, việc điều khiển thiết bị điện từ xa? Vậy có bạn phải đau đầu tự hỏi tháng hóa đơn tiền điện nước lại tăng lên bạn nghĩ sử dụng chúng cách hợp lý tiết kiệm chưa? Chẳng lẽ đồng hồ lại báo số sai?, Như vậy, bạn cần phải có ứng dụng để giám sát thơng số điện- nước mà gia đình bạn sử dụng hàng ngày; đến cuối tháng, bạn tổng kết lại, đối chiếu với hóa đơn điện-nước tháng này, khơng cịn phụ thuộc vào hóa đơn cơng ty điện nước trước Thực ra, thị trường có thiết bị rồi, với độ xác cao, giá thành lại mắc, giám sát từ xa Nắm bắt điều này, vận dụng kiến thức học, em tiến hành thực đề tài với tên “ỨNG DỤNG CÔNG NGHỆ IOT GIÁM SÁT MỨC TIÊU THỤ ĐIỆN - NƯỚC”, thực công việc đo giám sát, hiển thị cập nhật lên hình thiết bị web, giúp cho người sử dụng dễ dàng quan sát thống kê lượng điện - nước mà họ Luan van sử dụng Với đề tài này, nhóm hy vọng làm sở nghiên cứu để nhóm sau phát triển cải tiến thêm Luan van MỤC LỤC LỜI CẢM ƠN ĐÁNH GIÁ CỦA GIÁO VIÊN HƯỚNG DẪN LỜI MỞ ĐẦU MỤC LỤC 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 CHƯƠNG CƠ SỞ LÝ THUYẾT 2.1 Giới thiệu phần cứng 2.1.1 Thiết bị đầu vào 2.1.1.1 Module cảm biến dòng điện ACS712 - 20A 2.1.1.2 Cảm biến lưu lượng S201 2.1.2 Thiết bị đầu – Màn hình LCD 16x2 mạch LCD I2C 2.1.2.1 LCD 16x2 2.1.2.2 Module giao tiếp LCD I2C 2.1.3 Arduino Mega 2560 2.1.3.1 Giới thiệu 2.1.3.2 Thông số kỹ thuật 19 2.1.4 NodeMCU 1.0 10 2.1.4.1 Giới thiệu 10 2.1.4.2 Thông số kỹ thuật 11 2.2 Chuẩn truyền liệu 11 Luan van 2.2.1 Giao tiếp UART 12 2.2.1.1 Giới thiệu 12 2.2.1.2 Các thông số truyền nhận UART 13 2.2.2 Chuẩn giao tiếp I2C 13 2.2.2.1 Giới thiệu 13 2.2.2.2 Đặc điểm giao tiếp I2C 14 2.2.2.3 Trình tự truyền bit đường truyền 14 2.2.2.4 Điều kiện START STOP 15 2.2.3 Chuẩn giao tiếp Wifi 15 2.2.3.1 Giới thiệu 15 2.2.3.2 Nguyên tắc hoạt động 15 2.2.3.3 Một số chuẩn kết nối Wifi 15 2.3 NODE RED 16 2.3.1 Giới thiệu 17 2.3.2 cấu trúc tổng quan node red 17 2.4 Firebase Realtime Database 18 2.4.1 Giới thiệu 18 2.4.2 Những đặc điểm bật 19 2.4.2.1 Cách liệu lưu trữ 19 2.4.2.2 Dữ liệu offline 20 2.4.2.3 Cập nhật liệu thời gian thực 20 2.4.2.4 Tính bảo mật quy định 20 CHƯƠNG TÍNH TỐN VÀ THIẾT KẾ HỆ THỐNG 21 3.1 Giới thiệu 21 3.2 Tính tốn thiết kế hệ thống 22 3.2.1 Thiết kế sơ đồ khối hệ thống 22 3.2.2 Tính tốn thiết kế mạch 23 Luan van 3.2.2.1 Thiết kế khối hiển thị 23 3.2.2.2 Thiết kế khối xử lý 24 3.2.2.3 Thiết kế khối thiết bị đầu vào 24 3.2.2.4 Thiết kế khối nguồn 25 3.2.3 Sơ đồ nguyên lý toàn mạch 25 CHƯƠNG THI CÔNG HỆ THỐNG 26 4.1 Giới thiệu 27 4.2 lập trình hệ thống 30 4.3 Phần mềm lập trình cho phần cứng 34 4.4 Phần mềm lập trình cho website 35 4.5 Phần mềm giao tiêp cho web phần cứng 35 4.6 Sơ đồ khối toàn hệ thống 36 4.7 Mơ hình thực tế 36 CHƯƠNG KẾT LUẬN- HƯỚNG PHÁT TRIỂN ĐỀ TÀI 38 5.1 Kết luận 38 5.1.1 ưu điểm 38 5.1.2 nhược điểm 38 5.2 Hướng phát triển 38 TÀI LIỆU THAM KHẢO Luan van NGHIÊN CỨU KHOA HỌC GVHD: ThS Phan Thanh Hoàng Anh Chương TỔNG QUAN 1.1 ĐẶT VẤN ĐỀ Hàng tháng, phải ln trả hóa đơn điện – nước mà số tiền phải đóng lại ngày tăng cao Lý ta khơng thể hồn tồn kiểm soát mức điện – nước sử dụng, ta khơng có số thống kê cụ thể cả, việc tự ước lượng Hiện nay, thị trường có bán thiết bị để giám sát điện tiêu thụ với độ xác cao, giá thành lại không rẻ, hạn chế mặt giám sát từ xa Nhận thấy điều này, nhóm chúng em muốn tạo ứng dụng giúp cho hộ gia đình dễ dàng thống kê - giám sát lượng điện - nước mà họ sử dụng hàng ngày; để từ họ kiểm soát đề phương án sử dụng cách hiệu tiết kiệm Đó lý nhóm em định lựa chọn thực đề tài “ỨNG DỤNG CÔNG NGHỆ IOT GIÁM SÁT MỨC TIÊU THỤ ĐIỆN NƯỚC” 1.2 MỤC TIÊU Thiết kế hệ thống tiến hành đo lượng điện – nước tiêu thụ, đặn cập nhật thơng số lên trang web-host để thuận tiện cho công việc giám sát Hệ thống ứng dụng công nghệ IoT, giúp cho người dùng đâu dễ dàng truy cập Đồng thời, ứng dụng xây dựng hệ thống user, giúp cho quản trị viên dễ dàng việc kiểm sốt thơng tin người dùng 1.3 NỘI DUNG NGHIÊN CỨU  NỘI DUNG 1: Tìm hiểu lựa chọn giải pháp thiết kế  NỘI DUNG 2: Thu thập tài liệu cảm biến, module wifi, vi xử lý, tìm kiếm web host khả dụng  NỘI DUNG 3: Thiết kế, lập trình cho hệ thống điều khiển, chạy thử nghiệm  NỘI DUNG 4: Thiết kế mơ hình, chỉnh sửa cải tiến từ phương án chọn SVTH: Nguyễn Hoàng Quân 10 Luan van NGHIÊN CỨU KHOA HỌC GVHD: ThS Phan Thanh Hoàng Anh Hình 4.3: Ủng hộ nhà phát triển Arduino IDE Sau cài đặt xong, mở phần mềm lên ta thấy giao diện dễ nhìn thân thiện so với đa phần phần mềm lập trình khác Arduino IDE làm việc với dạng soạn thảo gọi Sketch, ta soạn lệnh lập trình (code) vào Sketch sử dụng thao tác biên tập upload chương trình xuống board Arduino cắm vào máy Khi tiến hành nạp code ta cần phải chắn phần mềm nhận tín hiệu board Arduino (Arduino COM port detect); Sketch soạn nạp với board Arduino tương ứng (khi cần soạn hai Sketch giao tiếp hai board Arduino cắm vào máy tính vấn đề bắt đầu phát sinh) Khi cắm board Arduino vào máy tính cổng COM nhận ta vào phần Tools -> Port để chọn cổng COM kết nối Arduino IDE với board Sau máy nhận cổng COM ta cần điều chỉnh phần mềm lập trình Arduino xác nhận loại board muốn nạp 4.4 PHẦN MỀM LẬP TRÌNH CHO WEBSITE Sau đó, bạn truy cập trình soạn thảo Node-RED cách truy cập dến http://doansmarthome.tk/admin/#flow/1406bb2e.be6ad5 Giao diện sau: Từ giao diện nút ta tạo giao diện website theo mục đích mạch làm SVTH: Nguyễn Hồng Qn 38 Luan van NGHIÊN CỨU KHOA HỌC GVHD: ThS Phan Thanh Hoàng Anh Mỗi nút ta để thuộc vào group tab bất đầu gắn địa chỉ, kết nốt data nút nối nút lại với SVTH: Nguyễn Hoàng Quân 39 Luan van NGHIÊN CỨU KHOA HỌC GVHD: ThS Phan Thanh Hoàng Anh Và giao diện website 4.5 PHƯƠNG THỨC GIAO TIẾP CHO WEBSITE VÀ PHẦN CỨNG 4.4.1 GIAO THỨC MQTT SVTH: Nguyễn Hoàng Quân 40 Luan van NGHIÊN CỨU KHOA HỌC GVHD: ThS Phan Thanh Hoàng Anh MQTT = Message Queue Telemetry Transport Đây giao thức truyền thông điệp (message) theo mơ hình publish/subscribe (xuất – theo dõi), sử dụng băng thơng thấp, độ tin cậy cao có khả hoạt động điều kiện đường truyền không ổn định MQTT giao thức nhắn tin gọn nhẹ thiết kế để liên lạc nhẹ thiết bị hệ thống máy tính MQTT thiết kế ban đầu cho mạng SCADA, kịch sản xuất băng thông thấp, MQTT trở nên phổ biến gần phát triển Internet-of-Things (IoT) Ưu điểm MQTT Giao thức MQTT cho phép hệ thống SCADA bạn truy cập liệu IIoT MQTT mang lại nhiều lợi ích mạnh mẽ cho quy trình bạn:  Chuyển thơng tin hiệu  Tăng khả mở rộng  Giảm đáng kể tiêu thụ băng thông mạng  Giảm tốc độ cập nhật xuống giây  Rất phù hợp cho điều khiển thám  Tối đa hóa băng thơng có sẵn  Chi phí cực nhẹ  Rất an tồn với bảo mật dựa cho phép  Được sử dụng ngành cơng nghiệp dầu khí, Amazon, Facebook doanh nghiệp lớn khác  Tiết kiệm thời gian phát triển  Giao thức publish/subscribe thu thập nhiều liệu với băng thơng so với giao thức cũ SVTH: Nguyễn Hoàng Quân 41 Luan van NGHIÊN CỨU KHOA HỌC GVHD: ThS Phan Thanh Hoàng Anh Ứng dụng MQTT Facebook Messenger Facebook sử dụng khía cạnh MQTT Facebook Messenger để trị chuyện trực tuyến Tuy nhiên, khơng rõ MQTT sử dụng để làm  IECC Scalable , DeltaRail phiên hệ thống kiểm soát hiệu IECC họ ‘s sử dụng MQTT cho thông tin liên lạc phần khác hệ thống thành phần khác hệ thống báo hiệu Nó cung cấp khung truyền thơng cho hệ thống tuân thủ tiêu chuẩn CENELEC cho thông tin liên lạc quan trọng an tồn  Các tổ chức khơng gian địa lý SensorThings API đặc điểm kỹ thuật tiêu chuẩn có phần mở rộng MQTT tiêu chuẩn giao thức thơng báo bổ sung ràng buộc Nó chứng minh thí điểm IoT Bộ An ninh Nội địa Hoa Kỳ SVTH: Nguyễn Hoàng Quân 42 Luan van NGHIÊN CỨU KHOA HỌC GVHD: ThS Phan Thanh Hồng Anh 4.6 SƠ ĐỒ KHỐI TỒN HỆ THỐNG KHỐI NGUỒN CẢM BIẾN DÒNG KHỐI XỬ KHỐI THU LÝ DỮ THẬP DỮ LIỆU LIỆU WEBSITE CẢM BIẾN LƯU LƯỢNG LCD 16.2  HƯỚNG DẪN SỬ DỤNG: Bước 1: cấp nguồn cho hệ thống Bước 2: mở code chương trình esp 8266 đổi mật tên wifi nạp lại chương trình cho esp8266 Bước 3: cắm tải cho cảm biến dòng acs712 -20a cảm biến lưu lượng s201 Bước 4: mở đường link website lên theo dõi thông số tiêu thụ điện nước truy xuất time cần tìm đồng thời hình LCD hiển thị thơng số lên phần cứng 4.7 MƠ HÌNH THỰC TẾ Khối Thiết Bị Đầu Vào: 1: Module cảm biến dòng ACS712 -20A Chức để đo dòng phụ tải để truyền liệu vào cho xử lý trung tâm SVTH: Nguyễn Hoàng Quân 43 Luan van NGHIÊN CỨU KHOA HỌC GVHD: ThS Phan Thanh Hoàng Anh 2: Cảm biến lưu lượng S201 Chức đo lưu lượng nước tiêu thụ để truyền liệu vào cho xử lý trung tâm 3: Tải tiêu thụ Khối Hiển Thị: 4: hình LCD 16.2, chức hiển thị thông số điện nước tiêu thụ Khối điều khiển: 5: NodeMCU 1.0 Chức nhận liệu từ Arduino giao tiếp đẩy thông tin lên website lưu vào database 6: Arduino Mega 2560 chức thu thập liệu từ chân tín hiệu cảm biến truyền lên SVTH: Nguyễn Hoàng Quân 44 Luan van NGHIÊN CỨU KHOA HỌC GVHD: ThS Phan Thanh Hoàng Anh SVTH: Nguyễn Hoàng Quân 45 Luan van NGHIÊN CỨU KHOA HỌC GVHD: ThS Phan Thanh Hoàng Anh CHƯƠNG KẾT LUẬN – HƯỚNG PHÁT TRIỂN ĐỀ TÀI 5.1 KẾT LUẬN 5.1.1 Ưu Điểm - Phần cứng nhỏ gọn, dễ lắp đặt - Nguồn dùng chung với điện lưới nên thuận tiện sử dụng - Về website cập nhập lưu trữ liệu từ esp lên data ổn định - Trang giao diện website nhìn đơn giản, dễ truy cập cho người dùng 5.1.2 Nhược Điểm - Dữ liệu gởi lên data cịn trễ tín hiệu wifi yếu - Bị sai số phụ tải khoảng 1% - Vì mơ hình nên mạch khơng thể cập nhâp liệu cho phụ tải động có cơng suất lớn 5.2 HƯỚNG PHÁT TRIỂN - Có hệ thống cảnh báo giá trị điện – nước đo vượt ngưỡng cài đặt cho - phép (dùng loa, đèn báo), gửi tin nhắn qua sim - Thay hình LCD 16x2 đơn điệu hình cảm ứng có giao diện trực quan - Mở rộng hệ thống để điều khiển thiết bị từ xa như: cơng tắc, van điện tử… - Mơ hình cần cải tiến để trở nên nhỏ gọn bắt mắt SVTH: Nguyễn Hoàng Quân 46 Luan van NGHIÊN CỨU KHOA HỌC GVHD: ThS Phan Thanh Hoàng Anh TÀI LIỆU THAM KHẢO Sách tham khảo [1] Hoàng Ngọc Văn, “ Điện Tử Công Suất”, Trường đại học SPKT Tp.HCM, 2007 [2] Trần Thu Hà (chủ biên), “ Điện Tử Cơ Bản”, NXB ĐH Quốc Gia Tp.HCM, 2013 [3] Nguyễn Đình Phú – Trương Ngọc Anh, “Vi xử lý”, NXB ĐH Quốc Gia Tp.HCM, 2013 [5] Bùi Minh Phúc, “ESP8266 NodeMCU - Một lựa chọn khác Adruino”, [6] Phạm Trần Đăng Khoa, “Tự học thiết kế Web tĩnh bản: HTML, CSS & jQuery KhoaPham.Vn”, [7] Material design lite tutorial, 2018 SVTH: Nguyễn Hoàng Quân 47 Luan van ĐỒ ÁN TỐT NGHIỆP GVHD: ThS Phan Thanh Hoàng Anh PHỤC LỤC CODE ARDUNIO #include #include LiquidCrystal_I2C lcd(0x27,20,4); /* Measuring Current Using ACS712 */// -const int analogIn = A0; int mVperAmp = 225; // use 100 for 20A Module and 66 for 30A Module int RawValue= 0; int ACSoffset = 2500; double Voltage = 0; double Amps = 0; double Walt = 0; double Voltage1= 0; double VRMS = 0; double AmpsRMS = 0; // -/* YF S201 Water Flow Sensor Water Flow Sensor output processed to read in litres/hour Adaptation Courtesy: www.hobbytronics.co.uk */ volatile int flow_frequency; // Measures flow sensor pulses unsigned int l_hour; // Calculated litres/hour unsigned char flowsensor = 2; // Sensor Input unsigned int flowMilliLitres; unsigned long totalMilliLitres; float lit; unsigned long currentTime; unsigned long cloopTime; // void flow () // Interrupt function { flow_frequency++; } float getVPP() { float result; int readValue; //value read from the sensor int maxValue = 0; // store max value here int minValue = 1024; // store value here uint32_t start_time = millis(); while((millis()-start_time) < 1000) //sample for Sec { readValue = analogRead(analogIn); // see if you have a new maxValue if (readValue > maxValue) { /*record the maximum sensor value*/ maxValue = readValue; } if (readValue < minValue) { /*record the minimum sensor value*/ minValue = readValue; } } // Subtract from max result = ((maxValue - minValue) * 5.0)/1024.0; SVTH: Nguyễn Hoàng Quân 48 Luan van ĐỒ ÁN TỐT NGHIỆP GVHD: ThS Phan Thanh Hoàng Anh return result; } void setup() { } pinMode(flowsensor, INPUT); digitalWrite(flowsensor, HIGH); // Optional Internal Pull-Up Serial.begin(9600); Serial2.begin(115200); attachInterrupt(0, flow, RISING); // Setup Interrupt sei(); // Enable interrupts currentTime = millis(); cloopTime = currentTime; lcd.init(); lcd.backlight(); lcd.setCursor(2,0); lcd.print("Hoang Quan"); void loop() { currentTime = millis(); // Every second, calculate and print litres/hour if(currentTime >= (cloopTime + 1000)) { cloopTime = currentTime; // Updates cloopTime // Pulse frequency (Hz) = 7.5Q, Q is flow rate in L/min l_hour = (flow_frequency * 60 / 7.5); // (Pulse frequency x 60 min) / 7.5Q = flowrate in L/hour flowMilliLitres = (l_hour / 60) * 1000; totalMilliLitres += flowMilliLitres/60; lit = (float)totalMilliLitres/1000; flow_frequency = 0; // Reset Counter Serial.print("Water Value = " ); // shows pre-scaled value Serial.print((float)lit,3); // Print litres/hour Serial.println("L"); } Voltage = getVPP(); VRMS = (Voltage/2.0) *0.707; AmpsRMS = abs((VRMS * 1000)/mVperAmp - 0.0975); if(AmpsRMS >= 0.1) { Voltage = 220; } else { Voltage = 0; } Serial.print("Voltage :"); Serial.print(Voltage); Serial.println("V"); Serial.print("Current :"); Serial.print(AmpsRMS); Serial.println("A"); delay(50); Walt = Voltage * AmpsRMS * 0.9; lcd.clear(); lcd.setCursor(0,0); lcd.print("Nuoc ="); lcd.setCursor(7,0); lcd.print(lit); lcd.setCursor(12,0); lcd.print("L"); SVTH: Nguyễn Hoàng Quân 49 Luan van ĐỒ ÁN TỐT NGHIỆP GVHD: ThS Phan Thanh Hoàng Anh lcd.setCursor(0,1); lcd.print("Dien ="); lcd.setCursor(7,1); lcd.print(Walt); lcd.setCursor(12,1); lcd.print("W"); Serial.print("Walt Value = " ); // shows pre-scaled value Serial.print(Walt,3); Serial.println("W"); Serial2.println(lit,3); // the '3' after voltage allows you to display digits after decimal point Serial2.print("-"); // shows the voltage measured Serial2.println(Walt,3); // the '3' after voltage allows you to display digits after decimal point totalMilliLitres = 0; delay(10000); } CODE ESP 8266 #include #include #include #include #include void serialEvent(); SoftwareSerial Serial2(13, 15); // RX_D7, TX_D8 const char* ssid = "dhstestiot"; const char* password = "DHSAbc@@123"; const char* mqttServer = "doansmarthome.tk"; const int mqttPort = 1883; const char* mqttUser = "admin"; const char* mqttPassword = "123456"; const char Voltage = 0; const char l_hour = 0; // Calculated litres/hour WiFiClient espClient; PubSubClient client(espClient); unsigned long lastMsg = 0; #define MSG_BUFFER_SIZE (50) char msg[MSG_BUFFER_SIZE]; String buff_data; int flash = 0; char buff[MSG_BUFFER_SIZE]; void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Message arrived in topic: "); Serial.println(topic); Serial.print("Message:"); for (int i = 0; i < length; i++) { Serial.print((char)payload[i]); } SVTH: Nguyễn Hoàng Quân 50 Luan van ĐỒ ÁN TỐT NGHIỆP Serial.println(); Serial.println(" -"); GVHD: ThS Phan Thanh Hoàng Anh } void setup() { Serial.begin(115200); Serial2.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.println("Connecting to WiFi "); } Serial.println("Connected to the WiFi network"); client.setServer(mqttServer, mqttPort); client.setCallback(callback); while (!client.connected()) { Serial.println("Connecting to MQTT "); if (client.connect("ESP8266Client", mqttUser, mqttPassword )) { Serial.println("connected"); } else { } } } Serial.print("failed with state "); Serial.print(client.state()); delay(2000); void loop() { serialEvent(); delay(1000); } void serialEvent() { if(Serial2.available()>0) { buff_data = Serial2.readString(); delay(100); int str_len = buff_data.length() + 1; // Prepare the character array (the buffer) char char_array[str_len]; char water_array[str_len]; // Copy it over buff_data.toCharArray(char_array, str_len); Serial.print("char arary: "); Serial.println((char*)char_array); for(int n = 0; n

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

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

Tài liệu liên quan