সুচিপত্র:

Arduino ব্যবহার করে সহজ এবং স্মার্ট রোবোটিক আর্ম !!!: 5 টি ধাপ (ছবি সহ)
Arduino ব্যবহার করে সহজ এবং স্মার্ট রোবোটিক আর্ম !!!: 5 টি ধাপ (ছবি সহ)

ভিডিও: Arduino ব্যবহার করে সহজ এবং স্মার্ট রোবোটিক আর্ম !!!: 5 টি ধাপ (ছবি সহ)

ভিডিও: Arduino ব্যবহার করে সহজ এবং স্মার্ট রোবোটিক আর্ম !!!: 5 টি ধাপ (ছবি সহ)
ভিডিও: ইঞ্জিনিয়ারিং কাদের এবং কোথাও পড়া উচিত !!!! 2024, জুন
Anonim
Image
Image
আপনার যা লাগবে
আপনার যা লাগবে

এই নির্দেশে আমি একটি সাধারণ রোবোটিক বাহু তৈরি করব। এটি একটি মাস্টার আর্ম ব্যবহার করে নিয়ন্ত্রণ করা হবে। বাহু চলন মনে রাখবে এবং ক্রম অনুসারে খেলবে। ধারণাটি নতুন নয় আমি "মিনি রোবোটিক আর্ম -স্টোয়ারপিক" এর কাছ থেকে আইডিয়া পেয়েছি আমি এটি দীর্ঘদিন ধরে করতে চেয়েছিলাম, কিন্তু তখন আমি সম্পূর্ণ নোয়াব ছিলাম এবং প্রোগ্রামিং সম্পর্কে আমার কোন জ্ঞান ছিল না। এখন অবশেষে আমি একটি নির্মাণ করছি, এটি সহজ, সস্তা এবং আপনার সকলের সাথে ভাগ করে নিচ্ছি।

চল শুরু করা যাক….

ধাপ 1: আপনার যা প্রয়োজন হবে:-

আপনার যা লাগবে
আপনার যা লাগবে
আপনার যা লাগবে
আপনার যা লাগবে

আপনার প্রয়োজনীয় জিনিসগুলির একটি তালিকা এখানে দেওয়া হল:-

1. Servo মোটর x 5 মার্কিন যুক্তরাষ্ট্রের জন্য লিঙ্ক:- https://amzn.to/2OxbSH7Link for Europe:-

2. Potentiometers x 5 (আমি 100k ব্যবহার করেছি।) মার্কিন যুক্তরাষ্ট্রের জন্য লিঙ্ক:- https://amzn.to/2ROjhDMLink ইউরোপের জন্য:-

3. আরডুইনো ইউএনও। (আপনি আরডুইনো ন্যানোও ব্যবহার করতে পারেন) মার্কিন যুক্তরাষ্ট্রের জন্য লিঙ্ক:- https://amzn.to/2DBbENWLink ইউরোপের জন্য:-

4. ব্রেডবোর্ড। (আমি এই কিটটি সুপারিশ করি) মার্কিন যুক্তরাষ্ট্রের জন্য লিঙ্ক:- https://amzn.to/2Dy86w4Link for Europe:-

5. ব্যাটারি। (alচ্ছিক, আমি একটি 5v অ্যাডাপ্টার ব্যবহার করছি)

6. কার্ডবোর্ড/কাঠ/সান বোর্ড/এক্রাইলিক যা পাওয়া যায় বা সহজে পাওয়া যায়।

এবং আপনি Arduino IDE ইনস্টল করা প্রয়োজন হবে।

ধাপ 2: বাহু তৈরি করা:-

বাহু তৈরি করা
বাহু তৈরি করা
বাহু তৈরি করা
বাহু তৈরি করা

এখানে আমি বাহু তৈরির জন্য Popsicle লাঠি ব্যবহার করেছি। আপনি আপনার জন্য উপলব্ধ যে কোন উপাদান ব্যবহার করতে পারেন। এবং আপনি আরও ভাল বাহু তৈরির জন্য বিভিন্ন যান্ত্রিক নকশা চেষ্টা করতে পারেন। আমার নকশা খুব স্থিতিশীল নয়।

আমি পপসিকল স্টিকে সার্ভোস আটকাতে এবং স্ক্রু ব্যবহার করে তাদের বেঁধে রাখার জন্য ডাবল পার্শ্বযুক্ত টেপ ব্যবহার করেছি।

মাস্টার আর্মের জন্য আমি পপসিকল স্টিকগুলিতে পটেনশিওমিটার লাগিয়ে আর্ম তৈরি করেছি।

ছবিগুলি উল্লেখ করা আপনাকে আরও ভাল আইডিয়া দেবে।

আমি A4 আকারের ক্যানভাস বোর্ডে সবকিছুকে বেস হিসেবে ব্যবহার করেছি।

