BỘ THÔNG TIN VÀ TRUYỀN THÔNG HỌC VIỆN CÔNG NGHỆ BƢU CHÍNH VIỄN THÔNG BÁO CÁO ĐỒ ÁN THIẾT KẾ HỆ THỐNG SỐ Đề tài LẬP TRÌNH ĐIỀU KHIỂN CÁNH TAY ROBOT SỬ DỤNG ARDUINO NANO Giảng viên hƣớng dẫn NGUYỄ[.]
Trang 1BỘ THÔNG TIN VÀ TRUYỀN THÔNG HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
- -
BÁO CÁO ĐỒ ÁN THIẾT KẾ HỆ THỐNG SỐ
Đề tài: LẬP TRÌNH ĐIỀU KHIỂN CÁNH TAY
ROBOT SỬ DỤNG ARDUINO NANO Giảng viên hướng dẫn: NGUYỄN VĂN THÀNHNhóm sinh viên thực hiện: NHÓM 06
Sinh viên thực hiện: CHU KHÁNH DUY – B17DCDT052
NGUYỄN THẾ HẢI – B17DCDT063 NGÔ DIÊN PHONG – B17DCDT140 ĐÀO DUY QUÝ – B17DCDT153
Hệ: ĐẠI HỌC CHÍNH QUY
HÀ NỘI – 2021
Trang 2Lời mở đầu
1 I GIỚI THIỆU CHUNG 5
1.Tổng quan về đồ án 5
2 Các thành phần linh kiện và chức năng 6
3 Mục tiêu đồ án 9
II NGÔN NGỮ LẬP TRÌNH 9
1 Ngôn ngữ lập trình của Arduino 9
2 Microsoft Visual C# 11
III THỰC THI CHƯƠNG TRÌNH 13
1 Sơ đồ khối hệ thống 13
2 Một vài lệnh điều khiển động cơ servo cơ bản 14
2.1 Lệnh điều khiển động cơ servo cơ bản 14
2.2 Thuật toán quét động cơ servo 14
3 Điều khiển cánh tay với nút bấm 15
4 Điều khiển động cơ servo bằng chiết áp 17
5 Điều khiển động cơ servo với Visual C# 19
IV KẾT QUẢ THỰC HIỆN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI 31
1 Điều khiển động cơ Servo bằng Visual C# thông qua kết nối bluetooth của module HC06 31
2 Hướng phát triển đề tài 31
3 Một vài lưu ý khi lắp ghép và điều khiển cánh tay 32
Trang 3V.TÀI LIỆU THAM KHẢO 32
Trang 4Những cánh tay robot đang được sử dụng phổ biến hiện nay trên thế giới: Robot Palletizing – Bốc xếp hàng hóa, Robot Arc Welding – Hàn gia công cơ khí, Robot Pick and Place – Gắp và sắp xếp sản phẩm, Robot Foundry and Forging – Hỗ trợ đúc và rèn, Robot Waterjet Cutting – Cắt bằng tia nước,Robot đánh bóng v.v…
Có thể thấy cánh tay robot hỗ trợ rất nhiều cho con người trong công việc, giúp tăng năng suất và hạn chế rủi ro trong các ngành công nghiệp nặng có tính chất nguy hiểm với mạng sống của con người, vì vậy nhóm chúng em xây dựng đề tài này, hy vọng có thể góp một phần nào đó về ý tưởng tự động hóa, hiện đại hóa và
sự kết nối công nghệ trong thời kì 4.0 hiện nay
Trang 51 I GIỚI THIỆU CHUNG
1.Tổng quan về đồ án
Đề tài của đồ án là “Lập trình điều khiển cánh tay robot sử dụng Arduino Nano”,
đề tài này được chúng em xây dựng dựa trên nhu cầu thiết yếu của cuộc sống, đặc biệt mà trong hoàn cảnh robot ngày càng có vai trò quan trọng, giúp con người hoàn thành công việc hiệu quả hơn, giúp tiết kiệm thời gian, của cải, tiền bạc, giảm tải nhiều rủi ro trong lao động, đặc biệt là các ngành công nghiệp có tính chất nguy hiểm, một cánh tay robot được lập trình bởi các thuật toán thông minh, có thể được điều khiển tự động, có khả năng ghi nhớ chính xác là một thứ cực kì hữu ích để cải thiện năng suất công việc, giúp nâng cao năng suất, góp phần vào công cuộc hiện đại hóa đất nước, nâng cao hiểu biết về IoT và công nghệ 4.0 và đồ án của bọn em
sẽ thể hiện được điều đó
Hình 1: Hình ảnh sản phẩm khi sau khi hoàn thành
Trang 62 Các thành phần linh kiện và chức năng
1 Arduino Nano V3 Thực hiện các lệnh từ máy tính truyền xuống
2 Mạch mở rộng cho
Arduino Nano Mở rộng chân tín hiệu cho Arduino Nano
3 Động cơ servo mini
MG90S Điều khiển các khớp của cánh tay robot
4 Bộ khung cánh tay
robot Tạo hình cho cánh tay robot
5 Cáp nạp code cho
Arduino nano Truyền tín hiệu từ máy tính sang Arduino
6 Cáp 7 màu cái cái Dây nối mạch điện
7 Cáp 7 màu đực cái Dây nối mạch điện
8 Chiết áp Điều khiển động cơ bằng chiết áp
9 Nút bấm Điều khiển động cơ bằng nút bấm
10 Breadboard Dùng để cắm mạch điện
11 Pin UltraFire Cấp nguồn (dự phòng) cho cánh tay
12 Đế pin Ultra Fire đôi Dùng để đựng pin Ultra Fire
13 Chốt nối dây Nối các dây cắm với nhau
14 Module bluetooth
HC06
Dùng để kết nối Bluetooth từ máy tính sang cánh tay
15 Sạc đơn Sạc pin Ultra Fire
♦ Một vài linh kiện cần thiết:
- Arduino Nano V3:
Hình 2: Arduino Nano V3
Trang 7Thông số kỹ thuật:
Chức năng: nhỏ gọn, dễ sử dụng, chi phí thấp, có thể lắp luôn vào board mở rộng
để mở rộng các chân tín hiệu, nhưng số lượng chân cắm tín hiệu hạn chế
- Board mở rộng:
Hình 3: Board mở rộng
Chức năng: có thể mở rộng thêm chân cắm cần thiết cho Arduino
Trang 8- Động cơ Servo MG90S:
Hình 4: Động cơ Servo MG90S
Chức năng: Điều khiển các khớp của cánh tay robot, giúp nâng hạ, kéo thả, động
cơ servo MG90S có ưu điểm là trục bằng sắt, giúp giữ được trụ xoay của cánh tay
ổn định, không bị nghiêng và động cơ hoạt động khỏe hơn các động cơ mà trục được làm bằng nhựa
- Pin Ultra Fire:
Hình 5: Pin Ultra Fire
Chức năng: Giúp cấp nguồn cho cánh tay khi sử dụng kết nối bluetooth và ổn định
nguồn cho cánh tay khi cáp truyền dữ liệu từ máy tính sang Arduino dài, giúp hoạt động hiệu quả hơn do tính ổn định của pin
Trang 9- Module Bluetooth HC06 :
Hình 6: Module Bluetooth HC06
Chức năng: Tạo được kết nối không dây giữa máy tính và cánh tay robot, giúp
việc điều khiển thực hiện dễ dàng hơn từ xa thay vì điều khiển bằng chiết áp hay nút bấm thông qua dây kết nối
3 Mục tiêu đồ án
Đưa ra được những tính năng hữu ích và giải pháp về tính ứng dụng của nó trong sản xuất công nghiệp, đặc biệt là các ngành công nghiệp nặng, ngoài ra giúp phát triển kĩ năng đội nhóm, kĩ năng lập trình, tạo lập xây dựng, báo cáo đồ án, kiến thức căn bản về robotics, hệ thống IOT và sự kết nối công nghệ với ngành công nghiệp robot nói chung và sự phát triển của công nghệ 4.0 nói riêng
II NGÔN NGỮ LẬP TRÌNH
1 Ngôn ngữ lập trình của Arduino
- Ngôn ngữ lập trình của Arduino chính là C/C++, những khác với lập trình trực tiếp với vi điều khiển, lập trình Arduino dễ dàng hơn rất nhiều nhờ vào các bo mạch mở rộng (library) đa dạng Tùy thuộc vào loại ứng dụng mình muốn thiết kế, một số loại bo mạch mở rộng hiện có sẵn trên website Những gì ta cần làm chỉ đơn giản là kết hợp các bo mạch này để tạo ra ứng dụng như mong muốn của mình
Trang 10- Để lập trình bằng Arduino, ta chỉ cần tải xuống IDE , dây kết nối USB loại A-B
và một bo mạch Arduino, ở đây ta sử dụng Arduino Nano V3.Đây là một bo mạch
đã được xử lý để thiết kế các tương tác với các thiết bị phần cứng như động cơ robot, cảm biến,
- Đặc điểm của ngôn ngữ lập trình này nằm ở khả năng mở rộng của ngôn ngữ Arduino là bo mạch đã được xử lý và chuẩn hóa cho phép ta có thể mở rộng bằng các bo mạch khác Tùy vào mục đích sử dụng , ta có thể cắm chồng các bo mạch
mở rộng (shield) lên bo mạch Arduino Ta có thể dễ dàng sáng tạo và phát minh ra các ứng dụng tùy ý nhờ vào khả năng mở rộng của ngôn ngữ lập trình Arduino Khả năng mở rộng nhờ vào các bo mạch mở rộng cũng khiến ngôn ngữ này trở thành ưu tiên đối với các lập trình viên Ví dụ như khi ta muốn thiết kế khả năng kết nối Internet, ta có thể sử dụng Ethernet shield, muốn thiết kế khả năng điều khiển động cơ thì có Motor shield, và khả năng kết nối nhận tin nhắn thì có GSM shield v.v
Hình 7: Ví dụ một chương trình code điều khiển động cơ Servo
Trang 11Một số tính năng thú vị của ngôn ngữ Arduino có thể kể đến như:
+ Thiết kế bộ xử lý trung tâm của các loại robot nhờ vào khả năng xử lý dữ liệu của các thiết bị cảm biến, động cơ, …
+ Thiết kế các trò chơi tương tác như Tetrix, Mario,
+ Ứng dụng trong máy bay không người lái,…
=> Như vậy với đặc điểm đã được xử lý và chuẩn hóa, Arduino là lựa chọn tối
ưu cho việc thiết kế bất cứ ứng dụng phần cứng nào mà ta cần một cách đơn giản và dễ dàng
2 Microsoft Visual C#
- C# (C Sharp) là một ngôn ngữ lập trình hướng đối tượng đa năng vô cùng mạnh
mẽ được phát triển bởi Microsoft, C# là phần khởi đầu cho kế hoạch NET của họ Tên của ngôn ngữ bao gồm ký tự thăng theo Microsoft nhưng theo ECMA là C#, chỉ bao gồm dấu số thường Microsoft phát triển C# dựa trên C++ và Java C# được miêu tả là ngôn ngữ có được sự cân bằng giữa C++, Visual Basic, Delphi và Java
- Đặc trƣng của ngôn ngữ C#:
+ C# là ngôn ngữ đơn giản, mạnh mẽ
+ C# là ngôn ngữ đa năng và hiện đại, C# phù hợp cho việc phát triển trong thời đại 4.0, bao gồm việc phát triển web, mobile app, game, học máy và trí tuệ nhân tạo, phát triển đám mây, IoT, blockchain, microservices
+ C# là một ngôn ngữ lập trình hướng đối tượng đồng thời hỗ trợ lâp trình chức năng, C# hỗ trợ mạnh mẽ cho phương pháp lâp trình hướng đối tượng, ngoài ra C# còn hỗ trợ các phương pháp lập trình chức năng thông qua các biểu thức lamba, khớp mẫu, functions, các thuộc tính bất biến
+ C# là ngôn ngữ gõ tĩnh, định kiểu mạnh, hỗ trợ gõ động
+ C# là một ngôn ngữ ít từ khóa, C# có khoảng hơn 80 từ khóa
- Trong đồ án này, C# đóng một vai trò cực kì quan trọng là tạo ra được một ứng dụng dùng để điều khiển cánh tay robot với sự kết nối cùng với code của Arduino thông qua các cổng COM trên bảng điều khiển của ứng dụng, sau khi được hoàn thiện, ứng dụng dùng để điều khiển cánh tay của robot thông qua các tín hiệu gửi
Trang 12lên và nhận lại, đó là các giao tiếp Serial, ngoài ra có thể giúp cánh tay ghi nhớ các hành động đã thực hiện trước đó và tự thực hiện lại các hành động này nếu ta cho phép
-Dưới đây là một chương trình C# rất đơn giản, với ví dụ "Hello World" kinh điển:
Hình 8: Ví dụ về chương trình trong Visual C#
Trang 13III THỰC THI CHƯƠNG TRÌNH
1 Sơ đồ khối hệ thống
Hình 9: Sơ đồ khối hệ thống điều khiển của cánh tay robot
♦ Giải thích sơ đồ:
Nguồn: Cung cấp nguồn nuôi cho máy tính và các khối xử lý dữ liệu, động cơ,
đảm bảo việc thực hiện không bị gián đoạn
Chương trình: Các chương trình thuật toán điều khiển động cơ thông minh, đạt
hiệu quả và chính xác cao
Bộ điều khiển và máy tính: Gửi các dữ liệu của thuật toán cho khối xử lí dữ liệu Khối xử lí dữ liệu: Xử lí dữ liệu và gửi các tín hiệu điều khiển động cơ Servo Động cơ servo: Thực hiện các thao tác với các khớp của cánh tay robot
Cánh tay robot: Thực hiện thao tác kéo, thả ,nâng, hạ, xoay , kẹp và gửi lại số liệu
về góc quay, góc nâng - hạ, góc kẹp- thả về cho khối xử lý dữ liệu để ghi nhớ hành động
Trang 142 Một vài lệnh điều khiển động cơ servo cơ bản
2.1 Lệnh điều khiển động cơ servo cơ bản
Trang 153 Điều khiển cánh tay với nút bấm
Hình 10: Sơ đồ mắc động cơ servo với nút bấm -Code Arduino: Điều khiển 2 động cơ servo với 4 nút bấm
Trang 174 Điều khiển động cơ servo bằng chiết áp
Hình 11: Cách mắc động cơ servo và chiết áp ứng với các chân tín hiệu trên
Arduino nano Code Arduino: Điều khiển động cơ với 4 chiết áp và hiển thị góc quay lên máy
Trang 19Serial.print(myservo3.read());
Serial.print(" Servo4: ");
Serial.println(myservo4.read());
}
5 Điều khiển động cơ servo với Visual C#
Hình 12: Điều khiển cánh tay robot với Visual C#
Trang 23khop3.write(khop3.read() + soBuoc * soDoTrongBuoc);
Trang 25void servoPosition (byte servo1, byte servo2, byte servo3, byte servo4)
Trang 30private void button7_MouseUp(object sender, MouseEventArgs e)
Trang 31IV KẾT QUẢ THỰC HIỆN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI
1 Điều khiển động cơ Servo bằng Visual C# thông qua kết nối bluetooth của module HC06
Hình 13: Điều khiển cánh tay robot bằng bluetooth
Kết quả: Cánh tay robot được điều khiển bằng bằng máy tính bằng Visual C#
thông qua các nút chức năng trên ứng dụng đã tạo bằng việc lắp module HC06 vào Arduino Nano, nhờ đó mà có thể kết nối máy tính với cánh tay robot và điều khiển một cách dễ dàng ,thuận tiện
=> Kết nối bằng bluetooth giúp cho việc điều khiển cánh tay robot thuận tiện và
linh hoạt hơn
2 Hướng phát triển đề tài
Nhờ vào việc sử dụng kết nối bluetooth, nên ta có thể nghĩ đến trường hợp ta điều khiển cánh tay robot bằng smartphone thông qua một ứng dụng được lập trình, do
đó càng đem lại tính thuận tiện, ngoài ra ta có thể lắp cánh tay robot lên một chiếc
xe cũng được điều khiển bằng ứng dụng thông qua bluetooth bằng việc tạo ra hai client cho hai kết nối Serial bluetooth Từ đó ta vừa có thể điều khiển xe, vừa có thể điều khiển cánh tay robot chỉ bằng một ứng dụng trên smartphone, ngoài ra có thể lắp thêm cảm biến trên cánh tay robot để gửi dữ liệu ngược lại về trung tâm dữ liệu
Trang 323 Một vài lưu ý khi lắp ghép và điều khiển cánh tay
- Cần set góc cho servo trước khi lắp đặt
- Các lỗ của bộ lắp ghép cánh tay khi đặt từ nhà sản xuất, cần khoan rộng, và dùng các ốc vít phù hợp
- Động cơ servo cần lắp đúng chiều
- Chú ý nguồn dự phòng cho Arduino
V.TÀI LIỆU THAM KHẢO
https://dientutuonglai.com/gioi-thieu-arduino-nano.html
502.html
https://ilook.asia/sach/chia-se-tai-lieu-ve-arduino-10-tai-lieu-hay-nhat-ve-arduino-Winform -Dai-hoc-Hutech-Ho-Chi-Minh/57a6f077f7f353e9.html
https://laptrinhvb.net/bai-viet/ebook-it/ EBOOK -Tai-lieu-lap-trinh Csharp https://itviec.com/blog/lap-trinh-c-2/
https://daynhauhoc.com/t/tai-lieu-co-ban-ve-c/1444
http://monhoc.vn/tai-lieu/visual-csharp/