Daftar Isi:

Game Lengan Robot - Pengontrol Ponsel Cerdas: 6 Langkah
Game Lengan Robot - Pengontrol Ponsel Cerdas: 6 Langkah

Video: Game Lengan Robot - Pengontrol Ponsel Cerdas: 6 Langkah

Video: Game Lengan Robot - Pengontrol Ponsel Cerdas: 6 Langkah
Video: teknologi masa depan menurut imajinasi - DUNIA ROBOT 2024, Juli
Anonim
Game Lengan Robot - Pengontrol Ponsel Cerdas
Game Lengan Robot - Pengontrol Ponsel Cerdas

Halo !

Di sini permainan musim panas yang menyenangkan: Lengan robot yang dikendalikan oleh Smartphone !!

Seperti yang Anda lihat di Video, Anda dapat mengontrol Lengan dengan beberapa Joystick di ponsel cerdas Anda.

Anda juga dapat menyimpan pola, yang akan direproduksi oleh robot dalam satu lingkaran, untuk melakukan beberapa tugas berulang sebagai contoh. Tetapi pola ini dapat dimodulasi sesuai keinginan !!!!

Jadilah kreatif !

Langkah 1: Bahan

Bahan
Bahan

Di sini Anda dapat melihat bahan yang Anda butuhkan.

Anda akan dikenakan biaya sekitar € 50 untuk membangun Lengan robot ini. Perangkat Lunak dan alat dapat diganti, tetapi saya menggunakannya untuk proyek ini.

Langkah 2: Cetak Lengan Robot 3D

Cetak 3D Lengan Robot
Cetak 3D Lengan Robot
Cetak 3D Lengan Robot
Cetak 3D Lengan Robot
Cetak 3D Lengan Robot
Cetak 3D Lengan Robot

Lengan Robot dicetak 3D (dengan prusa i3) kami.

Berkat situs web "HowtoMechatronics.com", File STL-nya luar biasa untuk membuat lengan 3D.

Ini akan memakan waktu sekitar 20 jam untuk mencetak semua bagian.

Langkah 3: Montase Elektronik

Montase Elektronik
Montase Elektronik

Montase terpisah menjadi 2 bagian:

Bagian elektronik, di mana arduino terhubung ke servos oleh Pin Digital, dan dengan perangkat Bluetooth (Rx, Tx).

Bagian Daya, di mana servos ditenagai dengan 2 pengisi daya telepon (maks 5V, 2A).

Langkah 4: Aplikasi Ponsel Cerdas

Aplikasi Ponsel Cerdas
Aplikasi Ponsel Cerdas

Aplikasi dibuat pada App penemu 2. Kami menggunakan 2 Joystick untuk mengontrol 4 Servos dan 2 Tombol lagi untuk mengontrol Grip terakhir.

Kami menghubungkan Arm dan Smartphone bersama-sama dengan menggunakan modul Bluetooth (HC-06).

Akhirnya, mode hemat memungkinkan pengguna untuk menyimpan hingga 9 posisi untuk Lengan.

Lengan kemudian akan masuk ke mode otomatis, di mana ia akan mereproduksi posisi yang disimpan.

Langkah 5: Kode Arduino

Kode Arduino
Kode Arduino
Kode Arduino
Kode Arduino

// 19/08 - Robotic Arm Smartphone dikendalikan

#sertakan #define TRUE benar #define FALSE salah //******************PERNYATAAN****************** ***********

perwakilan kata; // mot envoyé du module Arduino au smartphone

int chiffre_final = 0; int cmd=3; // variabel commande du servo moteur (troisime fil (oranye, jaune)) int cmd1=5; // servo1 int cmd2=9; // servo2 int cmd3=10; // servo3 //int cmd4=10; //servo4 int cmd5=11; // pince int aktifkan_hemat = 0; Motor servo; //pada notre définit servomoteur Servo moteur1; Motor servo2; Motor servo3; //Moteur servo4; Motor servo5; int langkah_angle_mini = 4; int langkah_sudut = 3; int sudut, sudut1, sudut3, sudut5, sudut2;//sudut int pas; int r, r1, r2, r3; int pendaftar; sirip boolean = SALAH; boolean fin1 = SALAH; boolean fin2 = SALAH; boolean fin3 = SALAH; boolean fin4 = SALAH; kata w; // variabel utusan du smartphone au modul 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];

//int sudut; // sudut de rotasi (0 a 180)

//********************MEMPERSIAPKAN*************************** ******** 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); // pada relie l'objet au pin de commande moteur1.attach(cmd1); moteur2.attach(cmd2); moteur3.attach(cmd3); // moteur4.attach(cmd4); moteur5.attach(cmd5); moteur.tulis(6); sudut = 6; moteur1.tulis(100); sudut1 = 100; moteur2.tulis(90); moteur3.tulis(90); //moteur4.write(12); moteur5.tulis(90); sudut = 6; sudut1=100; sudut2= 90; sudut3=90; sudut5=90; Serial.begin(9600); // permettra de komuniquer au modul Bluetooth } //*********************BOUCLE****************** ***************** void loop() {

// Serial.print("sudut");

//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("sudut");

di aku; w=penerima(); // pada va recevoir une information du smartphone, la variabel w switch (w) { case 1: TouchDown_Release();break; kasus 2: TouchDown_Grab();break; kasus 3: Base_Rotation();break; kasus 4: Base_AntiRotation();break; kasus 5: Rotasi_Pinggang();break; kasus 6: Waist_AntiRotation();break; kasus 7: Third_Arm_Rotation();break; kasus 8: Third_Arm_AntiRotation();break; kasus 9: Fourth_Arm_Rotation();break; kasus 10: Fourth_Arm_AntiRotation();break; //kasus 11: Fifth_Arm_Rotation();break; //kasus 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] =angle3;sauvegarde_positions =angle5;Serial.println(sauvegarde_positions1[1]);Serial.println(sauvegarde_positions1[2]);Serial.println(sauvegarde_positions1[3]);Serial.println(sauvegarde_positions1[4]); merusak; kasus 22: chiffre_final = 2;sauvegarde_positions2[0] =angle;sauvegarde_positions2[1] =angle1;sauvegarde_positions2[2] =angle2;sauvegarde_positions2[3] =angle3;sauvegarde_positions2[4] =angle5; merusak; kasus 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; kasus 24: chiffre_final = 4;sauvegarde_positions4[0] =angle;sauvegarde_positions4[1] =angle1;sauvegarde_positions4[2] =angle2;sauvegarde_positions4[3] =angle3;sauvegarde_positions4[4] =angle5; merusak; kasus 25: chiffre_final = 5;sauvegarde_positions5[0] =angle;sauvegarde_positions5[1] =angle1;sauvegarde_positions5[2] =angle2;sauvegarde_positions5[3] =angle3;sauvegarde_positions5[4] =angle5; merusak; kasus 26: chiffre_final = 6;sauvegarde_positions6[0] =angle;sauvegarde_positions6[1] =angle1;sauvegarde_positions6[2] =angle2;sauvegarde_positions6[3] =angle3;sauvegarde_positions6[4] =angle5; merusak; kasus 27: chiffre_final = 7;sauvegarde_positions7[0] =angle;sauvegarde_positions7[1] =angle1;sauvegarde_positions7[2] =angle2;sauvegarde_positions7[3] =angle3;sauvegarde_positions7[4] =angle5; merusak; kasus 28: chiffre_final = 8;sauvegarde_positions8[0] =angle;sauvegarde_positions8[1] =angle1;sauvegarde_positions8[2] =angle2;sauvegarde_positions8[3] =angle3;sauvegarde_positions8[4] =angle5; merusak; kasus 29: chiffre_final = 9;sauvegarde_positions9[0] =angle;sauvegarde_positions9[1] =angle1;sauvegarde_positions9[2] =angle2;sauvegarde_positions9[3] =angle3;sauvegarde_positions9[4] =angle5; merusak;

kasus 31: Serial.print("31");activate_saving = 1;chiffre_final = 0; istirahat;// MULAI

