সুচিপত্র:

রোবোটিক আর্ম গেম - স্মার্টফোন কন্ট্রোলার: 6 টি ধাপ
রোবোটিক আর্ম গেম - স্মার্টফোন কন্ট্রোলার: 6 টি ধাপ

ভিডিও: রোবোটিক আর্ম গেম - স্মার্টফোন কন্ট্রোলার: 6 টি ধাপ

ভিডিও: রোবোটিক আর্ম গেম - স্মার্টফোন কন্ট্রোলার: 6 টি ধাপ
ভিডিও: রোবট যখন গার্মেন্টসকর্মী! | Robotic Arm | Essential-Infotech | Tech News | Somoy TV 2024, জুলাই
Anonim
রোবোটিক আর্ম গেম - স্মার্টফোন কন্ট্রোলার
রোবোটিক আর্ম গেম - স্মার্টফোন কন্ট্রোলার

হ্যালো !

এখানে একটি মজার গ্রীষ্মকালীন খেলা: স্মার্টফোন দ্বারা নিয়ন্ত্রিত রোবোটিক আর্ম !!

আপনি ভিডিওতে দেখতে পাচ্ছেন, আপনি আপনার স্মার্টফোনে কিছু জয়স্টিক দিয়ে আর্ম নিয়ন্ত্রণ করতে পারেন।

আপনি একটি প্যাটার্ন সংরক্ষণ করতে পারেন, যে রোবট একটি লুপে পুনরুত্পাদন করবে, উদাহরণস্বরূপ কিছু পুনরাবৃত্তিমূলক কাজ করার জন্য। কিন্তু এই প্যাটার্নটি আপনার ইচ্ছামতো মডিউলযোগ্য !!!!

সৃজনশীল হও !

ধাপ 1: উপকরণ

উপকরণ
উপকরণ

এখানে আপনি আপনার প্রয়োজনীয় উপাদান দেখতে পারেন।

এই রোবটিক আর্মটি তৈরি করতে আপনার প্রায় 50 cost খরচ হবে। সফ্টওয়্যার এবং সরঞ্জামগুলি প্রতিস্থাপন করা যেতে পারে, তবে আমি এই প্রকল্পের জন্য সেগুলি ব্যবহার করেছি।

ধাপ 2: 3D প্রিন্ট রোবটিক আর্ম

3D প্রিন্ট রোবটিক আর্ম
3D প্রিন্ট রোবটিক আর্ম
3D প্রিন্ট রোবটিক আর্ম
3D প্রিন্ট রোবটিক আর্ম
3D প্রিন্ট রোবটিক আর্ম
3D প্রিন্ট রোবটিক আর্ম

রোবটিক আর্মটি 3D মুদ্রিত ছিল (আমাদের prusa i3 সহ)।

ওয়েবসাইট "HowtoMechatronics.com" কে ধন্যবাদ, তার এসটিএল ফাইলগুলি একটি 3D বাহু তৈরির জন্য অসাধারণ।

সমস্ত টুকরা মুদ্রণ করতে প্রায় 20 ঘন্টা সময় লাগবে।

ধাপ 3: ইলেকট্রনিক মন্টেজ

ইলেকট্রনিক মন্টেজ
ইলেকট্রনিক মন্টেজ

মন্টেজ 2 ভাগে পৃথক:

একটি ইলেকট্রনিক অংশ, যেখানে আরডুইনো ডিজিটাল পিন এবং ব্লুটুথ ডিভাইস (Rx, Tx) দ্বারা সার্ভিসের সাথে সংযুক্ত থাকে।

একটি পাওয়ার পার্ট, যেখানে সার্ভোসগুলি 2 টি ফোন চার্জার (5V, 2A সর্বোচ্চ) দিয়ে চালিত হয়।

ধাপ 4: স্মার্টফোন অ্যাপ্লিকেশন

স্মার্টফোন অ্যাপ্লিকেশন
স্মার্টফোন অ্যাপ্লিকেশন

অ্যাপ্লিকেশনটি আবিষ্কারক 2 -এ তৈরি করা হয়েছিল।

আমরা একটি ব্লুটুথ মডিউল (HC-06) ব্যবহার করে আর্ম এবং স্মার্টফোনকে একসাথে সংযুক্ত করি।

অবশেষে, একটি সংরক্ষণ মোড ব্যবহারকারীকে আর্মের জন্য 9 টি অবস্থান সংরক্ষণ করতে দেয়।

বাহু তারপর একটি স্বয়ংক্রিয় মোডে যাবে, যেখানে সে সংরক্ষিত অবস্থানগুলি পুনরুত্পাদন করবে।

ধাপ 5: Arduino কোড

আরডুইনো কোড
আরডুইনো কোড
আরডুইনো কোড
আরডুইনো কোড

// 08/19 - রোবটিক আর্ম স্মার্টফোন নিয়ন্ত্রিত

#অন্তর্ভুক্ত করুন #সত্য সত্য সংজ্ঞায়িত করুন মিথ্যা মিথ্যা নির্ধারণ করুন // ******************** ঘোষণা ***************** ***********

শব্দ প্রতিনিধি; // mot envoyé du module Arduino au স্মার্টফোন

int chiffre_final = 0; int cmd = 3; // ভেরিয়েবল কমান্ড ডু সার্ভো মোটর (troisième fil (কমলা, jaune)) 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; // définit notre servomoteur Servo moteur1; Servo moteur2; Servo moteur3; // Servo moteur4; Servo moteur5; int step_angle_mini = 4; int step_angle = 3; int কোণ, কোণ 1, কোণ 3, কোণ 5, কোণ 2; // কোণ ইন্ট পাস; int r, r1, r2, r3; int enregistrer; বুলিয়ান ফিন = মিথ্যা; বুলিয়ান fin1 = মিথ্যা; বুলিয়ান ফিন 2 = মিথ্যা; বুলিয়ান ফিন 3 = মিথ্যা; বুলিয়ান ফিন 4 = মিথ্যা; শব্দ w; // ভেরিয়েবল এনভয়é ডু স্মার্টফোন এউ মডিউল আরডুইনো ইন্টার সাউভগার্ডে_পজিশন 1 [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)

// ******************** সেটআপ *************************** ******** অকার্যকর সেটআপ () {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); // relie l'objet au pin de commande moteur1.attach (cmd1); moteur2.attach (cmd2); moteur3.attach (cmd3); // moteur4.attach (cmd4); moteur5.attach (cmd5); moteur.write (6); কোণ = 6; moteur1.write (100); কোণ 1 = 100; moteur2.write (90); moteur3.write (90); //moteur4.write (12); moteur5.write (90); কোণ = 6; কোণ 1 = 100; কোণ 2 = 90; কোণ 3 = 90; কোণ 5 = 90; Serial.begin (9600); // permettra de communiquer au module Bluetooth} // ******************** BOUCLE ****************** ***************** অকার্যকর লুপ () {

// সিরিয়াল.প্রিন্ট ("কোণ");

// সিরিয়াল.প্রিন্ট (আঙ্গুল); সিরিয়াল.প্রিন্ট ("\ টি"); সিরিয়াল। Serial.print (angle3); Serial.print ("\ t"); Serial.print (angle5);

// সিরিয়াল.প্রিন্ট ("আঙ্গুল");

int i; w = গ্রহণযোগ্য (); // on va recevoir une information du smartphone, la variable w switch (w) {case 1: TouchDown_Release (); break; কেস 2: টাচডাউন_গ্র্যাব (); বিরতি; কেস 3: Base_Rotation (); break; কেস 4: Base_AntiRotation (); break; কেস 5: কোমর_ ঘূর্ণন (); বিরতি; কেস 6: কোমর_এন্টি রোটেশন (); বিরতি; কেস 7: থার্ড_আর্ম_রোটেশন (); বিরতি; কেস 8: থার্ড_আর্ম_এন্টি রোটেশন (); বিরতি; কেস 9: চতুর্থ_আর্ম_রোটেশন (); বিরতি; কেস 10: চতুর্থ_আর্ম_এন্টি রোটেশন (); বিরতি; // case 11: Fifth_Arm_Rotation (); break; // case 12: Fifth_Arm_AntiRotation (); break; কেস ২১: সিরিয়াল। = কোণ 5; Serial.println (sauvegarde_positions1 [1]); Serial.println (sauvegarde_positions1 [2]); বিরতি; কেস 22: chiffre_final = 2; sauvegarde_positions2 [0] = কোণ; sauvegarde_positions2 [1] = angle1; sauvegarde_positions2 [2] = angle2; বিরতি; কেস 23: chiffre_final = 3; sauvegarde_positions3 [0] = কোণ; sauvegarde_positions3 [1] = angle1; sauvegarde_positions3 [2] = angle2; কেস 24: chiffre_final = 4; sauvegarde_positions4 [0] = কোণ; sauvegarde_positions4 [1] = angle1; বিরতি; কেস 25: chiffre_final = 5; sauvegarde_positions5 [0] = কোণ; sauvegarde_positions5 [1] = angle1; sauvegarde_positions5 [2] = angle2; বিরতি; কেস 26: chiffre_final = 6; sauvegarde_positions6 [0] = কোণ; sauvegarde_positions6 [1] = angle1; sauvegarde_positions6 [2] = angle2; বিরতি; কেস 27: chiffre_final = 7; sauvegarde_positions7 [0] = কোণ; sauvegarde_positions7 [1] = angle1; sauvegarde_positions7 [2] = angle2; বিরতি; কেস 28: chiffre_final = 8; sauvegarde_positions8 [0] = কোণ; sauvegarde_positions8 [1] = angle1; sauvegarde_positions8 [2] = angle2; বিরতি; কেস 29: chiffre_final = 9; sauvegarde_positions9 [0] = কোণ; sauvegarde_positions9 [1] = angle1; sauvegarde_positions9 [2] = angle2; বিরতি;

