1. Trang chủ
  2. » Luận Văn - Báo Cáo

báo cáo thiết kế robot dò đường

31 1K 3

Đ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

Thông tin cơ bản

Định dạng
Số trang 31
Dung lượng 1,6 MB

Nội dung

báo cáo thiết kế robot dò đường

LỜI NÓI ĐẦU Trong thời gian gần đây, đề tài robot xuất thƣờng xuyên Tivi Điều cho thấy ngƣời ngày quan tâm nhiều đến robot, nhƣng lại có hội để họ tự chế tạo robot Bài báo cáo sử dụng robot dò đƣờng với việc sử dụng ba yếu tố để tạo robot “cảm biến”, “ xử lý vi tính “, “ kiểm soát điều khiển chuyển động “ Robot mà cấu tạo đơn giản dễ hiểu đƣợc nguyên tắc hoạt động trƣơng trình nhƣ hiểu đƣợc bố trí mạch điện, nắm đƣợc nguyên tắc chung thiết bị mà sử dụng mạch Mục đích báo cáo chúng em tìm hiểu sâu chế hoạt động robot,tạo robot, mạch điện nhƣ viết phát lỗi chƣơng trình điều khiển để điều khiển robot Bản báo cáo gồm phần: Giới thiệu robot dò đƣờng Cấu trúc robot lắp ráp Xây dựng chƣơng trình Chúng em thực đề tài dƣới hƣớng dẫn TS Lê Dũng, trình độ có hạn, kinh nghiệm thiết kế mạch chƣa có nhiều nên thiết kế có nhiều sai sót, phƣơng pháp thiết kế chƣa tối ƣu Chúng em mong nhân đƣợc ý kiến đóng góp quí báu thầy Chúng em gửi lời cảm ơn chân thành tới Thầy góp ý, giải đáp thắc mắc, hƣớng dẫn chi tiết, tận tình cho nhóm, qua giúp cho chúng em hiểu thêm nhiều điều hoàn thành đề tài Hà Nội, 06/2013 MỤC LỤC LỜI NÓI ĐẦU MỤC LỤC CHƯƠNG GIỚI THIỆU ROBOT DÒ ĐƯỜNG 1.1 Giới thiệu 1.2 Các thành phần robot CHƢƠNG CẤU TRÚC ROBOT VÀ LẮP RÁP 2.1 Sơ đồ nguyên lí, mạch in danh sách linh kiện 2.2 Thiết kế khung xe động 2.3 Lắp ráp CHƯƠNG XÂY DỰNG CHƯƠNG TRÌNH VỚI PIC16F84A 10 3.1 Thiết lập cổng với PIC16F84A 10 3.2 Lập trình với ngôn ngữ C 11 3.2.1 Ngôn ngữ C 11 3.2.2 Led nhấp nháy nút bấm 12 3.3 Phát đƣờng cảm biến 17 3.4 Điều khiển động 19 3.4.2 Điều khiển tốc độ động 22 3.5 Dò đƣờng 22 3.6 CODE 27 KẾT LUẬN 31 CHƢƠNG GIỚI THIỆU ROBOT DÒ ĐƢỜNG 1.1 Giới thiệu Robot tự hành hay robot di động (mobile robots, thƣờng đƣợc gọi tắt mobots) đƣợc định nghĩa loại xe robot có khả tự dịch chuyển, tự vận động (có thể lập trình lại đƣợc) dƣới điền khiển tự động để thực thành công công việc đƣợc giao Tiềm ứng dụng robot tự hành rộng lớn: robot vận chuyển vật liệu, hàng hóa tòa nhà, nhà máy, cửa hàng, sân bay thƣ viện; robot phục vụ quét dọn đƣờng phố; robot kiểm tra môi trƣờng nguy hiểm; robot canh gác, thám; robot khám phá không gian, di chuyển hành tinh; robot xe lăn phục vụ ngƣời khuyết tật; robot phục vụ sinh hoạt gia đình v.v Cùng với phát triển mạnh mẽ hệ thống tự động hóa, robot tự hành ngày đƣợc hoàn thiện cho thấy lợi ích công nghiệp sinh hoạt Một vấn đề đƣợc quan tâm nghiên cứu robot tự hành làm để robot biết đƣợc vị trí đứng di chuyển tới vị trí xác định, đồng thời tự động tránh đƣợc chƣớng ngại vật đƣờng Vì vậy, việc chế tạo thành công đề tài mở hƣớng tiếp cận góp phần thúc đẩy việc ứng dụng robot ngày nhiều vào đời sống hàng ngày nghiên cứu chế tạo Mặc dù nhu cầu ứng dụng cao, nhƣng hạn chế chƣa giải đƣợc robot tự hành, nhƣ chi phí chế tạo cao, không cho phép chúng đƣợc sử dụng rộng rãi Bài toán tìm đƣờng robot tự hành loại toán đơn giản nhƣ nhiều ngƣời nghĩ lúc ban đầu Trong đề tài này, toán tìm đƣờng đƣợc giải mức độ không phức tạp: dò đƣờng theo đƣờng vạch sẵn 1.2 Các thành phần robot 1) Khối xử lí PIC16F84A & mạch ngoại vi 2) Khối cảm biến led thu phát hồng ngoại 3) Động động DC công suất nhỏ 4) Nguồn cung cấp 5V-6V (pin tiểu) Hình 1.1 Robot dò đƣờng CHƢƠNG CẤU TRÚC ROBOT VÀ LẮP RÁP 2.1 Sơ đồ nguyên lí, mạch in danh sách linh kiện  Sơ đồ nguyên lí Hình 2.1 Sơ đồ nguyên lí  Mạch in Dùng phần mềm Proteus 7.7 mô vẽ mạch in: Hình 2.2 Xắp xếp vị trí linh kiện Đi dây đổ đồng Hình 2.3 Mạch in  Bảng linh kiện STT Tên linh kiện Giá trị SL Tụ gốm 104 0.1uF Tụ gốm 33 33uF Tụ hóa 1000uF Tụ hóa 10uF Diode Transistor Tip122 PIC16F84a Led đỏ + led nguồn Điện trở 220 Ω 10 Điện trở 100Ω 11 Điện trở 10KΩ 12 Biến trở vi chỉnh 50KΩ 13 LM324 14 Nút bấm chân 15 Nút nguồn chân 16 Thạch anh 17 DIP14+DIP18 18 Bộ động 8M 2.2 Thiết kế khung xe động Hình Khung xe Hình 2.5 Khung xe động Hình 2.6 Vị trí bắt ốc 2.3 Lắp ráp Tiến hành hàn linh kiện vào mạch ta đƣợc: Hình 2.7 Mạch robot CHƢƠNG XÂY DỰNG CHƢƠNG TRÌNH VỚI PIC16F84A Dùng phầm mềm MPLAB X IDE 1.6 lập trình với ngôn ngữ C, biên dịch HI-TECH PICC (v9.83) Tìm hiểu thực hành với PIC16F84A, LM324, mở transistor… Thiết lập cổng với PIC16F84A 3.1 Bảng 4.1a PORTA A7 A6 A5 A4 Start Use I I/O 1 A3 1 A2 A1 A0 1 Bảng 4.1b PORTB B7 B6 B5 B4 B3 B2 B1 B0 R motor L motor R led M led L led Rsensor Msensor Lsensor Use O O O O O I I I I/O 0 0 1 Bảng 4.2 Đầu vào Sensor đầu Led B7 B6 B2 B1 B0 PORT R sensor M sensor L sensor S-I R sensor M sensor L sensor R sensor M sensor L sensor R sensor M sensor L sensor Dịch “ “ “ Đảo R led M led B5 B4 B3 L led 10 Dịch Dịch L-O 3.3 Phát đƣờng cảm biến Chúng em dung cảm biến hồng ngoại, với mạch dò đƣờng cần thu phát, gồm led phát hồng ngoại led thu hồng ngoại đƣợc đặt sát Chúng em kết hợp dùng LM324 để mức logic vào PIC16f84a đƣợc xác ổn định LM324 gồm so sánh, đƣợc kết nối theo Hình 3.4 Cổng đƣợc phân áp cố định Khi Led thu hồng ngoại không thu đƣợc sóng hồng ngoại led phát áp cổng nhỏ áp cổng  đầu mức 0, led báo tắt Ngƣợc lại, led thu nhận đƣợc sóng hồng ngoại áp cổng lớn áp cổng 2 đầu mức 1,led báo sáng Các so sánh khác tƣơng tự nhƣ Ta chỉnh độ nhạy cảm biến cách thay đổi giá trị biến trở vi chỉnh Hình 3.4 Khối cảm biến 17 Hình 3.5 Led báo Đầu LM324 nối với đầu vào PIC16F84A LM324 (out put) PIC16F84A (in put) Pin Pint Pin Pin Pin Pin  Ví dụ code C test sensor : #include #include #ifndef _XTAL_FREQ #define _XTAL_FREQ 8000000 //Khai bao tan so thach anh(giong voi mach thuc) #endif CONFIG(0xFFFA); /* Initial setting CP:OFF,PT:OFF,WT:OFF,HS */ int sensor(void){ RB3 = RB0; RB4 = RB1; RB5 = RB2; 18 } void main() { TRISA = 0xFF; TRISB = 0x07; while(1) { sensor(); } 3.4 Điều khiển động Dùng động chiều công suất nhỏ, đóng mở động transistor TIP 122 3.4.1 Nguyên lí Trong Hình 3.6 (a), điện cao (5v) cổng từ PORT, động xoay Trong Hình 3.6 (b), điện thấp (0v) cổng từ PORT, động dừng Khi điện cao (5v) cổng từ PORT, motor quay, tƣơng đƣơng mức “1” Khi điên thấp (0v) cổng từ PORT, motor dừng quay, tƣơng đƣơng mức “0” 19 Hình 3.6 Nguyên lí Sơ đồ thiết kế thực tế: Hình 3.7 Khối động  Ví dụ code điều khiển động đơn giản: 20 #include #include #ifndef _XTAL_FREQ #define _XTAL_FREQ 8000000 //Khai bao tan so thach anh(giong voi mach thuc) #endif CONFIG(0xFFFA); /* Initial setting CP:OFF,PT:OFF,WT:OFF,HS */ int sensor(void){ RB3 = RB0; RB4 = RB1; RB5 = RB2; } void main() { TRISA = 0xFF; TRISB = 0x07; RB6 = 0; RB7 = 0; while(1) { if(RB0==1 && RB1==0 && RB2==0){ RB6=1;// motor trai quay } if(RB0==0 && RB1==1 && RB2==0){ RB6=1;//2 motor quay RB7=1; } if(RB0==0 && RB1==0 && RB2==1){ 21 RB7=1;//motor phai quay } } } 3.4.2 Điều khiển tốc độ động Hình 3.8, motor đƣợc bật lên tắt lặp lại nhiều lần chu kì thời gian ngắn đƣợc thể nhƣ bên phải, mức trung bình dòng điện chảy qua đƣợc thể bên trái Bởi vậy, thay đổi tỷ lệ thời gian bật tắt theo chu kì, điều khiển tốc độ motor Hình 3.8 Các trạng thái tốc độ Với động trái phải, việc điều khiển tốc độ động giúp xe rẽ trái rẽ phải Động trái tắt, động phải bật điều khiển xe rẽ trái ngƣợc lại Nếu thời gian động trái bật lớn thời gian động phải tắt điều khiển động rẽ phải với góc cua rộng hơn… 3.5 Dò đƣờng  Chuyển đổi trạng thái Nhƣ Hình 3.9, trạng thái robot thay đổi cảm biến, phải cân nhắc khác biệt trạng thái robot để thiết kế chƣơng trình dò đƣờng Trong trƣờng hợp xấu nhất, robot chệch khỏi đƣờng, giá trị ba cảm biến 22 (màu trắng, màu trắng, màu trắng) Trạng thái robot thay đổi theo hƣớng đƣờng Hình 3.9 Chuyển đổi trạng thái  Nếu robot không bị nghiêng khỏi đƣờng Hình 3.10 Đi thẳng Nhƣ đƣợc thể Hình 3.10, robot không chệch khỏi đƣờng , robot thẳng  Nếu nghiêng khỏi đƣờng 23 Hình 3.11 Rẽ trái vòng cua nhỏ Mô tả trƣờng hợp nhƣ mô Hình 3.11 Hình 3.12 đƣợc thể bên dƣới Mỗi pin RB0,RB1 RB2 PORTB đƣợc kết nối với cảm biến tƣơng ứng trái , phải Nếu sàn màu trắng, mức “1” Nếu sàn màu đen, mức “0” Khi cảm biến trái , phải ( đen, đen ,trắng ) =( 0,0,1), robot nghiêng sang bên phải Nhƣ để trở lại đƣờng đi, robot phải rẽ trái c theo vòng cung bán kính lớn việc làm giảm động bên trái Hình 3.12 Chu trình rẽ trái  Nếu robot từ từ rẽ phải 24 Hình 3.13 Rẽ trái vòng cua lớn Mô tả trƣờng hợp nhƣ Hình 3.13 Hình 3.14 đƣợc thể bên dƣới Mỗi RB0, RB1 RB2 PORT kết nối với cảm biến trái, phải , Nếu sàn màu trắng, mức “1” Nếu sàn màu đen, mức “0” Khi cảm biến trái, phải phát ( đen, trắng ,trắng ) =( 0,1,1), robot nghiêng nhiều sang bên phải Sau để trở đƣờng , robot phải rẽ trái dọc theo vòng cung bán kính lớn việc làm giảm động bên trái Hình 3.14 Chu trình rẽ trái vòng cua lớn 25  Nếu robot chệch hẳn khỏi đƣờng nghiêng nhiều sang bên phải Hình 3.15 Tìm đƣờng Mô tả trƣờng hợp nhƣ Hình 3.15 Hình 3.16 đƣợc thể bên dƣới Mỗi RB0, RB1 RB2 PORT kết nối với cảm biến trái, phải, Nếu sàn màu trắng, mức “1” Nếu sàn màu đen, mức “0” Khi cảm biến trái , phải phát ( trắng, trắng ,trắng ) =( 1,1,1), robot rẽ trái lần cuối, robot phải rẽ trái dọc theo vòng cung bán kính lớn việc làm giảm động bên trái Hình 3.16 Chu trình tìm đƣờng ( trƣờng hợp rẽ trái) 26 3.6 CODE Dƣới code dò đƣờng : #include #include #ifndef _XTAL_FREQ #define _XTAL_FREQ 8000000 //Khai bao tan so thach anh(giong voi mach thuc) #endif CONFIG(0xFFFA); /* Initial setting CP:OFF,PT:OFF,WT:OFF,HS */ int sensor(void){ RB3 = RB0; RB4 = RB1; RB5 = RB2; } void main() { TRISA = 0xFF; TRISB = 0x07; RB6 = 1; RB7 = 1; while(RA4==1) { if((RB0==0)&&(RB1==0)&&(RB2==0)) { RB6 = 0;/*2 motor off*/ delay_ms(0.02); RB7 = 0; delay_ms(0.02); 27 sensor(); } if((RB0==0)&&(RB1==0)&&(RB2==1)) { RB7 = 0;/*motor phai off */ delay_ms(0.03); RB6 = 1;/*motor trai on */ delay_ms(0.05); sensor(); } if((RB0==0)&&(RB1==1)&&(RB2==1)) { RB7 = 0;/* motor phai off */ delay_ms(0.03); RB6 = 1;/*motot trai on */ delay_ms(0.05); sensor(); } if((RB0==1)&&(RB1==0)&&(RB2==0)) { RB6 = 0;/*motor phai off */ delay_ms(0.03); RB7 = 1;/*motor trai on */ delay_ms(0.05); sensor(); } if((RB0==1)&&(RB1==0)&&(RB2==1)) 28 { RB6 = 1;/* motor on */ delay_ms(0.05); RB7 = 1; delay_ms(0.05); sensor(); } if((RB0==1)&&(RB1==1)&&(RB2==0)) { RB6 = 0; delay_ms(0.03); RB7 = 1; delay_ms(0.05); sensor(); } if((RB0==1)&&(RB1==1)&&(RB2==1)) { RB6 = 0;/* trai on */ delay_ms(0.03); RB7 = 1; delay_ms(0.05); sensor(); } } } 29 Hình 3.17 Sơ đồ thuật toán 30 KẾT LUẬN Sau thời gian tìm tòi tiến hành công việc thiết kế nhóm chúng em tạo đƣợc sản phẩm robot dò đƣờng nhƣ mục tiêu đề Mặc dù với nhiều tính chƣa đƣợc tối ƣu nhƣ: khả vận hành chƣa đƣợc linh hoạt, chƣa xử lý đƣợc đoạn đƣờng phức tạp, giới hạn tốc độ di chuyển…nhƣng đáp ứng đƣợc chức (dò đƣờng di chuyển ) mức độ đơn giản Trong trình làm Project 2, chúng em đƣợc hƣớng dẫn tận tình T.S Lê Dũng Thầy hƣớng dẫn cho chúng em cách tiến hành làm đề tài hƣớng cho đề tài Đồ án cho chúng em hội trao đổi học hỏi thêm cách làm việc theo nhóm hiệu quả, biết thêm lập trình, vi điều khiển…nhƣng bên cạnh chúng em gặp phải không khó khăn hạn chế công việc: giới hạn khả lập trình, kiến thức hạn hẹp PIC… Cuối chúng em chân thành cảm ơn Viện Điện tử- viễn thông cho chúng em hội học tiến hành làm Đồ án 2, hƣớng dẫn nhiệt tình tận tâm T.S Lê Dũng - ngƣời theo chúng em suốt môn học giúp chúng em hoàn thành đề tài 31 [...]... rẽ phải với góc cua rộng hơn… 3.5 Dò đƣờng  Chuyển đổi giữa các trạng thái Nhƣ trong Hình 3.9, trạng thái của robot sẽ thay đổi bởi cảm biến, phải cân nhắc sự khác biệt giữa các trạng thái của robot để thiết kế chƣơng trình dò đƣờng Trong trƣờng hợp xấu nhất, nếu robot đi chệch khỏi đƣờng, giá trị của ba cảm biến 22 (màu trắng, màu trắng, màu trắng) Trạng thái của robot sẽ thay đổi theo hƣớng của... 3.17 Sơ đồ thuật toán 30 KẾT LUẬN Sau một thời gian tìm tòi và tiến hành công việc thiết kế nhóm chúng em đã tạo ra đƣợc sản phẩm là robot dò đƣờng nhƣ mục tiêu đề ra Mặc dù với nhiều tính năng chƣa đƣợc tối ƣu nhƣ: khả năng vận hành chƣa đƣợc linh hoạt, chƣa xử lý đƣợc các đoạn đƣờng phức tạp, giới hạn về tốc độ di chuyển…nhƣng nó cũng đáp ứng đƣợc đúng chức năng của nó (dò đƣờng và di chuyển ) ở... code Hình 3.3a Bút bấm Hình 3.3b Thiết kế nút Start và Reset 16 3.3 Phát hiện đƣờng đi bằng cảm biến Chúng em dung cảm biến hồng ngoại, với mạch dò đƣờng cần 3 bộ thu phát, mỗi bộ gồm 1 led phát hồng ngoại và 1 led thu hồng ngoại đƣợc đặt sát nhau Chúng em kết hợp dùng LM324 để mức logic vào PIC16f84a đƣợc chính xác và ổn định hơn LM324 gồm 4 bộ so sánh, mỗi bộ đƣợc kết nối theo Hình 3.4 Cổng 2 đƣợc... đen, đen ,trắng ) =( 0,0,1), robot hơi nghiêng sang bên phải Nhƣ vậy để trở lại đƣờng đi, robot phải rẽ trái c theo vòng cung bán kính lớn bằng việc làm giảm động cơ bên trái Hình 3.12 Chu trình rẽ trái  Nếu robot từ từ rẽ phải 24 Hình 3.13 Rẽ trái vòng cua lớn Mô tả của trƣờng hợp này nhƣ Hình 3.13 và Hình 3.14 đều đƣợc thể hiện bên dƣới Mỗi RB0, RB1 và RB2 là PORT kết nối với cảm biến trái, phải... 0,1,1), robot nghiêng nhiều sang bên phải Sau đó để trở về đƣờng đi , robot phải rẽ trái dọc theo vòng cung bán kính lớn bằng việc làm giảm động cơ bên trái Hình 3.14 Chu trình rẽ trái vòng cua lớn 25  Nếu robot đi chệch hẳn khỏi đƣờng đi khi nghiêng quá nhiều sang bên phải Hình 3.15 Tìm đƣờng Mô tả của trƣờng hợp này nhƣ Hình 3.15 và Hình 3.16 đều đƣợc thể hiện bên dƣới Mỗi RB0, RB1 và RB2 là PORT kết... Chuyển đổi giữa các trạng thái  Nếu robot không bị nghiêng khỏi đƣờng đi Hình 3.10 Đi thẳng Nhƣ đã đƣợc thể hiện trong Hình 3.10, nếu robot không chệch khỏi đƣờng đi , robot sẽ đi thẳng  Nếu hơi nghiêng khỏi đƣờng đi 23 Hình 3.11 Rẽ trái vòng cua nhỏ Mô tả trƣờng hợp này nhƣ mô Hình 3.11 và Hình 3.12 đƣợc thể hiện bên dƣới Mỗi pin RB0,RB1 và RB2 của PORTB đƣợc kết nối với 1 cảm biến tƣơng ứng là... wait time = 0.5 sec */ PORTB=0x38; /* LEDs on */ wait0(50); /* wait time = 0.5 sec */ } }  Mô tả của đầu vào và thiết lập đầu ra bởi TRISA và TRISB TRISA = 0xFC; /* A0,1:output, 2,3,4:input */ TRISB = 0xC7; /* B0,1,2:input, B3,4,5:LED output, other bits input */ Hai dòng code bên trên thiết lập hoạt động làm việc của input/output của PIC’s PORTA và PORTB Chi tiết hoạt động đƣợc thể hiện ở (Hình... khiển động cơ theo mức logic 3.2 L motor Right motor Control logic 0 0 Dừng 1 0 Rẽ trái 0 1 Rẽ phải 1 1 Đi thẳng Lập trình với ngôn ngữ C 3.2.1 Ngôn ngữ C Robot dò đƣờng sử dụng ngôn ngữ C Ngôn ngữ C có thể thể hiện chức năng tƣơng đồng trong vài dòng code Ngoài ra, nó dễ dàng hơn cho việc thể hiện việc hoạt động ở mức cao hơn nhƣ biểu thức toán học hay thuật toán trong C hơn là trong assembly 11 Sự... cổng 3 sẽ nhỏ hơn áp trên cổng 2  đầu ra mức 0, led báo tắt Ngƣợc lại, nếu led thu nhận đƣợc sóng hồng ngoại thì áp trên cổng 3 lớn hơn áp trên cổng 2 đầu ra mức 1,led báo sáng Các bộ so sánh khác cũng tƣơng tự nhƣ vậy Ta có thể chỉnh độ nhạy của cảm biến bằng cách thay đổi giá trị của biến trở vi chỉnh Hình 3.4 Khối cảm biến 17 Hình 3.5 Led báo Đầu ra của LM324 nối với đầu vào của PIC16F84A LM324... là màu đen, là mức “0” Khi mỗi cảm biến trái , phải và giữa phát hiện ( trắng, trắng ,trắng ) =( 1,1,1), robot rẽ trái lần cuối, robot phải rẽ trái dọc theo vòng cung bán kính lớn bằng việc làm giảm động cơ bên trái Hình 3.16 Chu trình tìm đƣờng ( trƣờng hợp rẽ trái) 26 3.6 CODE Dƣới đây là code dò đƣờng : #include #include #ifndef _XTAL_FREQ #define _XTAL_FREQ 8000000 //Khai ... 22 3.5 Dò đƣờng 22 3.6 CODE 27 KẾT LUẬN 31 CHƢƠNG GIỚI THIỆU ROBOT DÒ ĐƢỜNG 1.1 Giới thiệu Robot tự hành hay robot di động (mobile robots, thƣờng... 3.5 Dò đƣờng  Chuyển đổi trạng thái Nhƣ Hình 3.9, trạng thái robot thay đổi cảm biến, phải cân nhắc khác biệt trạng thái robot để thiết kế chƣơng trình dò đƣờng Trong trƣờng hợp xấu nhất, robot. .. viện; robot phục vụ quét dọn đƣờng phố; robot kiểm tra môi trƣờng nguy hiểm; robot canh gác, thám; robot khám phá không gian, di chuyển hành tinh; robot xe lăn phục vụ ngƣời khuyết tật; robot

Ngày đăng: 09/11/2015, 14:44

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w