Xây dựng hệ thống cân điện tử

64 74 0
Xây dựng hệ thống cân điện tử

Đ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

PHỤ LỤC CHƯƠNG I: TỔNG QUAN VỀ HỆ THỐNG CÂN ĐIỆN TỬ 1.1:Hệ thống cân sử dụng loadcell ứng dụng 1.2:Sơ lược phương pháp cảm biến dùng việc đo khối lượng 1.2.1 Nguyên lý đo khối lượng 1.2.2 Các phương pháp đo khối lượng CHƯƠNG II: GIỚI THIỆU CÁC THIẾT BỊ PHẦN CỨNG 2.1 Raspberry Pi 2.1.1 Cấu tạo 2.1.2 Các kết nối với Raspberry Pi 2.1.3 Những thiết bị kèm cần thiết 2.1.4 Các hệ điều hành dành cho RASPBERRY PI 2.1.5 Các bước cài đặt cho RASPBERRY PI 2.1.6 Cài đặt ban đầu cho Raspberry Pi 2.1.7 Lập trình GPIO 2.1.8 Lập trình I2C 2.2 Cảm Biến Loadcell 20kg 2.3 Mạch chuyển đổi ADC 24 bit loadcell Hx711 2.4 Màn hình cảm ứng LCD 5” HDMI Cảm ứng điện trở CHƯƠNG III: THIẾT KẾ CÂN ĐIỆN TỬ 3.1 Thiết kế phần cứng 3.1.1 tính chọn linh kiện 3.1.2 xây dựng sơ đồ hệ thống cân điện tử 3.2 Chương trình cân điện tử 3.2.1 Giới thiệu phần mềm Python 3.2.2 Chương trình điều khiển MỞ ĐẦU Cân trọng lượng nhu cầu cần thiết thiếu đời sống xã hội, từ người nơng dân làm hạt thóc khu chế xuất, nhà máy xi măng sản xuất hàng trăm sản phẩm ngày Xuất phát từ nhu cầu thực tế ứng dụng công nghệ vi điều khiển nhà khoa học nghiên cứu loại cân điện tử hiển thị số cân trọng lượng từ mg hàng trăm mà loại cân bình thường thực Trên thực tế nhà máy sản xuất muốn biết khối lượng hàng hóa, sản phẩm hay nguyên vật liệu, cho lĩnh vực khác bến cảng, trạm cân xe phát tải cảnh sát giao thông… sử dụng cân điện tử Trong thời đại ngày hệ thống điều khiển tự động ngày có vai trò quan trọng việc phát triển, tiến khoa học công nghệ văn minh đại Xuất phát từ thực tế nhóm em phân công thực đề tài: Xây dựng hệ thống cân điện tử Đây loại đề tài mẻ chúng em nhờ giúp đỡ tận tình thầy giáo TS Đặng Thái Sơn giúp chúng em hoàn thành đồ án với thời gian quy định Vinh, ngày 10 tháng 06 năm 2018 Em xin chân thành cảm ơn! CHƯƠNG I: TỔNG QUAN VỀ HỆ THỐNG CÂN ĐIỆN TỬ 1.1 Hệ thống cân sử dụng loadcell ứng dụng Sơ đồ khối hệ thống cân điện tử dùng loadcell sau: Hình 1.1 Sơ đồ khối hệ thống cân điện tử dùng loadcell Tùy theo yêu cầu mục đích ứng dụng Khối xử lý dùng vi xử lý hay máy tính … Nếu xử lý sử dụng vi xử lý có thêm khối truyền liệu máy tính, có khối in ấn tùy vào mục đích sử dụng Dưới tác dụng khối lượng đặt bên trên, loadcell biến đổi thành tín hiệu điện ngõ Tín hiệu điện đưa vào chuyển đổi A/D để chuyển thành tín hiệu số đưa xử lý để xử lý theo chương trình có sẵn thị lên hình Bộ xử lý cần thiết phải có thêm nhớ để lưu trữ số liệu, ví dụ việc chỉnh trừ bì cân … Do tính linh hoạt xử lý, tùy theo mục đích cụ thể mà chương trình viết cho xử lý khác Do đó, hệ thống cân điện tử ứng dụng nhiều lĩnh vực có liên quan đến việc đo khối lượng, cụ thể sau: - Trong hệ thống bán hàng, việc tính tiền tự động hồn tồn Hàng loại cân được, rau quả, thủy sản … Người sử dụng nhập vào bàn phím giá đơn vị cân giá thị hình Led đoạn Khi người dùng nhấn nút tính tiền bàn phím xử lý nhân giá trị cân với giá đơn vị cân hiển thị giá tính tốn cho số hàng Sau để giá hiển thị khoảng thời gian vừa đủ cho người dùng đọc nó, hệ thống cân hiển thị lại giá trị cân Giá tiền lưu lại nối đến máy tính quầy thu tiền, khách hàng nhận bảng báo cáo bao gồm trọng lượng cân được, giá đơn vị cân tổng số tiền phải trả cho số hàng … - Cân điện tử biện pháp để phát sản phẩm hệ thống đếm tự động Khi phát có khối lượng quy định đếm Điều tránh việc đếm sai lúc có hai sản phẩm vật thể khác khơng phải sản phẩm che cảm biến quang - Một ứng dụng khác hệ thống cân điện tử kể dùng bưu điện Sau cân kiện hàng xác định nơi cần gửi Ngõ hệ thống cân thường nối đến hệ thống in bưu phí lên nhãn dán vào kiện hàng gửi - Ngoài ứng dụng phổ biến cân điện tử sử dụng nhiều nhà máy nước ta ứng dụng việc đóng gói sản phẩm Người dùng nhập vào khối lượng cho gói hàng đó.Khi đạt đến giá trị quy định này, ngõ vi xử lý dùng để điều khiển việc rót hàng hay dây chuyền để đóng gói sản phẩm Điều quan trọng ứng dụng chương trình điều khiển viết cho xử lý cách giao tiếp với thiết bị bên Phần khác ứng dụng cụ thể khác 1.2 Sơ lược phương pháp cảm biến dùng việc đo khối lượng 1.2.1 Nguyên lý đo khối lượng Trong vật lý học, quan hệ lực khối lượng xác định định luật II Newton, mà theo lực tác dụng vào vật thể có khối lượng m tích số khối lượng gia tốc nó, tức là: F  m.a Trong : 1.1 - F: Lực tác dụng N  - m: Khối lượng vật Kg  - a: Gia tốc vật m / s  Trọng lực trường hợp công thức Dưới tác dụng sức hút trái đất, vật có khối lượng chịu tác dụng trọng lực P  m.g với g gia tốc trọng trường số cố định khu vực Các phương pháp đo khối lượng dựa vào quan hệ Công thức 1.1 nghĩa khơng có lực vật thể khơng có gia tốc mà có nghĩa khơng có lực cân thực Hai lực cân đối tác động lên vật thể cân bằng, không tạo nên gia tốc 1.2.2 Các phương pháp đo khối lượng a Cảm biến điện trở lực căng Sức căng  xác định thay đổi chiều dài L đàn hồi L so với đơn vị chiều dài:  L L Do tác dụng lực vào L , làm xuất sức căng, tương ứng làm thay đổi giá trị điện trở điện Cảm biến sức căng hoạt động dựa nguyên tắc này, cho phép biến đổi giá trị  nhỏ thành thay đổi tương ứng giá trị điện trở điện Có hai loại cảm biến sức căng: - Loại gắn trực tiếp cần đàn hồi đo lực, vị trí cần đo sức căng Khi lực tác động làm căng cong cần đàn hồi, trực tiếp làm cong cảm biến - Loại gián tiếp liên kết học với yếu tố đàn hồi, thường sử dụng để đo độ lệch tổng cộng yếu tố đàn hồi Cảm biến sức căng cho phép sử dụng để đo lực tác động trọng lượng vật toán cân b Cảm biến áp điện Cảm biến áp điện hoạt động dựa nguyên lý hiệu ứng áp điện Phần tử cảm biến áp điện có cấu tạo tương tự tụ điện chế tạo cách phủ hai cực lên hai mặt đối diện phiến vật liệu áp điện mỏng Vật liệu áp điện thường dùng thạch anh có tính ổn định độ cứng cao Tuy nhiên vật liệu gốm có ưu điểm độ bền độ nhạy cao, điện dung lớn, chịu ảnh hưởng điện trường ký sinh, dễ sản xuất giá thành chế tạo thấp sử dụng đáng kể Hình 1.2 Các biến dạng áp điện Trong đó: a Theo chiều dọc b Theo chiều ngang c Cắt theo bề dày d Cắt theo bề mặt Dưới tác dụng lực học, áp điện bị biến dạng, làm xuất hai cực điện tích trái dấu Hiệu điện xuất hai cực tỷ lệ với lực tác dụng Trong nhiều trường hợp áp điện ghép thành theo cách ghép nối tiếp song song Hình 1.3 Cách ghép phần tử áp điện Trong đó: a Hai phần tử song song b Hai phần tử nối tiếp c Nhiều phần tử song song CHƯƠNG II: GIỚI THIỆU CÁC THIẾT BỊ PHẦN CỨNG 2.1 Raspberry Pi 2.1.1 Cấu tạo a Cấu hình phiên Raspberry Pi B+            CPU: Lõi tứ ARM Cortex A7, tốc độ 900MHz GPU: Broadcom VideoCore IV – 250MHz Bộ nhớ RAM: 1GB, nhiên bị chia sẻ 250MHz cho GPU Cổng USB: Video output: HDMI, composite video thông qua jack 3,5 mm Audio outputs: Analog qua jack 3,5 mm; kỹ thuật số thông qua cổng HDM Bộ nhớ trong: thẻ nhớ microSD Kết nối mạng: Ethernet 10/100Mbps Nguồn điện: V qua MicroUSB GPIO Kích thước: 85.60mm × 56.5mm Trọng lượng: 45g Hình 2.1 Cấu trúc phần cứng Raspberry Pi Hình 2.2 Sơ đồ chân kết nối Raspberry Pi b Ưu điểm            Thiết kế nhỏ gọn Chức máy tính có kết nối HDMI, Video Có thêm GPIO đầy đủ vi điều khiển thông thường để người phát triển sử dụng như: GPIO : chân Input , Output bình thường Module I2C, SPI, UART, PWM Nguồn đầu với hiệu điện thông dụng: 5V 3.3V Cộng đồng người sử dụng toàn giới Chạy hệ điều hành dựa nhân linux Hệ điều hành phân phối miễn phí Tính di động cao Giá thành rẻ c Ứng dụng       Đầu coi phim HD giống Android Box, hỗ trợ KODI đầy đủ Máy chơi game cầm tay, console, game thùng Chơi máy điện tử băng ngày xưa, giả lập nhiều hệ máy Cắm máy tải Torrent 24/24 Dùng làm VPN cá nhân Biến ổ cứng bình thường thành ổ cứng mạng (NAS) Làm camera an ninh, quan sát từ xa      Hiển thị thời tiết, hiển thị thông tin mạng nội Máy nghe nhạc, máy đọc sách Làm thành máy Terminal di động có hình, bàn phím, pin dự phòng để sử dụng lúc nơi, dò pass Wi-Fi Làm thiết bị điều khiển Smart Home, điều khiển thiết bị điện tử nhà Điều khiển robot, máy in không dây từ xa, Airplay 2.1.2 Các kết nối với Raspberry Pi Hình 2.3 GPIO Raspberry Pi Các cổng kết nối raspberry pi         Ethernet: Cổng mạng Ethernet 10/100M Video: HDMI hỗ trợ phiên 1.3/1.4 Composite RCA (PAL and NTSC) Audio: Cổng 3.5 HDMI USB: cổng USB 2.0 GPIO: 40 chân Camera: Connector 15-pin MIPI Camera Serial Interface (CSI-2) Display: Connector Display Serial Interface (DSI) Memory Card Slot: MicroSD  10    1234585396326 (số nguyên dài vô hạn) -86.12 7.84E-04 2j + 8j  Kiểu chuỗi (string) Kiểu (tuple)  (1, 2.0, 3) (1,) ("Hello",1,())  Kiểu danh sách (list)  [4.8, -6] ['a','b']  Kiểu từ điển (dictionary)  {"Hanoi":"Vietnam", "Haiphong":"Vietnam", "Netherlands":"Amsterdam", "France":"Paris"}  Chú thích # dòng thích "" " đa thích đa thích đa thích " ""  Lệnh gán tên biến = biểu thức x = 23.8 y = -x ** z1 = z2 = x + y loiChao = "Hello!" i += # tăng biến i thêm đơn vị  In giá trị print biểu thức print (7 + 8) / 2.0 print (2 + 3j) * (4 - 6j) 50 "Hochiminh":"Vietnam", Nội suy chuỗi (string interpolation) print "Hello %s" %("world!") print "i = %d" %i print "a = %.2f and b = %.3f" %(a,b)  Cấu trúc rẽ nhánh  Dạng 1:   if biểu_thức_điều_kiện: # lệnh  Dạng 2:   if biểu_thức_điều_kiện: # lệnh else: # lệnh  Dạng 3:  if biểu_thức_điều_kiện_1: # lệnh (được thực biểu_thức_điều_kiện_1 đúng/true) elif biểu_thức_điều_kiện_2: # lệnh (được thực biểu_thức_điều_kiện_1 sai/false, biểu_thức_điều_kiện_2 đúng/true) else: # lệnh (được thực tất biểu thức điều kiện kèm if elif sai)         Cấu trúc lặp while biểu_thức_đúng: # lệnh for phần_tử in dãy: # lệnh L = ["Ha Noi", "Hai Phong", "TP Ho Chi Minh"] for thanhPho in L: print thanhPho 51 for i in range(10): print i  Hàm def tên_hàm (tham_biến_1, tham_biến_2, tham_biến_n): # lệnh return giá_trị_hàm def binhPhuong(x): return x*x Hàm với tham số mặc định: def luyThua(x, n=2): """Lũy thừa với số mũ mặc định 2""" return x**n print luyThua(3) # print luyThua(2,3) #  Lớp class Tên_Lớp_1: # class Tên_Lớp_2(Tên_Lớp_1): """Lớp kế thừa lớp 1""" x = # biến thành viên lớp # def phương_thức(self, tham_biến): # 10 11 # khởi tạo 12 a = Tên_Lớp_2() 13 print a.x 14 print a.phương_thức(m) # m giá trị gán cho tham biến 52  List Comprehension List Comprehension dạng cú pháp đặc biệt (syntactic sugar) (mới có từ Python 2.x) cho phép thao tác toàn dãy (list) mà khơng cần viết rõ vòng lặp Chẳng hạn y dãy mà phần tử bình phương phần tử dãy x : y = [xi**2 for xi in x]  Xử lý ngoại lệ try: câu_lệnh except Loại_Lỗi: thông báo lỗi d Tốc độ thực Là ngôn ngữ thông dịch, Python có tốc độ thực chậm nhiều lần so với ngôn ngữ biên dịch Fortran, C, v.v Trong số ngôn ngữ thông dịch, Python đánh giá nhanh Ruby Tcl, chậm Lua e.Các đặc điểm Python3.x Nội dung phần trích từ tài liệu Guido van Rossum Phần không liệt kê đầy đủ tất đặc điểm; chi tiết xin xem tài liệu nói  Một số thay đổi cần lưu ý  Lệnh print trở thành hàm print() Theo sau print() ta cần nhớ gõ vào cặp ngoặc () :  print("Hello") print(2+3)    Trả lại kết khơng list số trường hợp  dict.keys(), dict.items(), dict.values() kết cho "view" thay list  map filter trả lại iterator  range có tác dụng xrange , khơng trả lại list So sánh Khơng hàm cmp , cmp(a, b) thay (a > b) - (a < b) 53   Số nguyên  Kiểu long đổi tên thành int  1/2 cho ta kết số thực khơng phải số ngun  Khơng số sys.maxint  Kiểu bát phân ký hiệu 0o thay , chẳng hạn 0o26 Phân biệt văn - liệu nhị phân thay Unicode - chuỗi 8-bit  Tất chuỗi văn dạng Unicode, chuỗi Unicode mã hóa lại dạng liệu nhị phân Dạng mặc định UTF-8  Không thể viết u"a string" để biểu diễn chuỗi phiên 2.x  Các thay đổi cú pháp Cú pháp      Các tham biến chấp nhận keyword: Các tham biến phía sau *args phải gọi theo dạng keyword Từ khóa nonlocal Muốn khai báo biến x với có phạm vi ảnh hưởng rộng hơn, chưa đến mức toàn cục, ta dùng nonlocal x Gán giá trị vào phần tử tuple cách thơng minh, chẳng hạn viết (a, *rest, b) = range(5) để có a = 0; b = [1,2,3]; c = Dictionary comprehension, chẳng hạn {k: v for k, v in stuff} thay dict(stuff) Kiểu nhị phân, chẳng hạn b110001 Cú pháp thay đổi      raise [biểu_thức [from biểu_thức]] except lệnh as biến Sử dụng metaclass đối tượng: class c(metaclass=M): pass Cách dùng biến metaclass khơng hỗ trợ Cú pháp bị loại bỏ  Khơng dấu `` , thay đó, dùng repr 54   Khơng so sánh (dùng != ) Khơng lớp kiểu classic 55 3.2.2 Chương trình điều khiển Sau chương trình cân điện tử viết ngôn ngữ python : import RPi.GPIO as GPIO import time import sys from hx711 import HX711 from time import gmtime, strftime from PyQt4 import QtCore, QtGui from PyQt4.QtCore import QTimer try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: def _fromUtf8(s): return s try: _encoding = QtGui.QApplication.UnicodeUTF8 def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, _encoding) except AttributeError: def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig) 56 disambig, def cleanAndExit(): print "Cleaning " GPIO.cleanup() print "Bye!" sys.exit() GPIO.setwarnings(False) hx = HX711(23, 24) # According to the HX711 Datasheet, the second parameter is MSB so you shouldn't need to modify it hx.set_reading_format("LSB", "MSB") hx.set_reference_unit(92) hx.reset() hx.tare() help_text = """ - Cách sử dụng Electronic scale: đặt vật nặng lên bàn cân nhẹ nhàng nhằm tránh sai số cố xảy cân - Không sử dụng vật nặng 20Kg đặt lên bàn cân, trọng lượng định mức cho phép 20Kg - Đặt cân nơi khô ráo, sẽ, nên tránh vị trí có nhiều luồng khơng khí thay đổi cửa vào, gần nguồn nhiệt lò sưởi hay luồng máy điều hòa - Cân hóa chất tuyệt đối khơng dùng phép cân 57 trực tiếp mà ln dùng phép cân lặp(cân trừ bì) Bì phải dùng dụng cụ thủy tinh khô sạch, để cao su hay giấy lọc loại dành để cân(là loại tráng parrafin giúp hóa chất bột khơng dính vào giấy) ("QLabel {color:green; font-size: 18pt; textCourier;}") """ align: center; font-family: information_persion=""" class Ui_Dialog(object): display_scales = def setupUi(self, Dialog): Dialog.setObjectName(_fromUtf8("cân điện tử")) # kich thuoc khung hien thi Dialog.resize(800, 480) # tạo timer chạy 1s chạy lần timer = QTimer(Dialog) timer.timeout.connect(self.display) timer.start(1000) #tao doi tuong hien thi self.display = QtGui.QLabel(Dialog) #x,y,width, height self.display.setGeometry(QtCore.QRect(200, 50, 540, 300)) self.display.setObjectName(_fromUtf8("display")) 58 self.scales = QtGui.QPushButton(Dialog) self.scales.setGeometry(QtCore.QRect(20, 50, 141, 61)) self.scales.setObjectName(_fromUtf8("scales")) self.help = QtGui.QPushButton(Dialog) self.help.setGeometry(QtCore.QRect(20, 150, 141, 61)) self.help.setObjectName(_fromUtf8("help")) self.exit = QtGui.QPushButton(Dialog) self.exit.setGeometry(QtCore.QRect(20, 250, 141, 61)) self.exit.setObjectName(_fromUtf8("exit")) self.title = QtGui.QLabel(Dialog) self.title.setGeometry(QtCore.QRect(250, 10, 450, 31)) self.title.setObjectName(_fromUtf8("title")) self.text = QtGui.QLabel(Dialog) self.text.setGeometry(QtCore.QRect(20, 280, 200, 200)) self.text.setObjectName(_fromUtf8("text")) self.retranslateUi(Dialog) QtCore.QMetaObject.connectSlotsByName(Dialog) 59 def retranslateUi(self, Dialog): Dialog.setWindowTitle(_translate("Dialog", "ĐỒ ÁN 4", None)) self.scales.setText(_translate("Dialog", "Cân", None)) self.scales.clicked.connect(self.scales_clicked) self.help.setText(_translate("Dialog", "Giúp đỡ", None)) self.help.clicked.connect(self.help_clicked) self.exit.setText(_translate("Dialog", "Thoát", None)) self.exit.clicked.connect(self.exit_clicked) self.title.setStyleSheet self.title.setText(_translate("Dialog", "Xây Dựng Hệ Thống Cân Điện Tử", None)) # information_persion = open("information_persion.txt", "r+") self.text.setStyleSheet("QLabel {color:red; font-size: 10pt; text-align: center; font-family: Courier;}") self.text.setText(_translate("Dialog", information_persion, None)) def display(self): try: 60 # Prints the weight Comment if you're debbuging the MSB and LSB issue val = hx.get_weight(5) # print val hx.power_down() hx.power_up() time.sleep(0.5) except (KeyboardInterrupt, SystemExit): cleanAndExit() if self.display_scales: self.display.setStyleSheet("QLabel 100pt; text-align: center; font-family: Courier;}") {color:blue; font-size: self.display.setText(" {0}g".format(val)) else: self.display.setStyleSheet("QLabel {color:blue; font-size: 12pt; text-align: center; font-family: Courier;}") self.display.setText(_translate("Dialog", help_text, None)) def scales_clicked(self): print("Clicked scales") self.display_scales = def help_clicked(self): print("Description clicked") self.display_scales = 61 def exit_clicked(self): print("Clicked exit") self.display.setText("exit") sys.exit() if name == " main ": import sys app = QtGui.QApplication(sys.argv) Dialog = QtGui.QDialog() ui = Ui_Dialog() ui.setupUi(Dialog) Dialog.show() sys.exit(app.exec_()) 62 CHƯƠNG IV: TỔNG KẾT Với toàn nỗ lực thân thành viên tập thể nhóm , đặc biệt tận tình hướng dẫn trực tiếp thầy giáo Đặng Thái Sơn giúp chúng em hoàn thành đồ án thời gian quy định Mặc dù nhiều thiếu sót trình độ hiểu biết, qua chúng em trình bày toàn hiểu biết khả tiếp cận với thực tế Tập thể nhóm chúng em xây dựng hệ thống cân điện tử sản phẩm thực tế thử nghiệm thành công, phục vụ cho việc cân xác khối lượng nhiều so với loại cân Chúng em biết cách thiết kế phần cứng phần mềm , hiểu cấu trúc, nguyên lý hoạt động hệ thống cân điện tử Tuy cố gắng chắn khơng tránh khỏi hạn chế, thiếu sót Qua đồ án chúng em mong bảo giúp đỡ quý thầy tồn thể bạn đọc để chúng em cố gắng tốt đề tài khác công việc sau 63 TÀI LIỆU THAM KHẢO Kỹ thuật vi xử lý, Văn Thế Minh , NXB Giáo dục, 1997 Lập trình Python nâng cao, Võ Duy Tuấn Python Programming for Raspberry Pi Learning Python With Raspberry Pi Mạng truyền thơng cơng nghiệp, Hồng Minh Sơn 64 ... CHƯƠNG I: TỔNG QUAN VỀ HỆ THỐNG CÂN ĐIỆN TỬ 1.1 Hệ thống cân sử dụng loadcell ứng dụng Sơ đồ khối hệ thống cân điện tử dùng loadcell sau: Hình 1.1 Sơ đồ khối hệ thống cân điện tử dùng loadcell Tùy... hệ thống cân điện tử kể dùng bưu điện Sau cân kiện hàng xác định nơi cần gửi Ngõ hệ thống cân thường nối đến hệ thống in bưu phí lên nhãn dán vào kiện hàng gửi - Ngoài ứng dụng phổ biến cân điện. .. cảng, trạm cân xe phát tải cảnh sát giao thông… sử dụng cân điện tử Trong thời đại ngày hệ thống điều khiển tự động ngày có vai trò quan trọng việc phát triển, tiến khoa học công nghệ văn minh

Ngày đăng: 19/05/2019, 20:59

Từ khóa liên quan

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

  • Đang cập nhật ...

Tài liệu liên quan