kasus 33: Serial.print("33");activate_saving = 0; break;// BUTTON SAVE default: break; } if(w == 32) { Serial.print("\nReproduksi\nChiffre final: "); Serial.print(chiffre_final); Serial.print("\n Sauvegarde posisi 1: \n"); for(i=0;i<5;i++){ Serial.print(sauvegarde_positions1);Serial.print("\t");} Serial.print("\n Posisi Sauvegarde 2: \n"); for(i=0;i<5;i++){ Serial.print(sauvegarde_positions2);Serial.print("\t");} Serial.print("\n Sauvegarde posisi 3: \n"); for(i=0;i<5;i++){ Serial.print(sauvegarde_positions3);Serial.print("\t");} untuk (i = 1;i<=chiffre_final;i++) { Serial. print("\n\n MULAI \nPerulangan: "); Serial.print(i);Serial.print("\n"); switch(i) { kasus 1: goto_moteur(*(sauvegarde_positions1));delay(200); goto_moteur1(*(sauvegarde_positions1+1)); penundaan (200); goto_moteur2(*(sauvegarde_positions1+2));delay(200); goto_moteur3(*(sauvegarde_positions1+3)); penundaan (200); goto_moteur5(*(sauvegarde_positions1+4));delay(200); merusak; kasus 2: goto_moteur(*(sauvegarde_positions2));delay(200); goto_moteur1(*(sauvegarde_positions2+1)); penundaan (200); goto_moteur2(*(sauvegarde_positions2+2));delay(200); goto_moteur3(*(sauvegarde_positions2+3)); penundaan (200); goto_moteur5(*(sauvegarde_positions2+4));delay(200); merusak; kasus 3: goto_moteur(*(sauvegarde_positions3));delay(200); goto_moteur1(*(sauvegarde_positions3+1)); penundaan (200); goto_moteur2(*(sauvegarde_positions3+2));delay(200); goto_moteur3(*(sauvegarde_positions3+3)); penundaan (200); goto_moteur5(*(sauvegarde_positions3+4));delay(200); merusak; kasus 4: goto_moteur(*(sauvegarde_positions4));delay(200); goto_moteur1(*(sauvegarde_positions4+1)); penundaan (200); goto_moteur2(*(sauvegarde_positions4+2));delay(200); goto_moteur3(*(sauvegarde_positions4+3)); penundaan (200); goto_moteur5(*(sauvegarde_positions4+4));delay(200); merusak; kasus 5: goto_moteur(*(sauvegarde_positions5));delay(200); goto_moteur1(*(sauvegarde_positions5+1)); penundaan (200); goto_moteur2(*(sauvegarde_positions5+2));delay(200); goto_moteur3(*(sauvegarde_positions5+3)); penundaan (200); goto_moteur5(*(sauvegarde_positions5+4));delay(200); merusak; kasus 6: goto_moteur(*(sauvegarde_positions6));delay(200); goto_moteur1(*(sauvegarde_positions6+1)); penundaan (200); goto_moteur2(*(sauvegarde_positions6+2));delay(200); goto_moteur3(*(sauvegarde_positions6+3)); penundaan (200); goto_moteur5(*(sauvegarde_positions6+4));delay(200); merusak; kasus 7: goto_moteur(*(sauvegarde_positions7));delay(200); goto_moteur1(*(sauvegarde_positions7+1)); penundaan (200); goto_moteur2(*(sauvegarde_positions7+2));delay(200); goto_moteur3(*(sauvegarde_positions7+3)); penundaan (200); goto_moteur5(*(sauvegarde_positions7+4));delay(200); merusak; kasus 8: goto_moteur(*(sauvegarde_positions8));delay(200); goto_moteur1(*(sauvegarde_positions8+1)); penundaan (200); goto_moteur2(*(sauvegarde_positions8+2));delay(200); goto_moteur3(*(sauvegarde_positions8+3)); penundaan (200); goto_moteur5(*(sauvegarde_positions8+4));delay(200); merusak; kasus 9: goto_moteur(*(sauvegarde_positions9));delay(200); goto_moteur1(*(sauvegarde_positions9+1)); penundaan (200); goto_moteur2(*(sauvegarde_positions9+2));delay(200); goto_moteur3(*(sauvegarde_positions9+3)); penundaan (200); goto_moteur5(*(sauvegarde_positions9+4));delay(200); merusak; } Serial.print("\n************************ FIN REPRODUCE ***************** \n "); penundaan (500); } } /*Serial.print("debut\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");*/

penundaan(100); } //*************************** FONCTIONS****************** ******************

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

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

Serial.flush();

kembali 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(sudut); 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(sudut_tujuan sudut1 +sudut_langkah){sudut1 += sudut_langkah; moteur1.write(angle1);;} delay(100); } moteur1.write(angle_destination); } batal goto_moteur2(int angle_destination) {

while (sudut_tujuan sudut2+sudut_langkah)

{ 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); } batal goto_moteur3(int angle_destination) {

while (sudut_tujuan sudut3+sudut_langkah)

{ 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); } batal goto_moteur5(int angle_destination) {

while (sudut_tujuan sudut5+sudut_langkah)

{ 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() // Pelepasan Tombol TouchDown

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

void TouchDown_Grab() // Ambil Tombol TouchDown

{ if (angle5 > 0) { angle5 = angle5-step_angle_mini; } moteur5.write(sudut5); } void Base_Rotation() { if (sudut 0) { angle = angle-step_angle; } sudut lain =0; moteur.tulis(sudut); } void Pinggang_Rotation() { if (angle1 20) { angle1 = angle1-step_angle; } lain sudut1 = 20; moteur1.tulis(sudut1); } void Third_Arm_Rotation() { if (angle2 0) { angle2 = angle2-step_angle; } moteur2.write(angle2); } void Fourth_Arm_Rotation() { if (angle3 = 0) { angle3 = angle3-step_angle_mini; } moteur3.write(sudut3); }

Langkah 6: Itu Saja

Terima kasih telah menonton, saya harap Anda menghargai!

Jika Anda menyukai Instruksi ini, Anda pasti dapat mengunjungi kami untuk lebih banyak lagi! =)

Direkomendasikan: