Mục lục:
- Bước 1: Vật liệu
- Bước 2: In 3D Cánh tay robot
- Bước 3: Montage điện tử
- Bước 4: Ứng dụng điện thoại thông minh
- Bước 5: Mã Arduino
- Bước 6: Đó là Nó
Video: Trò chơi cánh tay robot - Bộ điều khiển điện thoại thông minh: 6 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:32
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
Ở đâ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
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ử
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 đượ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
// 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:
Cánh tay điều khiển bằng điện thoại thông minh giá rẻ (+ Vị trí lưu tùy chọn): 5 bước
Cánh tay điều khiển bằng điện thoại thông minh giá rẻ (+ Vị trí lưu tùy chọn): Dự án Điều khiển cánh tay robot được điều khiển bằng điện thoại thông minh sử dụng thiết bị bluetooth. Phần thưởng chế độ: chúng tôi có một nút cho phép arduino ghi nhớ vị trí. Bất cứ khi nào chúng ta muốn, chúng ta có thể đến vị trí đã lưu này bằng một nút khác. Lệnh FRLE PROJET
Bộ điều khiển trò chơi tự làm dựa trên Arduino - Bộ điều khiển trò chơi Arduino PS2 - Chơi Tekken với tự làm trò chơi Arduino: 7 bước
Bộ điều khiển trò chơi tự làm dựa trên Arduino | Bộ điều khiển trò chơi Arduino PS2 | Chơi Tekken với Bàn điều khiển Arduino tự làm: Xin chào các bạn, chơi game luôn thú vị nhưng chơi với Bộ điều khiển trò chơi tùy chỉnh tự làm của riêng bạn sẽ thú vị hơn
ESP8266 RGB LED STRIP Điều khiển WIFI - NODEMCU làm điều khiển từ xa hồng ngoại cho dải đèn Led được điều khiển qua Wi-Fi - Điều khiển điện thoại thông minh RGB LED STRIP: 4 bước
ESP8266 RGB LED STRIP Điều khiển WIFI | NODEMCU làm điều khiển từ xa hồng ngoại cho dải đèn Led được điều khiển qua Wi-Fi | Điều khiển bằng điện thoại thông minh RGB LED STRIP: Xin chào các bạn trong hướng dẫn này, chúng ta sẽ học cách sử dụng gật đầu hoặc esp8266 làm điều khiển từ xa IR để điều khiển dải LED RGB và Nodemcu sẽ được điều khiển bằng điện thoại thông minh qua wifi. Vì vậy, về cơ bản bạn có thể điều khiển DÂY CHUYỀN LED RGB bằng điện thoại thông minh của mình
Trình mô phỏng trò chơi điện thoại thông minh- Chơi trò chơi Windows bằng IMU điều khiển bằng cử chỉ, Gia tốc kế, Con quay hồi chuyển, Từ kế: 5 bước
SmartPhone Game Simulator- Chơi Windows Games Sử dụng IMU Điều khiển bằng cử chỉ, Gia tốc kế, Con quay hồi chuyển, Từ kế: Hỗ trợ dự án này: https://www.paypal.me/vslcreations bằng cách quyên góp cho mã nguồn mở & hỗ trợ để phát triển hơn nữa
Bộ điều khiển kỹ thuật số cho hệ thống treo khí bằng Arduino và Điều khiển từ xa trên điện thoại thông minh: 7 bước (có hình ảnh)
Bộ điều khiển kỹ thuật số cho hệ thống treo khí bằng Arduino và Điều khiển từ xa trên điện thoại thông minh: Xin chào tất cả mọi người. đây cũng là lần hướng dẫn đầu tiên của tôi nên gấu w