Мазмұны:

Роботтық қол ойыны - смартфон контроллері: 6 қадам
Роботтық қол ойыны - смартфон контроллері: 6 қадам

Бейне: Роботтық қол ойыны - смартфон контроллері: 6 қадам

Бейне: Роботтық қол ойыны - смартфон контроллері: 6 қадам
Бейне: Вебинар №1. Ella Atkins про создание умных технологий в вашей жизни. Beyond Robotics 2024, Шілде
Anonim
Робот қолы ойыны - смартфон контроллері
Робот қолы ойыны - смартфон контроллері

Сәлеметсіз бе !

Мұнда көңілді жазғы ойын: смартфон басқаратын робот қолы !!

Бейнеде көріп тұрғаныңыздай, сіз смартфондағы джойстиктердің көмегімен қолды басқара аласыз.

Сіз сондай -ақ робот циклде қайталанатын үлгіні сақтай аласыз, мысалы, бірнеше қайталанатын тапсырмаларды орындау үшін. Бірақ бұл үлгі сіз қалағандай модульдендірілген !!!!

Шығармашылық болыңыз!

1 -қадам: материалдар

Материалдар
Материалдар

Мұнда сіз қажетті материалды көре аласыз.

Бұл роботты жасау үшін сізге 50 евро қажет. Бағдарламалық қамтамасыз ету мен құралдарды ауыстыруға болады, бірақ мен оларды осы жоба үшін қолдандым.

2 -қадам: Робот қолын 3D басып шығару

3D робот қолын басып шығарыңыз
3D робот қолын басып шығарыңыз
3D робот қолын басып шығарыңыз
3D робот қолын басып шығарыңыз
3D робот қолын басып шығарыңыз
3D робот қолын басып шығарыңыз

Robotic Arm 3D басып шығарылды (біздің prusa i3 көмегімен).

«HowtoMechatronics.com» веб -сайтының арқасында оның STL файлдары 3D қолын жасау үшін керемет.

Барлық бөліктерді басып шығаруға шамамен 20 сағат кетеді.

3 -қадам: электронды монтаж

Электронды монтаж
Электронды монтаж

Монтаж 2 бөліктен тұрады:

Электрондық бөлік, онда arduino цифрлық түйреуіштермен және Bluetooth құрылғысымен (Rx, Tx) сервоға қосылады.

Қуат бөлігі, онда серво 2 телефон зарядтағышымен қуатталады (5V, 2A max).

4 -қадам: смартфонға қосымша

Смартфон қосымшасы
Смартфон қосымшасы

Қолданба қосымшаның өнертапқышы 2 -де жасалды. Біз соңғы серпімді басқару үшін 4 серво мен тағы 2 түймені басқару үшін 2 джойстикті қолданамыз.

Қол мен смартфонды Bluetooth модулін (HC-06) пайдаланып қосамыз.

Ақырында, үнемдеу режимі пайдаланушыға Arm үшін 9 позицияға дейін сақтауға мүмкіндік береді.

Содан кейін қол автоматты режимге өтеді, онда ол сақталған позицияларды шығарады.

5 -қадам: Arduino коды

Arduino коды
Arduino коды
Arduino коды
Arduino коды

// 08/19 - Робот қолмен басқарылатын смартфон

#қосу #ШЫНДЫҚ шындықты анықтау #ЖАЛҒАН жалған // ******************** ДЕКЛАРАЦИЯЛАР ***************** ***********

сөз өкілі; // Arduino немесе смартфонның модульдік моделі

int chiffre_final = 0; int cmd = 3; // ауыспалы командалық қызмет көрсетуші (troisième fil (қызғылт сары, сары)) int cmd1 = 5; // servo1 int cmd2 = 9; // servo2 int cmd3 = 10; // servo3 // int cmd4 = 10; // servo4 int cmd5 = 11; // pince int activate_saving = 0; Серво -мотер; // on définit notre servomoteur Servo moteur1; Серво -мотер 2; Серво моеур3; // Servo moteur4; Қызметші мотер 5 int step_angle_mini = 4; int step_angle = 3; int бұрышы, бұрыш1, бұрыш3, бұрыш5, бұрыш2; // бұрыш int pas; int r, r1, r2, r3; int тіркеуші; логикалық фин = FALSE; логикалық фин1 = ЖАЛҒАН; логикалық фин2 = ЖАЛҒАН; логикалық фин3 = ЖАЛҒАН; логикалық фин4 = ЖАЛҒАН; сөз w; // смартфон немесе модуль 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 бұрышы; // бұрылу бұрышы (0 мен 180)

//********************ОРНАТУ*************************** ******** 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.attach (cmd2); moteur3.tachach (cmd3); // moteur4.attach (cmd4); moteur5.tachach (cmd5); moteur.write (6); бұрыш = 6; moteur1.write (100); бұрыш1 = 100; moteur2.write (90); moteur3.жазу (90); //moteur4.write(12); moteur5.write (90); бұрыш = 6; бұрыш1 = 100; бұрыш2 = 90; бұрыш3 = 90; бұрыш 5 = 90; Serial.begin (9600); // Bluetooth модулінің хабарлауы} // ******************** БУКЛ ****************** ***************** void loop () {

// Serial.print («бұрыш»);

//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 = recevoir (); // смартфон туралы ақпарат жоқ, ауыспалы w қосқышы (w) {1 -жағдай: TouchDown_Release (); break; 2 -жағдай: TouchDown_Grab (); үзіліс; 3 -жағдай: Base_Rotation (); үзіліс; 4 -жағдай: Base_AntiRotation (); үзіліс; 5 -жағдай: Waist_Rotation (); үзіліс; 6 -жағдай: Waist_AntiRotation (); үзіліс; 7 -жағдай: Third_Arm_Rotation (); үзіліс; 8 -жағдай: Third_Arm_AntiRotation (); үзіліс; 9 -жағдай: Fourth_Arm_Rotation (); үзіліс; 10 -жағдай: Fourth_Arm_AntiRotation (); үзіліс; // 11 жағдай: Fifth_Arm_Rotation (); break; // 12 жағдай: Fifth_Arm_AntiRotation (); break; 21 жағдай: Serial.print («регистр түймесі 1»); chiffre_final = 1; sauvegarde_positions1 [0] = бұрыш; sauvegarde_positions1 [1] = бұрыш1; sauvegarde_positions1 [2] = бұрыш2; sauvegarde_positions1 [3] = бұрыш 3] = бұрыш5; Serial.println (sauvegarde_positions1 [1]); Serial.println (sauvegarde_positions1 [2]); Serial.println (sauvegarde_positions1 [3]); Serial.println (sauvegarde_positions1 [4] үзіліс; жағдай 22: chiffre_final = 2; sauvegarde_positions2 [0] = бұрыш; sauvegarde_pozitions2 [1] = бұрыш1; sauvegarde_pozitions2 [2] = бұрыш2; sauvegarde_pozitions2 [3] = бұрыш3; sauvegarde_positions2 [4] үзіліс; жағдай 23: chiffre_final = 3; sauvegarde_positions3 [0] = бұрыш; sauvegarde_pozitions3 [1] = бұрыш1; sauvegarde_positions3 [2] = бұрыш2; sauvegarde_pozitions3 [3] = бұрыш3; sauvegarde_positions3 [4] жағдай 24: chiffre_final = 4; sauvegarde_positions4 [0] = бұрыш; sauvegarde_pozitions4 [1] = бұрыш1; sauvegarde_positions4 [2] = бұрыш2; sauvegarde_pozitions4 [3] = бұрыш3; sauvegarde_positions4 [4] үзіліс; жағдай 25: chiffre_final = 5; sauvegarde_positions5 [0] = бұрыш; sauvegarde_pozitions5 [1] = бұрыш1; sauvegarde_pozitions5 [2] = бұрыш2; sauvegarde_pozitions5 [3] = бұрыш3; sauvegarde_positions5 [4] үзіліс; 26 -жағдай: chiffre_final = 6; sauvegarde_positions6 [0] = бұрыш; sauvegarde_pozitions6 [1] = бұрыш1; sauvegarde_pozitions6 [2] = бұрыш2; sauvegarde_pozitions6 [3] = бұрыш3; sauvegarde_positions6 [4] үзіліс; жағдай 27: chiffre_final = 7; sauvegarde_positions7 [0] = бұрыш; sauvegarde_pozitions7 [1] = бұрыш1; sauvegarde_positions7 [2] = бұрыш2; sauvegarde_pozitions7 [3] = бұрыш3; sauvegarde_positions7 [4] үзіліс; 28 -жағдай: chiffre_final = 8; sauvegarde_positions8 [0] = бұрыш; sauvegarde_pozitions8 [1] = бұрыш1; sauvegarde_positions8 [2] = бұрыш2; sauvegarde_pozitions8 [3] = бұрыш3; sauvegarde_positions8 [4] үзіліс; 29 -жағдай: chiffre_final = 9; sauvegarde_positions9 [0] = бұрыш; sauvegarde_pozitions9 [1] = бұрыш1; sauvegarde_pozitions9 [2] = бұрыш2; sauvegarde_pozitions9 [3] = бұрыш3; sauvegarde_positions9 [4] үзіліс;

31 -жағдай: Serial.print («31»); activate_saving = 1; chiffre_final = 0; үзіліс; // БАСТА

