সুচিপত্র:
ভিডিও: পিয়ানো টাইলস বাজানো রোবট আর্ম: 5 টি ধাপ
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 08:01
গ্রুপটি UCN এর 2 অটোমেশন ইঞ্জিনিয়ারদের নিয়ে গঠিত, যারা একটি উজ্জ্বল ধারণা নিয়ে এসেছিল যে আমরা করতে এবং বিকাশে অনুপ্রাণিত। ধারণাটি একটি Arduino বোর্ডের উপর ভিত্তি করে একটি রোবোটিক বাহু নিয়ন্ত্রণ করে। আরডুইনো বোর্ড হল অপারেশনের মস্তিষ্ক এবং তারপর অপারেশনের অ্যাকচুয়েটর, রোবোটিক আর্ম, যা প্রয়োজন তা করবে। আরও গভীরভাবে ব্যাখ্যা পরে আসবে।
ধাপ 1: সরঞ্জাম
রোবট বাহু:
ফ্যান্টমক্স পিনচার রোবট আর্ম কিট মাইক II (https://learn.trossenrobotics.com/38-interbotix-ro…)
রোবটের জন্য সফটওয়্যার- https://www.arduino.cc/en/Main/OldSoftwareRelease… রঙ সনাক্তকরণ ক্যামেরা:
CMUcam5 পিক্সি ক্যামেরা - (https://charmedlabs.com/default/pixy-cmucam5/)
সফটওয়্যার - PixyMon (https://cmucam.org/projects/cmucam5/wiki/Install_PixyMon_on_Windows_Vista_7_8)
ধাপ 2: Arduino সেটআপ
আপনি এখানে বোর্ডে সেটআপ দেখতে পারেন, যা খুবই সহজ।
বাম দিকে পাওয়ার সাপ্লাই।
মাঝেরটি প্রথম সার্ভোর জন্য, যা পরবর্তীতে অন্যান্য সার্ভোসের সাথে সংযুক্ত, সার্ভো দ্বারা সার্ভো।
নিচের এক যেখানে আমরা পিসি বা ল্যাপটপ থেকে বোর্ড নিয়ন্ত্রণ করি, অন্য প্রান্তে একটি ইউএসবি ইনপুট থাকে।
ধাপ 3: চূড়ান্ত প্রোগ্রাম
||| প্রোগ্রাম |||
#অন্তর্ভুক্ত
#অন্তর্ভুক্ত #অন্তর্ভুক্ত "poses.h" #অন্তর্ভুক্ত // পিক্সি লাইব্রেরি #অন্তর্ভুক্ত
#পোসকন্ট 5 নির্ধারণ করুন
বায়োলয়েড কন্ট্রোলার বায়োলয়েড = বায়োলয়েড কন্ট্রোলার (1000000);
const int SERVOCOUNT = 5; int id; int pos; বুলিয়ান IDCheck; বুলিয়ান রানচেক;
অকার্যকর সেটআপ () {পিনমোড (0, আউটপুট); ax12SetRegister2 (1, 32, 50); // সেট জয়েন্ট নম্বর 1 রেজিস্টার 32 স্পিড 50. ax12SetRegister2 (2, 32, 50); // সেট যৌথ নম্বর 2 রেজিস্টার 32 স্পিড 50. ax12SetRegister2 (3, 32, 50); // সেট যৌথ সংখ্যা 3 নিবন্ধন 32 গতি 50. ax12SetRegister2 (4, 32, 50); // সেট যৌথ সংখ্যা 4 নিবন্ধন 32 গতি 32. ax12SetRegister2 (5, 32, 100); // সেট যৌথ সংখ্যা 5 নিবন্ধন 32 গতিতে 100. // ভেরিয়েবল আইডি = 1 শুরু করুন; অবস্থান = 0; IDCheck = 1; রানচেক = 0; // খোলা সিরিয়াল পোর্ট Serial.begin (9600); বিলম্ব (500); Serial.println ("###########################" Serial.println ("সিরিয়াল যোগাযোগ প্রতিষ্ঠিত।");
// লাইপো ব্যাটারি ভোল্টেজ চেক ভোল্টেজ () চেক করুন;
// সার্ভিস স্ক্যান করুন, রিটার্ন পজিশন MoveTest (); MoveHome (); মেনু অপশন (); রানচেক = 1; }
অকার্যকর লুপ () {// সেন্সর পড়ুন: int inByte = Serial.read ();
সুইচ (ইনবাইট) {
কেস '1': MovePose1 (); বিরতি;
কেস '2': MovePose2 (); বিরতি; কেস '3': MovePose3 (); বিরতি;
কেস '4': MovePose4 (); বিরতি;
কেস '5': মুভহোম (); বিরতি; কেস '6': ধরুন (); বিরতি;
কেস '7': LEDTest (); বিরতি;
কেস '8': RelaxServos (); বিরতি; }}
অকার্যকর CheckVoltage () {// অপেক্ষা করুন, তারপর ভোল্টেজ (LiPO নিরাপত্তা) ভাসা ভোল্টেজ = (ax12GetRegister (1, AX_PRESENT_VOLTAGE, 1)) / 10.0 চেক করুন; Serial.println ("###########################" "; সিরিয়াল.প্রিন্ট ("সিস্টেম ভোল্টেজ:"); সিরিয়াল.প্রিন্ট (ভোল্টেজ); Serial.println ("ভোল্ট।"); যদি (ভোল্টেজ 10.0) {Serial.println ("ভোল্টেজ মাত্রা নামমাত্র।"); } যদি (RunCheck == 1) {MenuOptions (); } Serial.println ("###########################") }
অকার্যকর MoveHome () {বিলম্ব (100); // প্রস্তাবিত বিরতি bioloid.loadPose (হোম); // ফ্ল্যাশ থেকে পোজ লোড করুন, নেক্সটপোজ বাফার বায়োলয়েডে। readPose (); // curPose বাফার Serial.println ("###########################" ") Serial.println ("সার্ভিসকে হোম অবস্থানে সরানো"); Serial.println ("###########################" "; বিলম্ব (1000); bioloid.interpolateSetup (1000); // বর্তমান থেকে প্রবাহের জন্য সেটআপ-> পরবর্তী 1/2 সেকেন্ডের বেশি সময় ধরে // সরানো servos, প্রয়োজন হলে। বিলম্ব (3); } যদি (RunCheck == 1) {MenuOptions (); }}
অকার্যকর MovePose1 () {বিলম্ব (100); // প্রস্তাবিত বিরতি bioloid.loadPose (Pose1); // ফ্ল্যাশ থেকে পোজ লোড করুন, নেক্সটপোজ বাফার বায়োলয়েডে। readPose (); // curPose বাফার Serial.println ("###########################" ") Serial.println ("1 ম অবস্থানে servos সরানো"); Serial.println ("###########################" বিলম্ব (1000); bioloid.interpolateSetup (1000); // বর্তমান থেকে প্রবাহের জন্য সেটআপ-> পরবর্তী 1/2 সেকেন্ডের বেশি সময় ধরে // সরানো servos, প্রয়োজন হলে। বিলম্ব (3); } SetPosition (3, 291); // যৌথ 3 এর অবস্থান '0' বিলম্ব (100) সেট করুন; // যৌথ সরানোর জন্য অপেক্ষা করুন যদি (RunCheck == 1) {MenuOptions (); }}
অকার্যকর MovePose2 () {বিলম্ব (100); // প্রস্তাবিত বিরতি bioloid.loadPose (Pose2); // ফ্ল্যাশ থেকে পোজ লোড করুন, নেক্সটপোজ বাফার বায়োলয়েডে। readPose (); // curPose বাফার Serial.println ("############################") Serial.println ("দ্বিতীয় অবস্থানে servos সরানো"); Serial.println ("###########################" বিলম্ব (1000); bioloid.interpolateSetup (1000); // বর্তমান থেকে প্রবাহের জন্য সেটআপ-> পরবর্তী 1/2 সেকেন্ডের বেশি সময় ধরে // সরানো servos, প্রয়োজন হলে। বিলম্ব (3); } SetPosition (3, 291); // জয়েন্ট 3 এর অবস্থান '0' বিলম্ব (100) সেট করুন; // যৌথ সরানোর জন্য অপেক্ষা করুন যদি (RunCheck == 1) {MenuOptions (); }} অকার্যকর MovePose3 () {বিলম্ব (100); // প্রস্তাবিত বিরতি bioloid.loadPose (Pose3); // ফ্ল্যাশ থেকে পোজ লোড করুন, নেক্সটপোজ বাফার বায়োলয়েডে। readPose (); // curPose বাফার Serial.println ("###########################" ") Serial.println ("3 য় অবস্থানে servos সরানো"); Serial.println ("###########################" বিলম্ব (1000); bioloid.interpolateSetup (1000); // বর্তমান থেকে প্রবাহের জন্য সেটআপ-> পরবর্তী 1/2 সেকেন্ডের বেশি সময় ধরে // সরানো servos, প্রয়োজন হলে। বিলম্ব (3); } SetPosition (3, 291); // যৌথ 3 এর অবস্থান '0' বিলম্ব (100) সেট করুন; // যৌথ সরানোর জন্য অপেক্ষা করুন যদি (RunCheck == 1) {MenuOptions (); }}
অকার্যকর MovePose4 () {বিলম্ব (100); // প্রস্তাবিত বিরতি bioloid.loadPose (Pose4); // ফ্ল্যাশ থেকে পোজ লোড করুন, নেক্সটপোজ বাফার বায়োলয়েডে। readPose (); // curPose বাফার Serial.println ("###########################" ") Serial.println ("সার্ভিসকে 4th র্থ অবস্থানে নিয়ে যাওয়া"); Serial.println ("###########################" বিলম্ব (1000); bioloid.interpolateSetup (1000); // বর্তমান থেকে প্রবাহের জন্য সেটআপ-> পরবর্তী 1/2 সেকেন্ডের বেশি সময় ধরে // সরানো servos, প্রয়োজন হলে। বিলম্ব (3); } SetPosition (3, 291); // জয়েন্ট 3 এর অবস্থান '0' বিলম্ব (100) সেট করুন; // যৌথ সরানোর জন্য অপেক্ষা করুন যদি (RunCheck == 1) {MenuOptions (); }}
অকার্যকর MoveTest () {Serial.println ("###########################"); Serial.println ("মুভমেন্ট সাইন টেস্ট শুরু করা"); Serial.println ("###########################" বিলম্ব (500); আইডি = 1; অবস্থান = 512; while (id <= SERVOCOUNT) {Serial.print ("Servo ID সরানো:"); Serial.println (id);
while (pos> = 312) {SetPosition (id, pos); pos = pos--; বিলম্ব (10); }
while (pos <= 512) {SetPosition (id, pos); pos = pos ++; বিলম্ব (10); }
// পরবর্তী সার্ভো আইডি আইডি = আইডি ++ এ পুনরাবৃত্তি;
} যদি (RunCheck == 1) {MenuOptions (); }}
void MenuOptions () {Serial.println ("###########################" "; Serial.println ("আবার ব্যক্তিগত পরীক্ষা চালানোর জন্য অনুগ্রহ করে বিকল্প 1-5 লিখুন।"); Serial.println ("1) 1 ম অবস্থান"); Serial.println ("2) দ্বিতীয় অবস্থান"); Serial.println ("3) 3 য় অবস্থান"); Serial.println ("4) চতুর্থ অবস্থান"); Serial.println ("5) হোম অবস্থান"); Serial.println ("6) সিস্টেম ভোল্টেজ পরীক্ষা করুন"); Serial.println ("7) LED টেস্ট করুন"); Serial.println ("8) Relax Servos"); Serial.println ("###########################" }
অকার্যকর RelaxServos () {id = 1; Serial.println ("###########################" Serial.println ("রিলাক্সিং সার্ভোস।"); Serial.println ("###########################" while (id <= SERVOCOUNT) {আরাম (id); id = (id ++)%SERVOCOUNT; বিলম্ব (50); } যদি (RunCheck == 1) {MenuOptions (); }}
অকার্যকর LEDTest () {id = 1; Serial.println ("###########################" Serial.println ("LED টেস্টিং চলছে"); Serial.println ("###########################" যখন (id <= SERVOCOUNT) {ax12SetRegister (id, 25, 1); Serial.print ("LED ON - Servo ID:"); Serial.println (id); বিলম্ব (3000); ax12SetRegister (id, 25, 0); Serial.print ("LED OFF - Servo ID:"); Serial.println (id); বিলম্ব (3000); আইডি = আইডি ++; } যদি (RunCheck == 1) {MenuOptions (); }}
অকার্যকর দখল () {SetPosition (5, 800); // জয়েন্ট 1 এর অবস্থান '0' বিলম্ব (100) সেট করুন; // জয়েন্ট সরানোর জন্য অপেক্ষা করুন
}
আমরা পজিশনিংয়ের ক্ষেত্রে কিছু প্রধান পরিবর্তন করে নির্মাতাদের PincherTest প্রোগ্রামের উপর আমাদের প্রোগ্রাম ভিত্তিক করেছি। আমরা রোবটের মেমরিতে অবস্থান রাখার জন্য poses.h ব্যবহার করেছি। প্রথমে আমরা স্বয়ংক্রিয় হওয়ার জন্য পিক্সাইক্যাম দিয়ে আমাদের বাজানো বাহু তৈরির চেষ্টা করেছি, কিন্তু হালকা এবং ছোট পর্দার সমস্যার কারণে তা সম্ভব হয়নি। রোবটটির একটি বেসিক হোম পজিশন আছে, প্রোগ্রামটি আপলোড করার পর, এটি রোবটে পাওয়া সমস্ত সার্ভোস পরীক্ষা করবে। আমরা 1-4 বোতামের জন্য পোজ সেট করেছি, তাই এটি মনে রাখা সহজ হবে। প্রোগ্রামটি নির্দ্বিধায় ব্যবহার করুন।
ধাপ 4: ভিডিও গাইড
ধাপ 5: উপসংহার
উপসংহারে, রোবটটি আমাদের জন্য একটি মজার ছোট প্রকল্প এবং চারপাশে খেলতে এবং পরীক্ষা করার জন্য একটি মজাদার থাইং। আমি আপনাকে এটি চেষ্টা করার পাশাপাশি এটি কাস্টমাইজ করার জন্য উৎসাহিত করি।
প্রস্তাবিত:
Arduino কথা বলা - কোন মডিউল ছাড়া Arduino সঙ্গে একটি এমপি 3 বাজানো - PCM ব্যবহার করে Arduino থেকে Mp3 ফাইল বাজানো: 6 টি ধাপ
Arduino কথা বলা | কোন মডিউল ছাড়া Arduino সঙ্গে একটি এমপি 3 বাজানো | PCM ব্যবহার করে Arduino থেকে Mp3 ফাইল বাজানো: এই নির্দেশাবলীতে আমরা কোন অডিও মডিউল ব্যবহার না করে arduino এর সাথে একটি MP3 ফাইল কিভাবে চালাতে হয় তা শিখব, এখানে আমরা Arduino এর জন্য PCM লাইব্রেরি ব্যবহার করব যা 8kHZ ফ্রিকোয়েন্সি এর 16 বিট PCM বাজায় তাই এটি করতে দিন
Tchaibotsky (একটি পিয়ানো বাজানো রোবট): 12 টি ধাপ (ছবি সহ)
Tchaibotsky (একটি পিয়ানো বাজানো রোবট): এই নির্দেশনাটি সাউথ ফ্লোরিডা বিশ্ববিদ্যালয়ের (www.makecourse.com) মেককোর্সের প্রকল্পের প্রয়োজনীয়তা পূরণের জন্য তৈরি করা হয়েছিল Tchaibotsky হল একটি Arduino চালিত পিয়ানো বাজানো রোবট। প্রেরণা ছিল এমন কিছু তৈরি করা যা পারে
Arduino - পিয়ানো টাইলস: 16 টি ধাপ (ছবি সহ)
আরডুইনো - পিয়ানো টাইলস: হ্যালো ইন্টারনেট লোকেরা, এটি কীভাবে একটি আর্ডুইনো ইউনো r3.so থেকে শুরু করে একটি মোবাইল গেম বন্ধ করা যায় না তা শুরু করার জন্য, আপনার সমস্ত অংশের প্রয়োজন হবে, যা নিম্নরূপ 1x Arduino Uno r3 ($ 42) 2x LCD Keypad Shield ($ 19 প্রত্যেকে)
কীভাবে একটি প্রভাবশালী কাঠের রোবট আর্ম (পার্ট 3: রোবট আর্ম) - মাইক্রো ভিত্তিক: BITN: 8 টি পদক্ষেপ
কীভাবে একটি প্রভাবশালী কাঠের রোবট আর্ম (পার্ট 3: রোবট আর্ম) - মাইক্রো ভিত্তিক: বিটএন: পরবর্তী ইনস্টলেশন প্রক্রিয়াটি এড়ানো বাধা মোডের সমাপ্তির উপর ভিত্তি করে। পূর্ববর্তী বিভাগে ইনস্টলেশন প্রক্রিয়াটি লাইন-ট্র্যাকিং মোডে ইনস্টলেশন প্রক্রিয়ার মতো। তাহলে আসুন A এর চূড়ান্ত রূপটি দেখে নেওয়া যাক
কিভাবে একটি প্রভাবশালী কাঠের রোবট আর্ম (পার্ট 2: বাধা এড়ানোর জন্য রোবট) - মাইক্রো উপর ভিত্তি করে: বিট: 3 ধাপ
কিভাবে একটি প্রভাবশালী কাঠের রোবট আর্ম (পার্ট 2: বাধা এড়ানোর জন্য রোবট)-মাইক্রো ভিত্তিক: বিট: পূর্বে আমরা লাইন-ট্র্যাকিং মোডে আর্মবিট চালু করেছি। এরপরে, আমরা কীভাবে বাধা মোড এড়ানোর জন্য আর্মবিট ইনস্টল করব তা পরিচয় করিয়ে দিই