মামলা 31: সিরিয়াল.প্রিন্ট ("31"); activate_saving = 1; chiffre_final = 0; বিরতি; // শুরু

কেস 33: সিরিয়াল.প্রিন্ট ("33"); activate_saving = 0; বিরতি; // বাটন ডিফল্ট সংরক্ষণ করুন: বিরতি; } যদি (w == 32) {Serial.print ("nReproduce / nChiffre final:"); সিরিয়াল.প্রিন্ট (chiffre_final); Serial.print ("\ n Sauvegarde অবস্থান 1: / n"); (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions1 ); (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions2 ); (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"); সুইচ (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); বিরতি; } সিরিয়াল.প্রিন্ট ("** n *********************** ফিন রিপ্রুডেস / n "); বিলম্ব (500); }} /*Serial.print ("আত্মপ্রকাশ / n"); সিরিয়াল.প্রিন্ট (sauvegarde_positions1 [0]); Serial.print ("\ t"); Serial.print (sauvegarde_positions1 [1]); Serial.print ("\ t"); Serial.print (sauvegarde_positions1 [3]); Serial.print ("\ t"); Serial.print (sauvegarde_positions1 [4]); সিরিয়াল.প্রিন্ট (sauvegarde_positions2 [0]); Serial.print ("\ t"); Serial.print (sauvegarde_positions2 [1]); Serial.print ("\ t"); Serial.print ("\ t"); Serial.print (sauvegarde_positions2 [3]); Serial.print ("\ t"); Serial.print (sauvegarde_positions2 [4]); সিরিয়াল.প্রিন্ট (sauvegarde_positions3 [0]); Serial.print ("\ t"); Serial.print (sauvegarde_positions3 [1]); Serial.print ("\ t"); Serial.print (sauvegarde_positions3 [3]); Serial.print ("\ t"); Serial.print (sauvegarde_positions3 [4]); সিরিয়াল.প্রিন্ট (sauvegarde_positions4 [0]); Serial.print ("\ t"); Serial.print (sauvegarde_positions4 [1]); Serial.print ("\ t"); Serial.print (sauvegarde_positions4 [3]); Serial.print ("\ t"); Serial.print (sauvegarde_positions4 [4]);

Serial.print ("f nfin / n");*/

বিলম্ব (100); } // **************************** ফাংশন ****************** ******************

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

যদি (Serial.available ()) {w = Serial.read ();

Serial.flush ();

ফেরত w; }}

অকার্যকর goto_moteur (int angle_destination)

{while (angle_destination angle+step_angle) {Serial.print ("\ n -------------- * * * * * * * -------------- ---- / n "); Serial.print ("angle_destination = / t"); সিরিয়াল.প্রিন্ট (এঙ্গেল_ডেস্টিনেশন); Serial.print ("angle n angle1 = / t"); সিরিয়াল.প্রিন্ট (কোণ); যদি (কোণ_নির্দেশ কোণ + ধাপ_কোণ) {কোণ = কোণ + ধাপ_অঙ্গ; moteur.write (কোণ);} বিলম্ব (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 ("\ n angle2 = / t"); Serial.print (angle1); যদি (angle_destination angle1 +step_angle) {angle1 += step_angle; moteur1.write (angle1);;} বিলম্ব (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 n angle3 = / t"); Serial.print (angle2); যদি (angle_destination angle2 +step_angle) {angle2 += step_angle; moteur2.write (angle2);} বিলম্ব (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 ("\ n angle4 = / t"); Serial.print (angle3); যদি (angle_destination angle3 +step_angle) {angle3 += step_angle; moteur3.write (angle3);} বিলম্ব (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 ("\ n angle5 = / t"); Serial.print (angle5); যদি (angle_destination angle5 +step_angle) {angle5 += step_angle; moteur5.write (angle5);} বিলম্ব (100); } moteur5.write (angle_destination); }

অকার্যকর টাচডাউন_রিলিজ () // টাচডাউন বাটন রিলিজ

{if (angle5 <180) {angle5 = angle5+step_angle_mini; } moteur5.write (কোণ 5); }

অকার্যকর টাচডাউন_গ্র্যাব () // টাচডাউন বোতাম গ্র্যাব

{if (angle5> 0) {angle5 = angle5-step_angle_mini; } moteur5.write (কোণ 5); } অকার্যকর বেস_রোটেশন () {যদি (কোণ 0) {কোণ = কোণ-ধাপ_এঙ্গেল; } অন্য কোণ = 0; moteur.write (কোণ); } অকার্যকর কোমর_আবর্তন () {যদি (কোণ 1 20) {কোণ 1 = কোণ 1-ধাপ_এঙ্গেল; } অন্য কোণ 1 = 20; moteur1.write (কোণ 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: এটাই

দেখার জন্য ধন্যবাদ, আমি আশা করি আপনি প্রশংসা করেছেন!

যদি আপনি এই নির্দেশযোগ্য পছন্দ করেন, আপনি নিশ্চিতভাবে আরো জন্য আমাদের দেখতে পারেন! =)

প্রস্তাবিত: