Mundarija:

Robotik qo'l o'yini - Smartfon boshqaruvchisi: 6 qadam
Robotik qo'l o'yini - Smartfon boshqaruvchisi: 6 qadam

Video: Robotik qo'l o'yini - Smartfon boshqaruvchisi: 6 qadam

Video: Robotik qo'l o'yini - Smartfon boshqaruvchisi: 6 qadam
Video: BİR O'ZİNGİZ KO'RİNG / DUNYODAGİ ENG G'ALATİ ER-XOTİNLAR / Buni Bilasizmi? 2024, Iyul
Anonim
Robotik qo'l o'yini - Smartfon boshqaruvchisi
Robotik qo'l o'yini - Smartfon boshqaruvchisi

Salom !

Bu erda qiziqarli yozgi o'yin: Smartfon tomonidan boshqariladigan robot qo'l !!

Videodan ko'rinib turibdiki, siz qo'lingizni smartfoningizdagi bir nechta Joystiklar yordamida boshqarishingiz mumkin.

Siz, shuningdek, bir necha marta takrorlanadigan vazifalarni bajarish uchun, robot halqada takrorlanadigan naqshni saqlashingiz mumkin. Lekin bu naqsh siz xohlagancha modulyatsiya qilinadi !!!!

Ijodiy bo'ling!

1 -qadam: materiallar

Materiallar
Materiallar

Bu erda siz kerakli materialni ko'rishingiz mumkin.

Ushbu robotli qurolni yaratish uchun sizga 50 evro kerak bo'ladi. Dasturiy ta'minot va asboblarni almashtirish mumkin, lekin men ularni ushbu loyiha uchun ishlatganman.

2 -qadam: Robot qo'lini 3D bosib chiqarish

Robot qo'lini 3D bosib chiqarish
Robot qo'lini 3D bosib chiqarish
Robot qo'lini 3D bosib chiqarish
Robot qo'lini 3D bosib chiqarish
Robot qo'lini 3D bosib chiqarish
Robot qo'lini 3D bosib chiqarish

Robotik qo'l 3D bosilgan (bizning prusa i3 bilan).

"HowtoMechatronics.com" veb -sayti tufayli uning STL fayllari 3D qo'lini yaratish uchun ajoyib.

Barcha qismlarni chop etish uchun taxminan 20 soat vaqt ketadi.

3 -qadam: Elektron montaj

Elektron montaj
Elektron montaj

Montaj 2 qismdan iborat:

Arduino servolarga raqamli pinlar va Bluetooth qurilmasi (Rx, Tx) ulangan elektron qism.

Quvvat qismi, bu erda servolar 2 ta telefon zaryadlovchi bilan quvvatlanadi (5V, 2A max).

4 -qadam: Smartfon ilovasi

Smartfon uchun dastur
Smartfon uchun dastur

Ilova ixtirochi 2 -da qilingan. Biz 4 ta servo va 2 ta tugmachadan foydalanib, oxirgi ushlagichni boshqaramiz.

Biz Bluetooth moduli (HC-06) yordamida qo'l va smartfonni birlashtiramiz.

Nihoyat, tejash rejimi foydalanuvchiga Arm uchun 9 ta pozitsiyani saqlash imkonini beradi.

Keyin qo'l avtomatik rejimga o'tadi, u erda saqlangan pozitsiyalarni takrorlaydi.

5 -qadam: Arduino kodi

Arduino kodi
Arduino kodi
Arduino kodi
Arduino kodi

// 08/19 - Robotik qo'l smartfoni boshqariladi

#qo'shish #HAQIQIY rostni #aniqFALSE noto'g'ri // ******************** E'LONLAR ***************** ***********

so'z vakili; // Arduino yoki smartfonning modulli vakili

int chiffre_final = 0; int cmd = 3; // o'zgaruvchan buyruqlar servo moteur (troisième fil (to'q sariq, sariq)) int cmd1 = 5; // servo1 int cmd2 = 9; // servo2 int cmd3 = 10; // servo3 // int cmd4 = 10; // servo4 int cmd5 = 11; // pince int activate_saving = 0; Servo moteur; // on définit notre servomoteur Servo moteur1; Servo moteur2; Servo moteur3; // Servo moteur4; Servo moteur5; int qadam_angle_mini = 4; int qadam_angle = 3; int burchak, burchak1, burchak3, burchak5, burchak2; // burchak int pas; int r, r1, r2, r3; int registrer; mantiqiy fin = FALSE; boolean fin1 = FALSE; mantiqiy fin2 = FALSE; boolean fin3 = FALSE; boolean fin4 = FALSE; so'z w; // Arduino int sauvegarde_positions1 modulining o'zgaruvchan vakili [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 burchagi; // burilish burchagi (0 dan 180 gacha)

//********************SOZLASH*************************** ******** 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); // on l'objet au pin de commande moteur1.attach (cmd1); moteur2. biriktirish (cmd2); moteur3. biriktirish (cmd3); // moteur4.attach (cmd4); moteur5. biriktirish (cmd5); moteur.write (6); burchak = 6; moteur1.yozish (100); burchak1 = 100; moteur2.yozish (90); moteur3.yozish (90); //moteur4.write(12); moteur5.yozish (90); burchak = 6; burchak1 = 100; burchak2 = 90; burchak3 = 90; burchak 5 = 90; Serial.begin (9600); // Bluetooth modulini ulash uchun // // ******************** BOUCLE ****************** ***************** void loop () {

// Serial.print ("burchak");

//Serial.print(angle); Serial.print ("\ t"); Serial.print (burchak1); Serial.print ("\ t"); Serial.print (burchak2); Serial.print ("\ t) "); Serial.print (burchak 3); Serial.print (" / t "); Serial.print (burchak5); Seriyali bosma (" / n ");

//Serial.print("angle ");

int i; w = recevoir (); // smartfon haqida hech qanday ma'lumot yo'q, w o'zgaruvchisi o'zgaradi (w) {1 -holat: TouchDown_Release (); break; 2 -holat: TouchDown_Grab (); tanaffus; 3 -holat: Base_Rotation (); tanaffus; 4 -holat: Base_AntiRotation (); tanaffus; 5 -holat: Waist_Rotation (); tanaffus; 6 -holat: Waist_AntiRotation (); tanaffus; 7 -holat: Third_Arm_Rotation (); tanaffus; 8 -holat: Third_Arm_AntiRotation (); tanaffus; 9 -holat: Fourth_Arm_Rotation (); tanaffus; 10 -holat: Fourth_Arm_AntiRotation (); tanaffus; // 11 -holat: Fifth_Arm_Rotation (); break; // 12 -holat: Fifth_Arm_AntiRotation (); break; 21 -holat: Serial.print ("katta tugma 1"); chiffre_final = 1; sauvegarde_positions1 [0] = burchak; sauvegarde_pozitions1 [1] = burchak1; sauvegarde_pozitions1 [2] = burchak2; sauvegarde_pozisyonlar1 [3] = 1 burchak [3] = 3] = burchak5; Serial.println (sauvegarde_pozitions1 [1]); Serial.println (sauvegarde_positions1 [2]); Serial.println (sauvegarde_positions1 [3]); Serial.println (sauvegarde_positions1 [4]; tanaffus; 22 -holat: chiffre_final = 2; sauvegarde_positions2 [0] = burchak; sauvegarde_pozitions2 [1] = burchak1; sauvegarde_pozitions2 [2] = burchak2; sauvegarde_pozitsiyalar2 [3] = burchak 3; sauvegarde_positions2 [4] tanaffus; 23 -holat: chiffre_final = 3; sauvegarde_positions3 [0] = burchak; sauvegarde_pozitions3 [1] = burchak1; sauvegarde_positions3 [2] = burchak2; sauvegarde_pozitsiyalar3 [3] = burchak 3; sauvegarde_pozisyonlar3 [4] 24 -holat: chiffre_final = 4; sauvegarde_positions4 [0] = burchak; sauvegarde_pozitions4 [1] = burchak1; sauvegarde_positions4 [2] = burchak2; sauvegarde_pozits4 [3] = burchak 3; sauvegarde_pozisyonlar4 [4] tanaffus; 25 -holat: chiffre_final = 5; sauvegarde_positions5 [0] = burchak; sauvegarde_pozitions5 [1] = burchak1; sauvegarde_pozitions5 [2] = burchak2; sauvegarde_pozits5 [3] = burchak 3; sauvegarde_pozisyonlar5 [4] tanaffus; 26 -holat: chiffre_final = 6; sauvegarde_positions6 [0] = burchak; sauvegarde_pozitions6 [1] = burchak1; sauvegarde_positions6 [2] = burchak2; sauvegarde_pozits6 [3] = burchak 3; sauvegarde_positions6 [4] tanaffus; 27 -holat: chiffre_final = 7; sauvegarde_positions7 [0] = burchak; sauvegarde_positions7 [1] = burchak1; sauvegarde_pozitions7 [2] = burchak2; sauvegarde_pozits7 [3] = burchak 3; sauvegarde_pozisyonlar7 [4] tanaffus; 28 -holat: chiffre_final = 8; sauvegarde_positions8 [0] = burchak; sauvegarde_positions8 [1] = burchak1; sauvegarde_positions8 [2] = burchak2; sauvegarde_pozits8 [3] = burchak 3; sauvegarde_pozisyonlar8 [4] tanaffus; 29 -holat: chiffre_final = 9; sauvegarde_positions9 [0] = burchak; sauvegarde_positions9 [1] = burchak1; sauvegarde_positions9 [2] = burchak2; sauvegarde_pozits9 [3] = burchak 3; sauvegarde_pozisyonlar9 [4] tanaffus;

