(Đồ án hcmute) hệ thống giám sát phòng học từ xa

112 5 0
(Đồ án hcmute) hệ thống giám sát phòng học từ xa

Đ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 ĐIỆN - ĐIỆN TỬ ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ - TRUYỀN THƠNG HỆ THỐNG GIÁM SÁT PHỊNG HỌC TỪ XA GVHD: ThS NGUYỄN THANH BÌNH SVTH: TRƯƠNG DUY KHƯƠNG MSSV: 11141107 SVTH: HỒ CÔNG VĂN MSSV: 11141250 SKL 0 Tp Hồ Chí Minh, tháng 2/2016 an 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 - ĐỒ ÁN TỐT NGHIỆP NGÀNH KỸ THUẬT ĐIỆN TỬ ĐỀ TÀI: HỆ THỐNG GIÁM SÁT PHÒNG HỌC TỪ XA GVHD: Ths Nguyễn Thanh Bình SVTH : Trương Duy Khương MSSV : 11141107 SVTH : Hồ Cơng Văn MSSV : 11141250 Tp Hồ Chí Minh - 2/2016 an PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Thông tin sinh viên Họ tên: Trƣơng Duy Khƣơng MSSV: 11141107 Tel: 01685059364 Email: tdkhuong93@gmail.com Họ tên: Hồ Công Văn MSSV: 11141250 Tel: 01668517537 Email: congvan0808@gmail.com Thông tin đề tài Tên đề tài: Hệ thống giám sát phòng học từ xa Mục đích đề tài: thiết kế hệ thống điểm danh giáo viên vân tay kết hợp chuẩn truyền thông zigbee qua sóng RF Hiển thị thơng báo qua sở liệu Đồ án tốt nghiệp đƣợc thực tại: Bộ môn Điện Tử Viễn Thông, Khoa Điện - Điện Tử, Trƣờng Đại Học Sƣ Phạm Kỹ Thuật Thành Phố Hồ Chí Minh Thời gian thực hiện: Từ ngày 5/10/2015 đến 22/1 /2016 Các nhiệm vụ cụ thể đề tài - Thiết kế thi công phần cứng mơ hình, thực tế - Hiển thị thơng báo thơng qua sở liệu máy tính - Sử dụng chuẩn truyền không dây zigbee truyền nhận sữ liệu - Thiết kế hệ thống với cấu hình mạng đa điểm Lời cam đoan sinh viên Chúng Trƣơng Duy Khƣơng Hồ Công Văn cam đoan ĐATN cơng trình nghiên cứu thân dƣới hƣớng dẫn thạc sỹ Nguyễn Thanh Bình Các kết cơng bố ĐATN trung thực khơng chép từ cơng trình khác Tp.HCM, ngày 18 tháng năm 2016 SV thực đồ án Trương Duy Khương Xác nhận Bộ Môn Hồ Công Văn Tp.HCM, ngày 18 tháng năm 2016 Giáo viên hƣớng dẫn (Ký ghi rõ họ tên học hàm học vị) an TRƯỜNG ĐẠI HỌC SPKT TPHCM Khoa Điện - Điện Tử Bộ Môn Điện Tử Cơng Nghiệp 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 22 tháng năm 2016 LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP (Bản lịch trình đóng vào đồ án) Họ tên sinh viên 1: Trƣơng Duy Khƣơng Lớp: 111411DT-1A MSSV: 11141107 Họ tên sinh viên 2: Hồ Công Văn Lớp: 11141 MSSV: 11141250 Tên đề tài: HỆ THỐNG GIÁM SÁT PHÒNG HỌC TỪ XA Tuần Nội dung Tham khỏa số đề tài Nhận đề tài “Hệ thống giám sát phịng học từ xa” Tìm hiểu chuẩn zigbee, mua linh kiện cần thiết Giao tiếp Xbee phần mềm XCTU Tìm hiểu cảm biến vân tay Tìm hiểu RTC DS1307 Tìm hiểu sở sữ liệu Làm việc với sở liệu Truyền nhận liệu arduino máy tính 12 Thiết kế hộp giao diện LCD 13 Thực số yêu cầu nâng cao 15 Kiểm tra hoàn thiện sản phẩm an Xác nhận GVHD Hệ thống giám sát phòng học từ xa GV HƢỚNG DẪN (Ký ghi rõ họ tên) MỤC LỤC Trang bìa Phần A: giới thiệu Lời cám ơn Tóm tắt đề tài Nhiệm vụ đồ án tốt nghiệp Lịch trình thực đồ án tốt nghiệp Nhận xét giáo viên hƣớng dẫn Nhận xét giáo viên phản biện Mục lục Danh sách hình Danh sách bảng Thuật ngữ viết tắt Phần B: Nội dung Chương 1: Dẫn nhập 1.1 Đặt vấn đề 1.2 Tình hình nghiên cứu 1.3 Mục đích nghiên cứu 1.4 Đối tƣợng phạm vi nghiên cứu 1.5 Ý nghĩa khoa học tính thực tế đề tài 1.6 Phƣơng pháp nghiên cứu Chương 2: Tổng quan 2.1 Cảm biến vân tay 2.1.1 Giới thiệu 2.1.2 Cấu trúc cảm biến vân tay 2.1.3 Nguyên tắc hoạt động 2.2 Modun X_Bee Chƣơng 1: Dẫn nhập Trang1 an Hệ thống giám sát phòng học từ xa 2.2.1 Giới thiệu 2.2.2 Cấu hình X_Bee 2.2.3 Khảo sát sơ đồ chân 2.2.4 Định địa cho X_Bee 2.3 Màn hình hiển thị 2.3.1 Màn hình LCD 20x4 2.3.1.1 Tổng quan 2.3.1.2 Đặt tính kỹ thuật 2.4 Board Arduino uno 2.4.1 Giới thiệu 2.4.2 Đặc điểm 2.5 Mô đun RTC 2.5.1 Giới thiệu RTC 2.5.2 Các tính Chương 3: Thiết kế phần cứng 3.1 Yêu cầu thiết kế 3.2 Phƣơng án thiết kế 3.3 Chức khối 3.3.1Coordinator 3.3.2 End device 3.3.2.1 End device1 3.3.2.2 End device 3.3 Hộp điều khiển Chương 4: Thiết kế phần mềm 4.1 Mục tiêu thiết kế 4.2 Công cụ thiết kế 4.2.1 Phần mềm Visual Studio 2012 ngôn ngữ C# 4.2.2 Phần mềm quản lý sở liệu - Microsoft SQL Server 2012 4.2.3 Phần mềm XCTU Chƣơng 1: Dẫn nhập Trang2 an Hệ thống giám sát phòng học từ xa 4.2.4 Phần mềm Arduino 4.2.3 Phần mềm SFGDemoV2.0 4.3 Thiết kế phần mềm Chương 5: Xây dựng lưu đồ giải thuật 5.1 Chƣơng trình 5.2 Chƣơng trình Chương 6: Kết quả, kết luận hướng phát triển 6.1 Kết trình 6.2 Kết luận 6.3 Hƣớng phát triển Phần C: Phụ lục tài liệu tham khảo Chƣơng 1: Dẫn nhập Trang3 an Hệ thống giám sát phòng học từ xa LIỆT KÊ HÌNH VẼ HÌNH TrangHình 2.1: Module nhận dạng vân tay .6 Hình 2.2: Sơ đồ định thời đơn byte Hình 2.3: Sơ đồ định thời lệnh SYNC Hình 2.4: Mơ đun XBee và XBee-Pro 18 Hình 2.5: Mơ đun XBee kế t nớ i mạch giao tiế p RS-232 21 Hình 2.6:Mơ đun XBee kế t nố i mạch giao tiế p USB 22 Hình 2.7: Kếtnối cảm biến vân tay với máy tính qua Mơ đun XBee………………………22 Hình2.8: Màn hình LCD 20x4 25 Hình2.9: sơ đồ chân LCD 20x4 27 Hình 2.10: Board Arduino uno 28 Hình 2.11: Các khối board Arduino uno 30 Hình 2.12: DS1307 Real Time Clock (RTC ) 31 Hình 2.13: Sơ đồ chân DS1307 32 Hình 2.14:Thanh ghi DS 1307 33 Hình 3.1: Sơ đồ khối hệ thống 36 Hình 3.2: Sơ đồ mạch nguyên lý 37 Hình 3.3: Coordinator 40 Hình 3.4: Mạch thích ứng USB-Xbee 41 Hình 3.5: Mạch tƣơng thích XBee Explorer 41 Hình 3.6: Kết nối XBee với máy tính 42 Chƣơng 1: Dẫn nhập Trang4 an Hệ thống giám sát phòng học từ xa Hình 3.7: End device 43 Hình 3.8: Adaptor 9v, 1A 44 Hình 3.9: Khối điều khiển 45 Hình 3.10: Khối hiển thị 45 Hình 3.11: Khối cảm biến 45 Hình 3.12: Khối thời gian thực 46 Hình 3.13: Khối truyền nhận liệu 47 Hình 4.1: Giao diện XCTU 56 Hình 4.2: Giao diện Arduino uno 57 Hình 4.3: Giao diện SFGDemo vân tay 58 Hình 4.4:Giao diện 58 Hình 4.5: Đăng nhập hệ thống 59 Hình 4.6: Kết nối thành cơng hệ thống 59 Hình 4.7: Cài đặt thơng số 60 Hình 4.8: Quản lý thơng tin điểm danh 60 Hình 4.9: Quản lý thơng tin thời khóa biểu 61 Hình 4.10: Quản lý thông tin giáo viên 61 Hình 4.11: Quản lý thông tin môn học 62 Hình 4.12: Quản lý thơng tin phịng học 62 Hình 4.13: Định dạng xuất file PDF 63 Hình 4.14: Kết điểm danh nhận 65 Hình 5.1: Lƣu đồ chƣơng trình 67 Hình 5.2: Lƣu đồ chƣơng trình gửi 68 Chƣơng 1: Dẫn nhập Trang5 an Hệ thống giám sát phịng học từ xa Hình 5.3: Lƣu đồ chƣơng trình gửi 69 Hình 5.4: Chƣơng trình cảm biến vân tay 70 Hình 6.1: Bên hộp điều khiển 72 Hình 6.2: End device thực tế 73 Hình 6.3: Hộp End device thực tế 73 Hình 6.4: End device thực tế 74 Hình 6.5: Hộp End device thực tế 74 Hình 6.6: Coordinator thực tế 75 Hình 6.7: Coordinator với giao diện C# 75 Hình 7.1: Giao diện phần mềm XCTU 78 Hình 7.2: Tìm kiếm Xbee thứ 79 Hình 7.3: Tìm kiếm Xbee thứ 79 Hình 7.4: Kiểm tra module 80 Hình 7.5: Update firmware 80 Hình 7.7: Cấu hình mạng 81 Hình 7.7: Cơng suất tốc độ sleep 81 Hình 7.8: Cấu hình địa 82 Hình 7.9: Khoảng cách truyền Xbee xa dần 82 LIỆT KÊ BẢNG BẢNG Bảng 2.1: Định nghĩa gói liệu Bảng 2.2: Gói lệnh kết nối 11 Bảng 2.2: Gói ACK kết nối 11 Chƣơng 1: Dẫn nhập Trang6 an Hệ thống giám sát phòng học từ xa Phụ lục B Code Arduino uno #include #include #include #include #include int getFingerprintIDez(); const byte DS1307 = 0x68; const byte NumberOfFields = 7; int second, minute, hour, day, wday, month, year; int tiet = 0, offset1, offset = 0; char id, xbeedata; unsigned long timer; SoftwareSerial mySerial(2, 3); Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); AltSoftSerial xbee; LiquidCrystal lcd(6, 7, 10, 11, 12, 13); char* ngon[] = {" ", "N-V B", "N-T Binh", "N-V A", "T-V A", "T-V B", "L-V A", "L-C D"}; char* MSGV[] = {" ", "0001", "0002", "0003", "0004", "0005", "0006", "0007"}; uint8_t p; void maGV(char d); void in2cso(int e); void tiethoc(); void printtiet(); void setup() { pinMode(4, INPUT_PULLUP); pinMode(A3, OUTPUT); pinMode(5, INPUT_PULLUP); Wire.begin(); Serial.begin(9600); xbee.setTimeout(1000); lcd.begin(20, 4); while (!Serial); Serial.println("START"); lcd.clear(); delay(500); lcd.setCursor(0, 0); lcd.print("test device"); Serial.print("kiem tra cam bien"); delay(300); xbee.begin(57600); Chƣơng 1: Dẫn nhập Trang94 an Hệ thống giám sát phòng học từ xa finger.begin(57600); if (finger.verifyPassword()) { Serial.println(" OK"); lcd.setCursor(0, 1); lcd.print("Fingerprint .OK"); delay(1000); } else { Serial.println("FAIL"); lcd.setCursor(0, 1); lcd.print("No fingerprint found"); delay(500); lcd.setCursor(0, 2); lcd.print("Check fingerprint"); lcd.setCursor(0, 3); lcd.print("Wait for fingerprint"); for (int t = 0; t < 20; t++) xbee.print("Loi cb van tay"); while (1); } readDS1307(); if ((year < 2016) || ((year == 2165) && (month == 165))) { lcd.setCursor(0, 2); lcd.print("Real time .Fail"); delay(3000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Real time .Fail"); lcd.setCursor(0, 1); lcd.print("please call:"); lcd.setCursor(0, 2); lcd.print("0900000000"); while (1) {} } else { lcd.setCursor(0, 2); lcd.print("Real time .OK"); delay(500); } lcd.clear(); } void loop() { char a; int e; Chƣơng 1: Dẫn nhập Trang95 an Hệ thống giám sát phòng học từ xa int c = digitalRead(4);//vao int d = digitalRead(5);//ra if (xbee.available()) { xbeedata = xbee.read(); Serial.print(xbeedata); } readDS1307(); lcd.setCursor(0, 0); lcd.print("Date:"); in2cso(day); lcd.print("/"); in2cso(month); lcd.print("/"); in2cso(year - 2000); lcd.print(" "); lcd.setCursor(0, 1); lcd.print("Time:"); in2cso(hour); lcd.print(":"); in2cso(minute); lcd.print(":"); in2cso(second); lcd.print(" "); lcd.setCursor(0, 2); lcd.print("Lesson:"); tiethoc(); printtiet(); lcd.setCursor(9, 2); lcd.print(" Offset:"); if ((tiet == 3) && (tiet == 5) && (tiet == 9) && (tiet == 11)) { offset1 = offset - 10; in2cso(offset1); } else if (tiet == 7) { offset1 = offset - 60; in2cso(offset1); } else { offset1 = offset; in2cso(offset1); } lcd.print("'"); lcd.setCursor(0, 3); lcd.print("Press button to scan"); if ((c == 0) || (d == 0)) { if (c == 0) { e = 1; } if (d == 0) { Chƣơng 1: Dẫn nhập Trang96 an Hệ thống giám sát phòng học từ xa e = 0; } c = 1; d = 1; lcd.clear(); lcd.print("Name:"); lcd.setCursor(0, 1); lcd.print("ID:"); lcd.setCursor(0, 2); lcd.print("Room:A2-101"); lcd.setCursor(0, 3); lcd.print("Put finger on sensor"); //c=1; timer = millis(); while (p = -1) { getFingerprintIDez(); if (p == 0) { readDS1307(); tiethoc(); a = 0; break; } if (( (unsigned long) (millis() - timer) > 5000)) { a = 1; break; } } if (a == 0) { if ( finger.confidence > 50) { digitalClockDisplay(); delay(50); id = finger.fingerID; lcd.clear(); switch (id) { case 1: Serial.println("ngcai"); maGV(id); print_xbee(id, e); break; case 2: Serial.println("ngtro"); maGV(id); Chƣơng 1: Dẫn nhập Trang97 an Hệ thống giám sát phòng học từ xa print_xbee(id, e); break; case 3: Serial.println("nggiua"); maGV(id); print_xbee(id, e); break; case 4: Serial.println("ngdanh"); maGV(id); print_xbee(id, e); break; case 5: Serial.print("ngut"); maGV(id); print_xbee(id, e); break; case 10: Serial.print("cai van"); maGV(6); Serial.println(finger.confidence); print_xbee(id, e); break; case 11: Serial.print("tro van"); maGV(7); Serial.println(finger.confidence); print_xbee(id, e); break; default: Serial.println("thieu ID"); lcd.setCursor(0, 0); lcd.print(" Dau van tay"); lcd.setCursor(0, 1); lcd.print(" Chua dang ky"); break; } timer = millis(); while ((c == 1) || (d == 1)) { if (xbee.available()) { xbeedata = xbee.read(); Serial.print(xbeedata); break; Chƣơng 1: Dẫn nhập Trang98 an Hệ thống giám sát phòng học từ xa } if (( digitalRead(4) == 0) || ( digitalRead(5) == 0) || ( (unsigned long) (millis() timer) > 10000)) { break; } } lcd.clear(); } } } switch (xbeedata) { case '0': lcd.clear(); maGV(id); lcd.setCursor(10, 2); lcd.print("wrong time"); lcd.setCursor(0, 3); lcd.print("press button to end"); digitalWrite(A3, HIGH); delay(500); digitalWrite(A3, LOW); break; case '1': lcd.clear(); maGV(id); lcd.setCursor(10, 2); lcd.print("On time "); lcd.setCursor(0, 3); lcd.print("press button to end"); digitalWrite(A3, HIGH); delay(500); digitalWrite(A3, LOW); while ((c == 1) || (d == 1)) { if (( digitalRead(4) == 0) || ( digitalRead(5) == 0) || ( (unsigned long) (millis() timer) > 10000)) { delay(300); break; } } break; Chƣơng 1: Dẫn nhập Trang99 an Hệ thống giám sát phòng học từ xa case '2': lcd.clear(); maGV(id); lcd.setCursor(10, 2); lcd.print("Late "); lcd.setCursor(0, 3); lcd.print("press button to end"); digitalWrite(A3, HIGH); delay(500); digitalWrite(A3, LOW); break; case '3': lcd.clear(); maGV(id); lcd.setCursor(9, 2); lcd.print("out on time"); digitalWrite(A3, HIGH); lcd.setCursor(0, 3); lcd.print("press button to end"); delay(500); digitalWrite(A3, LOW); break; case '4': lcd.clear(); maGV(id); lcd.setCursor(10, 2); lcd.print("Early "); lcd.setCursor(0, 3); lcd.print("press button to end"); digitalWrite(A3, HIGH); delay(500); digitalWrite(A3, LOW); break; } xbeedata = '5'; } int getFingerprintIDez() { p = finger.getImage(); if (p != FINGERPRINT_OK) return -1; p = finger.image2Tz(); if (p != FINGERPRINT_OK) return -1; Chƣơng 1: Dẫn nhập Trang100 an Hệ thống giám sát phòng học từ xa p = finger.fingerFastSearch(); if (p != FINGERPRINT_OK) return -1; Serial.print("ID #"); Serial.println(finger.fingerID); Serial.print("conf "); Serial.println(finger.confidence); return finger.fingerID; } void print_xbee(int c, int e) { String d = ","; char r = 0; d += MSGV[c]; d += ","; if (tiet 9) && (tiet < 13)) { d += tiet; } else if (tiet == 13) { d += "3"; } else if (tiet == 14) { d += "5"; } else if (tiet == 16) { d += "7"; } else if (tiet == 15) { d += "9"; } else if (tiet == 13) { d += "11"; } d += ","; if (offset (420)) && (tongphut < (470))) { tiet = 1; Chƣơng 1: Dẫn nhập Trang103 an Hệ thống giám sát phòng học từ xa offset = 50 - (470 - tongphut); } else if ((tongphut > 470) && (tongphut < 520)) { tiet = 2; offset = 50 - (520 - tongphut); } else if ((tongphut > 520) && (tongphut < 530)) { tiet = 13; offset = 10 - (530 - tongphut); } else if ((tongphut >= 530) && (tongphut < 580)) { tiet = 3; offset = 60 - (580 - tongphut); } else if ((tongphut > 580) && (tongphut < 630)) { tiet = 4; offset = 50 - (630 - tongphut); } else if ((tongphut > 630) && (tongphut < 640)) { tiet = 14; offset = 10 - (640 - tongphut); } else if ((tongphut > 640) && (tongphut < 690)) { tiet = 5; offset = 60 - (690 - tongphut); } else if ((tongphut > 690) && (tongphut < 750)) { tiet = 16; offset = 60 - (750 - tongphut); } Chƣơng 1: Dẫn nhập Trang104 an Hệ thống giám sát phòng học từ xa else if ((tongphut > 750) && (tongphut < 800)) { tiet = 7; offset = 110 - (800 - tongphut); } else if ((tongphut > 800) && (tongphut < 850)) { tiet = 8; offset = 50 - (850 - tongphut); } else if ((tongphut > 850) && (tongphut < 860)) { tiet = 15; offset = 10 - (860 - tongphut); } else if ((tongphut > 860) && (tongphut < 910)) { tiet = 9; offset = 60 - (910 - tongphut); } else if ((tongphut > 910) && (tongphut < 960)) { tiet = 10; offset = 50 - (960 - tongphut); } else if ((tongphut > 960) && (tongphut < 970)) { tiet = 16; offset = 10 - (970 - tongphut); } else if ((tongphut > 970) && (tongphut < 1020)) { tiet = 11; offset = 60 - (1020 - tongphut); } else if ((tongphut > 1020) && (tongphut < 1070)) { tiet = 12; offset = 50 - (1070 - tongphut); Chƣơng 1: Dẫn nhập Trang105 an Hệ thống giám sát phòng học từ xa } else { tiet = 0; offset = 0; } } } void printtiet() { if (tiet < 13) { lcd.setCursor(7, 2); in2cso(tiet); } else if (tiet == 13) { lcd.setCursor(7, 2); lcd.print("2+"); } else if (tiet == 14) { lcd.setCursor(7, 2); lcd.print("4+"); } else if (tiet == 15) { lcd.setCursor(7, 2); lcd.print("8+"); } else if (tiet == 16) { lcd.setCursor(7, 2); lcd.print("5+"); } } Tài liệu tham khảo  Xbee Datasheet – Digi International Inc  http://www.digi.com  ZFM-user-manualV15  www.adafruit.com Chƣơng 1: Dẫn nhập Trang106 an Hệ thống giám sát phòng học từ xa  http://msdn.microsoft.com  Giáo trình Hệ quản trị sở liệu MS SQL SERVER – GV.Trần Thị Thùy Dung, Khoa Công Nghệ Thông Tin, Trƣờng Cao đẳng nghề tỉnh Bà Rịa Vũng Tàu  Giáo trình Ngơn ngữ lập trình C# - Trung tâm Aptech  Và số tài liệu tham khảo google.com Chƣơng 1: Dẫn nhập Trang107 an S an K L 0 ... không đồng Chƣơng 1: Dẫn nhập Trang8 an Hệ thống giám sát phòng học từ xa Phần A GIỚI THIỆU Chƣơng 1: Dẫn nhập Trang9 an Hệ thống giám sát phòng học từ xa LỜI CẢM ƠN Chúng em xin gửi lời cảm ơn... liên quan Chƣơng 1: Dẫn nhập Trang15 an Hệ thống giám sát phòng học từ xa Chương TỔNG QUAN Chƣơng 1: Dẫn nhập Trang16 an Hệ thống giám sát phòng học từ xa 2.1 Cảm biến vân tay Hiện thị trƣờng... (CH=0) ) Chƣơng 1: Dẫn nhập Trang45 an Hệ thống giám sát phòng học từ xa Chương THIẾT KẾ PHẦN CỨNG Chƣơng 1: Dẫn nhập Trang46 an Hệ thống giám sát phòng học từ xa 3.1 Yêu cầu thiết kế Dùng cảm biến

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

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

Tài liệu liên quan