33 -жағдай: Serial.print («33»); activate_saving = 0; break; // BUTTON SAVE әдепкі: break; } if (w == 32) {Serial.print («\ nҚайта шығару / nChiffre финалы:»); Serial.print (chiffre_final); Serial.print («\ n Sauvegarde позициясы 1: / n»); for (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions1 ); Serial.print («\ t»);} Serial.print («\ n Sauvegarde позициясы 2: / n»); for (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions2 ); Serial.print («\ t»);} Serial.print («\ n Sauvegarde позициясы 3: / n»); for (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions3 ); Serial.print («\ t»);} for (i = 1; i <= chiffre_final; i ++) {Сериялық. басып шығару («\ n / n БАСТАУ / nҚайталау:»); Serial.print (i); Serial.print («\ n»); switch (i) {1 -жағдай: goto_moteur (*(sauvegarde_positions1)); кешігу (200); goto_moteur1 (*(sauvegarde_positions1+1)); кешіктіру (200); goto_moteur2 (*(sauvegarde_positions1+2)); кешіктіру (200); goto_moteur3 (*(sauvegarde_positions1+3)); кешіктіру (200); goto_moteur5 (*(sauvegarde_positions1+4)); кешіктіру (200); үзіліс; 2 -жағдай: goto_moteur (*(sauvegarde_positions2)); кешіктіру (200); goto_moteur1 (*(sauvegarde_positions2+1)); кешіктіру (200); goto_moteur2 (*(sauvegarde_positions2+2)); кешіктіру (200); goto_moteur3 (*(sauvegarde_positions2+3)); кешіктіру (200); goto_moteur5 (*(sauvegarde_positions2+4)); кешіктіру (200); үзіліс; 3 -жағдай: goto_moteur (*(sauvegarde_positions3)); кешіктіру (200); goto_moteur1 (*(sauvegarde_positions3+1)); кешіктіру (200); goto_moteur2 (*(sauvegarde_positions3+2)); кешіктіру (200); goto_moteur3 (*(sauvegarde_positions3+3)); кешіктіру (200); goto_moteur5 (*(sauvegarde_positions3+4)); кешіктіру (200); үзіліс; 4 -жағдай: goto_moteur (*(sauvegarde_positions4)); кешіктіру (200); goto_moteur1 (*(sauvegarde_positions4+1)); кешіктіру (200); goto_moteur2 (*(sauvegarde_positions4+2)); кешіктіру (200); goto_moteur3 (*(sauvegarde_positions4+3)); кешіктіру (200); goto_moteur5 (*(sauvegarde_positions4+4)); кешіктіру (200); үзіліс; 5 -жағдай: goto_moteur (*(sauvegarde_positions5)); кешіктіру (200); goto_moteur1 (*(sauvegarde_positions5+1)); кешіктіру (200); goto_moteur2 (*(sauvegarde_positions5+2)); кешіктіру (200); goto_moteur3 (*(sauvegarde_positions5+3)); кешіктіру (200); goto_moteur5 (*(sauvegarde_positions5+4)); кешіктіру (200); үзіліс; 6 -жағдай: goto_moteur (*(sauvegarde_positions6)); кешіктіру (200); goto_moteur1 (*(sauvegarde_positions6+1)); кешіктіру (200); goto_moteur2 (*(sauvegarde_positions6+2)); кешіктіру (200); goto_moteur3 (*(sauvegarde_positions6+3)); кешіктіру (200); goto_moteur5 (*(sauvegarde_positions6+4)); кешіктіру (200); үзіліс; 7 -жағдай: goto_moteur (*(sauvegarde_positions7)); кешіктіру (200); goto_moteur1 (*(sauvegarde_positions7+1)); кешіктіру (200); goto_moteur2 (*(sauvegarde_positions7+2)); кешігу (200); goto_moteur3 (*(sauvegarde_positions7+3)); кешіктіру (200); goto_moteur5 (*(sauvegarde_positions7+4)); кешігу (200); үзіліс; 8 -жағдай: goto_moteur (*(sauvegarde_positions8)); кешіктіру (200); goto_moteur1 (*(sauvegarde_positions8+1)); кешіктіру (200); goto_moteur2 (*(sauvegarde_positions8+2)); кешіктіру (200); goto_moteur3 (*(sauvegarde_positions8+3)); кешіктіру (200); goto_moteur5 (*(sauvegarde_positions8+4)); кешіктіру (200); үзіліс; 9 -жағдай: goto_moteur (*(sauvegarde_positions9)); кешігу (200); goto_moteur1 (*(sauvegarde_positions9+1)); кешіктіру (200); goto_moteur2 (*(sauvegarde_positions9+2)); кешіктіру (200); goto_moteur3 (*(sauvegarde_positions9+3)); кешіктіру (200); goto_moteur5 (*(sauvegarde_positions9+4)); кешіктіру (200); үзіліс; } Serial.print («\ n *********************** ҚАРЫПТЫ ҚАЙТА ӨНДІРУ ***************** / n «); кешіктіру (500); }} /*Serial.print («дебют / 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 («\ nфин / n»);*/