ধাপ 3: সংযোগ তৈরি করা:-

সংযোগ তৈরি করা
সংযোগ তৈরি করা
সংযোগ তৈরি করা
সংযোগ তৈরি করা
সংযোগ তৈরি করা
সংযোগ তৈরি করা

এই ধাপে আমরা সমস্ত প্রয়োজনীয় সংযোগ তৈরি করব, উপরের ছবিগুলি পড়ুন।

  • প্রথমে বিদ্যুৎ সরবরাহের সমান্তরালে সমস্ত সার্ভিস সংযুক্ত করুন (লাল তার থেকে +ve এবং কালো বা বাদামী তার থেকে Gnd)
  • এরপরে সিগন্যাল তারগুলি যেমন হলুদ বা কমলা তারের সাথে আরডুইনো পিডব্লিউএম পিনের সাথে সংযুক্ত করুন।
  • এখন পোটেন্টিওমিটারগুলিকে +5v এবং Arduino এর Gnd সমান্তরালে সংযুক্ত করুন।
  • আরডুনিওর এনালগ পিনের সাথে মাঝারি টার্মিনালটি সংযুক্ত করুন।

এখানে ডিজিটাল পিন 3, 5, 6, 9 এবং 10 সার্ভিস নিয়ন্ত্রণের জন্য ব্যবহার করা হয়

এনালগ পিন A0 থেকে A4 Potentiometers থেকে ইনপুটের জন্য ব্যবহৃত হয়।

পিন 3 এর সাথে সংযুক্ত সার্ভো A0 এর সাথে সংযুক্ত পোটেন্টিওমিটার দ্বারা নিয়ন্ত্রিত হবে

পিন 5 এর সাথে সংযুক্ত সার্ভো A1 তে পাত্র দ্বারা নিয়ন্ত্রিত হবে, ইত্যাদি।

দ্রষ্টব্য:- যদিও Servos arduino দ্বারা চালিত হয় না, তবুও servos এর Gnd কে arduino এর সাথে সংযুক্ত করতে ভুলবেন না অন্যথায় বাহু কাজ করবে না।

ধাপ 4: কোডিং:-

কোডিং
কোডিং

এই কোডের লজিক মোটামুটি সহজ পটেন্টিওমিটারের মানগুলি একটি অ্যারেতে সংরক্ষণ করা হয় এবং রেকর্ডগুলি তারপর একটি লুপ ব্যবহার করে ট্র্যাভার্স করা হয় এবং সার্ভোসগুলি মান অনুসারে পদক্ষেপগুলি করে। আপনি এই টিউটোরিয়ালটি দেখতে পারেন যা আমি "Arduino Potentiometer Servo Control & Memory" রেফারেন্সের জন্য ব্যবহার করেছি

কোড:- (ডাউনলোডযোগ্য ফাইল নীচে সংযুক্ত।)

প্রথমে আমরা বিশ্বব্যাপী সমস্ত প্রয়োজনীয় ভেরিয়েবল ঘোষণা করব যাতে আমরা তাদের পুরো প্রোগ্রাম জুড়ে ব্যবহার করতে পারি। এর জন্য কোন বিশেষ ব্যাখ্যার প্রয়োজন নেই।

#অন্তর্ভুক্ত

// Servo অবজেক্টস Servo Servo_0; Servo Servo_1; Servo Servo_2; Servo Servo_3; Servo Servo_4; // Potentiometer অবজেক্ট int pot_0; int Pot_1; int Pot_2; int Pot_3; int Pot_4; // Servo_0_Pos এ servo পজিশন সংরক্ষণ করার জন্য পরিবর্তনশীল; int Servo_1_Pos; int Servo_2_Pos; int Servo_3_Pos; int Servo_4_Pos; // পূর্ববর্তী অবস্থানের মান সংরক্ষণের জন্য পরিবর্তনশীল int prev_0_Pos; int Prev_1_Pos; int Prev_2_Pos; int Prev_3_Pos; int Prev_4_Pos; // বর্তমান অবস্থানের মান সংরক্ষণের জন্য ভেরিয়েবল int Current_0_Pos; int Current_1_Pos; int Current_2_Pos; int Current_3_Pos; int Current_4_Pos; int Servo_Position; // Servo_Number এ কোণ সঞ্চয় করে; // সার্ভার ইন্ট স্টোরেজ নং স্টোর [600]; // ডেটা সঞ্চয় করার জন্য অ্যারে (অ্যারের আকার বৃদ্ধি করলে অধিক মেমরি খরচ হবে) int Index = 0; // অ্যারে সূচক 0 তম অবস্থানের থেকে শুরু হয় char data = 0; // ভেরিয়েবল সিরিয়াল ইনপুট থেকে ডেটা সঞ্চয় করতে।

এখন আমরা একটি সেটআপ ফাংশন লিখব, যেখানে আমরা পিন এবং তাদের ফাংশন সেট করি। এটি প্রধান ফাংশন যা প্রথমে কার্যকর হয়।

অকার্যকর সেটআপ()

{Serial.begin (9600); // arduino এবং IDE এর মধ্যে সিরিয়াল যোগাযোগের জন্য। // Servo বস্তু PWM পিনের সাথে সংযুক্ত থাকে। Servo_0.attach (3); Servo_1.attach (5); Servo_2.attach (6); Servo_3.attach (9); Servo_4.attach (10); // সার্ভিসগুলি শুরুতে 100 অবস্থানে সেট করা আছে। Servo_0.write (100); Servo_1.write (100); Servo_2.write (100); Servo_3.write (100); Servo_4.write (100); Serial.println ("রেকর্ড করতে 'R' এবং 'P' প্লে করতে"); }

এখন আমাদের এনালগ ইনপুট পিন ব্যবহার করে পোটেন্টিওমিটারের মান পড়তে হবে এবং সেগুলিকে নিয়ন্ত্রণ করতে সার্ভিস নিয়ন্ত্রণ করতে হবে। এর জন্য আমরা একটি ফাংশন সংজ্ঞায়িত করব এবং এর নাম রাখব Map_Pot ();, আপনি এটিকে যেকোনো কিছুর নাম দিতে পারেন এটি একটি ব্যবহারকারী সংজ্ঞায়িত ফাংশন।

অকার্যকর Map_Pot ()

{ / * সার্ভিস 180 ডিগ্রীতে ঘুরছে কিন্তু এটি সীমাতে ব্যবহার করা ভাল ধারণা নয় কারণ এটি সার্ভিসগুলিকে ক্রমাগত বাজিয়ে তোলে যা বিরক্তিকর তাই আমরা সার্ভোকে 1-179 * / Pot_0 = analogRead (A0); // পাত্র থেকে ইনপুট পড়ুন এবং ভেরিয়েবল পট_0 তে সংরক্ষণ করুন। Servo_0_Pos = মানচিত্র (Pot_0, 0, 1023, 1, 179); // 0 থেকে 1023 Servo_0.write (Servo_0_Pos) এর মান অনুযায়ী ম্যাপ সার্ভোস; // সেই অবস্থানে সার্ভো সরান। পট_1 = analogRead (A1); Servo_1_Pos = মানচিত্র (পট_1, 0, 1023, 1, 179); Servo_1.write (Servo_1_Pos); Pot_2 = analogRead (A2); Servo_2_Pos = মানচিত্র (Pot_2, 0, 1023, 1, 179); Servo_2.write (Servo_2_Pos); Pot_3 = analogRead (A3); Servo_3_Pos = মানচিত্র (Pot_3, 0, 1023, 1, 179); Servo_3.write (Servo_3_Pos); Pot_4 = analogRead (A4); Servo_4_Pos = মানচিত্র (Pot_4, 0, 1023, 1, 179); Servo_4.write (Servo_4_Pos); }

এখন আমরা লুপ ফাংশন লিখব:

অকার্যকর লুপ ()

{ম্যাপ_পট (); // ফাংশন কল পট মান পড়ার সময় (Serial.available ()> 0) {data = Serial.read (); যদি (data == 'R') Serial.println ("রেকর্ডিং মুভস …"); যদি (data == 'P') Serial.println ("রেকর্ড করা মুভস বাজানো …"); } if (data == 'R') // যদি 'R' লেখা হয়, রেকর্ডিং শুরু করুন। {// একটি ভেরিয়েবলে মান সংরক্ষণ করুন Prev_0_Pos = Servo_0_Pos; পূর্ববর্তী_1_পস = Servo_1_Pos; Prev_2_Pos = Servo_2_Pos; পূর্ববর্তী_পস = Servo_3_Pos; পূর্ববর্তী_4_পস = Servo_4_Pos; মানচিত্র_পট (); // ম্যাপ ফাংশন তুলনার জন্য প্রত্যাহার করা হয় যদি (abs (Prev_0_Pos == Servo_0_Pos)) // পরম মান {Servo_0.write (Servo_0_Pos) তুলনা করে প্রাপ্ত হয়; // যদি মানগুলির সাথে মিলিত হয় servo পুনositionস্থাপিত হয় যদি (Current_0_Pos! = Servo_0_Pos) // যদি মানগুলি {স্টোরেজ [সূচক] = Servo_0_Pos + 0 না মেলে; // অ্যারে ইনডেক্স ++ এ মান যোগ করা হয়েছে; // সূচক মান 1} Current_0_Pos = Servo_0_Pos দ্বারা বৃদ্ধি; } /* একইভাবে সকল সার্ভিসের জন্য মান তুলনা করা হয়, +100 একটি ডিফারেনশিয়াল ভ্যালু হিসাবে প্রবেশের জন্য প্রতিটি যোগ করা হয়। */ যদি (abs (Prev_1_Pos == Servo_1_Pos)) {Servo_1.write (Servo_1_Pos); যদি (Current_1_Pos! = Servo_1_Pos) {স্টোরেজ [সূচক] = Servo_1_Pos + 100; সূচক ++; } Current_1_Pos = Servo_1_Pos; } যদি (abs (Prev_2_Pos == Servo_2_Pos)) {Servo_2.write (Servo_2_Pos); যদি (Current_2_Pos! = Servo_2_Pos) {স্টোরেজ [সূচক] = Servo_2_Pos + 200; সূচক ++; } Current_2_Pos = Servo_2_Pos; } যদি (abs (Prev_3_Pos == Servo_3_Pos)) {Servo_3.write (Servo_3_Pos); যদি (Current_3_Pos! = Servo_3_Pos) {স্টোরেজ [সূচক] = Servo_3_Pos + 300; সূচক ++; } Current_3_Pos = Servo_3_Pos; } যদি (abs (Prev_4_Pos == Servo_4_Pos)) {Servo_4.write (Servo_4_Pos); যদি (Current_4_Pos! = Servo_4_Pos) {স্টোরেজ [সূচক] = Servo_4_Pos + 400; সূচক ++; } Current_4_Pos = Servo_4_Pos; } / * মানগুলি সিরিয়াল মনিটরে মুদ্রিত হয়, '\ t' হল সারণী বিন্যাসে মান প্রদর্শন করার জন্য Serial.print ("\ t"); Serial.print (Servo_1_Pos); Serial.print ("\ t"); Serial.print (Servo_2_Pos); Serial.print ("\ t"); সিরিয়াল.প্রিন্ট (Servo_3_Pos); Serial.print ("\ t"); Serial.println (Servo_4_Pos); সিরিয়াল.প্রিন্ট ("সূচক ="); Serial.println (সূচক); বিলম্ব (50); } যদি (data == 'P') // IF 'P' প্রবেশ করানো হয়, রেকর্ড করা মুভ বাজানো শুরু করুন। {for (int i = 0; i <index; i ++) // লুপ ব্যবহার করে অ্যারে অতিক্রম করুন {Servo_Number = Storage /100; // সার্ভার নম্বর খুঁজে পায় Servo_Position = স্টোরেজ % 100; // সার্ভো সুইচের অবস্থান খুঁজে পায় (Servo_Number) {case 0: Servo_0.write (Servo_Position); বিরতি; কেস 1: Servo_1.write (Servo_Position); বিরতি; কেস 2: Servo_2.write (Servo_Position); বিরতি; কেস 3: Servo_3.write (Servo_Position); বিরতি; কেস 4: Servo_4.write (Servo_Position); বিরতি; } বিলম্ব (50); }}}

একবার কোডটি প্রস্তুত হয়ে গেলে, এখন এটি আরডুইনো বোর্ডে আপলোড করুন।

স্মার্ট আর্ম কাজ করার জন্য প্রস্তুত। ফাংশনটি এখনও স্টোয়ারপিকের তৈরি মসৃণ নয়।

আপনি যদি কোডটি আরও ভাল করতে পারেন বা আমার জন্য কোন পরামর্শ থাকতে পারেন দয়া করে মন্তব্য বিভাগে আমাকে জানান।

এর সাথে বলা হয়েছে, চলুন পরীক্ষায় এগিয়ে যাই ….

ধাপ 5: পরীক্ষা:-

বোর্ডে সফলভাবে কোড আপলোড করার পর, 'সিরিয়াল মনিটর' খুলুন আপনি এটি টুলস অপশনে খুঁজে পেতে পারেন। সিরিয়াল মনিটর শুরু হলে আরডুইনো রিসেট হবে। এখন আপনি মাস্টার আর্ম ব্যবহার করে রোবটিক বাহু নিয়ন্ত্রণ করতে পারেন। কিন্তু কিছুই রেকর্ড করা হচ্ছে না।

রেকর্ডিং শুরু করতে, মনিটরে 'R' লিখুন এখন আপনি যে মুভগুলি রেকর্ড করতে চান তা করতে পারেন।

মুভস সম্পন্ন হওয়ার পর রেকর্ড করা মুভগুলি চালানোর জন্য আপনাকে 'P' লিখতে হবে। যতক্ষণ পর্যন্ত বোর্ডটি পুনরায় সেট না করা হয় ততক্ষণ সার্ভোসগুলি চলতে থাকবে।

প্রস্তাবিত: