विषयसूची:

रोबोटिक आर्म गेम - स्मार्टफोन कंट्रोलर: 6 कदम
रोबोटिक आर्म गेम - स्मार्टफोन कंट्रोलर: 6 कदम

वीडियो: रोबोटिक आर्म गेम - स्मार्टफोन कंट्रोलर: 6 कदम

वीडियो: रोबोटिक आर्म गेम - स्मार्टफोन कंट्रोलर: 6 कदम
वीडियो: Human vs Robot | Artificial Intelligence 2024, नवंबर
Anonim
रोबोटिक आर्म गेम - स्मार्टफोन कंट्रोलर
रोबोटिक आर्म गेम - स्मार्टफोन कंट्रोलर

नमस्कार !

यहाँ एक मजेदार ग्रीष्मकालीन खेल है: स्मार्टफोन द्वारा नियंत्रित रोबोटिक आर्म !!

जैसा कि आप वीडियो में देख सकते हैं, आप अपने स्मार्टफोन पर कुछ जॉयस्टिक के साथ आर्म को नियंत्रित कर सकते हैं।

उदाहरण के तौर पर कुछ दोहराए जाने वाले कार्यों को करने के लिए आप एक पैटर्न को भी सहेज सकते हैं, जिसे रोबोट लूप में पुन: पेश करेगा। लेकिन यह पैटर्न आपकी इच्छा के अनुसार संशोधित है !!!!

रचनात्मक बनो !

चरण 1: सामग्री

सामग्री
सामग्री

यहां आप वह सामग्री देख सकते हैं जिसकी आपको आवश्यकता है।

इस रोबोटिक आर्म को बनाने में आपको लगभग 50 € का खर्च आएगा। सॉफ़्टवेयर और टूल्स को बदला जा सकता है, लेकिन मैंने इस प्रोजेक्ट के लिए उनका उपयोग किया है।

चरण 2: रोबोटिक आर्म को 3डी प्रिंट करें

3डी रोबोटिक आर्म प्रिंट करें
3डी रोबोटिक आर्म प्रिंट करें
3डी रोबोटिक आर्म प्रिंट करें
3डी रोबोटिक आर्म प्रिंट करें
3डी रोबोटिक आर्म प्रिंट करें
3डी रोबोटिक आर्म प्रिंट करें

रोबोटिक आर्म 3डी प्रिंटेड था (हमारे प्रूसा i3 के साथ)।

वेबसाइट "HowtoMechatronics.com" के लिए धन्यवाद, उनकी एसटीएल फाइलें 3डी आर्म बनाने के लिए कमाल की हैं।

सभी टुकड़ों को प्रिंट करने में लगभग 20 घंटे का समय लगेगा।

चरण 3: इलेक्ट्रॉनिक असेंबल

इलेक्ट्रॉनिक असेंबल
इलेक्ट्रॉनिक असेंबल

असेंबल 2 भागों में अलग है:

एक इलेक्ट्रॉनिक हिस्सा, जहां डिजिटल पिन द्वारा Arduino सर्वो से जुड़ा है, और ब्लूटूथ डिवाइस (आरएक्स, टीएक्स) के साथ।

एक पावर पार्ट, जहां सर्वो 2 फोन चार्जर (5V, 2A अधिकतम) के साथ संचालित होते हैं।

चरण 4: स्मार्टफोन एप्लीकेशन

स्मार्टफोन एप्लीकेशन
स्मार्टफोन एप्लीकेशन

एप्लिकेशन ऐप आविष्कारक 2 पर बनाया गया था। हम 4 सर्वो को नियंत्रित करने के लिए 2 जॉयस्टिक और अंतिम पकड़ को नियंत्रित करने के लिए 2 और बटन का उपयोग करते हैं।

हम ब्लूटूथ मॉड्यूल (HC-06) का उपयोग करके आर्म और स्मार्टफोन को एक साथ जोड़ते हैं।

अंत में, एक बचत मोड उपयोगकर्ता को आर्म के लिए 9 पदों तक बचाने की अनुमति देता है।

हाथ फिर एक स्वचालित मोड में चला जाएगा, जहां वह सहेजे गए पदों को पुन: पेश करेगा।

चरण 5: Arduino कोड

Arduino कोड
Arduino कोड
Arduino कोड
Arduino कोड

// 08/19 - रोबोटिक आर्म स्मार्टफोन नियंत्रित

#शामिल करें #सत्य को सही परिभाषित करें #गलत को परिभाषित करें //************************* ***********

शब्द प्रतिनिधि; // मोट दूत डु मॉड्यूल Arduino या स्मार्टफोन

int chiffre_final = 0; इंट सीएमडी = 3; // वेरिएबल कमांडे डु सर्वो मोटर (ट्रोइसिएम फिल (नारंगी, जौन)) int cmd1=5; // सर्वो1 इंट cmd2=9; // सर्वो २ इंट cmd3 = १०; // सर्वो ३ // int cmd4 = १०; // सर्वो4 इंट cmd5=11; // पिन्स इंट एक्टिवेट_सेविंग = 0; सर्वो मोटर; // निश्चित नोट्रे सर्वोमोटर सर्वो मोटर1 पर; सर्वो मोटर २; सर्वो मोटर ३; // सर्वो मोटर 4; सर्वो मोटर 5; int step_angle_mini = 4; इंट स्टेप_एंगल = 3; इंट एंगल, एंगल1, एंगल3, एंगल5, एंगल2;//एंगल इंट पैस; इंट आर, आर1, आर2, आर3; इंट रजिस्ट्रार; बूलियन फिन = FALSE; बूलियन फिन1 = FALSE; बूलियन फिन2 = FALSE; बूलियन फिन3 = FALSE; बूलियन फिन4 = FALSE; शब्द डब्ल्यू; // परिवर्तनीय दूत डु स्मार्टफोन या मॉड्यूल 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];

// इंट कोण; // कोण डी रोटेशन (0 ए 180)

//********************सेट अप*************************** ******** शून्य सेटअप () {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); // ऑन रिली ल'ऑब्जेट औ पिन डे कमांडे मोटर1.अटैच(cmd1); moteur2.attach(cmd2); moteur3.attach(cmd3); // moteur4.attach(cmd4); moteur5.attach(cmd5); मोटर। लिखना (6); कोण = 6; moteur1.लिखें (१००); कोण1 = १००; moteur2.write(90); moteur3.लिखें (९०); //मोटर4.लिखें(12); moteur5.लिखें (९०); कोण = 6; कोण1=100; कोण २ = ९०; कोण3=90; कोण5=90; सीरियल.बेगिन (९६००); // पर्मेट्रा डी कम्युनिकर एयू मॉड्यूल ब्लूटूथ } //************************** ***** शून्य लूप () {

// सीरियल.प्रिंट ("कोण");

// सीरियल.प्रिंट (कोण); सीरियल.प्रिंट ("\t"); सीरियल.प्रिंट (एंगल 1); सीरियल.प्रिंट ("\t"); सीरियल.प्रिंट (एंगल 2); सीरियल.प्रिंट (" \t ");Serial.print(angle3);Serial.print ("\t");Serial.print(angle5);Serial.print ("\n");

// सीरियल.प्रिंट ("कोण");