кешіктіру (100); } // **************************** ФУНКЦИЯЛАР ****************** ******************

word recevoir () {// fonction permettant de recevoir l'in information смартфон

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

Serial.flush ();

w қайтару; }}

void goto_moteur (int angle_destination)

{while (бұрыш_мақсат бұрышы+қадам_бұрышы) {Serial.print («\ n -------------- * * * * * * -------------- ---- / n «); Serial.print («angle_destination = / t»); Serial.print (бұрыш_мақсаты); Serial.print («\ n angle1 = / t»); Serial.print (бұрыш); if (бұрыштық_бақылау бұрышы + қадамдық_бұрыш) {бұрыш = бұрыш + қадам_бұрыш; moteur.write (бұрыш);} кешіктіру (100); } moteur.write (бұрыш_мақсаты); } void goto_moteur1 (int angle_destination) {while (бұрыштың_ойлану бұрышы1+қадам_бұрышы) {Serial.print («\ n -------------- * * * * * * ------- ----------- / n «); Serial.print («angle_destination = / t»); Serial.print (бұрыш_мақсаты); Serial.print («\ n angle2 = / t»); Serial.print (бұрыш1); егер (бұрыштың тағайындалу бұрышы1 +қадамның бұрышы) {бұрышы1 += қадамдық бұрышы; moteur1.жазу (бұрыш1);;} кешіктіру (100); } moteur1.write (бұрыш_мақсаты); } void goto_moteur2 (int angle_destination) {

while (бұрыштың тағайындалу бұрышы2+қадамның бұрышы)

{Serial.print («\ n -------------- * * * * * * ------------------ / n»); Serial.print («angle_destination = / t»); Serial.print (бұрыш_мақсаты); Serial.print («\ n angle3 = / t»); Serial.print (бұрыш2); егер (бұрыштың тағайындалу бұрышы2 +қадамның бұрышы) {бұрышы2 += қадамдық бұрышы; moteur2.write (бұрыш2);} кешіктіру (100); } moteur2.write (бұрыш_мақсаты); } void goto_moteur3 (int angle_destination) {

while (бұрыштың тағайындалу бұрышы3+қадамның бұрышы)

{Serial.print («\ n -------------- * * * * * * ------------------ / n»); Serial.print («angle_destination = / t»); Serial.print (бұрыш_мақсаты); Serial.print («\ n angle4 = / t»); Serial.print (angle3); if (бұрыштың тағайындалу бұрышы3 +қадамның бұрышы) {бұрышы3 += қадамның бұрышы; moteur3.жазу (бұрыш3);} кешіктіру (100); } moteur3.write (бұрыштық_мақсат); } void goto_moteur5 (int angle_destination) {

while (бұрыштың_айналу бұрышы5+қадамның бұрышы)

{Serial.print («\ n -------------- * * * * * * ------------------ / n»); Serial.print («angle_destination = / t»); Serial.print (бұрыш_мақсаты); Serial.print («\ n angle5 = / t»); Serial.print (бұрыш5); егер (бұрыш_мақсат бұрышы5 +қадам_бұрыш) {бұрыш5 += қадам_бұрыш; moteur5.write (бұрыш5);} кешіктіру (100); } moteur5.write (бұрыш_мақсаты); }

жарамсыз TouchDown_Release () // TouchDown түймесін босату

{егер (бұрыш5 <180) {бұрыш5 = бұрыш5+қадам_бұрыш_мини; } moteur5.write (бұрыш5); }

TouchDown_Grab () // TouchDown түймесін алудың күші жоқ

{егер (бұрыш5> 0) {бұрыш5 = бұрыш5-қадам_ұңқыр_мини; } moteur5.write (бұрыш5); } void Base_Rotation () {if (0 бұрышы) {бұрыш = бұрыш-қадам_бұрышы; } else бұрышы = 0; moteur.write (бұрыш); } жарамсыз Waist_Rotation () {if (бұрыш1 20) {бұрыш1 = бұрыш1-қадам_бұрыш; } else бұрышы1 = 20; moteur1.жазу (бұрыш1); } void Third_Arm_Rotation () {if (angle2 0) {angle2 = angle2-step_angle; } moteur2.write (бұрыш2); } void Fourth_Arm_Rotation () {if (angle3 = 0) {angle3 = angle3-step_angle_mini; } moteur3.write (бұрыш3); }

6 -қадам: Міне

Қарағандарыңызға рахмет, бағаладыңыз деп сенемін!

Егер сізге осы нұсқаулық ұнаған болса, бізге келуге болатынын біле аласыз! =)

Ұсынылған: