Mục lục:

Trò chơi cánh tay robot - Bộ điều khiển điện thoại thông minh: 6 bước
Trò chơi cánh tay robot - Bộ điều khiển điện thoại thông minh: 6 bước

Video: Trò chơi cánh tay robot - Bộ điều khiển điện thoại thông minh: 6 bước

Video: Trò chơi cánh tay robot - Bộ điều khiển điện thoại thông minh: 6 bước
Video: Đình Hiền Review: Con robot phun ra khói siêu ngầu. #shorts 2024, Tháng mười một
Anonim
Trò chơi cánh tay robot - Bộ điều khiển điện thoại thông minh
Trò chơi cánh tay robot - Bộ điều khiển điện thoại thông minh

Xin chào !

Đây là một trò chơi mùa hè vui nhộn: Cánh tay robot điều khiển bằng điện thoại thông minh !!

Như bạn có thể thấy trên Video, bạn có thể điều khiển Cánh tay bằng một số Cần điều khiển trên điện thoại thông minh của mình.

Bạn cũng có thể lưu một mẫu mà rô bốt sẽ tái tạo trong một vòng lặp, để thực hiện một số tác vụ lặp đi lặp lại như ví dụ. Nhưng mô hình này có thể điều chỉnh như bạn muốn !!!!

Sáng tạo !

Bước 1: Vật liệu

Vật liệu
Vật liệu

Ở đây bạn có thể xem tài liệu mà bạn cần.

Bạn sẽ mất khoảng 50 € để chế tạo Cánh tay robot này. Phần mềm và công cụ có thể được thay thế, nhưng tôi đã sử dụng chúng cho dự án này.

Bước 2: In 3D Cánh tay robot

In 3D Cánh tay robot
In 3D Cánh tay robot
In 3D Cánh tay robot
In 3D Cánh tay robot
In 3D Cánh tay robot
In 3D Cánh tay robot

Cánh tay robot được in 3D (với prusa i3 của chúng tôi).

Nhờ trang web "HowtoMechatronics.com", Tệp STL của anh ấy thật tuyệt vời để tạo ra một cánh tay 3D.

Sẽ mất khoảng 20 giờ để in tất cả các mảnh.

Bước 3: Montage điện tử

Montage điện tử
Montage điện tử

Việc dựng phim được tách biệt thành 2 phần:

Một bộ phận điện tử, nơi arduino được kết nối với servos bằng các Ghim kỹ thuật số và với thiết bị Bluetooth (Rx, Tx).

Phần Nguồn, nơi các servo được cấp nguồn bằng 2 bộ sạc điện thoại (tối đa 5V, 2A).

Bước 4: Ứng dụng điện thoại thông minh

Ứng dụng điện thoại thông minh
Ứng dụng điện thoại thông minh

Ứng dụng được thực hiện trên App creativeor 2. Chúng tôi sử dụng 2 Cần điều khiển để điều khiển 4 Servos và thêm 2 Nút nữa để điều khiển Grip cuối cùng.

Chúng tôi kết nối Cánh tay và Điện thoại thông minh với nhau bằng cách sử dụng mô-đun Bluetooth (HC-06).

Cuối cùng, một chế độ tiết kiệm cho phép người dùng lưu tới 9 vị trí cho Cánh tay.

Sau đó, cánh tay sẽ chuyển sang chế độ tự động, nơi anh ta sẽ tái tạo các vị trí đã lưu.

Bước 5: Mã Arduino

Mã Arduino
Mã Arduino
Mã Arduino
Mã Arduino

// 19/08 - Điều khiển bằng điện thoại thông minh bằng cánh tay robot

#include #define TRUE true #define FALSE false // ******************** KHAI BÁO ***************** ***********

đại diện từ; // mot envoyé du module Arduino au smartphone

int chiffre_final = 0; int cmd = 3; // biến commande du servo moteur (troisième fil (cam, jaune)) int cmd1 = 5; // servo1 int cmd2 = 9; // servo2 int cmd3 = 10; // servo3 // int cmd4 = 10; // servo4 int cmd5 = 11; // pince int active_saving = 0; Servo moteur; // trên définit notre servomoteur Servo moteur1; Servo moteur2; Servo moteur3; // Servo moteur4; Servo moteur5; int step_angle_mini = 4; int step_angle = 3; góc int, góc1, góc3, góc5, góc2; // góc int pas; int r, r1, r2, r3; int enregistrer; boolean fin = FALSE; boolean fin1 = FALSE; boolean fin2 = FALSE; boolean fin3 = FALSE; boolean fin4 = FALSE; từ w; // biến envoyé du smartphone au module Arduino int sauvegarde_positions1 [5]; int sauvegarde_positions2 [5]; int sauvegarde_positions3 [5]; int sauvegarde_positions4 [5]; int sauvegarde_positions5 [5]; int sauvegarde_positions6 [5]; int sauvegarde_positions7 [5]; int sauvegarde_positions8 [5]; int sauvegarde_positions9 [5];

// góc int; // góc quay (0 a 180)

//********************CÀI ĐẶT*************************** ******** void setup () {sauvegarde_positions1 [0] = sauvegarde_positions1 [1] = sauvegarde_positions1 [2] = sauvegarde_positions1 [3] = sauvegarde_positions1 [4] = 0; sauvegarde_positions2 [0] = sauvegarde_positions2 [1] = sauvegarde_positions2 [2] = sauvegarde_positions2 [3] = sauvegarde_positions2 [4] = 0; sauvegarde_positions3 [0] = sauvegarde_positions3 [1] = sauvegarde_positions3 [2] = sauvegarde_positions3 [3] = sauvegarde_positions3 [4] = 0; sauvegarde_positions4 [0] = sauvegarde_positions4 [1] = sauvegarde_positions4 [2] = sauvegarde_positions4 [3] = sauvegarde_positions4 [4] = 0; sauvegarde_positions5 [0] = sauvegarde_positions5 [1] = sauvegarde_positions5 [2] = sauvegarde_positions5 [3] = sauvegarde_positions5 [4] = 0; sauvegarde_positions6 [0] = sauvegarde_positions6 [1] = sauvegarde_positions6 [2] = sauvegarde_positions6 [3] = sauvegarde_positions6 [4] = 0; sauvegarde_positions7 [0] = sauvegarde_positions7 [1] = sauvegarde_positions7 [2] = sauvegarde_positions7 [3] = sauvegarde_positions7 [4] = 0; sauvegarde_positions8 [0] = sauvegarde_positions8 [1] = sauvegarde_positions8 [2] = sauvegarde_positions8 [3] = sauvegarde_positions8 [4] = 0; sauvegarde_positions9 [0] = sauvegarde_positions9 [1] = sauvegarde_positions9 [2] = sauvegarde_positions9 [3] = sauvegarde_positions9 [4] = 0; moteur.attach (cmd); // vào giải phóng l'objet au pin de commande moteur1.attach (cmd1); moteur2.attach (cmd2); moteur3.attach (cmd3); // moteur4.attach (cmd4); moteur5.attach (cmd5); moteur.write (6); góc = 6; moteur1.write (100); góc1 = 100; moteur2.write (90); moteur3.write (90); //moteur4.write(12); moteur5.write (90); góc = 6; góc1 = 100; góc2 = 90; góc3 = 90; góc5 = 90; Serial.begin (9600); // permettra de Communiquer au module Bluetooth} // ******************** BOUCLE ****************** ***************** void loop () {

// Serial.print ("angle");

//Serial.print(angle);Serial.print ("\ t"); Serial.print (angle1); Serial.print ("\ t"); Serial.print (angle2); Serial.print ("\ t "); Serial.print (angle3); Serial.print (" / t "); Serial.print (angle5); Serial.print (" / n ");

//Serial.print("angle ");

int i; w = hồ chứa (); // on va Recvoir une information du smartphone, la variable w switch (w) {case 1: TouchDown_Release (); break; trường hợp 2: TouchDown_Grab (); break; case 3: Base_Rotation (); break; trường hợp 4: Base_AntiRotation (); break; case 5: Waist_Rotation (); break; trường hợp 6: Waist_AntiRotation (); break; case 7: Third_Arm_Rotation (); break; case 8: Third_Arm_AntiRotation (); break; case 9: 4th_Arm_Rotation (); break; case 10: 4th_Arm_AntiRotation (); break; // trường hợp 11: Fifth_Arm_Rotation (); break; // trường hợp 12: Fifth_Arm_AntiRotation (); break; case 21: Serial.print ("case button 1"); chiffre_final = 1; sauvegarde_positions1 [0] = angle; sauvegarde_positions1 [1] = angle1; sauvegarde_positions1 [2] = angle2; sauvegarde_positions1 [3] = angle_positions1 [3] = angle3] sauvegarde = angle5; Serial.println (sauvegarde_positions1 [1]); Serial.println (sauvegarde_positions1 [2]); Serial.println (sauvegarde_positions1 [3]); Serial.println (sauvegarde_positions1 [4]); nghỉ; case 22: chiffre_final = 2; sauvegarde_positions2 [0] = angle; sauvegarde_positions2 [1] = angle1; sauvegarde_positions2 [2] = angle2; sauvegarde_positions2 [3] = angle3; sauvegarde_positions2 [4] = angle5; nghỉ; case 23: chiffre_final = 3; sauvegarde_positions3 [0] = angle; sauvegarde_positions3 [1] = angle1; sauvegarde_positions3 [2] = angle2; sauvegarde_positions3 [3] = angle3; sauvegarde_positions3 [4] = angle5; break; case 24: chiffre_final = 4; sauvegarde_positions4 [0] = angle; sauvegarde_positions4 [1] = angle1; sauvegarde_positions4 [2] = angle2; sauvegarde_positions4 [3] = angle3; sauvegarde_positions4 [4] = angle5; nghỉ; case 25: chiffre_final = 5; sauvegarde_positions5 [0] = angle; sauvegarde_positions5 [1] = angle1; sauvegarde_positions5 [2] = angle2; sauvegarde_positions5 [3] = angle3; sauvegarde_positions5 [4] = angle5; nghỉ; case 26: chiffre_final = 6; sauvegarde_positions6 [0] = angle; sauvegarde_positions6 [1] = angle1; sauvegarde_positions6 [2] = angle2; sauvegarde_positions6 [3] = angle3; sauvegarde_positions6 [4] = angle5; nghỉ; case 27: chiffre_final = 7; sauvegarde_positions7 [0] = angle; sauvegarde_positions7 [1] = angle1; sauvegarde_positions7 [2] = angle2; sauvegarde_positions7 [3] = angle3; sauvegarde_positions7 [4] = angle5; nghỉ; case 28: chiffre_final = 8; sauvegarde_positions8 [0] = angle; sauvegarde_positions8 [1] = angle1; sauvegarde_positions8 [2] = angle2; sauvegarde_positions8 [3] = angle3; sauvegarde_positions8 [4] = angle5; nghỉ; case 29: chiffre_final = 9; sauvegarde_positions9 [0] = angle; sauvegarde_positions9 [1] = angle1; sauvegarde_positions9 [2] = angle2; sauvegarde_positions9 [3] = angle3; sauvegarde_positions9 [4] = angle5; nghỉ;

case 31: Serial.print ("31"); active_saving = 1; chiffre_final = 0; break; // BẮT ĐẦU

case 33: Serial.print ("33"); active_saving = 0; break; // NÚT LƯU default: break; } if (w == 32) {Serial.print ("\ nReproduction / nChiffre final:"); Serial.print (chiffre_final); Serial.print ("\ n Sauvegarde vị trí 1: / n"); for (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions1 ); Serial.print ("\ t");} Serial.print ("\ n Sauvegarde vị trí 2: / n"); for (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions2 ); Serial.print ("\ t");} Serial.print ("\ n Sauvegarde vị trí 3: / n"); for (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions3 ); Serial.print ("\ t");} for (i = 1; i <= chiffre_final; i ++) {Serial. print ("\ n / n BEGIN / nLoop:"); Serial.print (i); Serial.print ("\ n"); switch (i) {case 1: goto_moteur (* (sauvegarde_positions1)); delay (200); goto_moteur1 (* (sauvegarde_positions1 + 1)); chậm trễ (200); goto_moteur2 (* (sauvegarde_positions1 + 2)); delay (200); goto_moteur3 (* (sauvegarde_positions1 + 3)); chậm trễ (200); goto_moteur5 (* (sauvegarde_positions1 + 4)); delay (200); nghỉ; case 2: goto_moteur (* (sauvegarde_positions2)); delay (200); goto_moteur1 (* (sauvegarde_positions2 + 1)); chậm trễ (200); goto_moteur2 (* (sauvegarde_positions2 + 2)); delay (200); goto_moteur3 (* (sauvegarde_positions2 + 3)); chậm trễ (200); goto_moteur5 (* (sauvegarde_positions2 + 4)); delay (200); nghỉ; case 3: goto_moteur (* (sauvegarde_positions3)); delay (200); goto_moteur1 (* (sauvegarde_positions3 + 1)); chậm trễ (200); goto_moteur2 (* (sauvegarde_positions3 + 2)); delay (200); goto_moteur3 (* (sauvegarde_positions3 + 3)); chậm trễ (200); goto_moteur5 (* (sauvegarde_positions3 + 4)); delay (200); nghỉ; case 4: goto_moteur (* (sauvegarde_positions4)); delay (200); goto_moteur1 (* (sauvegarde_positions4 + 1)); chậm trễ (200); goto_moteur2 (* (sauvegarde_positions4 + 2)); delay (200); goto_moteur3 (* (sauvegarde_positions4 + 3)); chậm trễ (200); goto_moteur5 (* (sauvegarde_positions4 + 4)); delay (200); nghỉ; case 5: goto_moteur (* (sauvegarde_positions5)); delay (200); goto_moteur1 (* (sauvegarde_positions5 + 1)); chậm trễ (200); goto_moteur2 (* (sauvegarde_positions5 + 2)); delay (200); goto_moteur3 (* (sauvegarde_positions5 + 3)); chậm trễ (200); goto_moteur5 (* (sauvegarde_positions5 + 4)); delay (200); nghỉ; case 6: goto_moteur (* (sauvegarde_positions6)); delay (200); goto_moteur1 (* (sauvegarde_positions6 + 1)); chậm trễ (200); goto_moteur2 (* (sauvegarde_positions6 + 2)); delay (200); goto_moteur3 (* (sauvegarde_positions6 + 3)); chậm trễ (200); goto_moteur5 (* (sauvegarde_positions6 + 4)); delay (200); nghỉ; case 7: goto_moteur (* (sauvegarde_positions7)); delay (200); goto_moteur1 (* (sauvegarde_positions7 + 1)); chậm trễ (200); goto_moteur2 (* (sauvegarde_positions7 + 2)); delay (200); goto_moteur3 (* (sauvegarde_positions7 + 3)); chậm trễ (200); goto_moteur5 (* (sauvegarde_positions7 + 4)); delay (200); nghỉ; case 8: goto_moteur (* (sauvegarde_positions8)); delay (200); goto_moteur1 (* (sauvegarde_positions8 + 1)); chậm trễ (200); goto_moteur2 (* (sauvegarde_positions8 + 2)); delay (200); goto_moteur3 (* (sauvegarde_positions8 + 3)); chậm trễ (200); goto_moteur5 (* (sauvegarde_positions8 + 4)); delay (200); nghỉ; case 9: goto_moteur (* (sauvegarde_positions9)); delay (200); goto_moteur1 (* (sauvegarde_positions9 + 1)); chậm trễ (200); goto_moteur2 (* (sauvegarde_positions9 + 2)); delay (200); goto_moteur3 (* (sauvegarde_positions9 + 3)); chậm trễ (200); goto_moteur5 (* (sauvegarde_positions9 + 4)); delay (200); nghỉ; } Serial.print ("\ n *********************** GIỚI THIỆU CUỐI CÙNG ***************** \n "); chậm trễ (500); }} /*Serial.print ("ra mắt / n"); Serial.print (sauvegarde_positions1 [0]); Serial.print ("\ t"); Serial.print (sauvegarde_positions1 [1]); Serial.print ("\ t"); Serial.print (sauvegarde_positions1 [2]); Serial.print ("\ t"); Serial.print (sauvegarde_positions1 [3]); Serial.print ("\ t"); Serial.print (sauvegarde_positions1 [4]); Serial.print ("\ n"); Serial.print (sauvegarde_positions2 [0]); Serial.print ("\ t"); Serial.print (sauvegarde_positions2 [1]); Serial.print ("\ t"); Serial.print (sauvegarde_positions2 [2]); Serial.print ("\ t"); Serial.print (sauvegarde_positions2 [3]); Serial.print ("\ t"); Serial.print (sauvegarde_positions2 [4]); Serial.print ("\ n"); Serial.print (sauvegarde_positions3 [0]); Serial.print ("\ t"); Serial.print (sauvegarde_positions3 [1]); Serial.print ("\ t"); Serial.print (sauvegarde_positions3 [2]); Serial.print ("\ t"); Serial.print (sauvegarde_positions3 [3]); Serial.print ("\ t"); Serial.print (sauvegarde_positions3 [4]); Serial.print ("\ n"); Serial.print (sauvegarde_positions4 [0]); Serial.print ("\ t"); Serial.print (sauvegarde_positions4 [1]); Serial.print ("\ t"); Serial.print (sauvegarde_positions4 [2]); Serial.print ("\ t"); Serial.print (sauvegarde_positions4 [3]); Serial.print ("\ t"); Serial.print (sauvegarde_positions4 [4]); Serial.print ("\ n");

Serial.print ("\ nfin / n"); * /

chậm trễ (100); } // **************************** CÁC PHÂN TÍCH ****************** ******************

word Recvoir () {// fonction permettant de Collectvoir l'information du smartphone

if (Serial.available ()) {w = Serial.read ();

Serial.flush ();

trả lại w; }}

void goto_moteur (int angle_destination)

{while (angle_destination angle + step_angle) {Serial.print ("\ n -------------- * * * * * * -------------- ----\n"); Serial.print ("angle_destination = / t"); Serial.print (angle_destination); Serial.print ("\ n angle1 = / t"); Serial.print (angle); if (angle_destination angle + step_angle) {angle = angle + step_angle; moteur.write (angle);} delay (100); } moteur.write (angle_destination); } void goto_moteur1 (int angle_destination) {while (angle_destination angle1 + step_angle) {Serial.print ("\ n -------------- * * * * * * ------- -----------\n"); Serial.print ("angle_destination = / t"); Serial.print (angle_destination); Serial.print ("\ n angle2 = / t"); Serial.print (angle1); if (angle_destination angle1 + step_angle) {angle1 + = step_angle; moteur1.write (angle1);;} delay (100); } moteur1.write (angle_destination); } void goto_moteur2 (int angle_destination) {

while (angle_destination angle2 + step_angle)

{Serial.print ("\ n -------------- * * * * * * * ------------------ / n"); Serial.print ("angle_destination = / t"); Serial.print (angle_destination); Serial.print ("\ n angle3 = / t"); Serial.print (angle2); if (angle_destination angle2 + step_angle) {angle2 + = step_angle; moteur2.write (angle2);} delay (100); } moteur2.write (angle_destination); } void goto_moteur3 (int angle_destination) {

while (angle_destination angle3 + step_angle)

{Serial.print ("\ n -------------- * * * * * * * ------------------ / n"); Serial.print ("angle_destination = / t"); Serial.print (angle_destination); Serial.print ("\ n angle4 = / t"); Serial.print (angle3); if (angle_destination angle3 + step_angle) {angle3 + = step_angle; moteur3.write (angle3);} delay (100); } moteur3.write (angle_destination); } void goto_moteur5 (int angle_destination) {

while (angle_destination angle5 + step_angle)

{Serial.print ("\ n -------------- * * * * * * * ------------------ / n"); Serial.print ("angle_destination = / t"); Serial.print (angle_destination); Serial.print ("\ n angle5 = / t"); Serial.print (angle5); if (angle_destination angle5 + step_angle) {angle5 + = step_angle; moteur5.write (angle5);} delay (100); } moteur5.write (angle_destination); }

void TouchDown_Release () // Phát hành nút TouchDown

{if (angle5 <180) {angle5 = angle5 + step_angle_mini; } moteur5.write (angle5); }

void TouchDown_Grab () // Lấy nút TouchDown

{if (angle5> 0) {angle5 = angle5-step_angle_mini; } moteur5.write (angle5); } void Base_Rotation () {if (angle 0) {angle = angle-step_angle; } else angle = 0; moteur.write (góc); } void Waist_Rotation () {if (angle1 20) {angle1 = angle1-step_angle; } else angle1 = 20; moteur1.write (angle1); } void Third_Arm_Rotation () {if (angle2 0) {angle2 = angle2-step_angle; } moteur2.write (angle2); } void 4th_Arm_Rotation () {if (angle3 = 0) {angle3 = angle3-step_angle_mini; } moteur3.write (angle3); }

Bước 6: Đó là Nó

Cảm ơn đã xem, tôi hy vọng bạn đánh giá cao!

Nếu bạn thích Có thể hướng dẫn này, bạn chắc chắn có thể ghé thăm chúng tôi để biết thêm! =)

Đề xuất: