Đề tài: Điều khiển và giám sát thiết bị điện trong nhà bằng điện thoại Android qua sóng Bluetooth và Modul Sim900A kết hợp với mạng Ethernet. Đây là mô hình cực kỳ hay, khi ở trong nhà có thể dùng smartphone điều khiển và giám sát trạng thái thiết bị qua sóng bluetooth, hoặc qua mạng lan thông qua một giao diện web( vì có nhiều chế độ điều khiển, có thể bằng tay hay điều khiển qua smartphone nên khi điều khiển bằng tay thì trạng thái thiết bị vẫn được cập nhật), hoặc điều khiển thiết bị thông qua tin nhắn thông qua sóng điện thoại. Ngoài ra thiết bị còn có thể giám sát nhiệt độ, khí gas, phát hiện trộm và cảnh báo báo động thông qua loa và tin nhắn từ xa ( hệ thống này có thể chỉ bật hoặc tắt thông qua thiết bị điều khiển như đã nói ở trên để phòng trừ báo trộm nhầm)
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN ĐỒ ÁN TỐT NGHIỆP Tên đề tài: ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ ĐIỆN TRONG NHÀ BẰNG ĐIỆN THOẠI ANDROID QUA SÓNG BLUETOOTH VÀ MODUL SIM900A KẾT HỢP VỚI MẠNG ETHERNET Sinh viên thực Lớp Chuyên ngành Giáo viên hướng dẫn Giáo viên duyệt ĐÀ NẴNG, 2016 : Lê Việt : 11D3 : Tự động hóa : GVC Nguyễn Mạnh Hà : T.S Nguyễn Quốc Định TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc oOo -oOo- - NHIỆM VỤ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên : Lê Việt Lớp : 11D3 Khoa : Điện Ngành : Kỹ thuật Điện (Tự động hóa) Đề tài: Điều khiển giám sát thiết bị điện nhà điện thoại Android qua sóng Bluetooth Modul Sim900A kết hợp với mạng Ethernet Nội dung: - Chương 1: TỔNG QUAN VỀ NHÀ THÔNG MINH - Chương 2: CÁC THIẾT BỊ DÙNG TRONG ĐỀ TÀI - Chương 3: THIẾT KẾ HỆ THỐNG - Chương 4: KẾT QUẢ THỰC NGHIỆM VÀ PHÂN TÍCH Giáo viên hướng dẫn: GVC Nguyễn Mạnh Hà Giáo viên duyệt : T.S Nguyễn Quốc Định Ngày giao đề tài : 31/1/2016 Ngày nộp đề tài : 23/5/2016 Ngày … tháng … năm 2016 Thông qua môn (ký ghi rõ họ tên) Ngày … tháng … năm 2016 Giáo viên duyệt (ký ghi rõ họ tên) TS Trương Thị Bích Thanh Ngày … tháng … năm 2016 Giáo viên hướng dẫn (ký ghi rõ họ tên) Ngày… tháng … năm 2016 Sinh viên thực (ký ghi rõ họ tên) GVC Nguyễn Mạnh Hà Đoàn Vương Quốc Lê Việt Đà Nẵng, ngày … tháng … năm 2016 CHỦ TỊCH HỘI ĐỒNG BẢO VỆ (ký ghi rõ họ tên) LỜI CẢM ƠN Trong trình thực đề tài, chúng em cố gắng nhiều song thời gian thực đề tài có hạn số hạn chế việc tìm hiểu tài liệu liên quan nên chắn tránh khỏi thiếu sót, mong đóng góp ý kiến chân thành quý Thầy Cô bạn bè để đồ án em hoàn thiện Em xin gửi lời cảm ơn sâu sắc tới thầy Nguyễn Mạnh Hà Thầy trực tiếp hướng dẫn, theo sát, bảo chúng em bước, kịp thời cách nhiệt tình từ bắt đầu đồ án hoàn thành đồ án Em xin chân thành cảm ơn quý Thầy Cô Khoa Điện trường Đại học Bách Khoa truyền thụ kiến thức suốt thời gian học tập trường Đà Nẵng, tháng 23 tháng 05 năm 2016 Người thực Lê Việt LỜI MỞ ĐẦU Trong năm gần đây, nhà thông minh (smart home) xuất ứng dụng rộng rãi sống từ khách sạn hay resort sang trọng nhà đại lắp đặt hệ thống điều khiển thông minh Theo xu hướng phát triển đó, em định lựa chọn thực nghiên cứu đề tài: “Điều khiển giám sát thiết bị điện nhà điện thoại Android qua sóng Bluetooth Modul Sim900A kết hợp với mạng Ethernet” Ngoài việc hoàn thành đồ án tốt nghiệp với công việc có ý nghĩa sâu sắc sinh viên thực Một lần sinh viên thực hành kiến thức học từ ghế nhà trường giúp hình thành sản phẩm công nghiệp, sử dụng, cầm tay lắp cảm biến mà từ trước nằm trang giấy Trong trình tiến hành không gặp khó khăn vấp phải, kích thích sinh viên tư để tìm phương án tối ưu trao đổi thảo luận với thầy cô, bạn bè Tuy nhiên hạn chế kinh nghiệm thực tế thời gian thực nên việc giải đề tài tránh khỏi thiếu sót Do mong bảo thêm quý thầy cô đóng góp bạn sinh viên MỤC LỤC MỤC LỤC 1.1.1 Tổng quan tình hình nghiên cứu MỤC LỤC HÌNH Hình 1.1: Biệt thự Oceanfront California Hình 1.2: Biệt thự Cape Cod Cotuit, Massachusetts Hình 1.3: Biệt thự tháp Clock Brooklyn, New York Hình 1.4: Biệt thự Tuxedo Park Atlanta, Georgia Hình 1.5: Nhà thông minh Bkav SmartHome khu đô thị PMH TP Hồ Chí Minh Hình 1.6: Trung tâm hành Đà Nẵng Hình 2.1: Những thành viên khởi xướng Arduino 13 Hình 2.2 Board Arduino Uno 14 Hình 2.3: Module Sim 900A .18 Hình 2.4: Sơ đồ chân Sim900A 20 Hình 2.6: Ảnh thực tế module Ethernet dung chip Wiznet W5100 24 Hình 2.7: sơ đồ kết nối module Ethernet với MCU 24 Hình 2.8: Màn hình LCD 16x02 24 Hình 2.9: Sơ đồ chân hình ảnh thực tế bàn phím ma trận 4x4 26 Hình 2.10: Đầu dò PIR D203B lăng kính Fresne 26 Hình 2.11: Sơ đồ hoạt động cảm biến PIR 27 Hình 2.12: Cảm biến khí gas MQ2 sơ đồ chân .28 Hình 2.13: Cảm biến ánh sáng quang trở 28 Hình 2.14: khối relay .30 Hình 2.15: Hình ảnh thực tế cảm biến mưa .31 Hình 2.16: Cảm biến nhiệt độ LM 35 32 Hình 2.17: Module Chuyển Đổi I2C cho LCD1602 chuyển Đổi I2 33 Hình 2.18: Động Servo SG 90 33 Hình 2.19: Cách kết nối động SG90 .33 Hình 2.20: Loa Hình 2.21: Modul ổn áp LM 2596 .34 Hình 3.1: Sơ đồ khối đề tài 35 Hình 3.2: Khối xử lý trung tâm 36 Hình 3.2: Khối Modul Sim900A 37 Hình 3.3: Giao tiếp Modul Sim900A Modul Slave1 37 Hình 3.4: LCD I2C Adaptor .37 Hình 3.5: Mạch thực tế khối Relay Output .38 Hình 3.6: Nguồn Adapter 12V 2A .38 Hình 3.7: Giao tiếp Module Bluetooth Module Master 39 Hình 3.8: Khối Module Ethernet TP-LINK720N .40 Hình 3.9: Giới thiệu MIT App Inventor 41 Hình 3.10 : Phần mềm lập trình MIT App Inventor 42 Hình 3.11: Giao diện HMI điện thoại Android 43 Hình 3.12: Phần mềm ARDUINO IDE 1.5.4 .43 Hình 3.13: Giao diện HMI qua websever 44 Hình 3.14: Sơ đồ tổng quát hệ thống điện tử mô hình 45 Hình 3.15: Thuật toán tổng quát chương trình 47 Hình 3.16: Thuật toán điều khiển điện thoại 49 Android qua sóng Bluetooth 49 Hình 3.17: Lưu đồ giám sát nhiệt độ .50 Hình 3.18: Thuật toán tổng quát Modul Slave1 51 Hình 3.19: Thuật toán gửi tin nhắn SMS điều khiển thiết bị .52 Hình 3.20: Thuật toán xử lý SMS từ master gửi có báo động 53 Hình 3.21: Thuật toán tổng quát Modul slave2 54 Hình 3.22: Lưu đồ chương trình điều khiển cửa password .55 Hình 3.23: Thiết kế thi công phần cứng nhà 56 Hình 3.24 : Mô hình thực tế nhìn từ cao xuống 56 Hình 3.25 : Khối xử lý trung tâm nhà 57 LIỆT KÊ BẢNG Bảng 1.1: Thông số Arduino UNO R3 16 Bảng 1.2: Sơ đồ chân LCD .25 Bảng 1.3: Thông số Modul ổn áp LM2596 DC-DC .34 Bảng 1.4: Bảng icon chức phần mềm Arduino IDE .43 Bảng 3.1: Bảng chức Module 46 if(c=='H') { phoido.write(180); } if(c=='h') { phoido.write(0); } //dk quạt if(c=='F') { digitalWrite(quat,HIGH); } if(c=='f') { digitalWrite(quat,LOW); } //==========================gán==================== table1[0]=temp; table1[1]=map(read_sensor_pir,0,1023,0,255); table1[2]=map(read_sensor_gas,0,1023,0,255); table1[3]=map(read_sensor_mua,0,1023,0,255); table1[4]=s; } //============gửi chủ có yêu cầu====== void requestEvent(){ uint8_t Buffer[5]; Buffer[0]=table1[0];// nhiet Buffer[1]=table1[1];//pir khach Buffer[2]=table1[2];//gas Buffer[3]=table1[3];//mua Buffer[4]=table1[4];//ký tự Wire.write(Buffer,5); } //=============nhận từ chủ=================// void receiveEvent(int howMany) { while(Wire.available()){ c = Wire.read(); }} PHỤ LỤC III: MÃ NGUỒN CHƯƠNG TRÌNH SLAVE * doc gia tri key pad * doc tat ca cam bien gui ve master * nhan gia tri cua master de dieu khien den tam voi cua #include #include #include Servo servocua; int den_tam =2; int sensor_pir = A0; int sensor_as_tam = A1; int sensor_as_trom1 = A2; int sensor_as_trom2 = A3; int s;// ký tự gửi int c;// ký tự nhận int table2[]={0,0,0,0,0};// biến mảng //========================phần keypad===========// char* password = "123ABCD"; int position = 0; const byte ROWS = 4; const byte COLS = 4; char keys[ROWS][COLS] = { {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'}}; byte rowPins[ROWS] = { 10, 9, 8, }; byte colPins[COLS] = { 6, 5, 4, }; Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); void setup(){ Serial.begin(9600); servocua.attach(11); servocua.write(0); pinMode(den_tam,OUTPUT); digitalWrite(den_tam,LOW); Wire.begin(2); Wire.onRequest(requestEvent); Wire.onReceive(receiveEvent); } void loop(){ //delay(100); table2[0]=map(analogRead(sensor_pir),0,1023,0,255); table2[1]=map(analogRead(sensor_as_tam),0,1023,0,255); table2[2]=map(analogRead(sensor_as_trom1),0,1023,0,255); table2[3]=map(analogRead(sensor_as_trom2),0,1023,0,255); table2[4]=s;//gửi ký tự s_key //==================== xử lý keypad========= // char key = keypad.getKey(); if (key == '*' || key == '#') { position = 0; s='l'; } if (key == password[position]) { position ++;} if (position == 7) { s='L';V //=====thuc hien yeu cau tu master gửi đến====// if(c=='E') { digitalWrite(den_tam,HIGH); c=0; } if(c=='e') { digitalWrite(den_tam,LOW); c=0; } if(c=='C') { servocua.write(180); c=0; } if(c=='c') { servocua.write(0); c=0; }} void requestEvent(){ uint8_t Buffer[5]; Buffer[0]=table2[0];//pir Buffer[1]=table2[1];//tam Buffer[2]=table2[2];//trom1 Buffer[3]=table2[3];//trom2 Buffer[4]=table2[4];//ky tự tt key Wire.write(Buffer,5); } void receiveEvent(int howMany) { while(Wire.available()){ c = Wire.read();V PHỤ LỤC IV: MÃ NGUỒN CHƯƠNG TRÌNH SLAVE #include #include #include int r; int s; int table3[]={0}; // trang thai ban dau cua cac tran dieu khien boolean s_bep =false; boolean s_ngu =false; boolean s_tam =false; boolean s_phoido =false; boolean s_quat_khach =false; boolean s_den_khach =false; boolean s_cua =false; boolean s_gara =false; boolean s_anninh =false; boolean s_dk =false; boolean s_dk_tam =false; boolean s_dk_phoi =false; boolean s_dk_quat =false; boolean s_dk_cua =false; String readString; char c; // khai bao dia chi MAC va dia chi IP cho Arduino byte mac[] = { 0x14, 0xA5, 0x2E, 0x5F, 0x9E, 0x7C}; byte subnet[] = { 255, 255, 252, }; IPAddress ip(10, 155, 249, 151);// đặt lại EthernetServer server(80); void setup() { Wire.begin(3); Wire.onReceive(receiveEvent); Wire.onRequest(requestEvent); Serial.begin(9600); while (!Serial) {} Ethernet.begin(mac, ip); server.begin();} void loop() { //========bếp======= if(r=='B') { s_bep= true; r=0; Serial.println("da nhan roi"); delay(100); } else { if(r=='b') { s_bep= false; r=0; Serial.println("da thoat roi"); delay(100);} //========ngủ============// else { if(r=='N') { s_ngu= true; r=0; } else{ if(r=='n') { s_ngu= false; r=0; } //========tắm===============// else { if(r=='T') { s_tam= true; r=0; } else { if(r=='t') { s_tam= false; r=0; } //========phơi đồ========== else{ if(r=='P') { s_phoido= true; r=0; } else { if(r=='p') { s_phoido= false; r=0; } //========quạt================// else { if(r=='Q') { s_quat_khach= true; r=0; } else { if(r=='q') { s_quat_khach= false; r=0; } //========đèn khách===============// else { if(r=='D') { s_den_khach= true; r=0; } else { if(r=='d') { s_den_khach= false; r=0; } //========cửa================// else { if(r=='C') { s_cua= true; r=0; } else { if(r=='c') { s_cua= false; r=0; } //========gara===============// else { if(r=='G') { s_gara= true; r=0; } else { if(r=='g') { s_gara= false; r=0; { //======================dk======================= else { if(r=='K') { s_dk= true; r=0; } else { if(r=='k') { s_dk= false; r=0; } //===============an ninh===============// else { if(r=='A') { s_anninh= true; r=0; } else { if(r=='a') { s_anninh= false; r=0; } }}}}}}}}}}}}}}}}}} //=====================================================// EthernetClient client = server.available(); if (client) { while (client.connected()) { if (client.available()) { c = client.read(); if (readString.length() 0)V s='B'; s_bep =true; } if (readString.indexOf("1F") > 0) { s='b'; s_bep=false; } //================ngủ=======================// if (readString.indexOf("2O") > 0) { s='N'; s_ngu =true; } if (readString.indexOf("2F") > 0) { s='n'; s_ngu =false;} //================tắm======================// if (readString.indexOf("3O") > 0){ s='T'; s_tam =true;} if (readString.indexOf("3F") > 0) { s='t'; s_tam =false;} //================phơi đồ===============// if (readString.indexOf("4O") > 0){ s='P'; s_phoido =true;} if (readString.indexOf("4F") > 0) { s='p'; s_phoido =false;} //================quạt======================// if (readString.indexOf("5O") > 0){ s='Q'; s_quat_khach =true;} if (readString.indexOf("5F") > 0) { s='q'; s_quat_khach =false;} //================đèn khách===================// if (readString.indexOf("6O") > 0){ s='D'; s_den_khach =true;} } if (readString.indexOf("6F") > 0) { s='d'; s_den_khach =false;} //===================cửa=============================== if (readString.indexOf("7O") > 0){ s='C'; s_cua =true;} if (readString.indexOf("7F") > 0) { s='c'; s_cua =false;} //==================gara=============================== if (readString.indexOf("8O") > 0){ s='G'; s_gara =true;} if (readString.indexOf("8F") > 0) { s='g'; s_gara =false;} //==================điều khiển===============// if (readString.indexOf("9O") > 0){ s='K'; s_dk =true;} if (readString.indexOf("9F") > 0) { s='k'; s_dk =false;} //==================AN NINH================// if (readString.indexOf("10O") > 0){ s='A'; s_anninh =true;} if (readString.indexOf("10F") > 0) { s='a'; s_anninh =false;} //stop if (readString.indexOf("11O") > 0) { s='L';} readString = ""; }}}} table3[0]= s; } void receiveEvent(int howMany) { while(Wire.available()){ r = Wire.read();}} void requestEvent(){ uint8_t Buffer[1]; Buffer[0]=table3[0]; Wire.write(Buffer,1); } Chương trình viết android dùng phần mềm MIT App Inventor