1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo đồ án tốt nghiệp chế tạo mô hình phân loại sản phẩm theo chiều cao dùng arduino

49 12 0

Đ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 49
Dung lượng 2,12 MB

Nội dung

Báo cáo Đồ án tốt nghiệp GVHD: ThS Nguyễn Lương Thanh Tùng LỜI MỞ ĐẦU Ngày kỹ thuật vi điều khiển trở nên quen thuộc ngành kỹ thuật dân dụng Các vi điều khiển có khả xử lý nhiều hoạt động phức tạp mà cần chip vi mạch nhỏ, dần thay tủ điều khiển lớn phức tạp mạch điện gọn nhẹ, dễ dàng thao tác sử dụng Vi điều khiển khơng góp phần vào kỹ thuật điều khiển mà cịn góp phần to lớn vào việc phát triển thơng tin Chính lý trên, việc tìm hiểu, kh ảo sát vi điều khiển điều mà sinh viên ngành điện mà đặc biệt chuyên ngành kỹ thuật điện-điện tử phải quan tâm Đó nhu cầu cần thiết cấp bách sinh viên, đề tài thực đáp ứng nhu cầu Để góp phần đáp ứng nhu cầu đóng góp thêm giải pháp thay tủ điều khiển lớn phức tạp, sau thời gian giảng dạy thầy cô trường Đại học Bà Rịa - Vũng Tàu, đồng thời giúp đỡ nhiệt tình thầy Nguyễn Lương Thanh Tùng bạn khoa, thiết kế, chế tạo "Mơ hình phân loại sản phẩm theo chiều cao dùng Arduino." Do thời gian, kiến thức kinh nghiệm tơi cịn có hạn nên khơng thể tránh khỏi sai sót Tơi mong giúp đỡ tham khảo ý kiế n thầy bạn nhằm đóng góp phát triển thêm đề tài SVTH: Hoàng Nghĩa Hiệp Báo cáo Đồ án tốt nghiệp GVHD: ThS Nguyễn Lương Thanh Tùng MỤC LỤC Đề mục Trang PHIẾU GIAO ĐỀ TÀI ĐỒ ÁN TỐT NGHIỆP LỜI CAM ĐOAN LỜI CẢM ƠN NHẬN XÉT Chƣơng 1: TỔNG QUAN ĐỀ TÀI 1.1 Lý chọn đề tài: 1.2 Giới hạn đề tài: 1.3 Nguồn tƣ liệu: 1.4 Nhiệm vụ nghiên cứu: 10 Chƣơng 2: TỔNG QUAN CÁC LINH KIỆN CHÍNH 11 2.1 ArduinoUno R3 11 2.1.1 Giới thiệu 11 2.1.2 Uno 13 2.1.3 Cấu trúc, thông số 14 2.2 IC 74HC595 20 2.2.1 Thế dịch chốt? 20 2.2.2 Sơ đồ & chức chân 74HC595 21 2.2.3 Giản đồ thời gian cách hoạt động IC 23 2.3 E18-D80NK 24 2.3.1 Giới thiệu 24 2.3.2 Thông số kỹ thuật 25 2.3.3 Sơ đồ dây 25 2.4 LED đoạn 26 2.4.1 Giới thiệu 26 2.4.2 Cấu tạo & Nguyên lý hoạt động 26 2.4.3 Trở hạn dòng: 27 2.5 Motor DC 28 SVTH: Hoàng Nghĩa Hiệp Báo cáo Đồ án tốt nghiệp GVHD: ThS Nguyễn Lương Thanh Tùng 2.5.1 Giới thiệu 28 2.5.2 Thông số kỹ thuật 28 2.5.3 Cấu tạo & Hoạt động .29 2.6 Module LM2596 30 2.6.1 Giới thiệu 30 2.6.2 Thông số kỹ thuật 30 2.6.3 Nguyên lý hoạt động .31 2.7 Motor Servo 32 2.7.1 Giới thiệu 32 2.7.2 Hoạt động & Cấu tạo .33 2.7.3 Thông số kỹ thuật 34 2.7.4 Điều biến độ rộng xung 35 2.7.5 Giới hạn quay 36 2.7.6 Phân loại kích thước đặc biệt .36 Chƣơng 3: MƠ HÌNH ĐẾM & PHÂN LOẠI SẢN PHẨM 37 3.1 Giới thiệu 37 3.2 Các phần mềm thiết kế 38 3.2.1 Arduino .38 3.2.2 Proteus Professional .39 3.3 Sơ đồ khối 40 3.4 Nguyên lý hoạt động 42 3.5 Mạch in 44 3.6 Lƣu đồ thuật toán 45 3.7 Code – chƣơng trình 46 Chƣơng 4: KẾT LUẬN 53 4.1 Ƣu/Nhƣợc điểm 53 4.2 Hƣớng phát triển 53 TÀI LIỆU THAM KHẢO .54 SVTH: Hoàng Nghĩa Hiệp Báo cáo Đồ án tốt nghiệp GVHD: ThS Nguyễn Lương Thanh Tùng Chƣơng 1: TỔNG QUAN ĐỀ TÀI 1.1 Lý chọn đề tài: Với phát triển xã hội, khoa học kĩ thuật nói chung vi điều khiển nói riêng ngày ứng dụng hầu hết lĩnh vực Trong nhiều lĩnh vực quan tâm, có lĩnh vực vi điều khiển quan tâm nhiều vi điều khiển AVR Một số biến thể phổ biến AVR Arduino Việc tìm hiểu ứng dụng hết khả nhiều loại Arduino trình dài lý thú hữu ích, thuận tiện, tinh gọn, khả phát triển đa dạng dòng sản phẩm phù hợp nhiều quy mơ ứng dụng Một ý tưởng khác quan tâm đông đảo diễn đàn học tập ngành điện tử tự động hóa, chưa có tài liệu thống phổ biến hướng dẫn hay cung cấp thơng tin nó, chưa giảng dạy nhiều trung tâm ứng dụng Arduino sản xuất Trước thực tiễn ấy, định chọn đề tài nhằm tìm hiểu vấn đề đếm phân loại sản phẩm qua ứng dụng Arduino 1.2 Giới hạn đề tài: Trong phạm vi đồ án này, xin trình bày sơ lược cấu tạo nguyên lý hoạt động Mơ hình phân loại đếm sản phẩm theo chiều cao sử dụng Arduino Uno R3, 74HC595, led đoạn 1.3 Nguồn tƣ liệu: Dựa vào mục đích tìm hiểu, phạm vi giới hạn đối tượng nghiên cứu; trình thực hiện, đề tài sử dụng nguồn tư liệu sau: - Các tài liệu kỹ thuật cấu trúc, nguyên lý hoạt động - Các tài liệu trang thiết bị điện tử - Tài liệu lập trình lập trình, mã hóa vi điều khiển SVTH: Hồng Nghĩa Hiệp Báo cáo Đồ án tốt nghiệp GVHD: ThS Nguyễn Lương Thanh Tùng 1.4 Nhiệm vụ nghiên cứu: Mục đích nghiên cứu thơng qua đề tài tìm hiểu ứng dụng đếm phân loại sản phẩm nên nhiệm vụ nghiên cứu gồm: - Tìm hiểu chế hoạt động - Phân tích sơ đồ nguyên lý - Nâng cao kỹ lập trình vi điều khiển, hàn mạch, làm sản phẩm điện tử - Phát triển khả tư cho sinh viên q trình nghiên cứu SVTH: Hồng Nghĩa Hiệp 10 Báo cáo Đồ án tốt nghiệp GVHD: ThS Nguyễn Lương Thanh Tùng Chƣơng 2: TỔNG QUAN CÁC LINH KIỆN CHÍNH 2.1 ArduinoUno R3 2.1.1 Giới thiệu Arduino khởi động vào năm 2005 dự án dành cho sinh viên trại Interaction Design Institute Ivrea (Viện thiết kế tương tác Ivrea) Ivrea, Italy Cái tên "Arduino" đến từ quán bar Ivrea, nơi vài nhà sáng lập dự án thường xuyên gặp mặt Các thiết bị dựa tảng Arduino lập trình ngơn ngữ riêng Ngơn ngữ dựa ngôn ngữ Wiring viết cho phần cứng nói chung mơi trường phát triển tích hợp (IDE) chạy máy tính cá nhân Và Wiring lại biến thể C/C++ Một số người gọi Wiring, số khác gọi C hay C/C++ Sau tảng Wiring hoàn thành, nhà nghiên cứu làm việc với để giúp nhẹ hơn, rẻ hơn, khả dụng cộng đồng mã nguồn mở số nhà nghiên cứu David Cuarlielles, phổ biến ý tưởng Những nhà thiết kế Arduino cố gắng mang đến phương thức dễ dàng, không tốn cho người yêu thích, sinh viên giới chuyên nghiệp để tạo thiết bị có khả tương tác với môi trường thông qua cảm biến cấu chấp hành Thông tin thiết kế phần cứng cung cấp công khai để muốn tự làm mạch Arduino tay tự thực (mã nguồn mở) Người ta ước tính khoảng năm 2011 có 300 ngàn mạch Arduino thức sản xuất thương mại, vào năm 2013 có khoảng 700 ngàn mạch thức đưa tới tay người dùng Phần cứng Arduino gốc sản xuất công ty Italy tên Smart Projects Một vài board dẫn xuất từ Arduino thiết kế công ty Mỹ tên SVTH: Hoàng Nghĩa Hiệp 11 Báo cáo Đồ án tốt nghiệp GVHD: ThS Nguyễn Lương Thanh Tùng SparkFun Electronics Nhiều phiên Arduino sản xuất phù hợp cho nhiều mục đích sử dụng: Hình 2.1: Những phiên Arduino SVTH: Hoàng Nghĩa Hiệp 12 Báo cáo Đồ án tốt nghiệp GVHD: ThS Nguyễn Lương Thanh Tùng 2.1.2 Uno "Uno" có nghĩa tiếng Ý đặt tên để đánh dấu việc phát hành tới Arduino 1.0 Uno phiên 1.0 phiên tài liệu tham khảo Arduino Uno loại board Arduino, mơ hình tham chiếu cho tảng Arduino Arduino Uno “hội đồng quản trị” dựa ATmega328 Nó có 14 số chân đầu vào / đầu ra, đầu vào analog, 16 MHz cộng hưởng gốm, kết nối USB, jack cắm điện, tiêu đề ICSP, nút reset Nó chứa tất thứ cần thiết để hỗ trợ vi điều khiển; cần kết nối với máy tính cáp USB cấp điện cho để bắt đầu Hình 2.2: Arduino Uno Uno khác với tất phiên trước chỗ khơng sử dụng FTDI chip điều khiển USB-to-serial Thay vào đó, có tính Atmega 16U2 lập trình công cụ chuyển đổi USB-to-serial Phiên (R2) Uno sử dụng Atmega8U2 có điện trở kéo dịng 8U2 HWB xuống đất, làm cho dễ dàng để đưa vào chế độ DFU Phiên (R3) Uno có tính sau đây:  Thêm SDA SCL gần với pin Aref hai chân đặt gần với pin RESET, IOREF cho phép thích ứng với điện áp cung cấp  Đặt lại mạch khỏe mạnh  Atmega 16U2 thay 8U2 SVTH: Hoàng Nghĩa Hiệp 13 Báo cáo Đồ án tốt nghiệp GVHD: ThS Nguyễn Lương Thanh Tùng 2.1.3 Cấu trúc, thông số Bảng 2.1: Một vài thông số Arduino UNO R3 Vi điều khiển ATmega328 họ 8bit Điện áp hoạt động 5V DC (chỉ cấp qua cổng USB) Tần số hoạt động 16 MHz Dòng tiêu thụ khoảng 30mA Điện áp vào khuyên dùng 7-12V DC Điện áp vào giới hạn 6-20V DC Số chân Digital I/O 14 (6 chân hardware PWM) Số chân Analog (độ phân giải 10bit) Dòng tối đa chân I/O 30 mA Dòng tối đa (5V) 500 mA Dòng tối đa (3.3V) 50 mA Bộ nhớ flash 32 KB (ATmega328) với 0.5KB dùng bootloader SRAM KB (ATmega328) EEPROM KB (ATmega328) SVTH: Hoàng Nghĩa Hiệp 14 Báo cáo Đồ án tốt nghiệp GVHD: ThS Nguyễn Lương Thanh Tùng a Vi điều khiển & nhớ Arduino UNO sử dụng vi điều khiển họ 8bit AVR ATmega8, ATmega168, ATmega328 Bộ não xử lí tác vụ đơn giản điều khiển đèn LED nhấp nháy, xử lí tín hiệu cho xe điều khiển từ xa, làm trạm đo nhiệt độ - độ ẩm hiển thị lên hình LCD,… Hình 2.3: Vi điều khiển Atmega328 tiêu chuẩn 32KB nhớ Flash: đoạn lệnh lập trình lưu trữ nhớ Flash vi điều khiển Thường có khoảng vài KB số dùng cho bootloader đừng lo, cần 20KB nhớ 2KB cho SRAM (Static Random Access Memory): giá trị biến khai báo lập trình lưu Khai báo nhiều biến cần nhiều nhớ RAM Tuy vậy, thực nhớ RAM lại trở thành thứ phải bận tâm Khi điện, liệu SRAM bị 1Kb cho EEPROM (Electrically Eraseble Programmable Read Only Memory): giống ổ cứng mini – nơi đọc ghi liệu vào mà lo bị cúp điện giống liệu SRAM SVTH: Hoàng Nghĩa Hiệp 15 Báo cáo Đồ án tốt nghiệp GVHD: ThS Nguyễn Lương Thanh Tùng 3.3 Sơ đồ khối Hình 3.6: Sơ đồ khối mơ hình đếm & phân loại sản phẩm  Khối nguồn gồm linh kiện tác động đến cơng suất, dịng điện (adapter, module nguồn ) cung cấp lượng thích hợp cho mơ hình hệ thống Hình 3.7: Adapter AC→DC cho hệ thống  Khối hiển thị (Led đoạn): hiển thị số lượng đếm từ cảm biến Hình 3.8: cặp Led đoạn SVTH: Hoàng Nghĩa Hiệp 40 Báo cáo Đồ án tốt nghiệp  GVHD: ThS Nguyễn Lương Thanh Tùng Khối phân loại (Băng tải, Servo): phân sản phẩm thành nhiều loại theo yêu cầu mơ hình đề tài  Khối tín hiệu cảm biến E18D80NK: phát vật thể truyền tín hiệu khối xử lý để mã hóa liệu Hình 3.9: Các Servo, cảm biến băng tải  Khối xử lý (Arduino Uno R3, IC 74HC595…): xử lý tín hiệu từ cảm biến xuất liệu mã hóa đến khối hiển thị, khối phân loại Hình 3.10: Board mạch linh kiện SVTH: Hồng Nghĩa Hiệp 41 Báo cáo Đồ án tốt nghiệp GVHD: ThS Nguyễn Lương Thanh Tùng 3.4 Nguyên lý hoạt động Khi cấp nguồn, mạch hoạt động theo chương trình thiết lập Arduino Hình 3.11: Sơ đồ ngun lý hoạt động Chu trình hoạt động mơ hình hệ thống thu nhận tín hiệu cảm biến Các tín hiệu trung tâm xử lý xuất lệnh tương thích cho Servo với chuỗi Led đoạn để thực theo yêu cầu đề tài SVTH: Hoàng Nghĩa Hiệp 42 Báo cáo Đồ án tốt nghiệp GVHD: ThS Nguyễn Lương Thanh Tùng Ở trạng thái bình trường, cảm biến E18-D80NK cấp xung mức cao cho xử lý trung tâm Với xung mức cao, thông qua code lập trình, Arduino Uno R3 trì trạng IC “dịch chốt” 74HC595 tiếp tục chu trình quét led đoạn với khối liệu có (1 IC phụ trách số mà led đoạn thị, IC lại phụ trách vị trí hiển thị số đó) Động Servo giữ nguyên gạc phân loại góc o Hình 3.12: Mơ hình chưa có tác động từ cảm biến Khi tác động đối tượng, dịng điện qua trở treo thơng qua cảm biến E18-D80NK tới GND Lúc này, xung mức thấp cấp cho Arduino Uno R3 Dữ liệu xử lý đưa vào IC 74HC595 làm thay đổi hiển thị led đoạn Đồng thời, động Servo quay gạc phân loại góc 50 o, đối tượng đưa khỏi băng tải Hình 3.13: Mơ hình hoạt động có tín hiệu từ cảm biến SVTH: Hoàng Nghĩa Hiệp 43 Báo cáo Đồ án tốt nghiệp GVHD: ThS Nguyễn Lương Thanh Tùng 3.5 Mạch in Mạch in thiết kế từ phần mềm vẽ mạch chuyên dụng OrCad, Proteus, EsyEDA, KitCad (Đối với đồ án mạch in vẽ phần mềm Proteus để tiện lợi tích hợp mơ phỏng.) Hình 3.14: Bản thiết kế mạch in Trong q trình làm mạch, tay nghề cịn non trẻ, thiếu kinh nghiệm nên mạch thiếu thẩm mỹ tính chun nghiệp Hình 3.15: Mạch thực tế SVTH: Hoàng Nghĩa Hiệp 44 Báo cáo Đồ án tốt nghiệp GVHD: ThS Nguyễn Lương Thanh Tùng 3.6 Lƣu đồ thuật toán On Set up program Reset = Sensor2 = Sensor1 = EPPROM1++ Servo1 active EPPROM2++ Display Display Sensor3 = Servo2 active EPPROM3++ Display EPPROM1 = EPPROM2 = EPPROM3 = Off SVTH: Hoàng Nghĩa Hiệp 45 Báo cáo Đồ án tốt nghiệp GVHD: ThS Nguyễn Lương Thanh Tùng 3.7 Code – chƣơng trình #include #include Servo servo1; Servo servo2; int latchPin1 = 8; int clockPin1 = 10; int dataPin1 = 9; int latchPin2 = 11; int clockPin2 = 13; int dataPin2 = 12; int resetPin =2; int Sensor1 =3; int Sensor2 =4; int Sensor3 =5; int SensorState1; int SensorState2; int SensorState3; int LastSensorState1; int LastSensorState2; int LastSensorState3; int b1,b2,b3,c1,c2,c3; SVTH: Hoàng Nghĩa Hiệp 46 Báo cáo Đồ án tốt nghiệp GVHD: ThS Nguyễn Lương Thanh Tùng const int Seg[10] = { 0b11000000, //0 0b11111001, //1 0b10100100, //2 0b10110000, //3 0b10011001, //4 0b10010010, //5 0b10000010, //6 0b11111000, //7 0b10000000, //8 0b10010000, //9 }; const int led [9] = { 0, 0b100000, 0b010000, 0b001000, 0b000100, 0b000010, 0b000001, }; SVTH: Hoàng Nghĩa Hiệp 47 Báo cáo Đồ án tốt nghiệp GVHD: ThS Nguyễn Lương Thanh Tùng void setup() { pinMode (latchPin1, OUTPUT); pinMode (clockPin1, OUTPUT); pinMode (dataPin1, OUTPUT); pinMode (latchPin2, OUTPUT); pinMode (clockPin2, OUTPUT); pinMode (dataPin2, OUTPUT); pinMode(resetPin, INPUT); pinMode(Sensor1, INPUT); pinMode(Sensor2, INPUT); pinMode(Sensor3, INPUT); servo1.attach(7); servo2.attach(6); } void Delay(float delayTime, void (func)()){ unsigned long endTime = millis() + delayTime; while(millis() < endTime) { func();} } SVTH: Hoàng Nghĩa Hiệp 48 Báo cáo Đồ án tốt nghiệp GVHD: ThS Nguyễn Lương Thanh Tùng void Display(){ led7segPlus (c1,1); delay(1); led7segPlus (b1,2); delay(1); led7segPlus (c2,3); delay(1); led7segPlus (b2,4); delay(1); led7segPlus (c3,5); delay(1); led7segPlus (b3,6); delay(1);} void reset() { EEPROM.write(1,0); EEPROM.write(2,0); EEPROM.write(3,0); } void Type1() { Display(); Type3(); SensorState1 = digitalRead(Sensor1); if ((SensorState1 != LastSensorState1)&(SensorState1 == 0)) { EEPROM.write(1,EEPROM.read(1)+1); if (EEPROM.read(1) > 99) { EEPROM.write(1,0);} SVTH: Hoàng Nghĩa Hiệp 49 Báo cáo Đồ án tốt nghiệp GVHD: ThS Nguyễn Lương Thanh Tùng c1 = EEPROM.read(1) % 10; b1 = EEPROM.read(1) / 10; servo1.write(50); Delay(2300,Type2); servo1.write(0);} LastSensorState1 = SensorState1;} void Type2() { Display(); Type3(); SensorState2 = digitalRead(Sensor2); if ((SensorState2 != LastSensorState2)&(SensorState2 == 0)) { EEPROM.write(2,EEPROM.read(2)+1); if (EEPROM.read(2) > 99) { EEPROM.write(2,0);} c2 = EEPROM.read(2) % 10; b2 = EEPROM.read(2) / 10; servo2.write(50); Delay(2300,Type1); servo2.write(0); } LastSensorState2 = SensorState2; } void Type3() { SensorState3 = digitalRead(Sensor3); SVTH: Hoàng Nghĩa Hiệp 50 Báo cáo Đồ án tốt nghiệp GVHD: ThS Nguyễn Lương Thanh Tùng if ((SensorState3 != LastSensorState3)&(SensorState3 == 0)) { EEPROM.write(3,EEPROM.read(3)+1); if (EEPROM.read(3) > 99) { EEPROM.write(3,0);} c3 = EEPROM.read(3) % 10; b3 = EEPROM.read(3) / 10; } LastSensorState3 = SensorState3; } void loop() { servo1.write(0); servo2.write(0); if (digitalRead(resetPin)!=0) { reset();} Type1(); Type2(); Type3(); Display(); } SVTH: Hoàng Nghĩa Hiệp 51 Báo cáo Đồ án tốt nghiệp GVHD: ThS Nguyễn Lương Thanh Tùng void led7segPlus (int number, int pin) { digitalWrite(latchPin1, 0) ; shiftOut(dataPin1, clockPin1, MSBFIRST, led[pin]); digitalWrite(latchPin2, 0); shiftOut(dataPin2, clockPin2, MSBFIRST, Seg[number]); digitalWrite(latchPin2, 1); digitalWrite(latchPin1, 1); } SVTH: Hoàng Nghĩa Hiệp 52 Báo cáo Đồ án tốt nghiệp GVHD: ThS Nguyễn Lương Thanh Tùng Chƣơng 4: KẾT LUẬN Sau thời gian nghiên cứu tìm hiểu đề tài này; đến nay, “mơ hình phân loại đếm sản phẩm theo chiều cao sử dụng Arduino” thiết kế, chế tạo thành công 4.1 Ƣu/Nhƣợc điểm Ƣu điểm: - Mạch nhỏ gọn - Đáp ứng yêu cầu đề tài - Hiển thị rõ ràng Nhƣợc điểm: - Chưa có giao diện giám sát, mơ máy tính - Độ ổn định chưa tối ưu 4.2 Hƣớng phát triển - Áp dụng cho dây chuyển sản xuất nhỏ - Thay đổi cảm biến để tạo dây chuyền phân loại dựa tiêu chí khác sản phẩm - Khắc phục nhược điểm đề đề tài hoàn thiện Do thời gian kiến thức cịn hạn hẹp nên khơng thể tránh khỏi thiếu sót q trình thực đề tài Rất mong nhận góp ý, đánh giá quý báu quý thầy cô bạn SVTH: Hoàng Nghĩa Hiệp 53 Báo cáo Đồ án tốt nghiệp GVHD: ThS Nguyễn Lương Thanh Tùng TÀI LIỆU THAM KHẢO Kỹ thuật điện tử (1999) Đỗ Xuân Thụ – NXB giáo dục Giáo trình cảm biến (2000) Phan Quốc Phô, Nguyễn Đức Chiến – NXB Khoa học kỹ thuật Vi điều khiển cấu trúc lập trình ứng dụng (2008) Kiều Xuân Thực, Vũ Thị Hương, Vũ Trung Kiên – NXB Giáo Dục Website http://alldatasheet.com/ Website http://arduino.vn/ Website http://codientu.org/ Website http://webdien.com/ Website http://www.tailieu.vn/ Website http://wikipedia.com/ SVTH: Hoàng Nghĩa Hiệp 54

Ngày đăng: 04/05/2023, 20:17

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w