Professional Documents
Culture Documents
----------
ĐIỀU KHIỂN CÁNH TAY ROBOT HỌC LỆNH GẮP SẢN PHẨM
TRÊN BĂNG CHUYỀN
1.Thái độ tác phong và nhận thức trong quá trình thực hiện đồ án:
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
2.Hình thức, thể thức trình bày đồ án:
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
3. Kiến thức chuyên môn:
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
4.Đánh giá khác:
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
5.Đánh giá kết quả:
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
1.Thái độ tác phong và nhận thức trong quá trình thực hiện đồ án:
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
2.Hình thức, thể thức trình bày đồ án:
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
3. Kiến thức chuyên môn:
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
4.Đánh giá khác:
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
5.Đánh giá kết quả:
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
Page | 4
Lời cảm ơn
Đầu tiên em xin gởi lời cảm ơn sâu sắc đến Thầy Nguyễn Lương Thanh Tùng -
Giảng viên bộ môn Điện - Điện Tử, đã tận tình giúp đỡ, hướng dẫn, giảng giải cho
chúng em trong lựa chọn đề tài cũng như trong quá trình thực hiện đề tài. Trong quá
trình thực hiện đồ án cũng đã xảy ra nhiều khó khăn, thiếu sót nhưng được sự hỗ trợ
và góp ý của Thầy nên nhóm đã hoàn thành được đồ án.
Trong suốt thời gian được theo học tại trường Đại học Bà Rịa Vũng Tàu, Tp.
Vũng Tàu, em đã nhận được nhiều sự quan tâm và giúp đỡ từ Thầy Cô và bạn bè.
Cảm ơn Hiệu Trưởng, cùng các quý thầy cô trường Đại học Bà Rịa – Vũng Tàu đã
hỗ trợ tận tình về trang thiết bị, phần mềm, cơ sở vật chất tạo điều kiện hoàn thành
đồ án. Với lòng biết ơn sâu sắc, em xin gửi lời cảm ơn tới quý Thầy Cô, những người
đã truyền lại cho em rất nhiều kinh nghiệm và kiến thức quý báu, những sự giúp đỡ
ấy đã tiếp thêm động lực cho em vững bước trên con đường mình đã chọn. Và đặc
biệt là Thầy, Cô khoa Điện - Điện tử đã truyền đạt kiến thức, kinh nghiệm cũng như
tạo những điều kiện tốt nhất để em hoàn thành đề tài.
Xin cảm ơn các bạn cùng khóa, cùng khoa đã động viên, khích lệ, ủng hộ về nhiều
mặt góp phần làm nên thành công của đồ án này.
Page | 5
MỤC LỤC:
CHƯƠNG 1: MỞ ĐẦU
I. Đặt vấn đề
II. Mục tiêu, nhiệm vụ và giới hạn đề tài
CHƯƠNG 2: TỔNG QUAN ĐỀ TÀI
I. Giới thiệu
II. Lịch sử phát triển
III. Phân loại arm robot
IV. Ứng dụng và lợi ích
CHƯƠNG 3: TỔNG QUAN THIẾT BỊ VÀ PHẦN MỀM SỬ DỤNG
I. Giới thiệu chung về Arduino
II. Arduino Uno
III. Giới thiệu chung về cảm biến
IV. Động cơ servo
V. Chiết áp ( biến trở )
VI. Motor giảm tốc
VII. Relay đóng ngắt
VIII. Khung cánh tay robot
IX. Giới thiệu phần mềm IDE
CHƯƠNG 4: TỔNG QUAN MÔ HÌNH THỰC TẾ
I. Kết nối linh kiện
II. Mô hình thực tế
III. Nguyên lí hoạt động
IV. Thuật toán điều khiển
V. Code điều khiển
CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI
I. Kết luận
II. Hướng phát triển đề tài
TÀI LIỆU THAM KHẢO
Page | 6
PHỤ LỤC HÌNH ẢNH:
Hình 1 : Robot hoạt động theo tạo độ DECAC.
Hình 2 : Robot hoạt động theo hệ tọa độ trụ
Hình 3 : Robot hoạt động theo hệ tọa độ cầu.
Hình 4 : Robot kiểu SCARA.
Hình 5 : Robot khớp nối
Hình 6 : Robot song song (3-PRS)
Hình 7: Ứng dụng robot
Hình 8: Board mạch Arduino Uno.
Hình 9: Board mạch Arduino Uno.
Hình 10: Cảm biến vật cản hồng ngoại
Hình 11: Cảm biến vật cản hồng ngoại
Hình 12: Động cơ RC Servo Digital RC FR1510
Hình 13: Động cơ RC Servo 9G.
Hình 14: Chiết áp
Hình 15: Động cơ giảm tốc
Hình 16: Relay
Hình 17: Khung arm robot tự làm
Hình 18: Giao diện phần mềm IDE.
Hình 19: Code sáng tắt led trên phần mềm IDE.
Hình 20: Kết nối Servo với arduino.
Hình 21: Kết nối Cảm biến vật cản hồng ngoại, relay và động cơ giảm tốc:
Hình 22: Mô hình
Hình 23: Bảng mạch điều khiển
Hình 24: Cánh tay robot
Hình 25: Sơ đồ khối
Hình 26: Thuật toán
Page | 7
CHƯƠNG 1: MỞ ĐẦU
I. Đặt vấn đề
Hiện nay với nền công nghiệp hóa hiện đại hóa, với sự phát triển của các kỹ
thuật hiện đại, nền công nghiệp 4.0 cần sản xuất rất nhiều linh kiện hay chế tạo máy
móc, hay trong nền công nghiệp sản xuất hàng hóa củng cần hiện đại hóa.
Cùng với sự phát triển không ngừng của các ngành khoa học kỹ thuật, các ngành công
nghiệp cũng phát triển nhanh chóng. Việc áp dụng máy móc hiện đại vào sản xuất cũng là một
yêu cầu không thể thiếu trong các nhà máy, nhằm tang năng suất, tăng chất lượng và giảm giá
thành sản phẩm.
Song song với sự phát triển đó, công nghệ chế tạo Robot cũng phát triển nhanh chóng đặc
biệt là ở các nươc phát triển nhằm đáp ứng các nhu cầu về sản xuất, sinh hoạt, quốc
phòng…Robot có thể thực hiện những công việc mà con người khó thực hiện và thậm chí
không thực hiện được như : làm những công việc đòi hỏi độ chính xác cao,làm việc trong môi
trường nguy hiểm( như lò phản ứng hạt nhân, dò phá mìn trong quân sự), thám hiểm không
gian vũ trụ….
Với nghành công nghiệp của Việt Nam thì robot chưa được xuất hiện nhiều trong các dây
chuyền sản xuất. Vì sản phẩm này còn quá đắt với thị trường Việt Nam.
Nhằm nội địa hóa sản phẩm, góp phần nào đó nâng cao năng xuất lao động , phát triển
công nghệ chế tạo robot ở nước ta, cũng như nghiên cứu chuyên sâu về Robot, nên em đã chọn
đề tài “ Cánh tay robot học lệnh gắp sản phẩm trên băng chuyền ”.
Đề tài này hướng tới có thể thay thế các bộ điều khiển cùa các nhà máy, công ty và xây
dựng thuật điều khiển tối ưu cho các đối tượng sản xuất, đồng thời sử dụng đề tài này để làm
đồ án chuyên ngành của mình.
Page | 8
CHƯƠNG 2: TỔNG QUAN ĐỀ TÀI
I. Giới Thiệu
Đề tài cánh tay robot phân loại sản phẩm là một phân nhánh trong Robot công nghiệp
vì vậy em xin giới thiệu tổng quát về lịch sử ra đời từ Robot công nghiệp.
Thuật ngữ Robot xuất hiện lần đầu tiên vào năm 1922 trong tác phẩm “Rossum’s
Universal Robot” của Karel Capek. Trong tác phẩm nhân vật Rossum và con trai đã tạo
ra chiếc máy giống con người để phục vụ cho con người.
Năm 40 nhà văn viễn tưởng Nga, Issac Asimov, mô tả robot là một chiếc máy tự động,
mang diện mạo con người được điều khiển bằng một hệ thần kinh khả trình Positron, do
chính con người lập trình. Asimov đặt tên cho ngành nghiên cứu về robot là robotics, trong
đó có 3 nguyên tắc cơ bản:
- Robot không được xúc phạm con người và không gây tổn hại cho con người.
- Hoạt động của robot phải tuân thủ các quy tắc do con người đặt ra. Các quy tắc này
không được vi phạm nguyên tắc thứ nhất.
- Một robot cần phải bảo vệ sự sống của mình, nhưng không được vi phạm hai nguyên
tắc trước.
Robot là một tác nhân cơ khí, nhân tạo, ảo, thường là một hệ thống cơ khíđiện tử. Với
sự xuất hiện và chuyển động của mình, robot gây cho người ta cảm giác rằng nó giác quan
giống như con người. Từ "robot" thường được hiểu với hai nghĩa: robot cơ khí và phần
mềm tự hoạt động. Về lĩnh vực Robot, Mỹ và Nhật Bản là những nước đi đầu thế giới về
lĩnh vực này.
Tay robot có thể được thiết kế để thực hiện bất kỳ công việc mong muốn như hàn,
nắm, quay, vv, tùy thuộc vào ứng dụng. Ví dụ, cánh tay robot trong dây chuyền lắp ráp ô
tô thực hiện nhiều công việc khác nhau như hàn và xoay linh kiện và lắp đặt trong quá
trình lắp ráp. Trong một số trường hợp, sự mô phỏng chặt chẽ của bàn tay con người là
mong muốn, như trong robot được thiết kế để tiến hành giải trừ vũ khí và thải bỏ bom.
Page | 9
II. Lịch sử phát triển
Sau sự xuất hiện vào năm 1922, hơn 20 năm sau, sau chiến tranh thế giới thứ 2Hình
dạng Robot xuất hiện đầu tiên ở nước Hoa Kỳ, là loại tay máy chép hình dung trong phòng
thí nghiệm vật liệu phóng xạ. Vào những năm 50 của thế kỷ trước, bên cạnh các loại tay
máy chép hình cơ khí, các loại tay máy chép hình thủy lực điện tử đã xuất hiện.
Chiếc robot công nghiệp được đưa vào ứng dụng đầu tiên. Năm 1961. ở một nhà máy
ô tô của General Motors lại Trenlon. New Jerscy Hoa Kỳ. Năm 1967 Nhât Bản mới nhập
chiếc robot công nghiệp đấu tiên từ Công ty AMF của Hoa Kỳ (American Machine and
Foundry Company).
Nên năm 1990 có hơn 40 công ty Nhật Bản, trong đó có những công ty không lẽ như
Công ty Hitachi và Công ty Mitsubishi, đã đưa ra thi trường quốc tế nhiều lại robot nổi
tiếng.Từ những năm 70 việc nghiên cứu nâng cao tính năng của robot đã chú ý nhiều đến
sự lắp đặt thêm các cảm biến ngoại tín hiệu để nhận biết môi trường làm việc. Tại trường
Đạỉ học Tổng hợp Stanford người ta đã tạo ra loại robot lắp ráp lự động điều khiến bằng
máy vi tính trên cơ sở xử lý thông tin từ các cảm biến lực và thị giác. Vào thời gian này
công ty IBM đã chế tạo loại robot có các cảm biến xúc giác và cảm biến lực. điều khiển
bằng máy tính để lắp ráp các máy in gồm 20 cụm chi tiết.
Theo Viện Kỹ Thuật robot cảu Hoa Kỳ định nghĩa robot là loại tay máy nhiều chức
năng, với chương trình làm việc thay đổi được, dùng để thực hiện một số thao tác sản xuất.
Có nhều tài liệu khi định nghĩa robot rất lưu ý đến tiêu chí điều khiển bằng máy tính nhưng
trong phân loại robot công nghiệp theo tiêu chuẩn của Nhật Bản (JISB 0134-1979) có cả
nhóm tay máy điều khiển bằng tay.
Theo ISO (International Standards Organization) thì: “robot công nghiệp là một tay
máy đa mục tiêu, có một số bậc tự do, dể dàng lập trình, điều khiển trợ động, dùng để tháo
lắp phôi, dụng cụ hoặc các vật dụng khác. Do chương trình thao tác có thể thay đổi nên
thực hiện nhiều nhiệm vụ đa dạng”. Tuy nhiên, robot công nghiệp được định nghĩa như
thế là chưa hoàn toàn thỏa đáng.
Robot công nghiệp có thể được hiểu là những thiết bị tự động linh hoạt, bắt chước
được các chức năng lao động công nghiệp của con người. Nói đến thiết bị tự động linh
hoạt là nhấn mạnh đến khả năng thao tác với nhiều bậc tự do, được điều khiển trợ động
và lập trình thay đổi được. Còn nói đến sự bắt chước các chức năng lao động công nghiệp
của con người là có ý nói đến sự không hạn chế từ các chức năng lao động chân tay đơn
giản đến trí khôn nhân tạo, tùy theo loại hình công việc lao động cần đến chức năng đó
hay không. Đồng thời cũng nói đến mức độ cân thiết bắt chước được như con người hay
không.
Page | 10
III. Phân loại arm robot
1. Robot Cartesian / Gantry Robot (tọa độ DECAC): (Hình 2.3.1) Được sử dụng để chọn
và đặt công việc, ứng dụng sealant, hoạt động lắp ráp, xử lý các máy công cụ và hàn hồ
quang. Đó là một robot có cánh tay có ba khớp lăng trụ, có trục khớp.
2. Robot trụ : (Hình 2.3.2) Được sử dụng cho các hoạt động lắp ráp, xử lý tại các máy
công cụ, hàn điểm, và xử lý tại các máy đúc. Đó là một robot có trục tạo thành một hệ trục
tọa độ.
4. SCARA robot : (Hình 2.3.4) Được sử dụng để chọn và đặt công việc, ứng dụng sealant,
hoạt động lắp ráp và xử lý các máy công cụ. Robot này có hai khớp nối song song để cung
cấp sự tuân thủ trong máy bay.
5. Robot khớp nối : (Hình 2.3.5) Được sử dụng cho các hoạt động lắp ráp, diecasting,
fettling máy móc, khí hàn, hàn hồ quang và phun sơn. Đó là một robot có cánh tay có ít
nhất ba khớp quay.
Page | 12
Hình 5 : Robot khớp nối
6. Robot song song : (Hình 2.3.6) Một sử dụng là một nền tảng di động xử lý mô phỏng
bay buồng lái. Đó là một robot có cánh tay có khớp nối lăng trụ hoặc khớp quay đồng
thời.
Page | 13
IV. Ứng dụng và lợi ích
Robot cánh tay học lệnh gắp sản phẩm trên băng chuyền được ứng dụng trong các hệ
thống gắp các sản phẩm đã biết trước ở trong các nhà máy, các công ty, xí nghiệp, doanh
nghiệp, …. khi phát triển đề tài hơn có thể thay vì gắp sản phẩm thông thường ta có thể
phát triển thành phân loại và gắp sản phẩm theo màu sắc, theo kích thước hay mã vach,
mã hiệu được cung cấp trước trong hệ thống. Lợi ích lớn nhất của sử dụng cánh tay
robot trong việc phân loại và gắp sản phẩm là có thể xử lý hàng hóa, linh kiện ở tốc độ
cao và nhất quán. Có thể dễ dàng lập trình cánh tay Robot trong nhiều ứng dụng giúp đáp
ứng các yêu cầu trong sản xuất. Cùng với đó việc áp dụng cánh tay Robot cộng tác có kích
thước nhỏ, nhẹ, sẽ hoạt động tốt trong nhiều không gian, cả những không gian nhỏ hẹp.
Sử dụng cánh tay Robot gắp sản phẩm giúp tăng sản lượng, đặc biệt hiệu quả trong quá
trình đóng gói hàng hóa, xây dựng nhà kho thông minh, tạo tỉ lệ hoàn vốn cao trong sản
xuất. Cánh tay Robot gắp sản phẩm sẽ thay thế con người làm các công việc đơn điệu,
nhàm chán lặp đi lặp lại.
Page | 14
CHƯƠNG 3: TỔNG QUAN THIẾT BỊ VÀ PHẦN MỀM SỬ DỤNG
Page | 15
sẵn. Với thiết bị này, việc lắp ráp và điều khiển các thiết bị điện tử sẽ dễ dàng hơn bao giờ
hết. Một điều không hề dễ dàng cho những ai đam mê công nghệ và điều khiển học nhưng
là người ngoại đạo và không có nhiều thời gian để tìm hiểu sâu hơn về về kĩ thuật lập trình
và cơ điện tử.
Hiện tại có rất nhiều loại vi điều khiển và đa số được lập trình bằng ngôn ngữ C/C++
hoặc Assembly nên rất khó khăn cho những người có ít kiến thức sâu về điện tử và lập
trình. Nó là trở ngại cho mọi người muốn tạo riêng cho mình một món đồ mang tính công
nghệ. Do vậy đó là lí do Arduino được phát triển nhằm đơn giản hóa việc thiết kế, lắp ráp
linh kiện điện tử cũng như lập trình trên vi xử lí và mọi người có thể tiếp cận dễ dàng hơn
với thiết bị điện tử mà không cần nhiều về kiến thức điện tử và thời gian. Sau đây là nhưng
thế mạnh của Arduino so với các nền tảng vi điều khiển khác:
- Chạy trên đa nền tảng: Việc lập trình Arduino có thể thể thực hiện trên các hệ điều
hành khác nhau như Windows, Mac Os, Linux trên Desktop, Android trên di động.
- Ngôn ngữ lập trình đơn giản dễ hiểu.
- Nền tảng mở: Arduino được phát triển dựa trên nguồn mở nên phần mềm chạy trên
Arduino được chia sẻ dễ dàng và tích hợp vào các nền tảng khác nhau.
- Mở rộng phần cứng: Arduino được thiết kế và sử dụng theo dạng module nên việc
mở rộng phần cứng cũng dễ dàng hơn.
- Đơn giản và nhanh: Rất dễ dàng lắp ráp, lập trình và sử dụng thiết bị.
- Dễ dàng chia sẻ: Mọi người dễ dàng chia sẻ mã nguồn với nhau mà không lo lắng về
ngôn ngữ hay hệ điều hành mình đang sử dụng.
Arduino có rất nhiều module, mỗi module được phát triển cho một ứng dụng. Về mặt
chức năng, các bo mạch Arduino được chia thành hai loại: loại bo mạch chính có chip
Atmega và loại mở rộng thêm chức năng cho bo mạch chính. Các bo mạch chính về cơ
bản là giống nhau về chức năng, tuy nhiên về mặt cấu hình như số lượng I/O, dung lượng
bộ nhớ, hay kích thước có sự khác nhau. Một số bo có trang bị thêm các tính năng kết nối
như Ethernet và Bluetooth. Các bo mở rộng chủ yếu mở rộng thêm một số tính năng cho
bo mạch chính. Ví dụ như tính năng kết nối Ethernet, Wireless, điều khiển động cơ.
Arduino được chọn làm bộ não xử lý của rất nhiều thiết bị từ đơn giản đến phức tạp.
Trong số đó có một vài ứng dụng thực sự chứng tỏ khả năng vượt trội của Arduino do
chúng có khả năng thực hiện nhiều nhiệm vụ rất phức tạp. Sau đây là danh sách một số
ứng dụng nổi bật của Arduino như trong công nghệ in 3D, robot dò đường theo hướng có
nguồn nhiệt, tạo một thiết bị nhấp nháy theo âm thanh và đèn laser hay là một thiết bị báo
cho khách hàng biết khi nào bánh mì ra lò. Đồ án tốt nghiệp SVTH: Nguyễn Đức Thịnh
22 Arduino đã và đang được sử dụng rất rộng rãi trên thế giới, và ngày càng chứng tỏ
được sức mạnh của chúng thông qua vô số ứng dụng độc đáo của người dùng trong cộng
Page | 16
đồng nguồn mở (open-source). Tuy nhiên tại Việt Nam Arduino vẫn còn chưa được biết
đến nhiều. ứng dụng của arduino trong thực tế:
Page | 17
- Chân Vin: Điện áp đầu vào Arduino khi chúng ta dùng nguồn điện bên ngoài (khác
với nguồn 5V lấy từ USB hoặc nguồn thông qua jack cắm nguồn riêng). Chúng ta có thể
cung cấp nguồn thông qua chân này. 25
- Chân 5V: Cung cấp nguồn vi điều khiển và các bộ phận khác trên bo mạch và cung
cấp nguồn cho các thiết bị ngoại vi khi kết nối tới bo mạch.
- Chân 3,3V: Cung cấp nguồn cho các thiết bị cảm biến.
- Chân GND: Chân nối đất.
- Chân Aref: Tham chiếu điện áp đầu vào analog.
- Chân IOREF: Cung cấp điện áp cho các vi điều khiển hoạt động. Một shield được cấu
hình đúng có thể đọc điện áp chân IOREF và lựa chọn nguồn thích hợp hoặc kích hoạt bộ
chuyển đổi điện áp để là việc ở mức 5V hoặc 3,3V.
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 .
- 2KB cho SRAM (Static Random Access Memory): giá trị các biến bạn khai bá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.
- 1KB EEPROM (Electrically Eraseble Programmable Read Only Memory): đâ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ệu trên SRAM.
Arduino Uno có 14 chân digital (chân 0 – 13) và 6 chân analog (chân A0 – A5).
Các chân digital chúng ta có thể cấu hình để làm chân nhần dữ liệu vào từ các thiết
bị ngoại vihoặc làm chân để truyền tín hiêu ra các thiết bị ngoại vi. Bằng cách sử dụng
các hàm pinMode(), digitalWrite() và digitalRead(). Mỗi chân có thể cung cấp hoặc nhận
một dòng điện tối đa 40mA và có một điện trở kéo nội (mặc định không nối) 20 - 50
kOhms. Ngoài ra có một số chân có chức năng đặc biệt:
Page | 18
- Các chân analog có độ phân giải 10 bit (tương ứng với 1024 mức giá trị khác nhau)
ứng với mức từ 0 – 5V. Ngoài ra một số chân có các chức năng đặc biệt:
- Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI
với các thiết bị khác.
Các bộ cảm biến đóng vai trò cực kỳ quan trọng trong lĩnh vực đo lường và điều khiển.
Chúng cảm nhận và đáp ứng theo các kích thích thường là đại lượng không điện, chuyển
đổi các đại lượng này thành các đại lượng điện và truyền các thông tin về hệ thống đo
lường điều khiển, giúp chúng ta nhận dạng đánh giá và điều khiển mọi biến trạng thái của
đối tượng.
Hiện nay, con người đã sản xuất được rất nhiều các loại cảm biến khác nhau như: cảm
biến ánh sang, cảm biến độ ẩm, cảm biến nhiệt độ, cảm biến quang… Các cảm biến có
ứng dụng rộng rãi và phạm vi sử dụng lớn, ví dụ như trong công nghiệp, khoa học kĩ thuật,
giám sát thiết bị, viễn thông, giao thông, dân dụng, quân sự…
Cảm biến vật cản hồng ngoại có khả năng thích nghi với môi trường, có một cặp truyền và
nhận tia hồng ngoại. Tia hồng ngoại phát ra một tần số nhất định, khi phát hiện hướng truyền
có vật cản (mặt phản xạ), phản xạ vào đèn thu hồng ngoại, sau khi so sánh, đèn màu xanh sẽ
sáng lên, đồng thời đầu cho tín hiệu số đầu ra (một tín hiệu bậc thấp).
Khoảng cách làm việc hiệu quả 2 ~ 5cm, điện áp làm việc là 3.3 V đến 5V. Độ nhạy sáng
của cảm biến vật cản hồng ngoại được điều chỉnh bằng chiết áp, cảm biến dễ lắp ráp, dễ sử
dụng,….
Có thể được sử dụng rộng rãi trong robot tránh chướng ngại vật, xe tránh chướng ngại vật và
dò đường…
Page | 19
Hình 10: Cảm biến vật cản hồng ngoại
Thông số kỹ thuật :
Page | 20
Hình 11: Cảm biến vật cản hồng ngoại
Động cơ servo được thiết kế những hệ thống hồi tiếp vòng kín. Tín hiệu ra của động
cơ được nối với một mạch điều khiển. Khi động cơ quay, vận tốc và vị trí sẽ được hồi tiếp
về mạch điều khiển này. Nếu có bầt kỳ lý do nào ngăn cản chuyển động quay của động
cơ, cơ cấu hồi tiếp sẽ nhận thấy tín hiệu ra chưa đạt được vị trí mong muốn. Mạch điều
khiển tiếp tục chỉnh sai lệch cho động cơ đạt được điểm chính xác.
Các động cơ servo điều khiển bằng liên lạc vô tuyến được gọi là động cơ servo RC
(radio-controlled). Trong thực tế, bản thân động cơ servo không phải được điều khiển
bằng vô tuyến, nó chỉ nối với máy thu vô tuyến trên máy bay hay xe hơi. Động cơ servo
nhận tín hiệu từ máy thu này.
Page | 21
1. Động cơ RC Servo Digital RC FR1510:
Page | 22
Động cơ RC Servo 9G có kích thước nhỏ, là loại được sử dụng nhiều nhất để làm các
mô hình nhỏ hoặc các cơ cấu kéo không cần đến lực nặng. Động cơ RC Servo 9G có tốc
độ phản ứng nhanh, động cơ RC Servo 9G có tích hợp sẵn Driver điều khiển động cơ bên
trong nên có thể dễ dàng điều khiển góc quay bằng phương pháp điều độ rộng xung PWM.
Lưu ý: Các bánh răng được làm bằng nhựa nên cần lưu ý khi nâng tải nặng vì có thể
làm hư bánh răng.
THÔNG SỐ KỸ THUẬT: -
Khối lượng : 9g
- Kích thước: 22.2×11.8.32 mm
- Momen xoắn: 1.8kg/cm
- Tốc độ hoạt động: 60 độ trong 0.1 giây
- Điện áp hoạt động: 4.8V(~5V)
- Nhiệt độ hoạt động: 0 ºC – 55 ºC
Chiết áp trượt có 2 tiếp điểm trượt, để lấy ra hai mức chia áp. Hạn chế không gian cho ra
các tiếp điểm di chuyển trong phạm vi liên quan đến nhau.
Chiết áp có điểm ra bù, là chiết áp trên phần thân điện trở có thêm các điểm nối ra phụ.
Khi nối các điện trở và tụ điện phù hợp vào các điểm này thì cải thiện được đặc trưng tần
số của mạch chia áp ở các mức chia khác nhau.
Page | 23
Chiết áp kỹ thuật số
Chiết áp kỹ thuật số là phần tử hiếm có trong ứng dụng thông thường. Có hai dạng:
Chiết áp có mảng điện trở chính xác cao được nối và điều khiển giá trị chia áp bằng mã
số, để chia tín hiệu tương tự, như trong các mạch ADC và DAC.
Chiết áp thuần túy số do phần mềm mô phỏng một hệ số nhân tín hiệu đã chỉ định.
Ứng dụng
Chiết áp thường được sử dụng để điều khiển các thiết bị điện như điều khiển âm lượng trên
thiết bị âm thanh. Khi dịch chuyển thanh trượt được vận hành bởi một cơ chế xác định thì nó
có thể được sử dụng làm đầu dò vị trí, ví dụ trong joystick. Chiết áp hiếm khi được sử dụng
để điều khiển trực tiếp công suất đáng kể, cỡ hơn một watt, vì công suất tiêu tán trong chiết
áp sẽ tương đương với công suất trong tải điều khiển
Động cơ DC giảm tốc vàng có chất lượng và giá thành vừa phải cùng với khả năng dễ lắp ráp
của nó đem đến chi phí tiết kiệm và sự tiện dụng cho người sử dụng, các bạn khi mua động cơ
giảm tốc vàng có thể mua thêm gá bắt động cơ vào thân Robot cũng như bánh xe tương thích.
THÔNG SỐ KỸ THUẬT
Page | 24
Điện áp hoạt động: 3-9VDC
Dòng điện tiêu thụ: 110140mA
Tỉ số truyền: 1:120
Số vòng/1phút:
50 vòng/ 1 phút tại 3VDC.
83 vòng/ 1 phút tại 5VDC.
Moment: 1.0KG.CM
Bánh xe V1 được thiết kế để sử dụng với động cơ giảm tốc V1. Bánh xe V1 là loại bánh được
sử dụng nhiều nhất trong các thiết kế robot hiện nay vì có giá thành phải chăng, chất lượng
tốt, dể lắp ráp và ứng dụng trong thiết kế.
Page | 25
Hình 16: Relay
Có sẵn header rất tiện dụng khi kết nối với vi điều khiển. Mô-đun này tuân thủ các tiêu
chuẩn an toàn quốc tế, khu vực đầu vào và khu vực tải có các khe cách ly
THÔNG SỐ KỸ THUẬT
o COM : chung
o NC : Thường đóng (khi kích tiếp điểm mở ra)
Đầu vào:
-Điện áp nuôi : 5VDC
-Tín hiệu vào điều khiển: 0V
+ Tín hiệu là 0: thì Relay đóng
+ Tín hiệu là 1 : thì Relay mở
Đầu ra:
+ Tiếp điểm relay 220V 10A ( Lưu ý tiếp điểm , không phải điện áp ra)
+ NC : Thường đóng
+ NO: Thường mở
+ COM: Chân chung
Ký hiệu nguồn:
+ VCC, GND là nguồn nuôi Relay
+ in là chân tín hiệu điều khiển
Page | 26
VIII. Khung cánh tay robot
Page | 27
IX. Giới thiệu phần mềm IDE
(Integrated Development Environment)
Page | 28
input/output được dễ dàng hơn. Người dùng chỉ cần định nghĩa 2 hàm để tạo ra một
chương trình vòng thực thi (cyclic executive) có thể chạy được:
setup() - : hàm này chạy mỗi khi khởi động một chương trình, dùng để thiết
lập các cài đặt
loop() - : hàm này được gọi lặp lại cho đến khi tắt nguồn board mạch
Một chương trình điển hình cho một bộ vi điều khiển đơn giản chỉ là làm cho một
bóng đèn Led sáng/tắt. Trong môi trường Arduino, ta sẽ phải viết một chương trình
giống như sau:
Hình 19: Code sáng tắt led trên phần mềm IDE.
Một đặc điểm của hầu hết các board Arduino là chúng có một đèn LED và điện trở
nối giữa chân 13 với đất; một đặc điểm thuận tiện cho nhiều ứng dụng đơn giản.
Đoạn code ở trên không thể đọc được bởi một compiler C++ chuẩn như là một
chương trình đúng, vì vậy khi ta click vào nút "Upload to I/O board" trong
IDE này, một bản copy của đoạn code này sẽ được ghi vào một file tạm với một extra
include header ở phía trên cùng và một hàm main () đơn giản nằm ở phía đáy, để làm
cho thàn một chương trình C++ khả dụng.
Arduino IDE này sử dụng GNU toolchain và AVR Libc để biên dịch chương trình,
và sử dụng avrdude để upload chương trình lên board.
Vì nền tảng của Arduino là các vi điều khiển của Atmel, cho nên môi trường phát
triển của Atmel, AVR Studio hoặc các phiên bản Atmel Studio mới hơn, cũng có thể
được sử dụng để làm phần mềm phát triển cho Arduino.
Page | 29
CHƯƠNG 4: TỔNG QUAN MÔ HÌNH THỰC TẾ
1. Sơ đồ kết nối Servo, biến trở, led, nút nhấn với Arduino:
Page | 30
LED Chân 13 & điện trở &-GND
Hình 21: Kết nối Cảm biến vật cản hồng ngoại, relay và động cơ giảm tốc:
Page | 31
III. Mô hình hoàn thiện
- Dưới đây là hình ảnh toàn bộ mô hình sau khi hoàn thành
Page | 32
Hình 23: Bảng mạch điều khiển
Page | 33
III. Nguyên lí hoạt động và sơ đồ khối
* Cấp nguồn cho mô hình, sau đó thực hiện dạy lệnh, sau khi day lệnh xong ấn Playpause để
chạy ( cảm biến sẽ phát hiện, nếu có vật cản thì cánh tay robot mới hoạt động), muốn dừng thì
ấn lại playpause.
- Bước 1: Đầu tiên ta bật công tắc để cấp nguồn cho băng tải và các thiết bị
- Bước 2: bắt đầu dạy lệnh: vặn biến trở thứ nhất để điều khiển servo thứ nhất quay theo ý
muốn, sau đó ấn nút ấn record trên bảng điều khiển, tương tự vặn biến trở thứ 2 và 3 để điều
khiển servo thứ 2 và 3 quay theo ý muốn và ấn record ( nếu cánh tay có nhiều servo hơn thì
tăng số lượng biến trở lên và cũng làm tương tự như trên )
- Bước 3: Ấn nút ấn Playpause để cánh tay robot thực hiện chạy như lệnh vừa dạy ở bước 2.
- Muốn dừng tạm thời cánh tay robot thì ấn Playpause, và ấn lại nút Playpause để tiếp tục chạy
lại.
-Nút ấn Enable Eeprom là nút ấn dung để chuyển dữ liệu từ ram qua Eeprom để phòng khi
mất điện. Sau khi ấn nút Enable Eeprom, thì khi rút nguồn(mất điện), thì sau khi ta cấp nguồn
lại sẽ ko bị mất lệnh ta dạy lúc đầu ( lệnh sẽ được chuyển từ ram qua epprom, khi bật nguồn
thì lệnh lại được chuyển từ eeprom qua ram để thực hiện chạy).
Page | 34
Khối nguồn cung cấp: Khối nguồn cung cấp là khối quan trọng giúp cung cấp điện
cho toàn bộ hệ thống. Vì vậy cần tính toán hợp lý để khối nguồn có thể cung cấp đủ dòng
và áp để mạch có thể hoạt động tốt và ổn định.
Page | 35
V. Code điều khiển
//ĐỒ ÁN TỐT NGHIỆP
//CÁNH TAY ROBOT HỌC LỆNH GẮP SẢN PHẨM TRÊN BĂNG CHUYỀN
//SVTH NGUYỄN VĂN HIẾU
//GVHD NGUYỄN LƯƠNG THANH TÙNG
#define servo_max 5
// số step lớn nhất , nó sẽ tiêu tốn step_max*servo_max (byte) RAM
// ví dụ cần 200*5=1000 byte RAM
#define step_max 200
// nút ấn
#define start_pause_pin 12
#define record_pin 7
#define ENABLE_EEPROM_PIN 2
// đèn báo
#define led_pin 13
// tốc độ nhanh chậm
#define delay_toc_do 20
//cài pin vào analog
byte pin_analog[servo_max] = { A0, A1, A2, A3, A4 };
// cài đặt pin ra cho servo
byte pin_servo[servo_max] = { 3, 5, 6, 9, 10 };
// có 5 servo
unsigned int A0_value, A1_value, A2_value, A3_value, A4_value;
//cam bien
byte cbObj = 8; //pin 8 in uno kit
byte get_goc(byte servo_i)
{
Page | 36
// tính toán lấy giá trị góc của biến trở i
switch (servo_i) {
case 0:
A0_value = constrain(analogRead(A0), 200, 823);
return map(A0_value, 200, 823, 4, 175);
break;
case 1:
A1_value = constrain(analogRead(A1), 200, 823);
return map(A1_value, 200, 823, 4, 175);
break;
case 2:
A2_value = constrain(analogRead(A2), 200, 823);
return map(A2_value, 200, 823, 175, 4);
break;
case 3:
A3_value = constrain(analogRead(A3), 200, 823);
return map(A3_value, 200, 823, 175, 4);
break;
case 4:
A4_value = constrain(analogRead(A4), 200, 823);
return map(A4_value, 200, 823, 100, 175); // tay gắp, góc quay 100°->180°
break;
default:
break;
}
}
// kích thước eeprom (số byte) trên arduino
Page | 37
// trong ví dụ này em dùng arduino uno r3 có 1024 bytes EEPROM
const unsigned int SIZE_MEMORY_EEPROM = 1024;
///////////////////////////////////////////////////////////////////////////////////
/////////////////////////MAIN CODE- KHÔNG CẦN CHỈNH SỬA PHẦN
NÀY////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
#include <EEPROM.h>
#include <Servo.h>
Servo servo[servo_max];
//pin button
int step_move = 0;
/* mảng lưu góc cho 5 servo, 90 là giá trị góc khởi tạo cho toàn bộ phần tử*/
byte goc_servo[servo_max][step_max];
// mảng 2 chiều quản lý (servo_max) servo
byte goc_tam_thoi[servo_max] = { 90 };
// lưu góc tạm thời tại thời điểm cần tín
void setup()
{
pinMode(led_pin, OUTPUT);
//2 pin button
Serial.begin(115200);
pinMode(start_pause_pin, INPUT_PULLUP);
pinMode(ENABLE_EEPROM_PIN, INPUT_PULLUP);
pinMode(record_pin, INPUT_PULLUP);
pinMode(cbObj,INPUT);
for(int i = 0;i<10;i++){
Serial.println("cbOBj ="+ String(digitalRead(cbObj)));
Page | 38
delay(1000);
}
//
Serial.println("Bat dau day Robot hoc lenh");
// cài chế độ 5 pin analog
for (byte i = 0; i < servo_max; i++) {
pinMode(pin_analog[i], INPUT);
servo[i].attach(pin_servo[i]);
}
ADCSRA = ((ADCSRA & (B11111000)) | B00000100); // Cài tần số quét analog 1mhz
//trong hàm void setup sẽ cài đạt rồi chạy hàm learnand move này, mãi mãi
learn_and_move(); // chạy hàm
}
void move_servo(byte i, byte goc_i)
{
servo[i].write(goc_i);
}
void nhap_nhay(unsigned int time_delay, byte count)
{
for (byte i = 0; i < count; i++) {
digitalWrite(led_pin, HIGH);
delay(time_delay);
digitalWrite(led_pin, LOW);
delay(time_delay * 2);
}
}
void record(unsigned int step_x)
Page | 39
{
for (byte i = 0; i < servo_max; i++) {
goc_servo[i][step_x] = get_goc(i);
}
nhap_nhay(100, 2);
Serial.println(goc_servo[0][step_x]);
}
void move_all()
{
for (byte i = 0; i < servo_max; i++) {
move_servo(i, goc_tam_thoi[i]);
} // di chuyển
}
void control_servo()
{
byte hieu;
for (byte i = 0; i < servo_max; i++) {
hieu = abs(goc_tam_thoi[i] - get_goc(i));
if ((hieu >= 1) && (hieu < 170)) { // chống nhiễu
// không được di chuyển arm điều khiển quá nhanh
goc_tam_thoi[i] = get_goc(i);
}
} // lấy góc
move_all();
}
void nap_eeprom_sang_ram()
{
Page | 40
// nạp eeprom sang RAM
step_move = EEPROM.read(SIZE_MEMORY_EEPROM - 1); // lấy lại step_move từ
rom
for (byte i = 0; i < servo_max; i++) {
for (int step_j = 0; step_j < step_max; step_j++) {
goc_servo[i][step_j] = EEPROM.read(step_j + i * step_max);
//nạp dữ liệu từ rom sang ram
}
}
}
void luu_vao_eeprom()
{
// bước 1: lưu dữ liệu vào rom
EEPROM.write(SIZE_MEMORY_EEPROM - 1, step_move); // ghi step_move vào rom
delay(15); // đợi 15ms để hoàn thành ghi 1 ô nhớ
nhap_nhay(500, 3);
digitalWrite(led_pin, HIGH); // giữ nguyên đèn
for (byte i = 0; i < servo_max; i++) {
//Serial.print("luu");
//Serial.println(i);
for (int step_j = 0; step_j < step_move; step_j++) {
EEPROM.write(step_j + i * step_max, goc_servo[i][step_j]);
//nạp dữ liệu từ ram vào rom
delay(15); // đợi 15ms để hoàn thành ghi 1 ô nhớ
}
}
nhap_nhay(500, 3);
Page | 41
digitalWrite(led_pin, LOW); // tắt đèn
}
void pause()
{
// chỉ được lưu dữ liệu vào eeprom khi đã có dữ liệu
// nhấn pause trước, sau đó mới nhấn nút ENABLE_EEPROM_PIN để bắt đầu ghi vào
eeprom
//
if (digitalRead(start_pause_pin) == 0) {
while (true) {
digitalWrite(led_pin, 1);
delay(300); // chống nhiễu
Serial.println("PAUSE");
if (digitalRead(ENABLE_EEPROM_PIN) == 0) {
// nhấn lưu eeprom
delay(300);
luu_vao_eeprom();
}
if (digitalRead(start_pause_pin) == 0) {
Serial.println("START");
digitalWrite(led_pin, 0);
delay(300); // chống nhiễu
goto out_pause;
}
} //while
} //if
out_pause:;
Page | 42
// thoát lặp
}
void auto_move()
{
Serial.println(step_move);
nhap_nhay(50, 3);
float hieu_f[servo_max];
unsigned int step = 0, step_next;
byte time;
byte thay_doi;
long tt;
while (true) {
//lấy hiệu góc hiện tại và góc sau
while(digitalRead(cbObj)==1 && step==0){
//khong co vat, thi chay trong wong while over
tt = millis();
Serial.println("Obj="+String(digitalRead(cbObj)));
delay(100);
//phat hien co vat, thi thoat while de dk robot
/*
if(digitalRead(cbObj==0)){
Serial.println("Obj="+String(digitalRead(cbObj)));
Serial.println("Time Run:"+String(millis()-tt));
delay(100);
break;
}
*/
Page | 43
}
if (step < step_move) {
step_next = step + 1; // không viết : step++
}
else {
/*step = step_mov :thì step tiếp theo của step cuối cùng là step đầu tiên*/
step_next = 0;
}
for (byte i = 0; i < servo_max; i++) {
hieu_f[i] = (float(goc_servo[i][step]) - float(goc_servo[i][step_next]));
}
Serial.println(step);
Serial.println(goc_servo[0][step]);
Serial.println(goc_servo[0][step_next]);
Serial.println(hieu_f[0]);
//int denta;
/*vận tốc sẽ tăng dần khi khởi đầu, đạt max , vận tốc giảm dần khi ở cuối quá trình,
*/
for (float loading = 1.0; loading <= 100.0; loading++) {
//denta=30+((sq(loading-150))/1000);
// loading là phần trăm %, đánh giá kết thúc 1 động tác là 100%
for (byte i = 0; i < servo_max; i++) {
goc_tam_thoi[i] = byte(float(goc_servo[i][step]) - (((hieu_f[i]) * loading) /
100.0));
}
Serial.print(loading);
Serial.print("‚");
Page | 44
Serial.print(hieu_f[0]);
Serial.print("‚");
Serial.println(goc_tam_thoi[0]);
// gia tốc từ chậm->nhanh->chậm
if ((loading >= 0.0) && (loading < 20.0)) {
time = delay_toc_do * 2 + 5;
}
else if (loading < 30.0) {
time = delay_toc_do / 2 + 5;
}
else if (loading < 90.0) {
time = delay_toc_do + 5;
}
else {
time = delay_toc_do * 2 + 5;
}
// delay(delay_toc_do);
while ((millis() % delay_toc_do) != 0) { // làm trễ
/* cứ sau denta_ms, vòng lặp mới được thoát, */
pause();
} //while
/*
Đoạn code < delay(time) >sẽ tương đương với < while((millis()%time)!=0){;} >
- Lý do em không chọn delay :về bản chất Delay sẽ vô hiệu hóa hoàn toàn chương tình
arduino ,
arduino sẽ không thể làm gì cho đến khi hết Delay.
Page | 45
Trong khi đó chúng ta muốn ấn nút PAUSE(tạm dừng robot) ngay lập tức Robot sẽ không
dừng ngay vì bị Delay vô hiệu hóa.
Đấy là lí do em đã cho hàm pause() lồng vào bên trong khối while() như mọi người đã thấy.
*/
move_all();
} // for_loading
if (step < step_move) {
step++; // tăng cho lần kế tiếp
}
else {
/* step = step_move*/
step = 0; // lại từ đầu
}
//kết thúc 1 động tác
delay(50);
} //while
}
void learn_and_move()
{
step_move = 0;
while (digitalRead(start_pause_pin) != 0) {
//b1: điều khiển servo bằng biến trở
while (digitalRead(record_pin) != 0) {
control_servo();
if ((digitalRead(start_pause_pin) == 0) && (step_move == 0)) {
// nếu chưa có cài đặt náo mà vô thẳng phần chạy thì hiểu : lấy cài đặt từ eeprom
nap_eeprom_sang_ram();
Page | 46
}
if ((digitalRead(start_pause_pin) == 0) && (step_move != 0)) {
goto buoc_3;
}
//delay(1);// bỏ delay luôn
}
// nút record đươcj nhấn, thoát lặp
// b2: lưu vào mảng
record(step_move);
if (step_move < step_max) {
step_move++; // tăng step cho bước sau
}
}
// nút start_pause được nhấn, thoát lặp
buoc_3:
step_move--; //không có bước sau, giảm step_move xuống 1 đơn vị
//b4:auto move
auto_move();
}
void loop()
{
} // loop
Page | 47
CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI
I. Kết luận
1. Những nhiệm vụ đã thực hiện:
- Tìm hiểu được quá trình hình thành và phát triển của Robot.
- Tìm hiểu về arduino.
- Nghiên cứu, tìm hiểu phần cứng của đề tài.
- Sưu tầm, tìm kiếm tài liệu tham khảo phục vụ cho việc nghiên cứu.
- Nghiên cứu, học hỏi các phương pháp lập trình arduino.
- Vì vừa nghiên cứu vừa đi thực tập tốt nghiệp và phải đảm bảo việc học trên
trường nên sự phân bố thời gian chưa được nhiều
- Tài liệu chủ yếu về đề tài chủ yếu là tiếng anh nên việc dịch có những chổ
chưa chuẩn xác.
Ưu điểm đề tài :
- Đáp ứng được yêu cầu của đề tài.
- Tiết kiệm được công sức con người.
- Có thể gắp vật ở nhiều vị trí khác nhau
Nhược điểm đề tài :
- Nhiễu do kết nối và nhiễu do linh kiện giá rẻ
Page | 48
II. Hướng phát triển đề tài
- Đề tài cơ bản đáp ứng được những yêu cầu đặt ra tuy nhiên để sản phẩm hoàn thiện được
hơn nữa thì đòi hỏi cần được cải tiến và nghiên cứu thêm.
- Ngoài những gì mà em tìm hiểu được, có thể phát triển hơn nữa đề tài điều khiển cánh
tay robot gắp sản phẩm trên băng chuyền thành nhiều phiên bản hơn nữa. ví như cánh tay
robot gắp và phân loại sản phẩm theo kích thước, màu hoặc nhiệt độ.
- Ngoài ra đề tài này có thể phát triển thành cánh tay robot dùng để gắp linh kiện, hay hàn,
cắt hay khoan, hoặc là cánh tay robot tự động vẽ theo mẫu có sẵn…
- Ngoài những hướng phát triển mà em nghĩ mình có khả năng có thể làm được trong
tương lai với lượng kiến thức đã nghiên cứu, và cần phải tìm hiểu hơn nữa. Vì Robot phát
triển đa dạng nên mong thầy có thể bổ sung và hướng dẫn em nhiều hơn nữa.
Page | 49
TÀI LIỆU THAM KHẢO
1. Kỹ thuật điện tử. (1999)
Đỗ Xuân Thụ. – NXB giáo dục.
4. Website http://alldatasheet.com/
5. Website http://arduino.vn/
6. Website http://codientu.org/
7. Website http://webdien.com/
8. Website http://www.tailieu.vn/
9. Website http://hocarm.org/
10. Webcoban.vn
Page | 50