31 -holat: Serial.print ("31"); activate_saving = 1; chiffre_final = 0; tanaffus; // BOSHLASH

33 -holat: Serial.print ("33"); activate_saving = 0; break; // BUTTON SAVE standart: tanaffus; } if (w == 32) {Serial.print ("\ nReproduce / nChiffre final:"); Serial.print (chiffre_final); Serial.print ("\ n Sauvegarde pozitsiyasi 1: / n"); for (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions1 ); Serial.print ("\ t");} Serial.print ("\ n Sauvegarde pozitsiyasi 2: / n"); for (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions2 ); Serial.print ("\ t");} Serial.print ("\ n Sauvegarde pozitsiyasi 3: / n"); uchun (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions3 ); Serial.print ("\ t");} uchun (i = 1; i <= chiffre_final; i ++) {Seriya. chop etish ("\ n / n BEGIN / nDoop:"); Serial.print (i); Serial.print ("\ n"); switch (i) {1 -holat: goto_moteur (*(sauvegarde_positions1)); kechikish (200); goto_moteur1 (*(sauvegarde_positions1+1)); kechikish (200); goto_moteur2 (*(sauvegarde_positions1+2)); kechikish (200); goto_moteur3 (*(sauvegarde_positions1+3)); kechikish (200); goto_moteur5 (*(sauvegarde_positions1+4)); kechikish (200); tanaffus; 2 -holat: goto_moteur (*(sauvegarde_positions2)); kechikish (200); goto_moteur1 (*(sauvegarde_positions2+1)); kechikish (200); goto_moteur2 (*(sauvegarde_positions2+2)); kechikish (200); goto_moteur3 (*(sauvegarde_positions2+3)); kechikish (200); goto_moteur5 (*(sauvegarde_positions2+4)); kechikish (200); tanaffus; 3 -holat: goto_moteur (*(sauvegarde_positions3)); kechikish (200); goto_moteur1 (*(sauvegarde_positions3+1)); kechikish (200); goto_moteur2 (*(sauvegarde_positions3+2)); kechikish (200); goto_moteur3 (*(sauvegarde_positions3+3)); kechikish (200); goto_moteur5 (*(sauvegarde_positions3+4)); kechikish (200); tanaffus; 4 -holat: goto_moteur (*(sauvegarde_positions4)); kechikish (200); goto_moteur1 (*(sauvegarde_positions4+1)); kechikish (200); goto_moteur2 (*(sauvegarde_positions4+2)); kechikish (200); goto_moteur3 (*(sauvegarde_positions4+3)); kechikish (200); goto_moteur5 (*(sauvegarde_positions4+4)); kechikish (200); tanaffus; 5 -holat: goto_moteur (*(sauvegarde_positions5)); kechikish (200); goto_moteur1 (*(sauvegarde_positions5+1)); kechikish (200); goto_moteur2 (*(sauvegarde_positions5+2)); kechikish (200); goto_moteur3 (*(sauvegarde_positions5+3)); kechikish (200); goto_moteur5 (*(sauvegarde_positions5+4)); kechikish (200); tanaffus; 6 -holat: goto_moteur (*(sauvegarde_positions6)); kechikish (200); goto_moteur1 (*(sauvegarde_positions6+1)); kechikish (200); goto_moteur2 (*(sauvegarde_positions6+2)); kechikish (200); goto_moteur3 (*(sauvegarde_positions6+3)); kechikish (200); goto_moteur5 (*(sauvegarde_positions6+4)); kechikish (200); tanaffus; 7 -holat: goto_moteur (*(sauvegarde_positions7)); kechikish (200); goto_moteur1 (*(sauvegarde_positions7+1)); kechikish (200); goto_moteur2 (*(sauvegarde_positions7+2)); kechikish (200); goto_moteur3 (*(sauvegarde_positions7+3)); kechikish (200); goto_moteur5 (*(sauvegarde_positions7+4)); kechiktirish (200); tanaffus; 8 -holat: goto_moteur (*(sauvegarde_positions8)); kechikish (200); goto_moteur1 (*(sauvegarde_positions8+1)); kechikish (200); goto_moteur2 (*(sauvegarde_positions8+2)); kechikish (200); goto_moteur3 (*(sauvegarde_positions8+3)); kechikish (200); goto_moteur5 (*(sauvegarde_positions8+4)); kechikish (200); tanaffus; 9 -holat: goto_moteur (*(sauvegarde_positions9)); kechikish (200); goto_moteur1 (*(sauvegarde_positions9+1)); kechikish (200); goto_moteur2 (*(sauvegarde_positions9+2)); kechikish (200); goto_moteur3 (*(sauvegarde_positions9+3)); kechikish (200); goto_moteur5 (*(sauvegarde_positions9+4)); kechikish (200); tanaffus; } Serial.print ("\ n *********************** FIN TAVRIMI ***************** / n "); kechikish (500); }} /*Serial.print ("debyut / 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");*/

kechikish (100); } // ***************************** XUSUSIYATLARI ****************** ******************

word recevoir () {// fonction permettant de recevoir l'informatsion smartfon

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

Serial.flush ();

qaytish w; }}

void goto_moteur (int angle_destination)

{while (burchakni belgilash burchagi+qadam_burchak) {Serial.print ("\ n -------------- * * * * * * -------------- ---- / n "); Serial.print ("burchak_destinatsiyasi = / t"); Ketma -ket chop etish (burchakni belgilash); Serial.print ("\ n burchak1 = / t"); Seriyali bosma (burchak); if (burchak_dasturatsiya burchagi + qadam_burchak) {burchak = burchak + qadam_burchak; moteur.yozish (burchak);} kechikish (100); } moteur.write (burchakni belgilash); } void goto_moteur1 (int angle_destination) {while (burchak_destination burchak1+qadam_burchak) {Serial.print ("\ n -------------- * * * * * * ------- ----------- / n "); Serial.print ("burchak_destinatsiyasi = / t"); Ketma -ket chop etish (burchakni belgilash); Serial.print ("\ n burchak2 = / t"); Seriyali bosma (burchak1); agar (burchak_do'qlash burchagi1 +qadam_burchak) {burchak1 += qadam_burchak; moteur1.yozish (burchak1);;} kechiktirish (100); } moteur1.yozish (burchakni belgilash); } void goto_moteur2 (int angle_destination) {

vaqt (burchak_tashrif burchagi2+qadam_burchak)

{Serial.print ("\ n -------------- * * * * * * ------------------ / n"); Serial.print ("burchak_destinatsiyasi = / t"); Ketma -ket chop etish (burchakni belgilash); Serial.print ("\ n burchak3 = / t"); Seriyali bosma (burchak2); if (burchak_destination burchak2 +qadam_burchak) {burchak2 += qadam_burchak; moteur2.yozish (burchak2);} kechiktirish (100); } moteur2.yozish (burchakni belgilash); } void goto_moteur3 (int angle_destination) {

esa (burchakni belgilash burchagi3+qadam_burchak)

{Serial.print ("\ n -------------- * * * * * * ------------------ / n"); Serial.print ("burchak_destinatsiyasi = / t"); Ketma -ket chop etish (burchakni belgilash); Serial.print ("\ n burchak4 = / t"); Seriyali chop etish (burchak3); agar (burchak_do'qlash burchagi3 +qadam_burchak) {burchak3 += qadam_burchak; moteur3.yozish (burchak3);} kechiktirish (100); } moteur3.yozish (burchakni belgilash); } void goto_moteur5 (int angle_destination) {

esa (burchak_datilish burchagi5+qadam_burchak)

{Serial.print ("\ n -------------- * * * * * * ------------------ / n"); Serial.print ("burchak_destinatsiyasi = / t"); Ketma -ket chop etish (burchakni belgilash); Serial.print ("\ n burchak5 = / t"); Seriyali bosma (burchak5); agar (burchak_do'qlash burchagi5 +qadam_burchak) {burchak5 += qadam_burchak; moteur5.yozish (burchak5);} kechiktirish (100); } moteur5.yozish (burchakni belgilash); }

TouchDown_Release () // TouchDown tugmalarini bo'shatish

{if (burchak5 <180) {burchak5 = burchak5+qadam_angle_mini; } moteur5.yozish (burchak5); }

TouchDown_Grab () // TouchDown tugmachasini bosish

{agar (burchak5> 0) {burchak5 = burchak5-qadam_angle_mini; } moteur5.yozish (burchak5); } void Base_Rotation () {if (burchak 0) {burchak = burchak-qadam_burchak; } boshqa burchak = 0; moteur.yozish (burchak); } bo'sh Waist_Rotation () {if (burchak1 20) {burchak1 = burchak1-qadam_burchak; } boshqa burchak1 = 20; moteur1.yozish (burchak1); } void Third_Arm_Rotation () {if (burchak2 0) {burchak2 = burchak2-qadam_burchak; } moteur2.yozish (burchak2); } bekor Fourth_Arm_Rotation () {if (burchak3 = 0) {burchak3 = burchak3-qadam_angle_mini; } moteur3.yozish (burchak3); }

6 -qadam: Bu shunday

Ko'rganingiz uchun tashakkur, umid qilamanki, siz baholaysiz!

Agar sizga ushbu ko'rsatma yoqqan bo'lsa, biz bilan ko'proq tanishishingiz mumkin! =)

Tavsiya: