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

Báo cáo đồ án đèn giao thông ngã tư hiển thị thời gian bằng led 7 đoạn sử dụng arduino

29 451 10

Đ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 29
Dung lượng 1,4 MB
File đính kèm mạch đèn giao thông ngã tư dùng arduino.zip (1 MB)

Nội dung

Báo cáo đồ án Đèn giao thông ngã tư là một báo cáo về việc nghiên cứu, thiết kế và triển khai hệ thống đèn giao thông cho ngã tư, nhằm tăng cường an toàn giao thông và giảm thiểu tai nạn giao thông. Báo cáo được chia thành các phần sau: Giới thiệu: Báo cáo giới thiệu về đồ án và mô tả sơ lược về vấn đề an toàn giao thông tại ngã tư. Ngoài ra, phần giới thiệu cũng trình bày một số nghiên cứu liên quan đến đề tài và mục tiêu của đồ án. Thiết kế: Phần này mô tả về cách thiết kế hệ thống đèn giao thông cho ngã tư, bao gồm cách sắp xếp các đèn, màu sắc của đèn và phương pháp điều khiển. Cài đặt: Phần này mô tả về cách triển khai hệ thống đèn giao thông cho ngã tư, bao gồm các bước lắp đặt và cài đặt phần mềm. Kiểm tra và đánh giá: Phần này mô tả về kết quả kiểm tra và đánh giá hiệu suất của hệ thống đèn giao thông cho ngã tư, bao gồm thời gian phản hồi và tính ổn định của hệ thống. Kết luận: Báo cáo kết thúc với các kết luận và đánh giá về đồ án, đưa ra các lợi ích và ứng dụng của hệ thống đèn giao thông trong việc tăng cường an toàn giao thông và giảm thiểu tai nạn giao thông. Trong báo cáo này, mô tả chi tiết về cách xây dựng một hệ thống đèn giao thông hiệu quả cho ngã tư. Báo cáo cũng giải thích các bước để thiết kế và triển khai hệ thống, đánh giá hiệu suất của hệ thống và đưa ra các lợi ích của việc sử dụng hệ thống đèn giao thông trong việc tăng cường an toàn giao thông và giảm thiểu tai nạn giao thông.

Trang 1

ĐỒ ÁN 2

Đề tài: Thiết kế hệ thống điều khiển tín hiệu đèn ngã tư giao

thông sử dụng vi điều khiển

Lớp : K23D

Hà Nội 2023

Trang 2

MỤC LỤC

LỜI MỞ ĐẦU 2

NỘI DUNG 3

I Tổng quan đồ án 3

1 Yêu cầu 3

II Tổng quan board Arduino Uno, IC ghi dịch 74HC595 và 1 số linh kiện 3

1 Board arduino uno R3 3

1.1 Giới thiệu vi điều khiển AVR 3

1.2 Tổng quát vi điều khiển ATmega328P Thông số kỹ thuật của Tmega328P 5

1.3 Phần cứng cơ bản và ngoại vi trên board 11

1.4 Công cụ phát triển cho board 13

2 IC ghi dịch 74HC595 13

2.1 Cấu tạo, đặc tính kỹ thuật IC 74HC595: 13

2.2 Nguyên lý hoạt động của IC ghi dịch 74HC595: 15

2.3 Giao tiếp giữa 74HC595 với arduino 17

3 Các linh kiện khác 17

3.1 Modun 2 led 7 đoạn anot chung hàn sẵn IC74HC595 17

3.2 LED 5mm 5v 3 màu và dây nối 18

III Thiết kế mạch và quá trình thực hiện 18

1 Nguyên lý hoạt động của mạch đèn giao thông 18

2 Lưu đồ thuật toán 20

3 Sơ đồ mạch trên proteus và hình ảnh sản phẩm 21

4 Lập trình cho boar arduino uno R3 bằng phần mền arduino IDE 22

IV Tổng kế và hướng phát triển 27

V Lời kết 28

Trang 3

LỜI MỞ ĐẦU

Sống trong những năm đầu của “Cuộc các mạng Công nghiệp 4.0”, rất nhiềucông nghệ mới được phát triển mạnh mẽ Chúng ta càng thấy được sức mạnh từnhững bộ vi xử lí, nó là đầu não, là trái tim của mọi cỗ máy trong cuộc cách mạng4.0 Các vi xử lí ngày càng được trang bị, tích hợp nhiều tính năng, và đặc biệtngày càng nhỏ gọn Các vị xử lý được hoàn thiện để sử dụng rộng rãi trong côngnghiệp, khoa học kĩ thuật, khoa học, sinh học,

Để tìm hiểu, học tập về vi xử lý, đưa các tính năng của vi xử lý vào cuộcsống, nhóm em quyết định tìm hiểu về vi xử lý ATMEGA 328P do hãng Atmel sảnxuất

Với đề tài tìm hiểu : “Đèn tín hiệu giao thông tại ngã tư sử dụng vi xử líATmega 328P” sau một thời gian tìm hiểu và thực hiện đề tài dưới sự hướng dẫncủa Thầy Hoàng Anh Dũng, nhóm chúng em đã hoàn thành đồ án Mặc dù nhóm đã

cố gắng trong quá trình làm nhưng do trình độ còn hạn chế nên chắc chắn đồ ánkhông tránh khỏi những sai sót Nhóm chúng em xin được các thầy sửa chữa, chỉbảo hướng dẫn thêm để đồ án hoàn thiện hơn

Với mô hình một ngã tư, nhóm em hướng đến hiểu được cách thức hoạt độngcủa vi xử lý ATmega 328P, xây dựng một mạch điện đầu tiên trong nghành điện tửcủa mình Bước đầu đến với thế giới vi điều khiển để phát triển sau này

Chúng em xin chân thành cảm ơn !

Hà nội, ngày tháng năm 2023

Trang 5

3 Thiết kế mạch phải đảm bảo tính hiệu quả và tiết kiệm năng lượng.

4 Thực hiện việc lập trình và kiểm tra mạch đảm bảo hoạt động chính xác vàđáp ứng các yêu cầu kỹ thuật cần thiết

5 Đảm bảo đúng các quy định về mạch điện và an toàn lao động

6 Thiết kế mạch phải đảm bảo tính tiện dụng trong việc sửa chữa và bảo trì

7 Kiểm tra kỹ trước khi đưa vào sử dụng để đảm bảo tính tin cậy của mạch

II Tổng quan board Arduino Uno, IC ghi dịch 74HC595 và 1 số linh kiện

1 Board arduino uno R3

1.1 Giới thiệu vi điều khiển AVR

Vi điều khiển AVR do hãng Atmel sản xuất được giới thiệu lần đầu năm

1996 AVR có rất nhiều dòng khác nhau bao gồn dòng Tiny (AT tiny 13, ATtiny 22, …) có kích thước nhỏ, ít bộ phận ngoại vi, rồi đến dòng AVR(AT90S8535, AT90S8513, …) có kích thước bộ nhớ vào loại trùng bình vàmạnh hơn là dòng Mega (Atmega32, Atmega128, …) với bộ nhớ có kích thước

Trang 6

vài Kbyte đến vài trăng Kbyte cùng với các bộ phận ngoại vi đa dạng được tíchhợp trên chip…

Bộ nhớ dữ liệu (data memory) : đây là phần chứa các thanh ghi quan trọngnhất của chip Bộ nhớ dữ liệu trên các chip AVR có độ lớn khác nhau tùy theomỗi chip Tuy nhiên về cơ bản bộ nhớ này được chia làm các phần :

Tệp thanh ghi (Register file) : gồm 32 thanh ghi 8bit có địa chỉ tuyệt đối

từ 0x0000 đến 0x001F Các thanh ghi này được đặt tên là từ R0 đến R31.Chúng có đặc điểm :

 Được truy cập trực tiếp trong các instruction

 Các toán tử, phép toán thực hiện trên các thanh ghi này chỉ cần một xungClock

 Tệp thanh ghi được kết nối trực tiếp với bộ xử lý trung tâm, CPU chip

 Chúng là nguồn chứa các số hạng trong các phép toán và cũng là đích chứakết quả

Các thanh ghi vào ra (thanh ghi I/O hay còn gọi là vùng nhớ I/O) là cổnggiao tiếp giữa CPU với thiết bị ngoại vi Tất cả các 24 thanh ghi điều khiển,trạng thái … của thiết bị ngoại vi đều nằm ở đây

RAM ngoại (External RAM) : các chip vi điều khiển AVR cho phépngười dùng có thể gắn thêm RAM ngoài để chứa biến, vùng này thực chất chỉtồn tại khi nào người sử dụng gắn thêm bộ nhớ ngoài vào chip

EEPROM (Electrical Erasable Programmable ROM) là một phần quantrọng của các chip AVR mới, vì là ROM nên bộ nhớ này không bị xóa ngay cảkhi không cấp nguồn nuôi chip, rất thích hợp cho các ứng dụng lưu trữ dữ liệu

Trang 7

1.2 Tổng quát vi điều khiển ATmega328P Thông số kỹ thuật của Tmega328P

+ Kiến trúc: AVR 8bit

+ Nhiệt độ tối thiểu và tối đa -40 độ C đến 105 độ C

+ Số timer: 3 timer gồm 2 timer 8-bit và 1 timer 16-bit

+ Số chân I/O digital: 14 kênh

+ Số kênh xung PWM: 6 kênh (1timer 2 kênh)

+ Số ngõ vào Analog: 6 kênh

Trang 8

Số thứ

tự chân

Mô tả Chức năng Mô tả chứ năng

1 PC6 Reset Khi chân reset ở mức thấp, bộ vi điều

khiển và chương trình của nó sẽ được reset

Chân đầu vào cho giao tiếp nối tiếp

4 PD2 Chân kĩ thuật số Chân 4 được sử dụng làm ngắt

ngoài 0

5 PD3 Chân kĩ thuật số Chân 5 được sử dụng làm ngắt

Trang 9

(PWM) ngoài 1

6 PD4 Chân kĩ thuật số Chân 6 được sử dụng cho nguồn bộ

đếm bên ngoài Timer 0

7 Vcc Điện áp dương Nguồn dương của hệ thống

8 GND Nối đất Nối đất của hệ thống

9 XTAL Dao động tinh

thể

Chân này nối với một chân của bộ dao động tinh thể để cung cấp xung nhịp bênngoài cho chip

10 XTAL Dao động tinh

thể

Chân này nối với một chân của bộ dao động tinh thể để cung cấp xung nhịp bên ngoài cho chip

Bộ so sánh analog dương i/ps

13 PD7 Chân kĩ thuật số Bộ so sánh analog âm i/ps

14 PB0 Chân kĩ thuật số Nguồn đầu vào bộ đếm hoặc bộ hẹn

giờ

15 PB1 Chân kĩ thuật

số(PWM)

Bộ đếm hoặc bộ hẹn giờ so sánh khớp A

18 PB4 Chân kĩ thuật Chân này hoạt động như một đầu vào

Trang 10

số xung nhịp master và đầu ra xung nhịp

20 AVcc Điện áp dương Điện áp dương cho ADC(nguồn)

21 AREF Tham chiếu

analog

Điện ấp thma chiếu cho analog cho ADC(Bộ chuyển đổi analog sang kĩ thuật số)

22 GND Nối đất Nối đất của hệ thống

23 PC0 Đầu vào analog Đầu vào analog giá trị kĩ thuật số kênh 0

24 PC1 Đầu vào

analog

Đầu vào analog giá trị kĩ thuật số kênh 1

25 PC2 Đầu vào analog Đầu vào analog giá trị kĩ thuật số kênh 2

26 PC3 Đầu vào analog Đầu vào analog giá trị kĩ thuật số kênh 3

28 PC5 Đầu vào analog Đầu vào analog giá trị kĩ thuật số kênh

5 Chân này cũng được sử dụng như dong xung nhịp giao diện nối tiếp

Trang 11

Tùy thuộc vào cài đặt cầu chì chọn đồng hồ, PB6 có thể được sử dụng làmđầu vào cho bộ khuếch đại dao động đảo ngược và đầu vào cho mạch hoạt độngcủa đồng hồ bên trong.

Tùy thuộc vào cài đặt cầu chì lựa chọn đồng hồ, PB7 có thể được sử dụnglàm đầu ra từ bộ khuếch đại dao động đảo ngược

- Port C (PC5:0)

Cổng C là cổng I / O hai chiều 7 bit với các điện trở kéo lên bên trong (đượcchọn cho mỗi bit) Bộ đệm đầu ra PC5 0 có đặc tính ổ đĩa đối xứng với cả khảnăng chìm và nguồn cao Là đầu vào, chân C được kéo ra bên ngoài dòng điện sẽthấp nếu điện trở kéo lên được kích hoạt Các chân cổng C được điều kiện đặt lạitrở thành hoạt động, ngay cả khi đồng hồ không chạy

- PC6/Reset

Trang 12

Nếu Cầu chì RSTDISBL được lập trình, PC6 được sử dụng làm chân I / O.Lưu ý rằng các đặc tính điện của PC6 khác với các đặc tính điện của các chânkhác của Cổng C

Nếu Cầu chì RSTDISBL không được lập trình, PC6 được sử dụng làm đầuvào Reset Mức thấp trên chân này lâu hơn độ dài xung tối thiểu sẽ tạo ra Reset,ngay cả khi đồng hồ không chạy Các xung ngắn hơn không được đảm bảo đểtạo ra một Reset

- PortD (PD7:0)

Cổng D là cổng I / O 8 bit hai chiều với các điện trở kéo lên bên trong (đượcchọn cho mỗi bit) Bộ đệm đầu ra cổng D có đặc tính ổ đĩa đối xứng với cả khảnăng chìm và nguồn cao Là đầu vào, chân cổng D được kéo ra bên ngoài dòngđiện sẽ ở mức thấp nếu điện trở kéo lên được kích hoạt Các chân cổng D đượcxác định ba lần khi điều kiện đặt lại trở thành hoạt động, ngay cả khi đồng hồkhông chạy

AVCC là chân điện áp cung cấp cho Bộ chuyển đổi A/D, PC[3: 0] Nó phảiđược kết nối bên ngoài với VCC, ngay cả khi ADC không được sử dụng NếuADC được sử dụng, nó phải được kết nối với VCC thông qua bộ lọc thông thấp.Lưu ý rằng PC[6: 4] sử dụng kỹ thuật số cung cấp điện áp VCC

- ADC7:6

ADC7:6 đóng vai trò là đầu vào analog cho bộ chuyển đổi A /D Các chân này được cấp nguồn từ cung cấp tương tự và phục vụ như các kênh ADC 10 bit

Trang 13

Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho người dùng:

+ 32KB bộ nhớ Flash: những đoạn lệnh bạn lập trình sẽ được lưu trữ trong bộnhớ Flash của vi điều khiển Thường thì sẽ có khoảng vài KB trong số này sẽđược dùng cho bootloader nhưng đừng lo, bạn hiếm khi nào cần quá 20KB bộnhớ này đâu

+ 2KB cho SRAM (Static Random Access Memory): giá trị các biến bạn khaibáo khi lập trình sẽ lưu ở đây Bạn khai báo càng nhiều biến thì càng cần nhiều

bộ nhớ RAM Tuy vậy, thực sự thì cũng hiếm khi nào bộ nhớ RAM lại trở thànhthứ mà bạn phải bận tâm Khi mất điện, dữ liệu trên SRAM sẽ bị mất

+ 1KB cho EEPROM (Electrically Eraseble Programmable Read OnlyMemory): đây giống như một chiếc ổ cứng mini nơi bạn có thể đọc và ghi dữliệu của mình vào đây mà không phải lo bị mất khi cúp điện giống như dữ liệutrên SRAM

Trang 14

b) Ngoại vi trên bo

- Các chân 1(TX) và 0(RX): dùng để nhận và gửi dữ liệu TTL Serial

- Các chân I/O : từ chân 2-13

- Các chân ngặt ngoài Chân : 2,3

- Các chân PWM 8bit của Arduino :3, 5, 6, 9, 10, 11

- Các chân giao tiếp SPI (Serial Peripheral Bus) 10 - 13

- Chân AREF là chân tham chiếu điện áp khi sử dụng analogReference

- SCL, SDA là 2 chân giao tiếp I2C

- Các chân Analog : A0 đến A5

- Vin là chân có thể cung cấp điện áp cho arduino bằng nguồn ngoài

- GND : nối đất

Trang 15

- 5v, 3.3v là các chân cung cấp điện áp cho các ngoại vi khác

- RES là chân reset, vi điều khiển sẽ reset khi chân này ở mức LOW

1.4 Công cụ phát triển cho board

- Arduino IDE là một phần mềm mã nguồn mở chủ yếu được sử dụng để viết

và biên dịch mã vào module Arduino

- Có các phiên bản cho các hệ điều hành như MAC, Windows, Linux và chạytrên nền tảng Java đi kèm với các chức năng và lệnh có sẵn đóng vai trò quantrọng để gỡ lỗi, chỉnh sửa và biên dịch mã trong môi trường

- Hỗ trợ nhiều các module Arduino như Arduino Uno, Arduino Mega, ArduinoLeonardo, Arduino Micro và nhiều module khác…

- Là một phần mềm Arduino chính thức, giúp cho việc biên dịch mã trở nên dễdàng

- Môi trường này hỗ trợ cả ngôn ngữ C và C ++

2 IC ghi dịch 74HC595

2.1 Cấu tạo, đặc tính kỹ thuật IC 74HC595:

Thanh ghi dịch (Shift Register) về cơ bản là một vi mạch chuyển đổi nối tiếpsong song Về cơ bản nó nhận dữ liều đầu vào nối tiếp thông qua một chân vàchuyển đổi dữ liệu vào nối tiếp thành đầu ra song song 8 bit, do đó làm giảm sốchân giao diện giữa vi điều khiển và các thiết bị đầu ra

74HC595 là IC ghi dịch (shift register) 8 bit kết hợp chốt dữ liệu, đầu vàonối tiếp, đầu ra song song IC này thường dùng trong các mạch quét led 7, led

ma trận …để tiết kiệm số chân cho vi điều khiển Có thể mở rộng số chân viđiều khiển bao nhiêu tùy thích mà không IC nào có thể làm được bằng cách mắcnối tiếp ngõ vào dữ liệu các IC với nhau

Trang 16

Đặc tính thông số kỹ thuật 74HC595

• Điện áp hoạt động: 2V đến 6V

• Mức tiêu thụ điện: 80uA

• Source ra/dòng sink: 35mA

• Điện áp đầu ra bằng điện áp hoạt động

• Điện áp đầu vào mức cao tối thiểu: 3,15V @ (Vcc = 4,5V)

• Điện áp đầu vào mức thấp tối đa: 1.35V @ (Vcc = 4.5V)

• Có thể dễ dàng xếp tầng với nhiều IC hơn để có nhiều đầu ra hơn

• Tần số đồng hồ tối đa: 25Mhz @ 4.5V

• Có các gói PDIP, GDIP, PDSO 16 chân

Trang 17

9 QH' (QH-bar): Đầu ra phụ, đảo ngược của đầu ra thứ tám.

10.MR (Master Reset): Chân reset cho IC

11.SH_CP (Shift Register Clock Input): Chân xung đồng hồ cho việc chuyển đổi dữ liệu

12.ST_CP (Storage Register Clock Input): Chân xung đồng hồ cho việc lưu dữ liệu vào đăng ký lưu trữ

13.OE (Output Enable): Chân kích hoạt đầu ra, khi ở mức thấp sẽ kích hoạt đầura

14.DS (Serial Data Input): Chân đầu vào cho dữ liệu chuỗi

15.Q7S (Serial Data Output): Đầu ra dữ liệu chuỗi

16.VCC: Nguồn cấp cho IC

2.2 Nguyên lý hoạt động của IC ghi dịch 74HC595:

IC47HC595 có hai thanh ghi ,mỗi thanh ghi chỉ có 8 bit dữ liệu Cái

đầu tiên được gọi là Thanh ghi dịch Thanh ghi dịch nằm sâu trong các

mạch IC

Bất cứ khi nào đặt một xung clock cho 74HC595, hai điều xảy ra:

Trang 18

 Các bit trong Thanh ghi dịch di chuyển sang trái (MSBFIRST)hoặc(LSBFIRST)một bước mỗi khi xung clock xuất hiện sườn lên

 Ví dụ: Bit 7 nhận giá trị trước đó ở bit 6, bit 6 nhận giá trị của bit 5,…

 Bit 0 trong thanh ghi dịch chấp nhận giá trị hiện tại trên chân DATA.Tại cạnh lên của xung, nếu chân dữ liệu ở mức cao, thì giá trị 1 sẽđược đẩy vào thanh ghi dịch Nếu không, nó là 0

 Khi chân latch được chuyển lệ mức cao trong thời gian 1 xung clock,nội dung của thanh ghi dịch(thanh ghi thứ 1) được sao chép vào thanhghi thứ hai Mỗi bit của thanh ghi lưu trữ(thanh ghi thứ 2) được kếtnối với một trong các chân đầu ra QA - QH của vi mạch, vì vậy nóichung, khi giá trị trong thanh ghi lưu trữ thay đổi, các đầu ra cũngvậy

Có thể hiểu rõ hơn điều này với hình minh họa bên dưới

Trang 19

2.3 Giao tiếp giữa 74HC595 với arduino

Sử dụng lệnh shiftout để truyền dữ liệu lên thanh ghi của IC74HC595: Cú pháp câu lệnh:

 Latchpin là chân chốt được kết nối với chân 12 của IC

 Datapin là chân chuyền dữ liệu được kết nối với chân 14 của IC

 Clockpin là chân cấp xung mẫu được kế nối với chân 11 của IC

 MSFIRST (hoặc LSFIRST) là chọn bắt đầu từ bit bên phải nhất trước hoặcbit bên trái nhất trước

 m(c) là mảng dữ liệu để truyền lên 74HC595

3 Các linh kiện khác

3.1 Modun 2 led 7 đoạn anot chung hàn sẵn IC74HC595

Mạch hiển thị 2 led 7 đoạn 74HC595 được thiết kế có thể dễ dàng điều khiển

và hiển thị thông tin lên 2 led 7 đoạn chỉ với 3 chân giao tiếp thông qua IC ghidịch 74HC595, ngoài ra mạch còn có khả năng mở rộng thêm các led tiếp theoqua cổng đầu ra nối tiếp

Thông số kỹ thuật:

 Nguồn sử dụng: 3 ~ 6VDC

 Dòng điện sử dụng: 50mA

 IC Driver: 74HC595

 3 chân giao tiếp: SCLK, RCLK, DIO

 Hiển thị 2 led 7 đoạn cỡ 0.5''

 Kích thước: 25 x 38mm

Trang 20

3.2 LED 5mm 5v 3 màu và dây nối

III Thiết kế mạch và quá trình thực hiện

1 Nguyên lý hoạt động của mạch đèn giao thông

Trang 21

Khi đv1 tắt thì đđ2 mới tắt cùng lúc đó đèn xanh của làn đường 2, đèn đỏ làn đường 1 sáng.

Lúc đèn vàng làn đường 2(đv2) được bật lên cũng là lúc đx2 tắt, đđ2 tắt chu kì được lập lại với đđ2,đx1…

Trang 22

Bắt Đầu

Chế độ hoạt động

Đỏ 30s Xanh 25s Vàng 5s

Cột 1: đèn đỏ Cột 2: đèn xanh

Cột 1: đèn xanh Cột 2: đèn đỏ

Cột 1: đèn vàng Cột 2: đèn đỏ

Sai

Sai Sai Sai

Đúng Đúng Đúng

Đúng

Trang 23

3 Sơ đồ mạch trên proteus và hình ảnh sản phẩm

Sơ đồ mạch mô phỏng trên proteus :

22

Trang 24

4 Lập trình cho boar arduino uno R3 bằng phần mền arduino IDE

Mặc định khi cấp nguồn sẽ hoạt động ở chế độ (30s đỏ,5s vàng,25s xanh).//hướng đi 1

Trang 26

shiftOOut(dataPin1, clockPin1, MSBFIRST,m[c]);

shiftOOut(dataPin1, clockPin1, MSBFIRST,m[b]);

digitalWrite(latchPin1,HIGH);

digitalWrite(latchPin2,LOW);

shiftOOut(dataPin2, clockPin2, MSBFIRST,m[c2]);

shiftOOut(dataPin2, clockPin2, MSBFIRST,m[b2]);

shiftOOut(dataPin2, clockPin2, MSBFIRST,m[a]);

shiftOOut(dataPin2, clockPin2, MSBFIRST,m[0]);

Ngày đăng: 14/04/2023, 01:30

TỪ KHÓA LIÊN QUAN

w