Thiết kế và thi công một mô hình điều khiển các thiết bị điện là các đèn trên ứng dụng điện thoại Android, Website thông qua mạng WiFi và Internet. Hơn nữa, hệ thống này có khả năng giám sát nhiệt độ, độ ẩm căn nhà, phát cảnh báo khi phát hiện khí gas rò rỉ, nhiệt độ phòng quá cao hoặc trộm đột nhập. Hệ thống có khả năng hoạt động được khi mất điện nhờ vào mạch chuyển sang Acqui dự phòng.
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 CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THƠNG ĐỀ TÀI: THIẾT KẾ, THI CƠNG MƠ HÌNH HỆ THỐNG ĐIỀU KHIỂN THIẾT BỊ ĐIỆN VÀ GIÁM SÁT NHÀ GVHD: PGS TS NGUYỄN THANH HẢI SVTH: Nguyễn Ngọc Lực MSSV: 14141183 Tp Hồ Chí Minh - 7/2018 TRƯỜNG ĐH SPKT TP HỒ CHÍ MINH KHOA ĐIỆN-ĐIỆN TỬ BỘ MƠN ĐIỆN TỬ CƠNG NGHIỆP – Y SINH CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM ĐỘC LẬP - TỰ DO - HẠNH PHÚC o0o -Tp HCM, ngày 16 tháng năm 2018 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Nguyễn Ngọc Lực MSSV: 14141183 Chuyên ngành: Hệ đào tạo: Khóa: Kỹ thuật Điện tử Truyền thơng Đại học quy 2014 Mã ngành: Mã hệ: Lớp: 41 14141DT I TÊN ĐỀ TÀI: THIẾT KẾ, THI CƠNG MƠ HÌNH HỆ THỐNG ĐIỀU KHIỂN THIẾT BỊ ĐIỆN VÀ GIÁM SÁT NHÀ II NHIỆM VỤ Các số liệu ban đầu: [1] Nguyễn Văn Lem, “Thiết kế xây dựng hệ thống mơ hình nhà thơng minh”, Đồ án tốt nghiệp, trường ĐHSPKT Tp.HCM, 2015 [2] Nguyễn Văn Hiệp – Đinh Quang Hiệp 2014, “Lập trình Android bản”, Đại Học SPKT HCM [3] Espressif Systems IOT Team, “ESP8266 Datasheet”, Espressif Systems, 2015 Nội dung thực hiện: - Tìm hiểu nhu cầu thực tiễn cơng nghệ đề tài - Tìm hiểu lý thuyết liên quan, giải pháp thiết kế hệ thống, thi cơng mơ hình điều khiển thiết bị điện - Tính tốn thiết kế hệ thống điều khiển - Thiết kế mơ hình, giải pháp điều khiển thiết bị, lập trình cho hệ thống - Đánh giá kết quả thực tiến tới hoàn thiện đề tài - Kết luận đề tài, đưa hướng phát triển tương lai III NGÀY GIAO NHIỆM VỤ: 20/3/2018 IV NGÀY HOÀN THÀNH NHIỆM VỤ: 15/7/2018 V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: PGS.TS Nguyễn Thanh Hải CÁN BỘ HƯỚNG DẪN BM ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ii TRƯỜNG ĐH SPKT TP HỒ CHÍ MINH KHOA ĐIỆN-ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM ĐỘC LẬP - TỰ DO - HẠNH PHÚC o0o Tp HCM, ngày 16 tháng năm 2018 LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Nguyễn Ngọc Lực Lớp: 14141DT2B MSSV:14141183 Tên đề tài: THIẾT KẾ, THI CƠNG MƠ HÌNH HỆ THỐNG ĐIỀU KHIỂN THIẾT BỊ ĐIỆN VÀ GIÁM SÁT NHÀ Tuần Tuần Tuần Tuần Tuần Nội dung Tìm hiểu cơng nghệ đề tài thực lý thuyết liên quan Tính tốn thiết kế sơ đồ khối hệ thống Tính tốn thiết kế sơ đồ nguyên lý mạch cần hệ thống, lựa chọn linh kiện cần thiết cho hệ thống Lập trình hệ thống báo động board điều khiển trung tâm Arduino Tuần Nghiên cứu, thiết kế website điều khiển Tuần Lập trình cho mô đun Wifi ESP8266 Node MCU Tuần Nghiên cứu, thiết kế phần mềm Android Tuần Chạy thử nghiệm hệ thống testboard, kit Tuần 9-10 Xác nhận GVHD Vẽ mạch in, thi công mạch in hệ thống Lắp ráp kiểm tra Tuần 11 Thiết kế mơ hình Tuấn 12 Đóng gói hệ thống chạy thử nghiệm Tuần 13Tuần 16 Chạy thử nghiệm cân chỉnh toàn hệ thống Đánh giá kết quả đạt được, viết báo cáo GV HƯỚNG DẪN iii LỜI CAM ĐOAN Đề tài tự thực dựa vào số tài liệu trước khơng chép từ tài liệu hay cơng trình có trước Người thực đề tài Nguyễn Ngọc Lực iv LỜI CẢM ƠN Nhóm chúng em xin gởi lời cảm ơn chân thành đến Thầy Cô Khoa Điện Điện Tử Trong thời gian học trường, Thầy Cô tận tình dạy bảo, truyền đạt cho nhóm em kiến thức, kinh nghiệm động lực trình học tập Em xin gởi lời cảm ơn sâu sắc đến Thầy Nguyễn Thanh Hải trực tiếp hướng dẫn tận tình giúp đỡ tạo điều kiện để hồn thành tốt đề tài Trong trình thực đồ án, Thầy ln tạo điều kiện có hướng dẫn giúp chúng em làm việc khoa học hiệu quả; giúp chúng em khơng hồn thành tốt đồ án mà có trải nghiệm, hình thành dần tác phong nghề nghiệp cho sau Em gửi lời đồng cảm ơn đến bạn lớp 14141DT chia sẻ trao đổi kiến thức kinh nghiệm quý báu thời gian thực đề tài Cảm ơn đến cha mẹ Xin chân thành cảm ơn! Người thực đề tài Nguyễn Ngọc Lực v MỤC LỤC Trang bìa i Nhiệm vụ đồ án ii Lịch trình iii Lời cam đoan iv Lời cảm ơn v Mục lục vi Liệt kê hình vẽ ix Liệt kê bảng 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 Tổng quan Internet of Things 2.1.1 Giới thiệu Internet of Things 2.1.2 Ứng dụng IoT 2.1.3 Đặc điểm công nghệ IoT 2.2 Tổng quan mạng WiFi 2.3 Giới thiệu Website, Webserver PHP 2.3.1 Giới thiệu Website 2.3.2 Máy chủ Web (Webserver) 2.3.3 Giới thiệu PHP 2.4 Giới thiệu tin nhắn SMS 2.5 Giới thiệu Android 2.6 Giới thiệu phần cứng vi 2.6.1 Vi điều khiển 2.6.2 Cảm biến nhiệt, độ ẩm DHT11 10 2.6.3 Mô đun cảm biến khí gas MQ2 11 2.6.4 Mô đun cảm biến chuyển động PIR HC – SR501 12 2.6.5 Mô đun WiFi ESP8266 Node MCU 13 2.6.6 Mô đun SIM900A 15 2.6.7 Giới thiệu LCD 16x2 15 2.6.8 Giới thiệu OPTO PC817 17 2.7 Chuẩn truyền thông UART 17 2.8 Phương thức GET 19 Chương TÍNH TỐN VÀ THIẾT KẾ 21 3.1 Giới thiệu 21 3.2 Tính tốn thiết kế hệ thống 21 3.2.1 Thiết kế sơ đồ khối hệ thống 21 3.2.2 Tính tốn thiết kế mạch 24 3.2.3 Sơ đồ nguyên lý toàn mạch 39 Chương THI CÔNG HỆ THỐNG 40 4.1 Giới thiệu 40 4.2 Thi công hệ thống 40 4.2.1 Mạch in lớp 40 4.2.2 Mạch in lớp 41 4.2.3 Sơ đồ bố trí linh kiện 42 4.3 Thi cơng mơ hình 44 4.4 Lập trình hệ thống 45 4.4.1 Lưu đồ giải thuật 45 4.4.2 Phần mềm lập trình cho Android 52 4.4.3 Phần mềm lập trình cho website 55 4.4.4 Phần mềm lập trình cho Arduino Node MCU 58 4.5 Tài liệu hướng dẫn sử dụng 59 Chương KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ 61 vii 5.1 Kết quả 61 5.2 Nhận xét, đánh giá 68 Chương KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 70 6.1 Kết luận 70 6.2 Hướng phát triển 70 TÀI LIỆU THAM KHẢO 71 DANH SÁCH TỪ VIẾT TẮT 732 PHỤ LỤC 73 viii LIỆT KÊ HÌNH VẼ Hình Trang Hình 2.1 Board Arduino mega 2560 Hình 2.2 Mô đun cảm biến DHT11 10 Hình 2.3 Mơ đun cảm biến khí gas MQ2 11 Hình 2.4 Mơ đun cảm biến chuyển động HC SR501 12 Hình 2.5 Sơ đồ chân cảm biến HC SR501 13 Hình 2.6 Sơ đồ chân Node MCU 14 Hình 2.7 Hình ảnh mơ đun SIM900A 15 Hình 2.8 Sơ đồ chân LCD 16x2 16 Hình 2.9 Opto PC817 17 Hình 2.10 Giản đồ truyền liệu UART 19 Hình 3.1 Sơ đồ khối hệ thống 22 Hình 3.2 Sơ đồ nguyên lí mạch điều khiển board Arduino 25 Hình 3.3 Sơ đồ ngun lí nối dây mơ đun Node MCU 26 Hình 3.4 Sơ đồ nối dây mô đun SIM900A 27 Hình 3.5 Sơ đồ nguyên lí khối cảm biến 28 Hình 3.6 Sơ đồ ngun lí mạch kích Relay 29 Hình 3.7 Đặc tuyến điện áp ngõ VCE dòng phân cực IF 30 Hình 3.8 Mạch ngun lí kích hoạt Relay 30 Hình 3.9 Giao diện quản lí website sau đăng nhập 32 Hình 3.10 Giao diện website thiết kế DATN 33 Hình 3.11 Sơ đồ khối cấu tạo hệ thống website 34 Hình 3.12 Sơ đồ hoạt động ứng dụng Android 35 Hình 3.13 Sơ đồ ngun lí mạch nguồn 37 Hình 4.1 Mạch in lớp 40 Hình 4.2 Mạch in lớp 41 Hình 4.3 Sơ đồ bố trí linh kiện 42 Hình 4.4 Mơ hình ĐATN 44 Hình 4.5 Lưu đồ mạch điều khiển Arduino 47 Hình 4.6 Lưu đồ chương trình xử lí điện 47 ix Hình 4.7 Lưu đồ chương trình nhận trạng thái đèn từ Node MCU 48 Hình 4.8 Lưu đồ chương trình xử lí tin nhắn đến 49 Hình 4.9 Lưu đồ gửi tin nhắn phản hồi 50 Hình 4.10 Lưu đồ chương trình cho Node MCU 51 Hình 4.11 Giao diện phần mềm Android Studio 52 Hình 4.12 Giao diện ứng dụng Android ĐATN 54 Hình 4.13 Vị trí file MainActivity.java activity_main.xml 54 Hình 4.14 Tạo file php 56 Hình 4.15 Giao diện ứng dụng DW 56 Hình 4.16 Mơ tả board mạch hệ thống 60 Hình 5.1 Board mạch điều khiển 62 Hình 5.2 Mơ hình ĐATN 63 Hình 5.3 Trạng thái đèn, giá trị nhiệt độ độ ẩm hiển thị LCD 64 Hình 5.4 Giao diện website điều khiển 64 Hình 5.5 Giao diện ứng dụng Android 65 Hình 5.6 Cảm biến chuyển động lắp cửa vào nhà 66 Hình 5.7 Mơ đun Sim gửi tin nhắn cảnh báo trộm 67 Hình 5.8 Cảm biến khí gas lắp phòng bếp 67 Hình 5.9 Tin nhắn cảnh báo có khí gas rò rỉ 68 Hình 5.10 Tin nhắn nhận bị cúp điện 220VAC 68 Hình 5.11 Tin nhắn nhận có điện trở lại 68 x CHƯƠNG KẾT QUẢ - NHẬN XÉT – ĐÁNH GIÁ gửi tin nhắn trường hợp có cố: rò rỉ gas, đột nhập, nhiệt độ cao Có còi buzzer báo động kêu to, rõ Lập trình cho hệ thống hoạt động ổn định qua nhiều lần kiểm tra, xử lý triệt để tình mạch hoạt động sai so với yêu cầu Hệ thống điều khiển từ xa giao diện ứng dụng điện thoại trang web dễ dàng sử dụng Cảm biến hoạt động xác, đáp ứng trường hợp cố nhanh, hiệu quả Tuy nhiên tồn nhiều điểm yếu chưa khắc phục Chẳng hạn ĐATN không phát triển tính bảo mật hệ thống BỘ MƠN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 69 CHƯƠNG CƠ SỞ LÝ THUYẾT Chương KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 6.1 KẾT LUẬN Sau thời gian tìm hiểu, nghiên cứu thực mơ hình, nhiệm vụ đề tài bản hoàn thành Bằng cố gắng bản thân, học hỏi từ Thầy Cơ, bạn bè, nhóm hoàn thành đề tài, đạt yêu cầu đặt thiết kế thi cơng mơ hình điều khiển thiết bị điện qua website ứng dụng, có hệ thống cảnh báo qua tin nhắn, hệ thống cảm biến Đề tài hoàn thành cụ thể: Kết quả thi cơng hồn thiện Hệ thống chạy tương đối ổn định Độ phản hồi hệ thống cảnh báo cố tương đối nhanh Giao diện web ứng dụng Android thân thiện, dễ sử dụng Điều khiển thiết bị tương đối nhanh Board mạch điều khiển thiết kế gọn hợp lý, dễ sửa chữa Có thiết kế mạch chuyển sang dùng Acqui dự trữ trường hợp điện Có khả báo điện qua tin nhắn 6.2 HƯỚNG PHÁT TRIỂN Để đảm bảo ổn định, độ bền tính thực tế cho sản phẩm, nhóm có kiến nghị hướng phát triển hệ thống sau: - Thêm hệ thống camera giám sát từ xa, tích hợp nhận diện khuôn mặt phát người lạ đột nhập - Tăng tính bảo mật, xây dựng trang đăng nhập vào hệ thống - Tích hợp trợ lý ảo giúp thực yêu cầu, xây dựng smarthome BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 70 TÀI LIỆU THAM KHẢO TÀI LIỆU THAM KHẢO Sách tham khảo [1] Nguyễn Đình Phú, “Giáo trình vi xử lý II”, NXB ĐH Quốc Gia Tp.HCM, 2007 [2] Nguyễn Văn Lem, “Thiết kế xây dựng hệ thống mơ hình nhà thơng minh”, Đồ án tốt nghiệp, trường ĐHSPKT Tp.HCM, 2015 [3] Trần Thu Hà, “Điện tử bản”, NXB ĐH Quốc Gia Tp.HCM, 2013 [4] Nguyễn Văn Hiệp, Đinh Quang Hiệp, “Lập trình Android bản”, NXB ĐH Quốc Gia Tp.HCM, 2015 Trang web tham khảo [1] Nguyên An, “ACIS Smart Home người lĩnh ấn tiên phong giải pháp nhà thông minh Việt Nam”,2017 https://acis.com.vn/acis-smart-home-nguoi-linh-tien-phong-trong-giai-phap-nhathong-minh-viet-nam/ [2] Nguyễn Sỹ Thanh Sơn, “Đo nhiệt độ, độ ẩm gửi liệu lên cloud”, 2016 “https://www.linkedin.com/pulse/ngày-thứ-2-học-iot-đo-nhiệt-độ-ẩm-và-gửi-dữliệu-lên-cloud-thanh-son” [3] Modi, “Internet controlled led using Node MCU”,2017 http://www.instructables.com/id/Internet-Controlled-LED-Using-NodeMCU/ [4] Nguyễn Linh, “Giới thiệu hệ điều hành Android”, 2015 https://androidcoban.com/gioi-thieu-ve-dieu-hanh-android.html BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 71 TÀI LIỆU THAM KHẢO DANH SÁCH TỪ VIẾT TẮT Tên từ viết tắt Tên đầy đủ ĐATN Đồ Án Tốt Nghiệp IoT Internet of Things ĐH Đại học UART Universal Asynchronous Receiver – Transmitter HTTP Hypertext Transfer Protocol SMS Short Message Services PHP Hypertext Preprocessor BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 72 PHỤ LỤC PHỤ LỤC Code chương trình cho board Arduino: #include #include #include #include "DHT.h" LiquidCrystal lcd(37, 36, 32, 33, 34, 35); #define MATNGUON 23 // chân báo nguồn #define btn2 //nut tat chuong bao #define relay 13 // buzzer int addr = 0; #define led_enable 12 // led báo kích hoạt chống trộm const int DHTPIN = 2; //Đọc liệu từ DHT11 chân mạch Arduino const int DHTTYPE = DHT11; //Khai báo loại cảm biến, có loại DHT11 DHT22 DHT dht(DHTPIN, DHTTYPE); int CHAY = 0;// có cháy =1 ; khơng cháy =0 int TROM = 0;// có trộm =1 ; không trộm =0 int GAS = 0; // có gas =1 ; khơng gas =0 int i = 0;//bien dung de dem so lan gui tin nhan int j = 0; //bien dung cho nut nhan int TT = 0; //biến GAS int TT1 = 0;// biến PIR int TT2 = 0; // báo Cháy DHT11 int KH = 0; //bien kich hoat che bao trom int MN = 0; // biến báo nguồn int t=0; int h=0; int Sgas = A0; int Spir = A1; int address = 0; int BTN_ENA; int BTN_chuong; String textMessage, den; SoftwareSerial SIM900(10, 9);// RX, TX void btn_reset() { TT=0; TT1=0; TT2=0; i=0; KH=0; CHAY=0; GAS=0; TROM=0; digitalWrite(led_enable, LOW); //Serial.println("da tat bao dong"); digitalWrite(relay, LOW); } void btn_enable() { j++; if (j>1) { j=0;} if (j==0) {KH=0;digitalWrite(led_enable, LOW);} if (j==1) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 73 PHỤ LỤC {KH=1;digitalWrite(led_enable, HIGH);} } void setup() { Serial.begin(9600); //Mở cổng Serial để giap tiếp lcd.begin(16, 2);//Thông báo LCD 1602 dht.begin(); // Khởi động cảm biến pinMode(relay, OUTPUT); pinMode(led_enable, OUTPUT); pinMode(btn2, INPUT); //Cài đặt chân D4 trạng thái đọc liệu pinMode(MATNGUON, INPUT); // Cài đặt chân 22 trạng thái đọc liệu digitalWrite(relay, LOW);// chuong bao digitalWrite(led_enable, LOW);//led bao enable che bao trom attachInterrupt(1, btn_enable, RISING); attachInterrupt(3, btn_reset, HIGH); SIM900.begin(9600); xulymatdien(); } void loop() { float t = dht.readTemperature(); float h = dht.readHumidity(); int value = analogRead(Sgas); cảm biến GAS int value1 = analogRead(Spir); hienthi(t, h); Serial.print('D'); Serial.print(round(t)); Serial.print('!'); Serial.print('E'); Serial.print(round(h)); Serial.print('%'); //Đọc nhiệt độ //Đọc độ ẩm //đọc giá trị điện áp chân A0 - chân // PIR if (t>35){ CHAY = 1;} else CHAY = 0; if (value>50) {GAS = 1; } else GAS = 0; if (value1>500) {TROM = 1;} else TROM=0; //////////////////////////////////////////////////////////////////// if (GAS==1) {TT=1;//trang thai tam //Serial.print("co GAS"); digitalWrite(relay, HIGH); i++;//dem de gui tin nhan lan } else if ((TROM)&(KH))//chi bao trom da kich hoat che bao trom {TT1=1;//trang thai tam digitalWrite(relay, HIGH); //Serial.print("co trom"); i++;//dem de gui tin nhan lan } else if (CHAY==1) {TT2=1;//trang thai tam //Serial.print("co CHAY"); digitalWrite(relay, HIGH); i++;//dem de gui tin nhan lan BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 74 PHỤ LỤC } //////////////////////////////////////////////////////////// if ((TT)&(i==1))//gui tin nhan bao RÒ GAS chi lan { sendSMS("PHAT HIEN CO KHI GAS");//bo dau comment de gui tin nhan i++;} else if ((TT1)&(i==1))//gui tin { sendSMS("PHAT HIEN TROM"); i++;} else if ((TT2)&(i==1))//gui tin { sendSMS("PHAT HIEN CHAY"); i++;} nhan bao trom nhan bao cháy ///////////////////////////////////////////////////////////// if(SIM900.available()>0){//doc tin nhan textMessage = SIM900.readString(); //Serial.print(textMessage); delay(10); } if(textMessage.indexOf("Kichhoat")>=0){ KH=1; digitalWrite(led_enable, HIGH); j=1; textMessage = ""; } /////////////////////////////////////// if(textMessage.indexOf("Huy")>=0){ KH=0; j=0; digitalWrite(led_enable, LOW); textMessage = ""; } if(textMessage.indexOf("Tat")>=0){ TT=0; TT1=0; TT2=0; i=0; KH=0; CHAY=0; GAS=0; TROM=0; digitalWrite(led_enable, LOW); //Serial.println("da tat bao dong"); digitalWrite(relay, LOW); } if(den.indexOf("one")>=0) { lcd.setCursor(3, 0); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 75 PHỤ LỤC lcd.print("ON "); } if(den.indexOf("two")>=0) { lcd.setCursor(3, 0); lcd.print("OFF"); } while (Serial.available()) { den = Serial.readStringUntil('\R'); } if(den.indexOf("three")>=0) { lcd.setCursor(10, 0); lcd.print("ON "); } if(den.indexOf("four")>=0) { lcd.setCursor(10, 0); lcd.print("OFF"); } if(den.indexOf("five")>=0) { lcd.setCursor(3, 1); lcd.print("ON "); } if(den.indexOf("six")>=0) { lcd.setCursor(3, 1); lcd.print("OFF"); } if(den.indexOf("seven")>=0) { lcd.setCursor(10, 1); lcd.print("ON "); } if(den.indexOf("eight")>=0) { lcd.setCursor(10, 1); lcd.print("OFF"); } } //////////////////////////////////////////////////////////////// void sendSMS(String message){ SIM900.println("AT+CMGF=1"); delay(1000); SIM900.println("AT+CMGS=\"+841678532566\"\r"); delay(1000); SIM900.println(message); delay(1000); SIM900.println((char)26); delay(100); SIM900.println(); } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 76 PHỤ LỤC ///////////////////////////////////////////////////////// void hienthi(int t, int h){ lcd.setCursor(0, 0);// cột dòng lcd.print("D0:"); lcd.setCursor(7, 0);// cột dòng lcd.print("D1:"); lcd.setCursor(0, 1);// cột dòng lcd.print("D2:"); lcd.setCursor(7, 1);// cột dòng lcd.print("D3:"); lcd.setCursor(14, 0);// cột dòng lcd.print(t); lcd.setCursor(14, 1);// cột dòng lcd.print(h); } void xulymatdien() {int buttonStatus = digitalRead(MATNGUON); int L = EEPROM.read(addr); delay(500); EEPROM.write(addr,buttonStatus); delay(500); if((L!=buttonStatus)&&(buttonStatus==1)) sendSMS("CO DIEN TRO LAI"); if((L!=buttonStatus)&&(buttonStatus==0)) sendSMS("BI MAT DIEN"); } Code cho Node MCU: #include #include #define RELAY0 14 #define RELAY1 12 #define RELAY2 13 #define RELAY3 String nd_da = ""; String line = ""; boolean stringComplete= false; //UART Nhan; uint8_t t=0; uint8_t h=0; const char* ssid = "Charlie Nguyen"; const char* password = "ngocluc96"; WiFiClient client; void setup(void) { Serial.begin(9600); //Nhan.begin(9600); pinMode(RELAY0, OUTPUT); pinMode(RELAY1, OUTPUT); pinMode(RELAY2, OUTPUT); pinMode(RELAY3, OUTPUT); pinMode(16, OUTPUT); digitalWrite(RELAY0, HIGH); digitalWrite(RELAY1, HIGH); digitalWrite(RELAY2, HIGH); digitalWrite(RELAY3, HIGH); digitalWrite(16, LOW); //Serial.println("Humidity and temperature\n\n"); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 77 PHỤ LỤC delay(700); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000);} digitalWrite(16, HIGH);//led bao hieu ket noi wifi cong } digitalWrite(16, HIGH);//led bao hieu ket noi wifi cong } void loop() { //nhan_du_lieu(&t, &h); serialEvent(); if (stringComplete) { String giatriA = nd_da.substring(nd_da.indexOf("D") + 1, nd_da.indexOf("!")); t = giatriA.toInt(); String giatriB = nd_da.substring(nd_da.indexOf("E") + 1, nd_da.indexOf("%")); h = giatriB.toInt(); nd_da = ""; stringComplete = false; } if (WiFi.status() == WL_CONNECTED) { HTTPClient http; //Declare an object of class HTTPClient if (client.connect("huynhthan1996.000webhostapp.com",80)) { client.print(String("GET /load.php?") + "field1=" + String(t) + "&field2=" + String(h) + " HTTP/1.1\r\n" + "Host: " + "huynhthan1996.000webhostapp.com" + "\r\n" + "Connection: close\r\n\r\n"); delay(500); while (client.available()) { char bufer = client.read(); line+=bufer; } Serial.print(line); if(line.indexOf("one")!=-1) { digitalWrite(RELAY0, LOW); } else if(line.indexOf("two")!=-1) { digitalWrite(RELAY0, HIGH); } if(line.indexOf("three")!=-1) { digitalWrite(RELAY1, LOW); } else if(line.indexOf("four")!=-1) { digitalWrite(RELAY1, HIGH); } if(line.indexOf("five")!=-1) { digitalWrite(RELAY2, LOW); } else if(line.indexOf("six")!=-1) { digitalWrite(RELAY2, HIGH); } if(line.indexOf("seven")!=-1) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 78 PHỤ LỤC { digitalWrite(RELAY3, LOW); } else if(line.indexOf("eight")!=-1) { digitalWrite(RELAY3, HIGH); } line=""; } } } void serialEvent() { while (Serial.available()) { char inChar2 = (char)Serial.read(); nd_da += inChar2; if (inChar2 == '%') { stringComplete = true; } } } Code để tạo label hiển thị độ ẩm: Code để tạo nút nhấn: Code để xử lý kiện nút nhấn nhấn: BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 79 PHỤ LỤC Nút nhấn nhấn gửi trạng thái đèn phương thức GET đến trang dkden.php public void onClick(){ btOff.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mClient.get(url: DEN + STATE_OFF, new TextHttpResponseHandler() { @Override public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) { Toast.makeText(MainActivity.this, responseString, Toast.LENGTH_SHORT).show(); } } } Code đọc liệu gửi từ trang web: public void receiveData(){ AsyncHttpClient DoAm = new AsyncHttpClient(); DoAm.get(DO_AM, new TextHttpResponseHandler() { @Override public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) { Toast.makeText(MainActivity.this, "Fail", Toast.LENGTH_SHORT).show(); } Chương trình load :