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

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.pdf

32 5 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 32
Dung lượng 1,06 MB

Nội dung

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Ễ[.]

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ỄN VĂN THÀNH Nhó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 Lời mở đầu I GIỚI THIỆU CHUNG 1.Tổng quan đồ án Các thành phần linh kiện chức Mục tiêu đồ án II NGÔN NGỮ LẬP TRÌNH Ngơn ngữ lập trình Arduino Microsoft Visual C# 11 III THỰC THI CHƢƠNG TRÌNH 13 Sơ đồ khối hệ thống 13 Một vài lệnh điều khiển động servo 14 2.1 Lệnh điều khiển động servo 14 2.2 Thuật toán quét động servo 14 Điều khiển cánh tay với nút bấm 15 Điều khiển động servo chiết áp 17 Điều khiển động servo với Visual C# 19 IV KẾT QUẢ THỰC HIỆN VÀ HƢỚNG PHÁT TRIỂN ĐỀ TÀI 31 Điều khiển động Servo Visual C# thông qua kết nối bluetooth module HC06 31 Hƣớng phát triển đề tài 31 Một vài lƣu ý lắp ghép điều khiển cánh tay 32 V.TÀI LIỆU THAM KHẢO 32 LỜI MỞ ĐẦU Hưởng ứng sóng cơng nghệ 4.0, Robot ứng dụng vào lĩnh vực đời sống, xã hội, mang lại nhiều thay đổi mạnh mẽ cho kinh tế Robot loại máy thực cơng việc cách tự động điều khiển máy tính vi mạch điện tử lập trình Robot lập trình sẵn theo trình tự định sử dụng mục đích phục vụ cơng việc lắp ráp, sản xuất chế biến sản phẩm Robot hỗ trợ nhiều cho người Đặc biệt môi trường khắc nghiệt, độc hại nguy hiểm Robot công nghiệp có tính xác cao hiệu vượt trội so với sản xuất thủ công, đặc biệt sử dụng cánh tay robot Những cánh tay robot sử dụng phổ biến giới: Robot Palletizing – Bốc xếp hàng hóa, Robot Arc Welding – Hàn gia cơng khí, Robot Pick and Place – Gắp xếp sản phẩm, Robot Foundry and Forging – Hỗ trợ đúc rèn, Robot Waterjet Cutting – Cắt tia nước,Robot đánh bóng v.v… Có thể thấy cánh tay robot hỗ trợ nhiều cho người công việc, giúp tăng suất hạn chế rủi ro ngành cơng nghiệp nặng có tính chất nguy hiểm với mạng sống người, nhóm chúng em xây dựng đề tài này, hy vọng góp phần ý tưởng tự động hóa, đại hóa kết nối cơng nghệ thời kì 4.0 I GIỚI THIỆU CHUNG 1.Tổng quan đồ án Đề tài đồ án “Lập trình điều khiển cánh tay robot sử dụng Arduino Nano”, đề tài chúng em xây dựng dựa nhu cầu thiết yếu sống, đặc biệt mà hoàn cảnh robot ngày có vai trị quan trọng, giúp người hồn thành cơng việc hiệu hơn, giúp tiết kiệm thời gian, cải, tiền bạc, giảm tải nhiều rủi ro lao động, đặc biệt ngành cơng nghiệp có tính chất nguy hiểm, cánh tay robot lập trình thuật tốn thơng minh, điều khiển tự động, có khả ghi nhớ xác thứ hữu ích để cải thiện suất cơng việc, giúp nâng cao suất, góp phần vào cơng đại hóa đất nước, nâng cao hiểu biết IoT công nghệ 4.0 đồ án bọn em thể điều Hình 1: Hình ảnh sản phẩm sau hoàn thành Các thành phần linh kiện chức STT Linh kiện Chức Arduino Nano V3 Thực lệnh từ máy tính truyền xuống Mạch mở rộng cho Mở rộng chân tín hiệu cho Arduino Nano Arduino Nano Động servo mini Điều khiển khớp cánh tay robot MG90S Bộ khung cánh tay Tạo hình cho cánh tay robot robot Cáp nạp code cho Truyền tín hiệu từ máy tính sang Arduino Arduino nano Cáp màu cái Dây nối mạch điện Cáp màu đực Dây nối mạch điện Chiết áp Điều khiển động chiết áp Nút bấm Điều khiển độ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 dây cắm với Module bluetooth Dùng để kết nối Bluetooth từ máy tính sang cánh 14 HC06 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 Thơng số kỹ thuật: Chức năng: nhỏ gọn, dễ sử dụng, chi phí thấp, lắp ln vào board mở rộng để mở rộng chân tín hiệu, 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: mở rộng thêm chân cắm cần thiết cho Arduino - Động Servo MG90S: Hình 4: Động Servo MG90S Chức năng: Điều khiển khớp cánh tay robot, giúp nâng hạ, kéo thả, động servo MG90S có ưu điểm trục sắt, giúp giữ trụ xoay cánh tay ổn định, không bị nghiêng động hoạt động khỏe động mà trục làm 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 sử dụng kết nối bluetooth ổn định nguồn cho cánh tay cáp truyền liệu từ máy tính sang Arduino dài, giúp hoạt động hiệu tính ổn định pin - Module Bluetooth HC06 : Hình 6: Module Bluetooth HC06 Chức năng: Tạo kết nối không dây máy tính cánh tay robot, giúp việc điều khiển thực dễ dàng từ xa thay điều khiển chiết áp hay nút bấm thông qua dây kết nối Mục tiêu đồ án Đưa tính hữu ích giải pháp tính ứng dụng sản xuất cơng nghiệp, đặc biệt ngành cơng nghiệp nặng, ngồi giúp phát triển kĩ đội nhóm, kĩ lập trình, tạo lập xây dựng, báo cáo đồ án, kiến thức robotics, hệ thống IOT kết nối cơng nghệ với ngành cơng nghiệp robot nói chung phát triển cơng nghệ 4.0 nói riêng II NGƠN NGỮ LẬP TRÌNH Ngơn ngữ lập trình Arduino - Ngơn ngữ lập trình Arduino C/C++, 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 nhiều nhờ vào bo mạch mở rộng (library) đa dạng Tùy thuộc vào loại ứng dụng muốn thiết kế, số loại bo mạch mở rộng có sẵn website Những ta cần làm đơn giản kết hợp bo mạch để tạo ứng dụng mong muốn - Để lập trình Arduino, ta cần tải xuống IDE , dây kết nối USB loại A-B bo mạch Arduino, ta sử dụng Arduino Nano V3 Đây bo mạch xử lý để thiết kế tương tác với thiết bị phần cứng động robot, cảm biến, - Đặc điểm ngơn ngữ lập trình nằm khả mở rộng ngôn ngữ Arduino bo mạch xử lý chuẩn hóa cho phép ta mở rộng bo mạch khác Tùy vào mục đích sử dụng , ta cắm chồng bo mạch mở rộng (shield) lên bo mạch Arduino Ta dễ dàng sáng tạo phát minh ứng dụng tùy ý nhờ vào khả mở rộng ngơn ngữ lập trình Arduino Khả mở rộng nhờ vào bo mạch mở rộng khiến ngôn ngữ trở thành ưu tiên lập trình viên Ví dụ ta muốn thiết kế khả kết nối Internet, ta sử dụng Ethernet shield, muốn thiết kế khả điều khiển động có Motor shield, khả kết nối nhận tin nhắn có GSM shield v.v Hình 7: Ví dụ chƣơng trình code điều khiển động Servo 10 int gocQuay4; void setup() { Serial.begin(9600); myservo1.attach(2); myservo2.attach(3); myservo3.attach(4); myservo4.attach(5); } void loop() { gocQuay1 = map(analogRead(A0), 0, 1023, 0, 180); gocQuay2 = map(analogRead(A1), 0, 1023, 0, 180); gocQuay3 = map(analogRead(A2), 0, 1023, 0, 180); gocQuay4 = map(analogRead(A3), 0, 1023, 0, 180); myservo1.write(gocQuay1); myservo2.write(gocQuay2); myservo3.write(gocQuay3); myservo4.write(gocQuay4); delay(15); Serial.print("Servo1: "); Serial.print(myservo1.read()); Serial.print(" Servo2: "); Serial.print(myservo2.read()); Serial.print(" Servo3: "); 18 Serial.print(myservo3.read()); Serial.print(" Servo4: "); Serial.println(myservo4.read()); } Điều khiển động servo với Visual C# Hình 12: Điều khiển cánh tay robot với Visual C# Code Arduino: #include char incomingByte = 0; Servo khop1; //0-180 Servo khop2; //96-180 Servo khop3; //97-180 56-180 Servo khop4; //10-45 void setup() { Serial.begin(9600); 19 khop1.attach(2);//0-180 khop2.attach(3);//96-180 khop3.attach(4);//97-180 56-180 khop4.attach(5);//15-45 servoPosition(90,100,100,50); } void loop() { Serial.print("khop1 ="); Serial.print(khop1.read()); Serial.print(" khop2 ="); Serial.print(khop2.read()); Serial.print(" khop3 ="); Serial.print(khop3.read()); Serial.print(" khop4 ="); Serial.println(khop4.read()); if (Serial.available() > 0) { incomingByte = Serial.read(); } switch (incomingByte) { case '0': stopRobotArm(); break; case 'a': quayTraiNBuoc(1, 1); 20 break; case 'b': quayPhaiNBuoc(1, 1); break; case 'c': nangLenNBuoc(1,1); break; case 'd': haXuongNBuoc(1,1); break; case 'e': vuonRaNBuoc(1,1); break; case 'f': thuVaoNBuoc(1,1); break; case 'g': thaRaNBuoc(1,1); break; case 'h': kepVaoNBuoc(1,1); break; } } void stopRobotArm() 21 { servoPosition(khop1.read(), khop2.read(), khop3.read(), khop4.read()); } void quayTraiNBuoc(int soBuoc, int soDoTrongBuoc) { khop1.write(khop1.read() + soBuoc * soDoTrongBuoc); delay(50); } void quayPhaiNBuoc(int soBuoc, int soDoTrongBuoc) { khop1.write(khop1.read() - soBuoc * soDoTrongBuoc); delay(50); } void nangLenNBuoc(int soBuoc, int soDoTrongBuoc) { khop2.write(khop2.read() - soBuoc * soDoTrongBuoc); delay(50); } void haXuongNBuoc(int soBuoc, int soDoTrongBuoc) { khop2.write(khop2.read() + soBuoc * soDoTrongBuoc); delay(50); } void vuonRaNBuoc(int soBuoc, int soDoTrongBuoc) { 22 khop3.write(khop3.read() + soBuoc * soDoTrongBuoc); delay(50); } void thuVaoNBuoc(int soBuoc, int soDoTrongBuoc) { khop3.write(khop3.read() - soBuoc * soDoTrongBuoc); delay(50); } void thaRaNBuoc(int soBuoc, int soDoTrongBuoc) { khop4.write(khop4.read() - soBuoc * soDoTrongBuoc); delay(50); } void kepVaoNBuoc(int soBuoc, int soDoTrongBuoc) { khop4.write(khop4.read() + soBuoc * soDoTrongBuoc); delay(50); } void thaRa() { khop4.write(15); } void kepVao() { khop4.write(45); 23 } void vuonRa() { khop3.write(180); } void thuVao() { khop3.write(97); } void nangLen() { khop2.write(100); } void haXuong() { khop2.write(180); } void quayTrai() { khop1.write(180); } void quayPhai() { khop1.write(0); } 24 void servoPosition (byte servo1, byte servo2, byte servo3, byte servo4) { khop1.write(servo1); khop2.write(servo2); khop3.write(servo3); khop4.write(servo4); } Code Visual C#: Điều khiển hiển thị góc quay tay robot lên máy tính using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO.Ports; namespace DieuKhienTayRobotChonCongVaBaud { public partial class Form1 : Form { public Form1() { InitializeComponent(); 25 getAvailablePort(); } void getAvailablePort() { string[] ports = SerialPort.GetPortNames(); comboBox1.Items.AddRange(ports); } private void button1_Click(object sender, EventArgs e) { try { if (comboBox1.Text == "" || comboBox2.Text == "")// Neu khong co thong so Port va baurate { textBox1.Text = "Please select port setting"; } else { serialPort1.PortName = comboBox1.Text; serialPort1.BaudRate = Convert.ToInt32(comboBox2.Text); serialPort1.Open(); button1.Enabled = false; button2.Enabled = true; button3.Enabled = true; button4.Enabled = true; button5.Enabled = true; 26 button6.Enabled = true; button7.Enabled = true; button8.Enabled = true; button9.Enabled = true; button10.Enabled = true; } } catch (UnauthorizedAccessException) { textBox1.Text = " Unauthorized Acesse "; } } private void button2_Click(object sender, EventArgs e) { serialPort1.Close(); button1.Enabled = true; button2.Enabled = false; button3.Enabled = false; button4.Enabled = false; button5.Enabled = false; button6.Enabled = false; button7.Enabled = false; button8.Enabled = false; button9.Enabled = false; button10.Enabled = false; 27 } private void button3_MouseDown(object sender, MouseEventArgs e) { serialPort1.Write("a"); } private void button4_MouseDown(object sender, MouseEventArgs e) { serialPort1.Write("b"); } private void button5_MouseDown(object sender, MouseEventArgs e) { serialPort1.Write("c"); } private void button6_MouseDown(object sender, MouseEventArgs e) { serialPort1.Write("d"); } private void button7_MouseDown(object sender, MouseEventArgs e) { serialPort1.Write("e"); } private void button8_MouseDown(object sender, MouseEventArgs e) { serialPort1.Write("f"); 28 } private void button9_MouseDown(object sender, MouseEventArgs e) { serialPort1.Write("g"); } private void button10_MouseDown(object sender, MouseEventArgs e) { serialPort1.Write("h"); } private void button3_MouseUp(object sender, MouseEventArgs e) { serialPort1.Write("0"); } private void button4_MouseUp(object sender, MouseEventArgs e) { serialPort1.Write("0"); } private void button5_MouseUp(object sender, MouseEventArgs e) { serialPort1.Write("0"); } private void button6_MouseUp(object sender, MouseEventArgs e) { serialPort1.Write("0"); } 29 private void button7_MouseUp(object sender, MouseEventArgs e) { serialPort1.Write("0"); } private void button8_MouseUp(object sender, MouseEventArgs e) { serialPort1.Write("0"); } private void button9_MouseUp(object sender, MouseEventArgs e) { serialPort1.Write("0"); } private void button10_MouseUp(object sender, MouseEventArgs e) { serialPort1.Write("0"); } private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) { TextBox.CheckForIllegalCrossThreadCalls = false; textBox1.Text = serialPort1.ReadLine(); } } } 30 IV KẾT QUẢ THỰC HIỆN VÀ HƢỚNG PHÁT TRIỂN ĐỀ TÀI Điều khiển động Servo Visual C# thông qua kết nối bluetooth module HC06 Hình 13: Điều khiển cánh tay robot bluetooth Kết quả: Cánh tay robot điều khiển bằng máy tính Visual C# thơng qua nút chức ứng dụng tạo việc lắp module HC06 vào Arduino Nano, nhờ mà kết nối máy tính với cánh tay robot điều khiển cách dễ dàng ,thuận tiện => Kết nối bluetooth giúp cho việc điều khiển cánh tay robot thuận tiện linh hoạt Hƣớng phát triển đề tài Nhờ vào việc sử dụng kết nối bluetooth, nên ta nghĩ đến trường hợp ta điều khiển cánh tay robot smartphone thông qua ứng dụng lập trình, đem lại tính thuận tiện, ngồi ta lắp cánh tay robot lên xe điều khiển ứng dụng thông qua bluetooth việc tạo hai client cho hai kết nối Serial bluetooth Từ ta vừa điều khiển xe, vừa điều khiển cánh tay robot ứng dụng smartphone, ngồi lắp thêm cảm biến cánh tay robot để gửi liệu ngược lại trung tâm liệu 31 Một vài lƣu ý lắp ghép điều khiển cánh tay - Cần set góc cho servo trước lắp đặt - Các lỗ lắp ghép cánh tay đặt từ nhà sản xuất, cần khoan rộng, dùng ốc vít phù hợp - Động servo cần lắp 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 https://ilook.asia/sach/chia-se-tai-lieu-ve-arduino-10-tai-lieu-hay-nhat-ve-arduino502.html https://laptrinhvb.net/bai-viet/ebook-it/ EBOOK -Tai-lieu-lap-trinh Csharp-Winform -Dai-hoc-Hutech-Ho-Chi-Minh/57a6f077f7f353e9.html 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/ 32 ... cho Arduino Nano Arduino Nano Động servo mini Điều khiển khớp cánh tay robot MG90S Bộ khung cánh tay Tạo hình cho cánh tay robot robot Cáp nạp code cho Truyền tín hiệu từ máy tính sang Arduino Arduino... IV KẾT QUẢ THỰC HIỆN VÀ HƢỚNG PHÁT TRIỂN ĐỀ TÀI Điều khiển động Servo Visual C# thông qua kết nối bluetooth module HC06 Hình 13: Điều khiển cánh tay robot bluetooth Kết quả: Cánh tay robot điều. .. bluetooth giúp cho việc điều khiển cánh tay robot thuận tiện linh hoạt Hƣớng phát triển đề tài Nhờ vào việc sử dụng kết nối bluetooth, nên ta nghĩ đến trường hợp ta điều khiển cánh tay robot smartphone

Ngày đăng: 19/03/2023, 18:21

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

TÀI LIỆU LIÊN QUAN

w