Professional Documents
Culture Documents
Thiết kế và chế tạo máy bắn bóng tennis tự động
Thiết kế và chế tạo máy bắn bóng tennis tự động
ĐỒ ÁN TỐT NGHIỆP
NGÀNH: KỸ THUẬT CƠ ĐIỆN TỬ
ĐỀ TÀI:
Đà Nẵng, 12/2019
TÓM TẮT
Tên đề tài: THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
Sinh viên thực hiện: Lê Văn Lân 15CDT2 MSSV: 101150213
Nguyễn Hoàng Long 15CDT2 MSSV: 101150216
Nội dung đồ án này đề cập cơ sở lý thuyết về phương pháp phân tích, tính toán và
chế tạo máy bắn bóng tennis tự động. Máy bắn bóng tennis sử dụng phương pháp cán
ép banh giúp nâng cao hiệu suất bắn và bắn được bóng theo nhiều tầm. Nội dung thực
hiện gồm 01 bản thuyết minh đồ án tốt nghiệp, 04 bản vẽ A0 và 01 mô hình máy bắn
bóng tennis tự động. Kết quả đạt được là đã thiết kế máy bắn bóng tennis hoàn chỉnh,
máy hoạt động chính xác và ổn định, dễ dàng vận hành và sử dụng. Vậy nên ý nghĩa của
đồ án nhằm tạo ra một máy bắn tennis mang thương hiệu Việt chất lượng - rẻ - dễ sử
dụng để mọi người có thể tiếp cận.
ĐẠI HỌC ĐÀ NẴNG CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
TRƯỜNG ĐẠI HỌC BÁCH KHOA Độc lập –tự do – hạnh phúc
KHOA CƠ KHÍ
4. Các bản vẽ ,đồ thị (ghi rõ các loại và kích thước bản vẽ):
a. Phần chung:
TT Họ và tên sinh viên Nội dung
1 Nguyễn Hoàng Long
- Bản vẽ mạch điều khiển và đấu nối
2 Lê Văn Lân
b. Phần riêng
TT Họ và tên sinh viên Nội dung
- Bản vẽ tổng thể
1 Nguyễn Hoàng Long
- Bản vẽ chi tiết
Lời đầu tiên, chúng em xin cảm ơn tất cả quý Thầy/Cô trong Khoa Cơ Khí cũng như
quý Thầy/Cô ở Trường Đại học Bách Khoa – Đại Học Đà Nẵng đã giúp chúng em có
những kiến thức để hoàn thành được đồ án tốt nghiệp cũng như là hành trang để giúp
chúng em sau này . Chúng em xin bày tỏ lòng biết ơn sâu sắc đối với thầy Ngô Thanh
Nghị, người đã tận tình chỉ dạy cho chúng em phương pháp nghiên cứu khoa học, thầy
cũng đã cung cấp cho chúng em rất nhiều kiến thức chuyên sâu để thực hiện đề tài.
Chúng em xin gửi lời cảm ơn chân thành đến quý Thầy đã dành thời gian quý báu để
nhận xét và chấm Đồ án tốt nghiệp. Đây sẽ là nhưng đóng góp rất quý giá cho chúng em
trên để hoàn thiện sản phẩm ngày một tốt hơn, một sản phẩm mang thương hiệu Việt.
Sau cùng, nhưng không thể thiếu được, là sự hỗ trợ của gia đình, chúng con xin bày
tỏ lòng biết ơn sâu sắc tới Ba Mẹ, những người đã luôn luôn động viên, ở bên chúng con
trong những lúc khó khăn nhất.
Ngày nay, với những ứng dụng của khoa học kỹ thuật tiên tiến, thế giới của chúng ta
đã và đang một ngày thay đổi, văn minh và hiện đại hơn. Sự phát triển của kỹ thuật điện
tử đã tạo ra hàng loạt những thiết bị với các đặc điểm nổi bật như sự chính xác cao, tốc
độ nhanh, gọn nhẹ là những yếu tố rất cần thiết góp phần cho hoạt động của con người
đạt hiệu quả.
Có thể nói rằng máy móc mang tới cho cuộc sống con người một cuộc sống mới, một
cách trải nghiệm cuộc sống , tận hưởng nó một cách dễ dàng hơn. Trong số đó các máy
móc giúp con người tập thể thao rèn luyện thân thể 1 cách dễ dàng. Máy bắn tennis là
một trong số đó. Hiện nay các máy trên thị trường để tập tennis có giá thành giao động
từ 10 đến 15 triệu một máy. Vậy nên để tạo ra một máy bắn tennis mang thương hiệu
Việt chất lượng - rẻ - dễ sử dụng để mọi người có thể tiếp cận là mục đích của đồ án
chúng em.
Đề tài đã hoàn thành xong, nhưng không thể tránh nhiều thiếu sót mong quý thầy cô
giáo thông cảm và chỉ bảo thêm để đề tài có thể phát triển và ứng dụng rộng rãi trong
thực tế.
Em xin chân thành gửi lời cảm ơn đến các quý thầy cô!
Sinh viên thực hiện:
Nguyễn Hoàng Long
Lê Văn Lân
Đà Nẵng, 05/12/2019.
i
CAM ĐOAN
Chúng em xin cam đoan nội dung của đồ án không phải sao chép bất cứ đồ án hay
công trình nào đã có trước đây. Mọi sự giúp đỡ cho việc thực hiện đồ án này đã được
cảm ơn, các thông tin trích dẫn trong đồ án đã được ghi nguồn gốc rõ ràng và được phép
công bố.
ii
MỤC LỤC
iii
2.5 Chọn phương án nguồn ................................................................................. 13
2.5.1 Nguồn pin acquy, pin lithium .................................................................... 13
2.5.2 Nguồn tổ ong............................................................................................. 13
Chương 3: CÁC THÀNH PHẦN TRONG HỆ THỐNG ....................................... 14
3.1 Động cơ ........................................................................................................... 14
3.1.1 Động cơ 775 .............................................................................................. 14
3.1.2 Động cơ Nema 23 76 mm.......................................................................... 14
3.1.3 Động cơ Nema 23 51mm........................................................................... 15
3.2 Thiết bị điều khiển ......................................................................................... 16
3.2.1 Arduino Mega 2560 .................................................................................. 16
3.2.2 Driver TB6600 .......................................................................................... 17
3.2.3 Driver TB6560 .......................................................................................... 18
3.2.4 VNH2SP30 Single .................................................................................... 19
3.3 Nguồn cấp ....................................................................................................... 20
3.3.1 Nguồn tổ ong 12V-30A ............................................................................. 20
3.3.2 Mạch hạ áp DC-DC LM2596 .................................................................... 21
3.4 Thiết bị khác................................................................................................... 21
3.4.1 Công tắc hành trình ................................................................................... 21
3.4.2 Module còi Buzzer 5V .............................................................................. 21
3.4.3 LCD2004 .................................................................................................. 22
3.4.4 Mạch chuyển đổi I2C cho LCD ................................................................. 22
Chương 4: THIẾT KẾ HỆ THỐNG ....................................................................... 24
4.1 Thiết kế hệ thống cơ khí................................................................................. 24
4.1.1 Bộ phận bắn banh ...................................................................................... 24
4.1.2 Cơ cấu nạp bóng........................................................................................ 28
4.1.3 Khung máy................................................................................................ 28
4.1.4 Vỏ máy ..................................................................................................... 29
4.2 Lưu đồ thuật toán .......................................................................................... 30
4.3 Thiết kế hệ thống điều khiển. ........................................................................ 31
4.3.1 Sơ đồ nguyên lí và đấu nối dây.................................................................. 31
4.3.2 Lập trình điều khiển .................................................................................. 32
KẾT LUẬN .............................................................................................................. 68
TÀI LIỆU THAM KHẢO ....................................................................................... 70
iv
MỤC LỤC HÌNH ẢNH
v
Hình 4.6: Lắp bánh xe lên trục ................................................................................... 26
Hình 4.7: Cơ cấu quay quanh trục Z .......................................................................... 27
Hình 4.8: Cơ cấu quay quanh trục X .......................................................................... 27
Hình 4.9: Lắp cơ cấu quay trục X và Z ...................................................................... 28
Hình 4.10: Cơ cấu nạp bóng....................................................................................... 28
Hình 4.11: Khung nhôm định hình ............................................................................. 29
Hình 4.12: Các tấm vỏ máy ....................................................................................... 29
Hình 4.13: Lưu đồ thuật toán điều khiển .................................................................... 30
Hình 4.14: Sơ đồ mạch .............................................................................................. 31
Hình thực tế máy bắn bóng tennis .............................................................................. 68
vi
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
1
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
Cùng với tất cả những điều này, lợi thế quan trọng của tự động hóa là để nâng cao
năng suất của công ty. Một ngành công nghiệp, có cài đặt các máy tự động trong quá
trình sản xuất của nó, rõ ràng là đã đưa ra một quyết định thông minh. Lý do là nó thường
được quan sát thấy rằng tự động hóa của bất kỳ quá trình sản xuất cải thiện năng suất
phần lớn. Do đó, tự động hóa của nền văn hóa làm việc trong một công ty cụ thể, công
ty có thể tăng tiềm năng của nó và kiếm được nhiều hơn bằng cách đầu tư ít hơn.
1.2 Giới thiệu về đề tài
1.2.1 Giới thiệu
Ngày nay, với sự phát triển cao của xã hội theo xu thế toàn cầu hoá, các sản phẩm
làm ra phải thể hiện tính cạnh tranh về độ an toàn, sự tiện dụng, độ tin cậy cao và quan
trọng là giá thành hạ … Cơ điện tử chính là hướng giải quyết tối ưu để tạo ra các sản
phẩm đáp ứng được các yêu cầu trên.
Nghiên cứu, chế tạo máy phục vụ nhu cầu con người luôn là hướng đi đầu trong Cơ
điện tử. Ở hướng đi này, hiện tại trên thế giới đã có những bước tiến vượt bậc và có tiềm
năng phát triển vô cùng to lớn. Trong đó, việc tạo ra những máy phục vụ luyện tập, giải
trí thể thao luôn là một trong những lĩnh vực thu hút đầu tư nghiên cứu bởi tiềm năng
cũng như lợi ích to lớn mà nó đem lại. Máy bắn banh Tennis cũng là một trong những
sản phẩm đáp ứng được nhu cầu, thị hiếu của người chơi thể thao.
1.2.2 Lịch sử phát triển của bộ môn Tennis
Môn thể thao Quần Vợt có từ khi nào? Trong một viện bảo tàng của Hy Lạp có một
bức tranh treo tường đã cho thấy rằng là có một môn chơi hao hao giống Tennis đã tồn
tại 500 năm trước công nguyên. Và tới thế kỷ XV ở nước Pháp từ cái gọi là : “môn chơi
bóng bằng lòng bàn tay” đã xuất hiện môn quần vợt hoàng gia và nó được người Ta chơi
trên các hành lang của tu viện. Phải tới những năm cầm quyền của nhà vua Victoria thì
môn quần vợt hay là môn Tennis đương thời mới xuất hiện. Vào năm 1870 lần đầu tiên
luật chơi của môn Tennis được ra đời và với vài sự thay đổi nhỏ thì luật này vẫn còn có
hiệu lực cho tới ngày nay. Hiện nay, trên thế giới, Nhật Bản là nước chế tạo và sử dụng
robot công nghiệp hàng đầu trên thế giới. Nhưng trong lĩnh vực chế tạo máy phục vụ
người chơi thể thao thì Mỹ đã đi trước Nhật trong việc tiếp cận nhu cầu, thị hiếu khách
hàng cũng như trình độ thiết kế chế tạo máy. Với môn Tennis, người ta đã cho ra đời
nhiều loại máy để phục vụ cho nhu cầu luyện tập và thi đấu, từ những chiếc máy dùng
cho công việc đan lưới Tennis cho tới các máy nhặt banh, và các máy bắn banh Tennis
từ đơn giản cho tới phức tạp.
2
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
3
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
tập - đánh banh tennis là một trong những hướng đi đưa môn thể thao quí tộc này đến
với đông đảo quần chúng bởi những ưu điểm: không cần đội ngũ trọng tài - phục vụ
đông đảo, nhiều người có thể tập - chơi mọi lúc mọi nơi, chơi theo trình độ của người
chơi… Vì thế nó có thể được sử dụng trong gia đình, trường học, câu lạc bộ thể thao,
công ty… Đây cũng là những yêu cầu cần phải được đáp ứng trong chế tạo.
1.3.2 Nhiệm vụ của máy tập tennis
Máy bắn banh tennis là một dụng cụ trợ giúp cho các vận động viên trong những
buổi tập đơn. Nhiệm vụ chính của máy là phát bóng ra cho người tập. Hoạt động của
nó dựa trên nguyên tắc động lực, thuỷ lực hoặc khí nén kết hợp với điều khiển. Loại
máy này rất tiện ích cho bạn khi bạn tập một mình. Máy có thể giúp bạn tập với tốc độ
nhanh hoặc không thích thì bạn tập chậm lại theo chế độ bạn cài đặt cho máy, với loại
máy hiện đại, bạn chỉ cần nhấn vài nút trên dụng cụ điều khiển từ xa là nó làm theo ý
bạn. Thực ra loại máy này đã được các nước Âu, Mỹ phát minh ra từ những năm 40.
Ban đầu họ cũng chế tạo nó với nhiệm vụ chính là phát banh, nó được đặt cố định trong
suốt thời gian hoạt động. Nhưng do nhu cầu ngày càng cao, sau này người ta chế tạo nó
giống như một anh chàng robot thực thụ, nó có thể đi quanh sân để giúp bạn thu hồi
bóng và dĩ nhiên khi đó nó không đồng thời phát bóng ra cho bạn được nhưng nó được
coi là một phát minh mới. Khi môn tennis trở nên phổ biến hơn thì không chỉ những
người thích thể thao mà cả những người đã gia nhập thể thao đang cố gắng cải tiến chất
lượng trò chơi của họ. Với loại máy như thế, vận động viên có thể thực hành những cú
đánh riêng biệt đến khi anh ta có thể thực hiện chúng một cách thuần thục và sau đó tiến
hành những cú đánh khác. Tóm lại máy bắn banh Tennis là một dụng cụ giúp đỡ cho
mọi người luyện tập. Nhiệm vụ của máy là bắn ra các quả banh Tennis ở các góc độ và
mạnh, nhẹ khác nhau. Với máy này, người huấn luyện viên có thể dễ dàng phát hiện ra
những chỗ sai của người tập. Ngoài ra, đối với các loại máy hiện đại còn có thể tạo ra
các đường banh khó giúp cho trình độ của người tập càng được nâng cao hơn. Hiện nay,
trên thế giới đã có rất nhiều loại máy bắn banh tennis được quảng cáo trên mạng với các
giá khá cao. Tuy nhiên hiện nay ở Việt Nam vẫn chưa có sản xuất những loại máy này.
Trong những năm gần đây, những sự cải tiến và phát minh mới đã làm cho máy phát
banh tennis này ngày càng trở nên đa dạng và phong phú hơn.
4
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
NGUỒN
Khối xử lý trung tâm
5
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
6
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
7
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
8
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
9
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
10
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
11
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
12
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
13
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
3.1 Động cơ
3.1.1 Động cơ 775
Chức năng: Quay bánh đà để bắn bóng.
Thông số kỹ thuật:
Điện áp hoạt động: 12 VDC
Tốc độ vòng tua: 13000 RPM
Đường kính thân: 42 mm.
Chiều dài thân: 66,5 mm
Đường kính trục: 5 mm.
Chiều dài đầu trục: 19 mm.
Chiều dài trục 98 mm
14
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
15
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
16
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
Có thể đấu tín hiệu dương (+) chung hoặc tín hiệu âm (-) chung
18
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
19
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
20
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
21
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
22
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
23
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
24
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
𝑣𝑏 1667
⇒ 𝑣𝑑𝑐 = = = 4826 (𝑣/𝑝 )
𝜋 × 𝐷𝑏𝑑𝑎𝑖 3.14 × 0.11
Momen quán tính bóng ( Công thức (20) [5]):
2
𝐼𝑝 = 𝑚𝑟 2
3
Do xét trường hợp hai bánh đà có cùng tốc độ nên tốc độ góc của bóng 𝜔 bằng 0.
1 1
=> ∆𝑊𝑑𝑟 = (𝑚𝑉 2 ) = (56 × 10−3 × 27.82 ) = 10,82(𝐽)
4 4
Giả sử thời gian nén bóng là 0,1s ta suy ra được công suất của động cơ:
∆𝑊𝑑𝑟 10,82
𝑃= = = 108,2(𝑊)
𝑡 0,1
b) Lựa chọn bánh đai
Ta lựa chọn loại bánh xe giá rẻ có sẵn trên thị trường. Được làm từ nhựa đúc với ưu
điểm cứng và nhẹ.
25
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
26
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
27
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
Cơ cấu trục X được lắp với phần khung bằng bu lông blind. Sử dụng bộ truyền đai
để truyền chuyển động từ động cơ Nema 23 51 mm.
28
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
29
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
30
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
31
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
32
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
pinMode(CTHT2, INPUT_PULLUP);
pinMode(CTHT3, INPUT_PULLUP);
attachInterrupt(0, UP_SPEED, FALLING);
// attachInterrupt(5, STOP, FALLING);
DELAY = SPEED_BALL();
lcd.init();
lcd.backlight();
CENTER("LOADING", 0);
delay(1000);
HOME(0, 0, 0, 0);
MODE_BUFFER = 0;
RESET_SYSTEM();
LED(0, 1);
Serial.println("Khoi Tao Thanh Cong");
}
void loop()
{
if (Serial.available() > 0)
{
DATA = 0;
DATA = byte(Serial.read());
SOUND();
if (DATA == 1)
{
LED(1, 0);
Serial.println("AUTO1");
HOME(0, 0, EEPROM.readInt(10), 1);
AUTO1(EEPROM.readInt(20), EEPROM.readInt(30));
LED(0, 1);
33
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
}
if (DATA == 2)
{
LED(1, 0);
Serial.println("AUTO2");
HOME(0, 0, EEPROM.readInt(10), 2);
AUTO2(EEPROM.readInt(20), EEPROM.readInt(30));
LED(0, 1);
}
if (DATA == 3)
{
LED(1, 0);
Serial.println("AUTO3");
HOME(0, 0, EEPROM.readInt(10), 3);
AUTO3(EEPROM.readInt(20), EEPROM.readInt(30));
LED(0, 1);
}
}
if (digitalRead(OPTION_BUTTON) != OLD_OPTION_BUTTON)
{
if (digitalRead(OPTION_BUTTON) == 0)
{
OLD_OPTION_BUTTON = 0;
int option_timer = 0;
while (digitalRead(OPTION_BUTTON) == 0)
{
if (digitalRead(DOWN_BUTTON) == 0)
{
option_timer = option_timer + 1;
34
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
delay(1);
if (option_timer == 2000)
{
SOUND();
page = 2;
LCD_DISPLAY(page);
}
}
}
if (option_timer < 2000)
{
SOUND();
DELAY = SPEED_BALL();
OLD_OPTION_BUTTON = 0;
page = 1;
LCD_DISPLAY(page);
}
}
else OLD_OPTION_BUTTON = 1;
}
if (digitalRead(START_BUTTON) != OLD_START_BUTTON)
{
if (digitalRead(START_BUTTON) == 0)
{
DELAY = SPEED_BALL();
Serial.println(EEPROM.read(10));
Serial.println(DELAY);
OLD_START_BUTTON = 0;
SOUND();
35
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
if (MODE_BUFFER == 1)
{
LED(1, 0);
Serial.println("AUTO1");
HOME(0, 0, EEPROM.readInt(10), 1);
AUTO1(EEPROM.readInt(20), EEPROM.readInt(30));
LED(0, 1);
}
if (MODE_BUFFER == 2)
{
LED(1, 0);
Serial.println("AUTO2");
HOME(0, 0, EEPROM.readInt(10), 2);
AUTO2(EEPROM.readInt(20), EEPROM.readInt(30));
LED(0, 1);
}
if (MODE_BUFFER == 3)
{
LED(1, 0);
Serial.println("AUTO3");
HOME(0, 0, EEPROM.readInt(10), 3);
AUTO3(EEPROM.readInt(20), EEPROM.readInt(30));
LED(0, 1);
}
}
else OLD_START_BUTTON = 1;
}
if (MODE_BUFFER == 4)
{
36
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
Serial.println("MANUAL");
LED(1, 0);
HOME(0, 0, EEPROM.readInt(10), 4);
MANUAL(EEPROM.readInt(20), EEPROM.readInt(30));
MODE_BUFFER = 0;
LED(0, 1);
}
}
Chương trình điều khiển động cơ
#include "EXTRA.h"
void(*resetFunc) (void) = 0;
void STOP()
{
Serial.println("STOP");
digitalWrite(EN_PIN_1, LOW);
digitalWrite(EN_PIN_2, LOW);
digitalWrite(MOTOR_A2_PIN, LOW);
digitalWrite(MOTOR_B2_PIN, HIGH);
analogWrite(PWM_MOTOR_2, 0);
digitalWrite(MOTOR_A1_PIN, HIGH);
digitalWrite(MOTOR_B1_PIN, LOW);
analogWrite(PWM_MOTOR_1, 0);
for (int s = 0; s < s + 1; s++)
{
if (digitalRead(START_BUTTON) == 0)
{
digitalWrite(EN_PIN_1, HIGH);
digitalWrite(EN_PIN_2, HIGH);
digitalWrite(MOTOR_A2_PIN, LOW);
37
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
digitalWrite(MOTOR_B2_PIN, HIGH);
analogWrite(PWM_MOTOR_2, 50);
digitalWrite(MOTOR_A1_PIN, HIGH);
digitalWrite(MOTOR_B1_PIN, LOW);
analogWrite(PWM_MOTOR_1, 50);
break;
}
if(digitalRead(ESC_BUTTON)==0)
{
delay(1500);
if(digitalRead(ESC_BUTTON)==0)
{
resetFunc();
}
}
}
}
void UP_SPEED()
{
Serial.println("UP_SPEED");
digitalWrite(EN_PIN_1, HIGH);
digitalWrite(EN_PIN_2, HIGH);
digitalWrite(MOTOR_A2_PIN, LOW);
digitalWrite(MOTOR_B2_PIN, HIGH);
analogWrite(PWM_MOTOR_2, 20 + EEPROM.readInt(20));
digitalWrite(MOTOR_A1_PIN, HIGH);
digitalWrite(MOTOR_B1_PIN, LOW);
analogWrite(PWM_MOTOR_1, 20 + EEPROM.readInt(30));
int k = int(1000000 / int(DELAY * 2));
38
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
digitalWrite(CLK1, HIGH);
if (digitalRead(ESC_BUTTON) == 0) break;
delayMicroseconds(DELAY);
}
}
int SPEED_BALL()
{
float SPEED = 0.0;
int SPEED_BUFFER = 0;
SPEED_BUFFER = EEPROM.readInt(10);
SPEED = SPEED_BUFFER;
SPEED = float(SPEED / 4);
SPEED = SPEED * 3200;
SPEED = float(60 * 1000000) / SPEED;
SPEED = SPEED / 2;
return SPEED;
}
void AUTO1(int PWM1_VALUE, int PWM2_VALUE)
{
HOME(X, Y, EEPROM.readInt(10), 1);
RESET(14, 24);
digitalWrite(DIR1, HIGH);
39
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
digitalWrite(DIR2, HIGH);
digitalWrite(DIR3, HIGH);
for (int j = 0; j < j + 1; j++)
{
DATA = 0;
if (Serial.available() > 0)
{
DATA = byte(Serial.read());
}
digitalWrite(EN_PIN_1, HIGH);
digitalWrite(EN_PIN_2, HIGH);
digitalWrite(MOTOR_A2_PIN, LOW);
digitalWrite(MOTOR_B2_PIN, HIGH);
analogWrite(PWM_MOTOR_2, PWM2_VALUE);
digitalWrite(MOTOR_A1_PIN, HIGH);
digitalWrite(MOTOR_B1_PIN, LOW);
analogWrite(PWM_MOTOR_1, PWM1_VALUE);
counter = counter + 1;
if (counter == 1 || counter == 2)
{
digitalWrite(DIR2, HIGH);
}
if (counter == 3 || counter == 4)
{
digitalWrite(DIR2, LOW);
}
for (int i = 0; i < 106 / 9; i++)
{
for (int j = 0; j < 9; j++)
40
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
{
digitalWrite(CLK2, LOW);
digitalWrite(CLK1, LOW);
delayMicroseconds(DELAY);
digitalWrite(CLK2, HIGH);
digitalWrite(CLK1, HIGH);
delayMicroseconds(DELAY);
}
if (counter == 4 || counter == 3) X = X - 1;
if (counter == 1 || counter == 2) X = X + 1;
String TD = "";
TD = TD + X;
TD = TD + ":";
TD = TD + Y;
CENTER(TD, 1);
}
if (counter >= 4) counter = 0;
for (int i = 0; i <= 800; i++)
{
digitalWrite(CLK1, LOW);
if (digitalRead(ESC_BUTTON) == 0 || DATA != 0) break;
delayMicroseconds(DELAY);
digitalWrite(CLK1, HIGH);
if (digitalRead(ESC_BUTTON) == 0 || DATA != 0) break;
delayMicroseconds(DELAY);
}
if (digitalRead(ESC_BUTTON) == 0 || DATA != 0) break;
}
}
41
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
42
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
}
if (digitalRead(ESC_BUTTON) == 0 || DATA != 0) break;
}
}
void AUTO3(int PWM1_VALUE, int PWM2_VALUE)
{
digitalWrite(EN_PIN_1, HIGH);
digitalWrite(EN_PIN_2, HIGH);
digitalWrite(MOTOR_A2_PIN, LOW);
digitalWrite(MOTOR_B2_PIN, HIGH);
analogWrite(PWM_MOTOR_2, PWM2_VALUE);
digitalWrite(MOTOR_A1_PIN, HIGH);
digitalWrite(MOTOR_B1_PIN, LOW);
analogWrite(PWM_MOTOR_1, PWM1_VALUE);
RESET(12, 18);
for (int p = 0; p < p + 1; p++)
{
DATA = 0;
if (Serial.available() > 0)
{
DATA = byte(Serial.read());
}
int a = random(0, 3);
int b = random(0, 3);
RESET(VARI_DC2[a], VARI_DC3[b]);
for (int i = 0; i <= 800; i++)
{
digitalWrite(CLK1, LOW);
if (digitalRead(ESC_BUTTON) == 0 || DATA != 0) break;
43
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
delayMicroseconds(DELAY);
digitalWrite(CLK1, HIGH);
if (digitalRead(ESC_BUTTON) == 0 || DATA != 0) break;
delayMicroseconds(DELAY);
}
if (digitalRead(ESC_BUTTON) == 0 || DATA != 0) break;
}
}
void MANUAL(int PWM1_VALUE, int PWM2_VALUE)
{
int timer = 0;
for ( int q = 0; q < q + 1; q++)
{
digitalWrite(EN_PIN_1, HIGH);
digitalWrite(EN_PIN_2, HIGH);
digitalWrite(MOTOR_A2_PIN, LOW);
digitalWrite(MOTOR_B2_PIN, HIGH);
analogWrite(PWM_MOTOR_2, PWM2_VALUE);
digitalWrite(MOTOR_A1_PIN, HIGH);
digitalWrite(MOTOR_B1_PIN, LOW);
analogWrite(PWM_MOTOR_1, PWM1_VALUE);
if (timer == 2000)
{
Serial.println("đang quay");
digitalWrite(CLK1, LOW);
delayMicroseconds(DELAY);
digitalWrite(CLK1, HIGH);
delayMicroseconds(DELAY);
}
44
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
if (digitalRead(UP_BUTTON) != OLD_UP_BUTTON)
{
SOUND();
Serial.println("UP");
OLD_UP_BUTTON = 0;
if (digitalRead(UP_BUTTON) == 0)
{
int VALUE_BUFFER = 0;
VALUE_BUFFER = Y;
if (VALUE_BUFFER < 24)VALUE_BUFFER = VALUE_BUFFER + 1;
else VALUE_BUFFER = 24;
RESET(X, VALUE_BUFFER);
}
else OLD_UP_BUTTON = 1;
}
if (digitalRead(DOWN_BUTTON) != OLD_DOWN_BUTTON)
{
Serial.println("DOWN");
OLD_DOWN_BUTTON = 0;
if (digitalRead(DOWN_BUTTON) == 0)
{
SOUND();
int VALUE_BUFFER = 0;
VALUE_BUFFER = Y;
if (VALUE_BUFFER > 0)VALUE_BUFFER = VALUE_BUFFER - 1;
else VALUE_BUFFER = 0;
RESET(X, VALUE_BUFFER);
}
else OLD_DOWN_BUTTON = 1;
45
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
if (digitalRead(SELECT_BUTTON) != OLD_SELECT_BUTTON)
{
Serial.println("SELECT");
OLD_SELECT_BUTTON = 0;
if (digitalRead(SELECT_BUTTON) == 0)
{
SOUND();
int VALUE_BUFFER = 0;
VALUE_BUFFER = X;
if (VALUE_BUFFER < 45)VALUE_BUFFER = VALUE_BUFFER + 1;
else VALUE_BUFFER = 45;
RESET(VALUE_BUFFER, Y);
}
else OLD_SELECT_BUTTON = 1;
}
if (digitalRead(ENTER_BUTTON) != OLD_ENTER_BUTTON)
{
Serial.println("ENTER");
OLD_ENTER_BUTTON = 0;
if (digitalRead(ENTER_BUTTON) == 0)
{
SOUND();
int VALUE_BUFFER = 0;
VALUE_BUFFER = X;
if (VALUE_BUFFER > 0)VALUE_BUFFER = VALUE_BUFFER - 1;
else VALUE_BUFFER = 0;
RESET(VALUE_BUFFER, Y);
46
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
}
else OLD_ENTER_BUTTON = 1;
}
if (digitalRead(START_BUTTON) != OLD_START_BUTTON & timer < 2000)
{
timer = 0;
OLD_START_BUTTON = 0;
Serial.println("START");
if (digitalRead(START_BUTTON) == 0)
{
while (digitalRead(START_BUTTON) == 0)
{
timer = timer + 1;
delay(1);
if (timer == 2000) break;
}
if (timer < 2000)
{
Serial.println("1 vòng");
for (int i = 0; i <= 800; i++)
{
digitalWrite(CLK1, LOW);
delayMicroseconds(DELAY);
digitalWrite(CLK1, HIGH);
delayMicroseconds(DELAY);
}
}
}
else OLD_START_BUTTON = 1;
47
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
}
if (digitalRead(ESC_BUTTON) == 0)
{
MODE_BUFFER = 0;
break;
}
}
}
Định nghĩa các chân
#define OPTION_BUTTON 19
#define UP_BUTTON 18
#define DOWN_BUTTON 17
#define SELECT_BUTTON 16
#define ENTER_BUTTON 15
#define ESC_BUTTON 14
#define STOP_BUTTON 21
#define START_BUTTON 20
#define MOTOR_A1_PIN 6
#define MOTOR_B1_PIN 7
#define MOTOR_A2_PIN 10
#define MOTOR_B2_PIN 11
#define PWM_MOTOR_1 8
#define PWM_MOTOR_2 12
#define EN_PIN_1 4
#define EN_PIN_2 9
#define BUZZER A14
#define GREEN_LED A8
#define RED_LED A9
48
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
49
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
50
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
digitalWrite(GREEN_LED, HIGH);
digitalWrite(RED_LED, LOW);
}
else if (GREEN == 0 & RED == 1)
{
digitalWrite(GREEN_LED, LOW);
digitalWrite(RED_LED, HIGH);
}
else
{
digitalWrite(GREEN_LED, LOW);
digitalWrite(RED_LED, LOW);
}
}
void SOUND()
{
digitalWrite(BUZZER, HIGH);
delay(100);
digitalWrite(BUZZER, LOW);
}
void CENTER(String content, int CURSOR_POSITION_BUFFER)
{
int CENTER_BUFFER = 0;
CENTER_BUFFER = content.length();
CENTER_BUFFER = 20 - CENTER_BUFFER;
CENTER_BUFFER = CENTER_BUFFER / 2;
lcd.setCursor(0, CURSOR_POSITION_BUFFER);
lcd.print(" ");
lcd.setCursor(CENTER_BUFFER, CURSOR_POSITION_BUFFER);
51
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
lcd.print(content);
}
void HOME(int X_TD, int Y_TD, int SP_, int M_)
{
lcd.clear();
String TD = "";
TD = TD + X_TD;
TD = TD + ":";
TD = TD + Y_TD;
String MO = "";
if (M_ == 0) MO = "MODE";
if (M_ == 1) MO = "AUTO1";
if (M_ == 2) MO = "AUTO2";
if (M_ == 3) MO = "AUTO3";
if (M_ == 4) MO = "MANNUAL";
if (M_ == 5) MO = "RESET";
if (M_ == 6) MO = "HOME";
String TDB = "";
TDB = TDB + SP_;
TDB = TDB + " B/M";
CENTER(NAME, 0);
CENTER(TD, 1);
CENTER(MO, 2);
CENTER(TDB, 3);
}
void OPTION()
{
lcd.clear();
CENTER(OPTION_NAME, 0);
52
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
53
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
void UP_PRESS(int PAGE, int CURSOR, int ROW, int VALUE, int
SELECT_BUFFER)
{
if (digitalRead(UP_BUTTON) != OLD_UP_BUTTON)
{
if (digitalRead(UP_BUTTON) == 0)
{
SOUND();
OLD_UP_BUTTON = 0;
if (PAGE == 1)
{
if (CURSOR < 4)
{
CURSOR = CURSOR - 1;
if (CURSOR < 1) CURSOR = 1;
lcd.setCursor(1, CURSOR + 1);
lcd.print(" ");
lcd.setCursor(1, CURSOR);
lcd.print(">");
}
if (CURSOR == 4)
{
CURSOR = CURSOR - 1;
lcd.clear();
OPTION();
lcd.setCursor(1, 1);
lcd.print(" ");
lcd.setCursor(1, CURSOR);
lcd.print(">");
54
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
}
}
if (PAGE == 2)
{
if (SELECT_BUFFER == 0)
{
if (CURSOR < 4)
{
CURSOR = CURSOR - 1;
if (CURSOR < 1) CURSOR = 1;
lcd.setCursor(0, CURSOR + 1);
lcd.print(" ");
lcd.setCursor(0, CURSOR);
lcd.print(">");
}
}
if (SELECT_BUFFER == 1)
{
VALUE = VALUE + 1;
if (CURSOR == 2 & VALUE > 255 || CURSOR == 3 & VALUE > 255)
{
VALUE = 255;
}
EEPROM_VALUE = VALUE;
}
}
CURRENT_CURSOR = CURSOR;
}
else OLD_UP_BUTTON = 1;
55
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
}
}
void DOWN_PRESS(int PAGE, int CURSOR, int ROW, int VALUE, int
SELECT_BUFFER)
{
if (digitalRead(DOWN_BUTTON) != OLD_DOWN_BUTTON)
{
if (digitalRead(DOWN_BUTTON) == 0)
{
SOUND();
OLD_DOWN_BUTTON = 0;
if (PAGE == 1)
{
if (CURSOR >= ROW) CURSOR = ROW;
if (CURSOR == 3)
{
CURSOR = CURSOR + 1;
lcd.clear();
CENTER(OPTION_NAME, 0);
for (int i = 3; i < 6; i++)
{
CENTER(OPTION_DISPLAY[i], i - 2);
}
lcd.setCursor(1, CURSOR - 1);
lcd.print(">");
}
if (CURSOR < 3)
{
CURSOR = CURSOR + 1;
56
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
57
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
58
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
59
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
else OLD_SELECT_BUTTON = 1;
}
}
void LCD_DISPLAY (int PAGE)
{
if (PAGE == 0)
{
INTI_DISPLAY(PAGE);
}
if (PAGE == 1)
{
INTI_DISPLAY(PAGE);
CURRENT_CURSOR = 1;
for (int i = 0; i < i + 1; i++)
{
UP_PRESS(PAGE, CURRENT_CURSOR, 4, 0, 0);
DOWN_PRESS(PAGE, CURRENT_CURSOR, 4, 0, 0);
if (digitalRead(ENTER_BUTTON) != OLD_ENTER_BUTTON)
{
if (digitalRead(ENTER_BUTTON) == 0)
{
SOUND();
OLD_ENTER_BUTTON = 0;
if (PAGE == 1 & CURRENT_CURSOR == 2)
{
MODE_BUFFER = 1;
break;
}
if (PAGE == 1 & CURRENT_CURSOR == 3)
60
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
{
MODE_BUFFER = 2;
break;
}
if (PAGE == 1 & CURRENT_CURSOR == 4)
{
MODE_BUFFER = 3;
break;
}
if (PAGE == 1 & CURRENT_CURSOR == 1)
{
MODE_BUFFER = 4;
break;
}
}
else OLD_ENTER_BUTTON = 1;
}
}
PAGE = 0;
LCD_DISPLAY(PAGE);
}
if (PAGE == 2)
{
INTI_DISPLAY(PAGE);
CURRENT_CURSOR = 1;
for (int i = 0; i < i + 1; i++)
{
UP_PRESS(PAGE, CURRENT_CURSOR, 3, 0, 0);
DOWN_PRESS(PAGE, CURRENT_CURSOR, 3, 0, 0);
61
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
SELECT_PRESS(PAGE, CURRENT_CURSOR);
if (digitalRead(ESC_BUTTON) == 0) break;
}
PAGE = 0;
LCD_DISPLAY(PAGE);
}
}
#include "DISPLAY.h"
void RESET_SYSTEM()
{
HOME(0, 0, 0, 5);
Serial.println("RESET");
digitalWrite(DIR2, LOW);
digitalWrite(DIR3, LOW);
for (int i = 0; i < i + 1; i++)
{
if (digitalRead(CTHT2) == 0 || digitalRead(CTHT3) == 0) break;
digitalWrite(CLK2, LOW);
digitalWrite(CLK3, LOW);
delayMicroseconds(3500);
digitalWrite(CLK2, HIGH);
digitalWrite(CLK3, HIGH);
delayMicroseconds(3500);
}
for (int i = 0; i < i + 1; i++)
{
if (digitalRead(CTHT2) == 0) break;
digitalWrite(CLK2, LOW);
delayMicroseconds(3500);
62
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
digitalWrite(CLK2, HIGH);
delayMicroseconds(3500);
}
for (int i = 0; i < i + 1; i++)
{
if (digitalRead(CTHT3) == 0) break;
digitalWrite(CLK3, LOW);
delayMicroseconds(1000);
digitalWrite(CLK3, HIGH);
delayMicroseconds(1000);
}
DEG1 = 0;
DEG2 = 0;
X = 0;
Y = 0;
HOME(0, 0, 0, 6);
}
int BEGIN_X(int X_CURRENT, int X_RUN)
{
int X_BUFFER = X_RUN - X_CURRENT;
if (X_BUFFER > 0)
{
digitalWrite(DIR2, HIGH);
COUNTER_BUFFER_X = 1;
}
if (X_BUFFER < 0)
{
digitalWrite(DIR2, LOW);
COUNTER_BUFFER_X = 2;
63
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
64
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
65
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
delayMicroseconds(DELAY);
}
if (DEG_X == 0 & DEG_Y == 0) break;
}
if (DEG_X == 0 & DEG_Y == 0) break;
if (DEG_X > 0)
{
DEG_X = DEG_X - 1;
if (COUNTER_BUFFER_X == 1) X = X + 1;
if (COUNTER_BUFFER_X == 2) X = X - 1;
String TD = "";
TD = TD + X;
TD = TD + ":";
TD = TD + Y;
CENTER(TD, 1);
}
}
if (DEG_Y > 0)
{
DEG_Y = DEG_Y - 1;
if (COUNTER_BUFFER_Y == 1)Y = Y + 1;
if (COUNTER_BUFFER_Y == 2)Y = Y - 1;
String TD = "";
TD = TD + X;
TD = TD + ":";
TD = TD + Y;
CENTER(TD, 1);
}
66
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
67
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
KẾT LUẬN
68
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
69
THIẾT KẾ VÀ CHẾ TẠO MÁY BẮN BÓNG TENNIS TỰ ĐỘNG
[1] Thiết kế chi tiết máy, Nguyễn Trọng Hiệp - Nguyễn Văn Lẫm, Nhà xuất bản giáo
dục, 1999.
[2] Tính toán thiết kế hệ thống dẫn động cơ khí, tập 1 và 2, Trịnh Chất – Lê Văn Uyển,
Nhà xuất bản giáo dục, 2006.
[3] Thiết kế và chế tạo máy bắn banh tennis, Nguyễn Tấn Lộc – Ngô Gia Phú, 2008.
[4] Tổng cục thể dục thể thao, Luật quần vợt, NXB Thể dục thể thao, 1997.
[5] Mathematical Analysis for a New Tennis Ball Launcher - Krzysztof Wójcicki,
Kazimierz Puciłowski, Zbigniew Kulesza
[6] http://arduino.vn/bai-viet/657-huong-dan-su-dung-appinventor-lap-trinh-ung-dung-
dieu-khien-xe-qua-bluetooth-ma-khong?fbclid=IwAR3v4g7W5tDX5LJQhcc3mH6oet
o1DBspvQ67OxLPqai8nKMyfyq7MRfLtqw ( Truy cập lần cuối 17:51 11/14/2019)
70