Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 84 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
84
Dung lượng
19,7 MB
Nội dung
ĐẠI HỌC LẠC HỒNG KHOA CƠ ĐIỆN ĐIỆN TỬ - BÁO CÁO NGHIÊN CỨU KHOA HỌC Đề tài: GIẢI PHÁP GIÁM SÁT VÀ ĐIỀU KHIỂN VĂN PHÒNG TỪ XA Sinh viên thực hiện: Dương Minh Thuận Trần Minh Thiện Đồng Nai, 6/2022 ĐẠI HỌC LẠC HỒNG KHOA CƠ ĐIỆN ĐIỆN TỬ - BÁO CÁO NGHIÊN CỨU KHOA HỌC Đề tài: GIẢI PHÁP GIÁM SÁT VÀ ĐIỀU KHIỂN VĂN PHÒNG TỪ XA NGƯỜI HƯỚNG DẪN KHOA HỌC TH.S NGÔ KIM LONG Đồng Nai, 6/2022 LỜI CẢM ƠN Đầu tiên, chúng xin cảm ơn ba mẹ là đấng sinh thành đã nuôi dưỡng và dạy dỗ chúng nên người, cho chúng đến trường học tập, tiếp thu điều tốt, điều mẻ mà giúp ích cho chúng rất nhiều đường thành công nghiệp sau này Kế đến, chúng em xin hết lịng cảm ơn q Thầy/ Cơ đã giảng dạy và truyền đạt rất nhiều kiến thức cho chúng em suốt năm học vừa qua Đặc biệt, chúng em xin giành lời cảm ơn sâu sắc tới Th.S Ngơ Kim Long Trong suốt q trình thực đề tài, thầy là người đã cho chúng em kiến thức quý báu, lời khuyên hữu ích là động viên, khích lệ tinh thần chúng em gặp vấn đề thực đề tài để chúng em hoàn thiện hơm Và cuối cùng, xin gửi lời cảm ơn đến bạn bè chúng tôi, người bên cạnh, ủng hộ và chia sẻ chúng tơi Lúc vui lúc b̀n, lúc khó khăn đã cố gắng vượt qua Một lần nữa, xin chân thành cảm ơn! Đồng Nai, tháng năm 2022 Sinh viên thực hiện: DƯƠNG MINH THUẬN TRẦN MINH THIỆN LỜI CAM ĐOAN Tôi xin cam đoan cơng trình nghiên cứu là tơi, số liệu, kết nêu đồ án tốt nghiệp là trung thực và xác Tơi xin cam đoan giúp đỡ cho việc thực đồ án tốt nghiệp này đã xin phép, tất thông tin trích dẫn luận văn ghi rõ nguồn gốc Đồng Nai, tháng năm 2022 Sinh viên thực hiện: DƯƠNG MINH THUẬN TRẦN MINH THIỆN MỤC LỤC CHƯƠNG TỔNG QUAN 1.1 Tổng quan giải pháp giám sát và điều khiển văn phòng từ xa 1.1.1 Bối cảnh và nhu cầu sử dụng 1.1.2 Các giải pháp quản lí giám sát mơi trường làm việc có thị trường 1.1.3 Đặt vấn đề 1.2 Phạm vi nghiên cứu 1.3 Nhiệm vụ thực 1 4 CHƯƠNG THIẾT KẾ TỔNG QUAN GIẢI PHÁP GIÁM SÁT VÀ ĐIỀU KHIỂN VĂN PHÒNG TỪ XA 2.1 Tổng quan sơ đồ khối hệ thống 2.2 Tổng quan website quản lý điều khiển 2.3 Tổng quan ERD sở liệu 2.4 Giới thiệu lựa chọn phần cứng 2.5 Cơ sở lý thuyết 2.5.1 Chuẩn giao tiếp I2C 2.5.2 Chuẩn giao tiếp SPI 2.5.3 Phương thức http get/post 2.5.4 Cơ sở liệu 2.5.4.1 Tổng quan 2.5.4.2 Lựa chọn 2.5.5 Website 5 9 16 16 19 21 23 23 24 24 CHƯƠNG THIẾT KẾ MÔ HÌNH VĂN PHÒNG VÀ TRANG WEB GIÁM SÁT ĐIỀU KHIỂN 3.1 Phần cứng 3.1.1 Phần cứng 3.1.2 Sơ đồ chân thiết bị 3.1.3 Sơ đồ kết nối 3.1.4 Nguyên lý hoạt động 3.2 Xây dựng sở liệu 3.3 Giải thuật điều khiển và nguyên lý hoạt động phần cứng 3.3.1 Module cảm biến và điều khiển thiết bị ESP32 3.3.2 Module quét vân tay ESP8266 3.3.3 Module ESP32 Camera 25 25 25 28 33 38 44 48 48 50 52 CHƯƠNG KẾT QUẢ 4.1 Kết đạt 54 54 CHƯƠNG KẾT LUẬN 60 TÀI LIỆU THAM KHẢO 62 PHỤ LỤC CÂU LỆNH SQL 62 63 DANH MỤC HÌNH ẢNH Hình 1.1 Hệ thống điều khiển và giám sát BMS 13 Hình 2.1 Board LUA ESP8266 NodeMcu CH340 WIFI Module IOT 16 Hình 2.2 ESP32 Camera ESP32-CAM Ai 16 Hình 2.3 Module đo điện AC PZEM-004T cổng PZCT-02 100A 17 Hình 2.4 LCD OLED IIC 0.96 inch 17 Hình 2.5 Ng̀n tở ong 12VDC 20A 18 Hình 2.6 AS608 Cảm biến vân tay giao tiếp UART 18 Hình 2.7 WH-468 LM2596S Mạch ởn áp 19 Hình 2.8 Module LED ma trận 8x8 MAX7219 19 Hình 2.9 Mạch ởn áp 3.3V 3A 10W 20 Hình 2.10 BME280 Mạch Cảm Biến Áp Śt 20 Hình 2.11 Ví dụ chuẩn giao tiếp I2C 21 Hình 2.12 Địa từng Slave 22 Hình 2.13 Ví dụ Master nhiều Slave 23 Hình 2.14 Ví dụ nhiều Master nhiều Slave 23 Hình 2.15 Master - slave 24 Hình 2.16 Ví dụ nhiều chân slave select 25 Hình 2.17 Ví dụ chân slave select 26 Hình 2.18 Sơ đờ khối hệ thống 29 Hình 2.19 Sơ đờ khối ng̀n xử lý 30 Hình 2.20 Thiết kế giao diện website 30 Hình 2.21 Thiết kế layout website 31 Hình 2.22 Tởng quan ERD sở liệu 32 Hình 3.2 Hai máy quét vân tay hai cởng ngoài 34 Hình 3.3 Mơ hình chi tiết cảm biến vân tay 34 Hình 3.4 Màn hình led tên cơng ty 35 Hình 3.5 Mơ hình bên khu vực làm việc 36 Hình 3.6 Cụm Camera theo dõi và điều hướng 37 Hình 3.7 Sơ đờ chân module LUA ESP8266 nodeMcu WIFI 37 Hình 3.8 Sơ đờ chân module ESP-WROOM-32 ESP32 AI 38 Hình 3.9 Sơ đồ mạch cảm biến áp suất BME280 39 Hình 3.10 Sơ đờ mạch module đo điện AC PZEM-004T cởng PZCT-02 100A 40 Hình 3.11 Cảm biến vân tay AS608 41 Hình 3.12 Màn hình LCD OLED 0.96inch 42 Hình 3.13 Sơ đờ kết nối máy qt vân tay 44 Hình 3.14 Sơ đờ kết nối màn hình tên cơng ty 44 Hình 3.15 Sơ đờ kết nối board điều khiển trung tâm 45 Hình 3.16 Bộ điều khiển Camera 45 Hình 3.17 Hình ảnh mạch điện thực tế 46 Hình 3.18 Lưu đờ giải thuật quản lý thiết bị máy quét 46 Hình 3.19 Quy trình quản lý thiết bị máy qt 47 Hình 3.20 Lưu đờ giải thuật quản lý vân tay người dùng 47 Hình 3.21 Quy trình quản lý vân tay người dùng 48 Hình 3.22 Lưu đờ giải thuật theo dõi thời gian vào nhân viên 49 Hình 3.23 Quy trình theo dõi thời gian vào nhân viên 49 Hình 3.24 Giải thuật dashboard phía website 50 Hình 3.25 Giải thuật phía board điều khiển trung tâm 50 Hình 3.26 Nguyên lý hoạt động Camera 51 Hình 3.27 Tởng quan database 52 Hình 3.28 Mối liên hệ database 55 Hình 3.29 Giải thuật điều khiển ESP32 và module cảm biến 56 Hình 3.30 Giải thuật module quét vân tay ESP8266 58 Hình 3.31 Giải thuật module camera 59 Hình 4.1 Mơ hình hoàn thiện 61 Hình 4.2 Trang login/logout website 62 Hình 4.3 Trang dashboard website 63 Hình 4.4 Trang thiết bị website 64 Hình 4.5 Trang quản lý vân tay đã ghi danh website 64 Hình 4.6 Trang quản lý ghi danh vân tay website 65 Hình 4.7 Popup lọc, trích xuất nhật lý nhân viên website 66 Hình 4.8 Popup cài đặt cảnh báo thơng số điện áp website 66 DANH MỤC BẢNG BIỂU Bảng 2.1 Sự khác giao thức GET và POST 30 Bảng 3.1 Chú thích nhãn pin module LUA ESP8266 nodeMcu WIFI 40 Bảng 3.2 Chú thích nhãn pin module ESP-WROOM-32 ESP32 AI 41 Bảng 3.3 Chú thích nhãn pin cảm biến áp suất BME280 42 Bảng 3.4 Chú thích nhãn pin module đo điện AC PZEM-004T 43 Bảng 3.5 Chú thích nhãn pin Cảm biến vân tay AS608 44 Bảng 3.6 Chú thích nhãn pin màn hình LCD OLED 0.96inch 45 Bảng 3.7 Sơ đồ kết nối quét vân tay 45 Bảng 3.8 Sơ đồ kết nối màn hình 46 Bảng 3.9 Sơ đờ kết nối board điều khiển trung tâm 46 Bảng 3.10 Sơ đồ kết nối camera 46 Bảng 3.11 Chức table sở liệu 55 ➢ Trang quản lý nhân viên Hình 4.6 Trang quản lý ghi danh vân tay website - Được dùng để quản lý thêm sửa xóa ID vân tay quét Cho phép thêm và chỉnh sửa thông tin người dùng đăng ký theo từng vân tay ➢ Popup lọc, trích x́t thơng tin 59 Hình 4.7 Popup lọc, trích xuất nhật lý nhân viên website - Hỡ trợ lọc trích x́t quản lý thời gian vào nhân viên Lọc theo Ngày/Tháng/Năm, theo thời gian vào thời gian ra, theo ID vân tay, theo chức vụ và theo quét - Hỗ trợ xuất file excel để dễ dàng thực tác vụ khác ➢ Popup cài đặt cảnh báo Hình 4.8 Popup cài đặt cảnh báo thông số điện áp website - Hỗ trợ cài đặt thông số max thông số điện áp cần giám sát Phát vượt ngưỡng cho phép đã cài đặt và hiển thị thông báo giúp nhân viên thực việc bảo trì sửa chữa kịp thời 60 CHƯƠNG KẾT LUẬN 5.1 Kết quả đạt hạn chế giải pháp Vì là giải pháp mới, nên trình tìm hiểu và nghiên cứu nhóm chúng em đã gặp phải số khó khăn nhất định Nhưng với đam mê và với hướng dẫn nhiệt tình thầy cộng thêm nỡ lực tìm tịi, đam mê khám phá đã giúp cho nhóm chúng em đạt số kết sau: - Xây dựng mô hình văn phịng Xây dựng tởng quan giải thuật điều khiển Xây dựng sở liệu Xây dựng trang giám sát: nhiệt độ, độ ẩm, áp suất, điện áp, dịng điện, cơng śt, điện tiêu thụ, tần số, hệ số công suất Xây dựng trang điều khiển, giám sát thiết bị phịng việc: đèn, máy tính, máy lạnh… Xây dựng trang quản lý ghi danh vân tay Xây dựng giải thuật camera điều hướng Thu nhập, thống kê thơng tin người - vào Lọc trích xuất file để tiện quản lý Bên cạnh kết đã đạt nhóm chúng em nhận thấy thân giải pháp cịn tờn tại hạn chế như: - Chưa đồng toàn tài nguyên bên phần cứng vi điều khiển Quy trình thêm máy quét vân tay phải nạp code Bộ máy quét vân tay quét cục Giao diện dashboard chưa linh hoạt việc thêm thiết bị phòng mới, phải code thêm Hiện tại giải pháp chạy local host 5.2 Hướng cải tiến cho giải pháp Nhận thấy tiềm và hội phát triển cho giải pháp, chúng em có hướng cải tiến sau: - Tích hợp thiết bị phần cứng tạo thành module riêng biệt nhằm dễ dàng lắp đặt bất kì khơng gian nào Camera tích hợp xử lí ảnh để có thêm chứng nhận diện, phân tích và đưa kết tùy vào nhu cầu Lên danh sách chấm công, đánh giá chất lượng nhân viên Kết hợp thêm thẻ từ RFID Thêm phần tính tốn lượng điện tiêu thụ theo tháng 61 - Khả thêm máy quét trực tiếp setup thiết bị (không cần nạp code) Kết hợp Camera chuyên dụng, nâng cao chất lượng hình ảnh việc theo dõi giám sát 62 TÀI LIỆU THAM KHẢO https://thietbikythuat.com.vn/bms-la-gi-nhung-tinh-nang-co-ban-cua-he-thongbms/? fbclid=IwAR1GYBoBOrmn_jt9S8VesEKbRCO96JCr_koKdd6QL8Wf9zmkN FtH0RYcuZg https://www.thegioiic.com/products/lua-esp8266-nodemcu-ch340-wifimodule-iot https://hshop.vn/products/kit-rf-thu-phat-wifi-ble-esp32-cam https://nshopvn.com/product/module-do-dien-ac-pzem-004t-cong-pzct-02100a/ https://www.thegioiic.com/products/module-lcd-oled-0-96inch-128x64-chutrang-4-chan-giao-tiep-iic https://nshopvn.com/product/nguon-to-ong-12v-10a-power-supply/ https://www.thegioiic.com/products/as608-cam-bien-van-tay-do-phan-giai500-dpi-giao-tiep-uart https://www.thegioiic.com/products/wh-468-lm2596s-mach-on-ap-5v-5a https://www.thegioiic.com/products/module-4-led-ma-tran-8x8-max7219 10 https://www.thegioiic.com/product/mach-chuyen-doi-dc-dc-khong-vo 11 https://www.thegioiic.com/products/bme280-mach-cam-bien-ap-suat 12 https://dientutuonglai.com/chuan-giao-tiep-i2c-la-gi.html 13 https://dientutuonglai.com/chuan-giao-tiep-spi-la-gi.html 14 https://randomnerdtutorials.com/esp8266-pinout-reference-gpios/ 15 https://randomnerdtutorials.com/esp32-pinout-reference-gpios/ 16 https://linhkien.cxt.vn/2186-module-cam-bien-ap-suat-gy-bme280-33.html 17 https://innovatorsguru.com/wp-content/uploads/2019/06/PZEM-004T-V3.0Datasheet-User-Manual.pdf 18 https://electropeak.com/learn/interfacing-fpm10a-as608-optical-fingerprintreader-sensor-module-with-arduino/ 19 https://librepcb.discourse.group/t/oled-0-96-128x64-i2c/393 63 PHỤ LỤC CÂU LỆNH SQL ● Câu lệnh SQL Câu lệnh Giải thích SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET AUTOCOMMIT = 0; START TRANSACTION; SET time_zone = "+00:00"; Khởi tạo thiết lập ban đầu CREATE TABLE `admin` ( `id` int(11) NOT NULL, `admin_name` varchar(30) NOT NULL, `admin_email` varchar(80) NOT NULL, `admin_pwd` longtext NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Tạo bảng admin: - Cột ID kiểu liệu int, 11 ký tự, không rỗng - Cột admin_name kiểu liệu varchar, 30 ký tự, không rỗng - Cột admin_email kiểu liệu varchar, 80 ký tự, không rỗng - Cột admin_pwd kiểu liệu longtext, không rỗng Tất sử dụng bảng mã utf8 (bảng mã unicode) CREATE TABLE `devices` ( `id` int(11) NOT NULL, `device_name` nvarchar(50) NOT NULL, `device_dep` nvarchar(20) NOT NULL, `device_uid` text NOT NULL, `device_date` date NOT NULL, `device_mode` tinyint(1) NOT NULL DEFAULT '0' ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Tạo bảng devices: - Cột ID kiểu liệu int, 11 ký tự, không rỗng - Cột device_name kiểu liệu nvarchar, 50 ký tự không rỗng - Cột device_dep kiểu liệu nvarchar, 20 ký tự, không rỗng - Cột device_uid kiểu liệu text, không rỗng - Cột device_date kiểu liệu date, không rỗng - Cột device_mode kiểu liệu tinyint, ký tự, không rỗng, mặc định là Tất sử dụng bảng mã utf8 (bảng mã unicode) CREATE TABLE `users` ( `id` int(11) NOT NULL, `username` nvarchar(100) NOT NULL Tạo bảng users: - Cột ID kiểu liệu int, 11 ký tự, không rỗng 64 DEFAULT 'None', `serialnumber` double NOT NULL DEFAULT '0', `gender` nvarchar(10) NOT NULL DEFAULT 'None', `fingerprint_id` int(11) NOT NULL, `fingerprint_select` tinyint(1) NOT NULL DEFAULT '0', `user_date` date NOT NULL, `device_uid` varchar(20) NOT NULL DEFAULT '0', `device_dep` nvarchar(20) NOT NULL DEFAULT '0', `del_fingerid` tinyint(1) NOT NULL DEFAULT '0', `add_fingerid` tinyint(1) NOT NULL DEFAULT '0' ) ENGINE=InnoDB DEFAULT CHARSET=utf8; - Cột username kiểu liệu nvarchar, 100 ký tự, không rỗng, mặc định là - Cột serialnumber kiểu liệu double, không rỗng, mặc định là - Cột gender kiểu liệu nvarchar, 10 ký tự, không rỗng, mặc định là - Cột fingerprint_id kiểu liệu int, 11 ký tự, không rỗng - Cột fingerprint_select kiểu liệu tinyint, ký tự, không rỗng, mặc định là - Cột user_date kiểu liệu date, không rỗng - Cột device_uid kiểu liệu varchar, 20 ký tự, không rỗng - Cột device_dep kiểu liệu nvarchar, 20 ký tự, không rỗng - Cột del_fingerid kiểu liệu tinyint, ký tự, không rỗng, mặc định là - Cột add_fingerid kiểu liệu tinyint, ký tự, không rỗng, mặc định là Tất sử dụng bảng mã utf8 (bảng mã unicode) CREATE TABLE `users_logs` ( Tạo bảng users_logs: `id` int(11) NOT NULL, - Cột ID kiểu liệu int, 11 ký tự, `username` nvarchar(100) NOT NULL, không rỗng `serialnumber` double NOT NULL, - Cột username kiểu liệu `fingerprint_id` int(5) NOT NULL, nvarchar, 100 ký tự, không rỗng, `device_uid` varchar(20) NOT NULL, mặc định là `device_dep` nvarchar(20) NOT - Cột serialnumber kiểu liệu NULL, double, không rỗng, mặc định là `checkindate` date NOT NULL, `timein` time NOT NULL, - Cột fingerprint_id kiểu liệu `timeout` time NOT NULL, int, 11 ký tự, không rỗng `fingerout` tinyint(1) NOT NULL - Cột device_uid kiểu liệu DEFAULT '0' varchar, 20 ký tự, không rỗng ) ENGINE=InnoDB DEFAULT - Cột device_dep kiểu liệu CHARSET=utf8; nvarchar, 20 ký tự, không rỗng - Cột checkindate kiểu liệu date,không rỗng 65 - Cột timein kiểu liệu time, không rỗng - Cột timeout kiểu liệu time, không rỗng - Cột fingerout kiểu liệu tinyint, ký tự, không rỗng, mặc định là Tất sử dụng bảng mã utf8 (bảng mã unicode) CREATE TABLE `control` ( `id` int(11) NOT NULL, `bt1` int(10) UNSIGNED NOT NULL DEFAULT 0, `bt2` int(10) UNSIGNED NOT NULL DEFAULT 0, `bt3` int(10) UNSIGNED NOT NULL DEFAULT 0, `bt4` int(10) UNSIGNED NOT NULL DEFAULT 0, `bt5` int(10) UNSIGNED NOT NULL DEFAULT 0, `bt6` int(10) UNSIGNED NOT NULL DEFAULT ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Tạo bảng control: - Cột ID kiểu liệu int, 11 ký tự, không rỗng - Cột bt1, bt2, bt3, bt4, bt5, bt6 kiểu liệu int, 10 ký tự, số nguyên không âm, không rỗng, mặc định là Tất sử dụng bảng mã utf8 (bảng mã unicode) CREATE TABLE `feedback` ( `id` int(11) NOT NULL, `fb1` int(11) NOT NULL DEFAULT 0, `fb2` int(11) NOT NULL DEFAULT 0, `fb3` int(11) NOT NULL DEFAULT 0, `fb4` int(11) NOT NULL DEFAULT 0, `fb5` int(11) NOT NULL DEFAULT 0, `fb6` int(11) NOT NULL DEFAULT 0, `temp` float NOT NULL DEFAULT 0, `hum` float NOT NULL DEFAULT 0, `press` float NOT NULL DEFAULT 0, `dienap` float NOT NULL DEFAULT 0, `dongdien` float NOT NULL DEFAULT 0, `congsuat` float NOT NULL DEFAULT 0, `diennang` float NOT NULL Tạo bảng feedback: - Cột ID kiểu liệu int, 11 ký tự, không rỗng - Cột fb1, fb2, fb3, fb4, fb5, fb6 kiểu liệu int, 10 ký tự, không rỗng, mặc định là - Cột temp, hum, press, dienap, dongdien, congsuat, diennang, tanso, hscongsuat kiểu liệu float, không rỗng, mặc định là Tất sử dụng bảng mã utf8 (bảng mã unicode) 66 DEFAULT 0, `tanso` float NOT NULL DEFAULT 0, `hscongsuat` float NOT NULL DEFAULT ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `admin` (`id`, `admin_name`, `admin_email`, `admin_pwd`) VALUES (1, 'Admin', 'admin@gmail.com', '$2y$10$89uX3LBy4mlU/DcBveQ1l.32 nSianDP/E1MfUh.Z.6B4Z0ql3y7PK'); Thêm liệu vào bảng admin INSERT INTO `control` (`id`, `bt1`, `bt2`, `bt3`, `bt4`, `bt5`, `bt6`) VALUES (0, 0, 0, 0, 0, 0, 0); Thêm liệu vào bảng control INSERT INTO `feedback` (`id`, `fb1`, Thêm liệu vào bảng feedback `fb2`, `fb3`, `fb4`, `fb5`, `fb6`, `temp`, `hum`, `press`, `dienap`, `dongdien`, `congsuat`, `diennang`, `tanso`, `hscongsuat`) VALUES (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); ALTER TABLE `admin` ADD PRIMARY KEY (`id`); Trong bảng admin chọn ID làm khóa ALTER TABLE `devices` ADD PRIMARY KEY (`id`); Trong bảng devices chọn ID làm khóa ALTER TABLE `users` ADD PRIMARY KEY (`id`); Trong bảng users chọn ID làm khóa ALTER TABLE `users_logs` ADD PRIMARY KEY (`id`); Trong bảng users_logs chọn ID làm khóa ALTER TABLE `control` ADD PRIMARY KEY (`id`); Trong bảng control chọn ID làm khóa ALTER TABLE `feedback` ADD PRIMARY KEY (`id`); Trong bảng feedback chọn ID làm khóa ALTER TABLE `admin` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2; Thay đổi giá trị cập nhật dòng cột ID tự động tăng, cách 67 ALTER TABLE `devices` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; Thay đởi giá trị cập nhật dịng cột ID tự động tăng ALTER TABLE `users` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; Thay đổi giá trị cập nhật dòng cột ID tự động tăng ALTER TABLE `users_logs` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; Thay đổi giá trị cập nhật dòng cột ID tự động tăng COMMIT; Xác nhận phiên làm việc, chạy tất câu lệnh phía 68 CODE Arduino void loop() { if ((millis() - lastTime) > 1000) { if ((WiFi.status() == WL_CONNECTED)) { getData_recie(); postData_Send(); } else { Serial.printf("[HTTP} Unable to connect\n"); } lastTime = millis(); } } void getData_recie() { Serial.print("[HTTP] begin \n"); http.begin("http://192.168.0.103:8080/iot2021/getdevice.php?id=0"); Serial.print("[HTTP] GET \n"); // start connection and send HTTP header int httpCode = http.GET(); // httpCode will be negative on error if (httpCode > 0) { // HTTP header has been send and Server response header has been handled Serial.printf("[HTTP] GET code: %d\n", httpCode); // file found at server if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) { payload = http.getString(); // Serial.println(payload); } } else { Serial.printf("[HTTP] GET failed, error: %s\n", http.errorToString(httpCode).c_str()); } DynamicJsonDocument doc(1024); deserializeJson(doc, payload); uint8_t bt1 = doc["bt1"]; uint8_t bt2 = doc["bt2"]; 69 uint8_t bt3 = doc["bt3"]; uint8_t bt4 = doc["bt4"]; uint8_t bt5 = doc["bt5"]; uint8_t bt6 = doc["bt6"]; // Serial.println(bt1+bt2+bt3+bt4+bt5+bt6); if (bt1 == 1){ digitalWrite(LED1, 1); // > Turn off Led fb1 = "1"; } else{ digitalWrite(LED1, 0); // > Turn off Led fb1 = "0"; } if (bt2 == 1) { digitalWrite(LED2, 1); // > Turn off Led fb2 = "1"; } else{ digitalWrite(LED2, 0); // > Turn off Led fb2 = "0"; } if (bt3 == 1) { digitalWrite(LED3, 1); // > Turn off Led fb3 = "1"; } else{ digitalWrite(LED3, 0); // > Turn off Led fb3 = "0"; } if (bt4 == 1) { digitalWrite(LED4, 1); // > Turn off Led fb4 = "1"; } else{ digitalWrite(LED4, 0); // > Turn off Led fb4 = "0"; } if (bt5 == 1) { digitalWrite(LED5, 1); // > Turn off Led fb5 = "1"; } 70 else{ digitalWrite(LED5, 0); // > Turn off Led fb5 = "0"; } if (bt6 == 1) { digitalWrite(LED6, 1); // > Turn off Led fb6 = "1"; } else{ digitalWrite(LED6, 0); // > Turn off Led fb6 = "0"; } } void postData_Send() { postData = String("&fb1=") + fb1 + String("&fb2=") + fb2 + String("&fb3=") + fb3 + String("&fb4=") + fb4 + String("&fb5=") + fb5 + String("&fb6=") + fb6 + String("&temp=") + String(s11) + String("&hum=")+ String(s12) + String("&press=") + String(s13) + String("&dienap=")+ String(voltage) + String("&dongdien=") + String(current) + String("&congsuat=")+ String(power) + String("&diennang=") + String(energy, 3) + String("&tanso=")+ String(frequency, 1) + String("&hscongsuat=")+ String(pf); http.begin("http://192.168.0.103:8080/iot2021/esp-post.php"); // > Specify request destination http.addHeader("Content-Type", "application/x-www-form-urlencoded"); // > Specify content-type header int httpCodeSend = http.POST(postData); // > Send the request String payloadSend = http.getString(); // > Get the response payload // Serial.print("Response Code : "); // > If Response Code = 200 means Successful connection, if -1 means connection failed // Serial.println(httpCodeSend); // > Print HTTP return code // Serial.print("Returned data from Server : "); Serial.println(postData); // > Print request response payload/// http.end(); } 71 CODE Web