इंट आई; डब्ल्यू = रिसीवर (); // वीए रिसीवोइर एक सूचना डु स्मार्टफोन पर, ला वेरिएबल डब्ल्यू स्विच (डब्ल्यू) {केस 1: टचडाउन_रिलीज (); ब्रेक; केस 2: टचडाउन_ग्रैब (); ब्रेक; केस 3: बेस_रोटेशन (); ब्रेक; केस 4: बेस_एंटीरोटेशन (); ब्रेक; केस 5: कमर_रोटेशन (); ब्रेक; केस 6: Waist_AntiRotation (); ब्रेक; केस 7: थर्ड_आर्म_रोटेशन (); ब्रेक; केस 8: थर्ड_आर्म_एंटीरोटेशन (); ब्रेक; केस 9: चौथा_आर्म_रोटेशन (); ब्रेक; केस 10: चौथा_आर्म_एंटीरोटेशन (); ब्रेक; // केस 11: पांचवां_आर्म_रोटेशन (); ब्रेक; // केस 12: पांचवां_आर्म_एंटीरोटेशन (); ब्रेक; केस २१: सीरियल.प्रिंट ("केस बटन १"); शिफ्रे_फ़ाइनल = १; सौवेगार्डे_पोज़िशन्स१ [०] = कोण; सौवेगार्डे_पोज़िशन १ [1] = कोण १; सॉवेगार्डे_पोज़िशन १ [२] = कोण २; सॉवेगार्डे_पोज़िशन १ [३] = एंगल३; सौवेगार्डे_पोज़िशन १ [४]_पोज़िशन्स =angle5;Serial.println(sauvegarde_positions1[1]);Serial.println(sauvegarde_positions1[2]);Serial.println(sauvegarde_positions1[3]);Serial.println(sauvegarde_positions1[4]); टूटना; केस २२: chiffre_final = २;sauvegarde_positions2[0] =angle;sauvegarde_positions2[1] =angle1;sauvegarde_positions2[2] =angle2;sauvegarde_positions2[3] =angle3;sauvegarde_positions2[4] =angle5; टूटना; केस २३: शिफ्रे_फ़ाइनल = ३; सॉवेगार्डे_पोज़िशन्स३ [०] = कोण; सॉवेगार्डे_पोज़िशन्स ३ [१] = कोण १; सॉवेगार्डे_पोज़िशन्स ३ [२] = एंगल २; सॉवेगार्डे_पोज़िशन्स ३ [३] = एंगल ३; सॉवेगार्डे_पोज़िशन्स ३ [४] = एंगल ५; ब्रेक; केस २४: शिफ्रे_फ़ाइनल = ४; सॉवेगार्डे_पोज़िशन्स४ [०] = कोण; सॉवेगार्डे_पोज़िशन्स४ [१] = कोण १; सॉवेगार्डे_पोज़िशन्स४ [२] = एंगल २; सॉवेगार्डे_पोज़िशन्स ४ [३] = एंगल३; सॉवेगार्डे_पोज़िशन्स ४ [४] = एंगल ५; टूटना; केस 25: chiffre_final = 5;sauvegarde_positions5[0] =angle;sauvegarde_positions5[1] =angle1;sauvegarde_positions5[2] =angle2;sauvegarde_positions5[3] =angle3;sauvegarde_positions5[4] =angle5; टूटना; केस २६: शिफ्रे_फ़ाइनल = ६; सॉवेगार्डे_पोज़िशन्स६ [०] = कोण; सॉवेगार्डे_पोज़िशन्स६ [१] = कोण १; सॉवेगार्डे_पोज़िशन्स ६ [२] = एंगल २; सॉवेगार्डे_पोज़िशन्स ६ [३] = एंगल३; सॉवेगार्डे_पोज़िशन्स ६ [४] = एंगल ५; टूटना; केस २७: chiffre_final = ७;sauvegarde_positions7[0] =angle;sauvegarde_positions7[1] =angle1;sauvegarde_positions7[2] =angle2;sauvegarde_positions7[3] =angle3;sauvegarde_positions7[4] =angle5; टूटना; केस 28: chiffre_final = 8;sauvegarde_positions8[0] =angle;sauvegarde_positions8[1] =angle1;sauvegarde_positions8[2] =angle2;sauvegarde_positions8[3] =angle3;sauvegarde_positions8[4] =angle5; टूटना; केस 29: chiffre_final = 9;sauvegarde_positions9[0] =angle;sauvegarde_positions9[1] =angle1;sauvegarde_positions9[2] =angle2;sauvegarde_positions9[3] =angle3;sauvegarde_positions9[4] =angle5; टूटना;

केस ३१: सीरियल.प्रिंट ("३१"); एक्टिवेट_सेविंग = १; शिफ्रे_फ़ाइनल = ०; ब्रेक;// BEGIN

केस 33: सीरियल.प्रिंट ("33"); एक्टिवेट_सेविंग = 0; ब्रेक;//बटन सेव डिफॉल्ट: ब्रेक; } if(w == 32) { Serial.print("\nReproduce\nChiffre final:"); सीरियल.प्रिंट (चिफ्रे_फ़ाइनल); सीरियल.प्रिंट ("\ n सौवेगार्ड स्थिति 1: / n"); for(i=0;i<5;i++){ Serial.print(sauvegarde_positions1);Serial.print("\t");} Serial.print("\n Sauvegarde position 2: \n"); for(i=0;i<5;i++){ Serial.print(sauvegarde_positions2);Serial.print("\t");} Serial.print("\n Sauvegarde position 3: \n"); for(i=0;i<5;i++){ Serial.print(sauvegarde_positions3);Serial.print("\t");} for (i = 1;i<=chiffre_final;i++) { Serial. प्रिंट ("\ n / n BEGIN / n लूप:"); सीरियल.प्रिंट (i); सीरियल.प्रिंट ("\ n"); स्विच (i) {केस १: गोटो_मोटर (*(sauvegarde_positions1));देरी (२००); goto_moteur1 (*(sauvegarde_positions1+1)); देरी (200); goto_moteur2 (*(sauvegarde_positions1+2));देरी (200); goto_moteur3 (*(sauvegarde_positions1+3)); देरी (200); goto_moteur5(*(sauvegarde_positions1+4));देरी (200); टूटना; केस २: गोटो_मोटर (*(sauvegarde_positions2));देरी (२००); goto_moteur1 (*(sauvegarde_positions2+1)); देरी (200); goto_moteur2(*(sauvegarde_positions2+2));delay(200); goto_moteur3 (*(sauvegarde_positions2+3)); देरी (200); goto_moteur5(*(sauvegarde_positions2+4));delay(200); टूटना; केस ३: गोटो_मोटर (*(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); टूटना; केस ४: गोटो_मोटर (*(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));delay(200); टूटना; केस ५: गोटो_मोटर (*(sauvegarde_positions5));देरी (२००); 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: गोटो_मोटर (*(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: गोटो_मोटर (*(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: गोटो_मोटर (*(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: गोटो_मोटर (*(sauvegarde_positions9));देरी (200); goto_moteur1 (*(sauvegarde_positions9+1)); देरी (200); goto_moteur2(*(sauvegarde_positions9+2));delay(200); goto_moteur3 (*(sauvegarde_positions9+3)); देरी (200); goto_moteur5(*(sauvegarde_positions9+4));delay(200); टूटना; } सीरियल.प्रिंट("\n********** फिन रिप्रोड्यूस ****** \एन "); देरी (500); } } /*सीरियल.प्रिंट ("प्रथम\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");*/

देरी (100); } //********************************** शब्द ******

वर्ड रिसीवोइर () {// फोन्क्शन परमेटेंट डी रिसीवोइर एल'इनफॉर्मेशन डू स्मार्टफोन

अगर (सीरियल.उपलब्ध ()) {w = सीरियल.रीड ();

सीरियल फ्लश ();

वापसी डब्ल्यू; }}

शून्य गोटो_मोटर (इंट एंगल_डेस्टिनेशन)

{ जबकि (एंगल_डेस्टिनेशन एंगल+स्टेप_एंगल) { सीरियल.प्रिंट ("\n --------------* * * * * *-------------- ----\एन"); सीरियल.प्रिंट ("एंगल_डेस्टिनेशन = / टी"); सीरियल.प्रिंट (angle_destination); सीरियल.प्रिंट ("\ n कोण 1 = / t "); सीरियल। प्रिंट (कोण); अगर (एंगल_डेस्टिनेशन एंगल + स्टेप_एंगल) {कोण = एंगल + स्टेप_एंगल; मोटूर। राइट (एंगल);} देरी (100); } moteur.write(angle_destination); } शून्य गोटो_मोटर1 (इंट एंगल_डेस्टिनेशन) {जबकि (एंगल_डेस्टिनेशन एंगल1+स्टेप_एंगल) { सीरियल.प्रिंट ("\n --------------* * * * * *------- -----------\एन"); सीरियल.प्रिंट ("एंगल_डेस्टिनेशन = / टी"); सीरियल.प्रिंट (angle_destination); Serial.print("\n angle2 = \t");Serial.print(angle1); if(angle_destination angle1 +step_angle){angle1 += step_angle; moteur1.write(angle1);;}देरी(100); } moteur1.write(angle_destination); } शून्य गोटो_मोटर२ (इंट एंगल_डेस्टिनेशन) {

जबकि (angle_destination angle2+step_angle)

{ सीरियल.प्रिंट ("\n --------------* * * * * *------------------\n"); सीरियल.प्रिंट ("एंगल_डेस्टिनेशन = / टी"); सीरियल.प्रिंट (angle_destination); सीरियल.प्रिंट ("\ n कोण ३ = / t"); सीरियल। प्रिंट (कोण २); if(angle_destination angle2 +step_angle){angle2+=step_angle; moteur2.write(angle2);} देरी (100); } moteur2.write(angle_destination); } शून्य गोटो_मोटर3 (इंट एंगल_डेस्टिनेशन) {

जबकि (एंगल_डेस्टिनेशन एंगल3+स्टेप_एंगल)

{ सीरियल.प्रिंट ("\n --------------* * * * * *------------------\n"); सीरियल.प्रिंट ("एंगल_डेस्टिनेशन = / टी"); सीरियल.प्रिंट (angle_destination); Serial.print("\n angle4 = \t "); Serial.print(angle3); if(angle_destination angle3 +step_angle){angle3+=step_angle; moteur3.write(angle3);} देरी(100); } moteur3.write(angle_destination); } शून्य गोटो_मोटर 5 (इंट कोण_डेस्टिनेशन) {

जबकि (angle_destination angle5+step_angle)

{ सीरियल.प्रिंट ("\n --------------* * * * * *------------------\n"); सीरियल.प्रिंट ("एंगल_डेस्टिनेशन = / टी"); सीरियल.प्रिंट (angle_destination); Serial.print("\n angle5 = \t");Serial.print(angle5); if(angle_destination angle5 +step_angle){angle5+=step_angle; moteur5.write(angle5);} देरी(100); } moteur5.write(angle_destination); }

शून्य TouchDown_Release () // टचडाउन बटन रिलीज़

{ अगर (कोण ५ <१८०) {कोण ५ = कोण ५ + चरण_कोण_मिनी; } moteur5.write(angle5); }

शून्य टचडाउन_ग्रैब () // टचडाउन बटन ग्रैब

{ अगर (कोण ५ > ०) { कोण ५ = कोण ५-चरण_कोण_मिनी; } moteur5.write(angle5); } शून्य बेस_रोटेशन () { अगर (कोण 0) {कोण = कोण-चरण_कोण; } और कोण = 0; मोटर। लिखना (कोण); } शून्य कमर_रोटेशन () { अगर (कोण १ २०) {कोण १ = कोण १-चरण_कोण; } और कोण1 = 20; मोटर १.लिखें (कोण १); } शून्य तीसरा_आर्म_रोटेशन () { अगर (कोण २ ०) {कोण २ = कोण २-चरण_कोण; } moteur2.write(angle2); } शून्य चौथा_आर्म_रोटेशन () { अगर (कोण ३ = ०) {कोण ३ = कोण ३-चरण_कोण_मिनी; } moteur3.write(angle3); }

चरण 6: बस इतना ही

देखने के लिए धन्यवाद, मुझे आशा है कि आपने सराहना की!

यदि आपको यह निर्देश पसंद आया है, तो आप निश्चित रूप से अधिक के लिए हमारे पास आ सकते हैं! =)

सिफारिश की: