Làm thế nào để tạo một Arduino tự làm và cánh tay robot điều khiển bằng Bluetooth?
Trong thế kỷ gần đây, Robotics là lĩnh vực nghiên cứu mới nổi nhất. Robot đã kiểm soát hầu hết mọi thứ mà con người từng làm. Chúng ta có thể thấy các robot tự động thực hiện các nhiệm vụ khác nhau trong xã hội của chúng ta. Có một số Robot được điều khiển từ xa cũng giúp chúng tôi thực hiện các hoạt động khác nhau. Từ việc tạo ra các vi mạch Nano trong lĩnh vực kỹ thuật đến thực hiện các ca phẫu thuật phức tạp trong lĩnh vực y tế, robot đáng tin cậy hơn con người.
Trong dự án này, chúng tôi sẽ chế tạo Cánh tay robot sẽ được điều khiển bởi vi điều khiển Arduino. Nó sẽ được điều khiển thông qua Bluetooth với sự trợ giúp của ứng dụng điều khiển từ xa Android.
Làm thế nào để điều khiển cánh tay robot bằng Arduino?
Bây giờ chúng ta đã biết tóm tắt về dự án của mình. Hãy để chúng tôi thu thập thêm một số thông tin về mạch và bắt đầu xây dựng cánh tay robot được điều khiển bằng Bluetooth và điều khiển nó qua Bluetooth.
Bước 1: Thu thập các thành phần
Cách tốt nhất để bắt đầu bất kỳ dự án nào là lập một danh sách đầy đủ các thành phần. Đây không chỉ là một cách thông minh để bắt đầu một dự án mà nó còn giúp chúng ta tránh được nhiều bất tiện khi ở giữa dự án. Dưới đây là danh sách các thành phần của dự án này:
Bước 2: Nghiên cứu các thành phần
Khi chúng ta có danh sách đầy đủ tất cả các thành phần mà chúng ta sẽ sử dụng, hãy tiến lên trước một bước và thực hiện nghiên cứu ngắn gọn về tất cả các thành phần.
Arduino Nano là một bảng vi điều khiển thực hiện các hoạt động khác nhau trong các mạch khác nhau. Nó yêu cầu một Mã C điều đó cho hội đồng quản trị biết những công việc cần thực hiện và cách thức thực hiện. Nó có 13 chân I / O kỹ thuật số có nghĩa là chúng ta có thể vận hành 13 thiết bị khác nhau. Arduino Nano có chức năng chính xác như Arduino Uno nhưng với kích thước khá nhỏ. Bộ vi điều khiển trên bảng Arduino Nano là ATmega328p.Nếu bạn muốn điều khiển nhiều hơn 13 thiết bị, hãy sử dụng Arduino Mega.
Bộ thu phát nối tiếp Bluetooth không dây HC-05: Chúng tôi cần giao tiếp không dây trong dự án này, vì vậy chúng tôi sẽ sử dụng công nghệ Bluetooth và cho mô-đun đó sẽ được sử dụng là HC-05. Mô-đun này có một số tốc độ truyền có thể lập trình nhưng tốc độ truyền mặc định là 9600 bps. Nó có thể được cấu hình dưới dạng chính hoặc phụ, trong khi một mô-đun khác HC-06 chỉ có thể hoạt động ở chế độ phụ. Mô-đun này có bốn chân. Một cho VCC (5V) và ba cho GND, TX và RX. Mật khẩu mặc định của mô-đun này là 1234 hoặc là 0000. Nếu chúng tôi muốn giao tiếp giữa hai bộ vi điều khiển hoặc giao tiếp với bất kỳ thiết bị nào có chức năng Bluetooth như Điện thoại hoặc Máy tính xách tay HC-05 sẽ giúp chúng tôi thực hiện điều đó. Một số ứng dụng Android đã có sẵn giúp quá trình này dễ dàng hơn rất nhiều.
Một điển hình Cánh tay robotđược tạo thành từ một số phân đoạn và thường có 6 khớp trong đó. Nó chứa tối thiểu 4 động cơ bước được điều khiển bởi máy tính. Động cơ bước khác với các động cơ điện một chiều khác. Chúng di chuyển chính xác theo từng bước chính xác. Những cánh tay robot này được sử dụng để thực hiện các hoạt động khác nhau. Chúng tôi có thể vận hành chúng theo cách thủ công thông qua điều khiển từ xa hoặc chúng tôi có thể lập trình chúng hoạt động độc lập.
Bước 3: Lắp ráp các thành phần
Bây giờ như chúng ta đã biết về hoạt động của tất cả các thành phần chính được sử dụng. Hãy bắt đầu lắp ráp chúng và tạo mạch để chế tạo cánh tay robot được điều khiển từ xa.
- Gắn bảng Arduino Nano trên bảng mạch. Arduino sẽ được cấp nguồn qua dây âm và dương của bộ chuyển đổi.
- Đặt cả mô-đun Bluetooth trên breadboard. Cấp nguồn cho mô-đun Bluetooth thông qua Arduino. Kết nối chân Tx của mô-đun Bluetooth với chân Rx của bảng Arduino Nan và kết nối chân Rx của mô-đun Bluetooth với chân Tx của bảng Arduino Nano.
- Như chúng ta biết rằng có 4 động cơ bước. Mỗi cái có một tên kỹ thuật. Chúng được gọi là Khuỷu tay, Vai, Căn cứ, và Gripper. Vcc và Ground của tất cả các động cơ sẽ là chung và được kết nối với cực dương và âm của bộ chuyển đổi 6V. Chân Tín hiệu của tất cả bốn động cơ sẽ được kết nối với pin5, pin6, pin9 và pin11 của Arduino Nano.
- Đảm bảo rằng các kết nối bạn đã thực hiện theo sơ đồ mạch sau đây.
Bước 4: Bắt đầu với Arduino
Nếu bạn chưa quen với Arduino IDE, đừng lo lắng vì quy trình từng bước để thiết lập và sử dụng Arduino IDE với bảng vi điều khiển được giải thích dưới đây.
- Tải xuống phiên bản Arduino IDE mới nhất từ Arduino.
- Kết nối bảng Arduino Nano với máy tính xách tay của bạn và mở bảng điều khiển. Sau đó, nhấp vào Phần cứng và Âm thanh. Bây giờ, hãy nhấp vào Các thiết bị và máy in.Tại đây, hãy tìm cổng mà bảng vi điều khiển của bạn được kết nối. Trong trường hợp của tôi, nó là COM14nhưng nó khác nhau trên các máy tính khác nhau.
- Nhấp vào menu Công cụ và đặt bảng thành Arduino Nano từ menu thả xuống.
- Trong cùng một menu Công cụ, hãy đặt cổng thành số cổng mà bạn đã quan sát trước đó trong Các thiết bị và máy in.
- Trong cùng một menu Công cụ, Đặt Bộ xử lý thành ATmega328P (Bộ nạp khởi động cũ).
- Để viết mã để vận hành động cơ servo, chúng ta cần một thư viện đặc biệt sẽ giúp chúng ta viết một số chức năng cho động cơ servo. Thư viện này được đính kèm cùng với mã, trong liên kết bên dưới. Để bao gồm thư viện, hãy nhấp vào Phác thảo> Bao gồm Thư viện> Thêm ZIP. Thư viện.
- Tải xuống mã được đính kèm bên dưới và dán nó vào IDE Arduino của bạn. Bấm vào tải lên để ghi mã trên bảng vi điều khiển của bạn.
Để tải xuống mã, bấm vào đây.
Bước 5: Tải xuống ứng dụng
Như bây giờ chúng ta đã lắp ráp toàn bộ mạch và tải lên mã trong bảng vi điều khiển. cho phép tải xuống một ứng dụng di động sẽ hoạt động như một điều khiển từ xa cho cánh tay robot. Một ứng dụng miễn phí có sẵn trên cửa hàng Google Play. Tên của ứng dụng là Điều khiển Robot Cánh tay Nhỏ. Để tạo kết nối Bluetooth, hãy bật Bluetooth trên điện thoại di động của bạn. Đi tới cài đặt và ghép nối điện thoại di động của bạn với mô-đun HC-05. Sau khi thực hiện việc này, hãy nhấn nút Bluetooth trong ứng dụng. Nếu nó chuyển sang màu xanh lục, điều đó có nghĩa là ứng dụng hiện đã được kết nối và sẵn sàng vận hành cánh tay robot. Có các thanh trượt để thiết lập vận hành cánh tay robot như mong muốn.
Bước 6: Tìm hiểu mã
Mã được nhận xét tốt và dễ hiểu. Bur vẫn, nó được giải thích ngắn gọn dưới đây.
1. Ban đầu, một thư viện được bao gồm để viết mã để vận hành động cơ servo. Thư viện khác toán học.hđược đưa vào để thực hiện các phép toán khác nhau trong mã. Bốn đối tượng cũng được khởi tạo để sử dụng cho bốn động cơ servo.
#include// thư viện arduino #include // thư viện chuẩn c #define PI 3.141 Servo baseServo; Servo vaiServo; Servo khuỷu tayServo; Bộ kẹp ServoServo; lệnh int;
2. Sau đó, một cấu trúc được khai báo để nhận các giá trị cho động cơ servo cơ sở, vai và khuỷu tay.
struct JointAngle {// khai báo một cấu trúc int base; vai int; int cùi chỏ; };
3. Sau đó, một số biến được khởi tạo để lưu trữ độ bám, độ trễ và vị trí mong muốn của động cơ servo. tốc độ được đặt là 15 và một đối tượng được tạo ra để lấy giá trị của góc trong cấu trúc.
int wishGrip; int gripperPos; int wishDelay; int servoSpeed = 15; int sẵn sàng = 0; struct doanhAngle mong muốnAngle; // các góc mong muốn của servos
4. void setup ()là một chức năng được sử dụng để đặt các chân của Arduino là INPUT hoặc OUTPUT. Ở đây trong hàm này, chúng ta đã khai báo rằng chân của động cơ sẽ được kết nối với chân nào của Arduino. Nó cũng được đảm bảo rằng Arduino không đọc đầu vào nối tiếp quá lâu. Vị trí ban đầu và Tốc độ truyền cũng được đặt trong chức năng này. Tốc độ Baud là tốc độ mà bo mạch vi điều khiển sẽ giao tiếp với mô-đun servo và Bluetooth được gắn vào.
void setup () {Serial.begin (9600); baseServo.attach (9); // gắn servo cơ sở trên chân 9 vào đối tượng servo vaiServo.attach (10); // gắn servo vai trên chân 9 vào đối tượng servo elbowServo.attach (11); // gắn servo khuỷu tay trên chân 9 vào bộ kẹp đối tượng servoServo.attach (6); // gắn servo bộ kẹp trên chân 9 vào đối tượng servo Serial.setTimeout (50); // đảm bảo arduino không đọc nối tiếp quá lâu Serial.println ("started"); baseServo.write (90); // vị trí intial của servos vaiServo.write (150); elbowServo.write (110); sẵn sàng = 0; }
5. servoParallelControl ()là một chức năng được sử dụng để phát hiện vị trí hiện tại của cánh tay robot và di chuyển nó theo lệnh được đưa ra thông qua ứng dụng dành cho thiết bị di động. Nếu vị trí hiện tại ít hơn thực tế, cánh tay sẽ di chuyển lên và ngược lại. Hàm này sẽ trả về giá trị của vị trí hiện tại và tốc độ của servo.
int servoParallelControl (int thePos, Servo theServo, int theSpeed) {int startPos = theServo.read (); // đọc pos hiện tại int newPos = startPos; // int theSpeed = speed; // xác định vị trí của vị trí đối với lệnh // nếu vị trí hiện tại ít hơn vị trí thực sự di chuyển lên if (startPos <(thePos-5)) {newPos = newPos + 1; theServo.write (newPos); trì hoãn (theSpeed); trả về 0; } else if (newPos> (thePos + 5)) {newPos = newPos - 1; theServo.write (newPos); trì hoãn (theSpeed); trả về 0; } else {return 1; }}
6. void loop ()là một hàm chạy lặp đi lặp lại trong một vòng lặp. Chức năng này đọc dữ liệu đến tuần tự và lưu trữ góc của từng servo trong cấu trúc. Ban đầu, trạng thái của tất cả các Servos được đặt thành 0. Đây là một chức năng servoParallelControl ()được gọi và các tham số được truyền vào đó. hàm này sẽ trả về giá trị và nó sẽ được lưu trữ trong một biến trạng thái.
void loop () {if (Serial.available ()) {ready = 1; mong muốnAngle.base = Serial.parseInt (); mong muốnAngle.shoulder = Serial.parseInt (); mong muốnAngle.elbow = Serial.parseInt (); mong muốnGrip = Serial.parseInt (); mong muốnDelay = Serial.parseInt (); if (Serial.read () == '\ n') {// nếu byte cuối cùng là 'd' thì dừng đọc và thực hiện lệnh 'd' là viết tắt của 'done' Serial.flush (); // xóa tất cả các lệnh khác được xếp trong bộ đệm // gửi hoàn thành lệnh Serial.print ('d'); }} int status1 = 0; int status2 = 0; int status3 = 0; int status4 = 0; int done = 0; while (done == 0 && ready == 1) {// di chuyển servo đến vị trí mong muốn status1 = servoParallelControl (mong muốnAngle.base, baseServo, mong muốnDelay); status2 = servoParallelControl (mong muốnAngle.shoulder, vaiServo, mong muốnDelay); status3 = servoParallelControl (mong muốnAngle.elbow, elbowServo, mong muốnDelay); status4 = servoParallelControl (wishGrip, gripperServo, wishDelay); if (status1 == 1 & status2 == 1 & status3 == 1 & status4 == 1) {done = 1}} // end of while}
Bây giờ, đây là toàn bộ quy trình tạo ra một cánh tay robot. Sau khi ghi mã và tải xuống ứng dụng, rô bốt sẽ hoạt động hoàn toàn tốt khi các thanh trượt trên ứng dụng được di chuyển. Bạn cũng có thể lập trình cho cánh tay hoạt động tự chủ để thực hiện nhiệm vụ mong muốn.