সুচিপত্র:

রিমোট ইউএসবি গেমপ্যাডের মাধ্যমে চালিত একটি 4WD রোবট: 6 টি ধাপ
রিমোট ইউএসবি গেমপ্যাডের মাধ্যমে চালিত একটি 4WD রোবট: 6 টি ধাপ

ভিডিও: রিমোট ইউএসবি গেমপ্যাডের মাধ্যমে চালিত একটি 4WD রোবট: 6 টি ধাপ

ভিডিও: রিমোট ইউএসবি গেমপ্যাডের মাধ্যমে চালিত একটি 4WD রোবট: 6 টি ধাপ
ভিডিও: Best Wireless Gamepad For Mobile PC & TV - Game Controller বাজারের সেরা কিভাবে ফোনের সাথে সেট করবো 2024, জুন
Anonim
Image
Image

আমার পরবর্তী রোবটিক্স প্রকল্পের জন্য, আমি অপ্রত্যাশিত পরিস্থিতিতে আমার নিজের রোবট প্ল্যাটফর্ম স্থপতি/ডিজাইন করতে বাধ্য হয়েছিলাম।

লক্ষ্য হল এটি স্বায়ত্তশাসিত হওয়া, কিন্তু প্রথমে, আমি এর মৌলিক ড্রাইভিং ক্ষমতা পরীক্ষা করার প্রয়োজন ছিল, তাই আমি ভেবেছিলাম এটি একটি মজাদার পার্শ্ব-প্রকল্প হবে আচরণ করা এবং নিয়ন্ত্রণ করা যেন এটি একটি আরসি (রেডিও-নিয়ন্ত্রিত) যান, কিন্তু পরিবর্তে একটি ইউএসবি গেমপ্যাড ব্যবহার করুন।

ফলাফল আমার প্রত্যাশার চেয়ে ভাল বা ভাল হয়েছে।

ইউএসবি গেমপ্যাড রুটে যাওয়ার সুবিধা, প্রচুর প্রোগ্রামিং সহ, আমি এটি কাস্টমাইজ করতে পারি এবং আমি ইতিমধ্যে যা করেছি তা যোগ করতে পারি। আমার আরসি গাড়ী তৈরির কোন বাস্তব অভিজ্ঞতা নেই, কিন্তু আমি কল্পনা করি যে আরসি ট্রান্সমিটার (জয়স্টিক/বোতাম ইত্যাদি) এবং আরসি রিসিভার নিয়ে যে কোনও একটিই বেশ আটকে আছে।

উদাহরণস্বরূপ, আমি কিছু স্বীকৃতি যোগ করেছি যে রোবটটি একটি প্রাচীরকে আঘাত করেছে, কেবল সফ্টওয়্যারটি উচ্চ স্রোত এবং কম এনকোডার গতির মান সনাক্ত করে।

Allyচ্ছিকভাবে, কেউ রোবটটিতে কিছু ইউএসবি ওয়েবক্যাম যোগ করতে পারে, তার উপর নির্ভর করে কতজন এবং তাদের বসানো জায়গা, কেউ রোবটটিকে জীবিত এলাকা এবং অন্য রুমে চালাতে পারে, যখন কম্পিউটারের সামনে অন্য কোথাও বসে থাকে যেখানে ইউএসবি গেমপ্যাড সংযুক্ত থাকে এটা।

এই নির্দেশযোগ্য একটি সত্য, বিস্তারিত, সব-অন্তর্ভুক্ত, ধাপে ধাপে কিভাবে হবে না কিন্তু আমি যতটা সম্ভব বিস্তারিত দিতে চেষ্টা করব।

সরবরাহ

প্রস্তাবিত যন্ত্রাংশ: এর বেশিরভাগই আমি সার্ভো সিটি (অ্যাকটোবটিক্স) থেকে পেয়েছি।

2 - 13.5 ইউ -চ্যানেল, বেস ফ্রেমের পাশের জন্য। মোটরগুলি এর উপর মাউন্ট করা আছে। আমি ছোট কিছু নিয়ে গিয়েছিলাম এবং আমার মোটরগুলি খুব কোণে মাউন্ট করা হয়েছে, এবং এটি তাদের মাউন্ট করা কঠিন করে তুলেছে।

2 - 12 বেস ফ্রেমের সামনে এবং পিছনের জন্য ইউ -চ্যানেল।

2 - 15 বাম্পার, সামনে এবং পিছনের জন্য ইউ -চ্যানেল

2-7 ইউ-চ্যানেল যা তাদের মধ্যে সংযোগ স্থাপন করে।

2-(দৈর্ঘ্য?) কোণযুক্ত সদস্যের জন্য ইউ-চ্যানেল, সামনে থেকে পিছনে, সোজা কলামগুলিকে সংযুক্ত করে। এটি একটি সমালোচনামূলক, কারণ Servo City / Actobotics এই উদ্দেশ্যে 45 ডিগ্রী অ্যাঙ্গেলড প্যানেল বা বন্ধনী বিক্রি করে, কিন্তু আপনি সঠিক দৈর্ঘ্য পাবেন তা নিশ্চিত করার জন্য আপনাকে কিছু গণিত / ট্রিগ করতে হবে।

2-(দৈর্ঘ্য?) ইউ-চ্যানেলগুলি উচ্চ-স্তরের সাইড বাম্পার হিসাবে পরিবেশন করার জন্য, আবার এগুলি নির্ভর করে আপনি বেসের সাথে কী করেন

2-(দৈর্ঘ্য?) ইউ-চ্যানেলগুলি উচ্চ-স্তরের সামনের এবং পিছনের বাম্পার হিসাবে পরিবেশন করা, উপরেও একই সমস্যা।

1 - (দৈর্ঘ্য?) শীর্ষ চূড়ান্ত সদস্য হিসেবে কাজ করার জন্য ইউ -চ্যানেল, পিছনের কলাম জুড়ে বিস্তৃত। এটি খুব বেশি সমালোচনামূলক নাও হতে পারে, যেহেতু আপনি উপরে, বা সোজা কলামের সামনে / পিছনে মাউন্ট করতে পারেন।

12 (প্রায়) এল-চ্যানেল বা বন্ধনী। এগুলি একাধিক উদ্দেশ্য পূরণ করে কিন্তু মূলত কাঠামোর অখণ্ডতা/শক্তি দেয় বেস ফ্রেমের কোণ এবং খাড়া কলাম।

4 (+?) 3-গর্ত থেকে 5-গর্ত সমতল চ্যানেল। এগুলি রোবটকে কাঠামোগত শক্তিও সরবরাহ করে।

ServoCity দুটি প্রধান ধরনের বড় এলাকা সমতল প্যানেল বিক্রি করে, যা নিচের স্কিড-প্যান হিসাবে ব্যবহার করার জন্য উপযোগী, অথবা আপনার ব্যাটারি এবং কন্ট্রোলারগুলি যেখানে যেতে পারে, এমনকি সেন্সরের উচ্চতর পৃষ্ঠের জন্যও ব্যবহার করে।

একটি 4 (4.5?) "এক্স 12" প্যানেল আছে, এবং আমি মনে করি অন্যটি একটি 9 (9.5?) "এক্স 12 প্যানেল।

এখন এখানেই জিনিসগুলি আকর্ষণীয় হয়ে ওঠে এবং বিভ্রান্তিকর এবং মূল্যবান হতে পারে (ছোট অংশগুলি যুক্ত হয়)। সমস্ত চ্যানেল, ইত্যাদি এই সংযোগকারী টুকরাগুলির মাধ্যমে একে অপরের সাথে সংযুক্ত করা যেতে পারে, যার মধ্যে সেভেরাল রয়েছে। এখানেই আমি দু sorryখিত আমার একটি বিস্তৃত, বিস্তারিত, নির্দিষ্ট অংশের তালিকা নেই।

এবং বিষয় হল.. আপনি সত্যিই জানেন না কোনটি আপনার প্রয়োজন হতে পারে, বা কতগুলি.. কারণ এই টুকরোগুলি একসাথে ফিট করার অনেক উপায় আছে।

আমি যা ব্যবহার করেছি তা তালিকাভুক্ত করতে পারি:

www.servocity.com/90-quad-hub-mount-c

www.servocity.com/side-tapped-pattern-moun…

www.servocity.com/90-quad-hub-mount-d

নিম্নলিখিত দুটি খুব সুবিধাজনক, এবং আমি শুধু এইগুলি স্টক করব:

www.servocity.com/single-screw-plate

www.servocity.com/dual-screw-plate

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

পরিশেষে, আপনার এইগুলির 1 টি ব্যাগ পাওয়া উচিত:

www.servocity.com/6-32-nylock-nuts-pack

আমি এতগুলি ব্যবহার করি নি, কিন্তু তারা (আমি মনে করি) আপনার মোটরগুলি সময়ের সাথে ফ্রেম থেকে আলগা স্পন্দিত হয় না তা নিশ্চিত করার জন্য সমালোচনামূলক। ইউ-চ্যানেলের কারণে মোটর প্রতি মাত্র দুটি কাজ করবে

আপনার এইগুলির মধ্যে কমপক্ষে 4 টি প্রয়োজন হবে, যদি আপনি কারও ক্ষতি করেন তবে আপনি অতিরিক্ত একটি পেতে পারেন (আমাকে বিশ্বাস করুন, আপনি কয়েকবার মোটরগুলি চালু / বন্ধ করতে পারেন):

www.servocity.com/heavy-duty-clamping-shaf…

সাধারণত, মোটর শ্যাফ্ট 6 মিমি এবং অক্ষ 1/4 (0.25in) হয়।

আমি কিছু কালো স্ক্রু পেতে পারি, অনুমিতভাবে শক্তিশালী, এবং উপরের clamps জন্য তাদের ব্যবহার, এবং clamps সঙ্গে আসা screws ব্যবহার করবেন না:

(আমি মনে করি এগুলিই):

4 - 1/4 "(0.25") ব্যাসের বিয়ারিং

1 - কালো 1/4 স্পেসারের ব্যাগ

4 - ক্ল্যাম্পিং ডি -হাব

www.servocity.com/0-770-clamping-d-hubs

4-D-Shafts (#6340621.375 "(1-3/8")

4 - 6 ভারী দায়িত্ব চাকা

www.servocity.com/6-heavy-duty-wheel

মনে রাখবেন যে আমি এই চাকাগুলি পছন্দ করি কিন্তু তাদের একটি শক্ত রাবার প্রান্ত আছে। তারা কঠিন মেঝে, এবং কার্পেট, এবং সম্ভবত কঠিন কংক্রিট হাঁটাতে ভাল করে বলে মনে হচ্ছে। ঘাস, বালি ইত্যাদিতে ভালো করবে না।

এছাড়াও, তারা আপনার কার্পেট ধোঁয়া করার প্রবণতা থাকবে !!!

4 - মোটর:

www.servocity.com/motors-actuators/gear-mo…

আমি 223 RPM এর সাথে গেলাম, ভাল টপ ইনডোর স্পীড, আমার রোবট (2 SLA 12V ব্যাটারি সহ ভারী) স্লো মোশনে খুব সহজে সরাতে পারত।

2 - মোটরগুলির জন্য মোটর এনকোডার। (Servo City এর Roboclaw শুধুমাত্র 2 এনকোডার পরিচালনা করে)

1 - Roboclaw 2X45A মোটর কন্ট্রোলার, নিশ্চিত করুন যে আপনি এটিতে সবুজ টার্মিনাল ব্লকগুলি পেয়েছেন, পিন নয়…। ভাল … প্রত্যেকেরই তাদের সুবিধা আছে। দৃষ্টিশক্তি.. আমি হয়তো পিন পেয়েছি।

আমি মনে করি এটি সার্ভো সিটি থেকে এসেছে।

স্পার্কফুন আপনার ড্রাইভ ম্যানেজার হিসাবে Arduino Uno (যেটা আমি ব্যবহার করেছি) বিক্রি করে, এবং Redboard Artemis।

আপনি আপনার উচ্চ স্তরের "মস্তিষ্ক" এবং ইন্টারফেস হিসাবে একটি রাস্পবেরি পাই 3 (বা 4?) চাইবেন।

আপনি তারের, সুইচ, ফিউজ, এবং একটি খুব শক্তিশালী "ফ্লাইব্যাক" ডায়োড প্রয়োজন হবে।

আমি একটি Duracell 12V 14AH গভীর-চক্র SLA ব্যাটারি ব্যবহার করেছি, কিন্তু আপনি যাই হোক না কেন ব্যবহার করতে পারেন।

সতর্কতা! এই রোবটটির নকশা (TALL, এবং WIDE, কিন্তু SHORT), এক ধরনের ভারী মাধ্যাকর্ষণ কেন্দ্র ধারণ করে, যেমন একটি SLA ব্যাটারি প্রদান করবে। এটি অন্যান্য ধরণের নতুন প্রযুক্তির ব্যাটারি প্যাকগুলির সাথে ভাল নাও হতে পারে। LiPo, Lion, ইত্যাদি এটি সহজেই টিপ দিতে পারে।

পোলোলু থেকে আমি কয়েকটি ব্যারেল প্লাগ অ্যাডাপ্টার পেয়েছি, যাতে আমি স্বাধীনভাবে আরডুইনো এবং/অথবা রেডবোর্ডকে শক্তি দিতে পারি, যদিও তারা ইউএসবি এর মাধ্যমে রাস্পবেরির সাথে সংযুক্ত থাকবে, কারণ আমি রাস্পবেরির শক্তির উপর নির্ভর করতে চাইনি । (বিশেষ করে মাউন্ট করা ক্যামেরা, সেন্সর ইত্যাদি)

রাস্পবেরির জন্য আপনার 12 থেকে 5V স্টেপ ডাউন ভোল্টেজ রেগুলেটর, ন্যূনতম 5A (?) প্রয়োজন হবে। অন্যরা 7 থেকে 15V এর মধ্যে যেকোনো কিছু পরিচালনা করতে পারে তাই সরাসরি SLA ব্যাটারিতে।

এটি অংশগুলির জন্য।

আমি কি করব না - 90 ডিগ্রি বেভেল্ড গিয়ারিং।

আবার, আমার রোবোটিক্স ইউটিউব প্লেলিস্টে অনেকগুলি ভিডিও রয়েছে যা উপরের বেশিরভাগের বিবরণ দেয়।

ধাপ 1: নির্মাণ

সত্যি বলতে, আমার নির্মাণের সমস্ত পদক্ষেপ ইতিমধ্যেই ইউটিউব আকারে রয়েছে। আপনি আমার ওয়ালেস রোবট 4 থেকে শুরু করে আমার রোবোটিক্স প্লেলিস্টে দেখতে পারেন। আগেরগুলি (ওয়ালেস II, ওয়ালেস III) এরও ভাল উপাদান রয়েছে

www.youtube.com/playlist?list=PLNKa8O7lX-w…

ধাপ 2: রোবোক্লা, মোটর এবং এনকোডার পরীক্ষা করুন

Roboclaw (BasicMicro) এর নির্মাতাদের একটি উইন্ডোজ অ্যাপ্লিকেশন আছে যা আপনি মোটর এবং এনকোডারগুলিকে সঠিকভাবে রোবোক্লোর সাথে যুক্ত করতে নিশ্চিত করতে ব্যবহার করতে পারেন। আপনি রোবোক্লোর সমান্তরালে একই পাশের মোটরগুলিকে সংযুক্ত করবেন। আপনি কেবলমাত্র পিছনের মোটরগুলিতে, বা সামনের মোটরগুলিতে, বা সম্ভবত আরও ভাল - এনকোডার তারগুলি ব্যবহার করা বেছে নিতে পারেন - ডায়াগনালি।

আমার পরামর্শের কারণটি (পরে) আটকে থাকা রোবটের জন্য পরীক্ষা করা। যদি সামনের/পিছনের চাকাগুলো ঘুরছে/না ঘুরছে তাহলে তির্যকভাবে একটি স্থিতি থাকা কেবল সামনের দিকের বা কেবল পিছনের চেয়ে ভাল হতে পারে।

দ্রষ্টব্য: আমি যা করিনি তা হল এনডোডারের সাথে (GPIO পিনের মাধ্যমে) সংযোগ করার জন্য Arduino ব্যবহার করা - যদি আপনি এটি করেন, তাহলে আপনি Roboclaw হ্যান্ডেল 2 এনকোডার পেতে পারেন, এবং তারপর Arduino অন্য দুটি হ্যান্ডেল করতে পারেন, এবং শুধু এর দুটি এনকোডার মান (এবং গতি) এর জন্য Roboclaw কে জিজ্ঞাসা করুন।

দ্রষ্টব্য: আমি রic্যাম্পিং আপ / রamp্যাম্পিং ডাউনের জন্য রোবোকলোর প্রাক-কনফিগার করার জন্য বেসিক মাইক্রোর অ্যাপ্লিকেশনটি ব্যবহার করেছি। এটি হার্ডওয়্যার এবং ইলেকট্রনিক্স সুরক্ষার জন্য ভাল। আমার রোবটিক্স প্লেলিস্টে এটি সম্পর্কে একটি ভিডিও আছে।

আমি প্রায় ভুলে গেছি: আমি কিছু বুলেট-সংযোগকারী তারও কিনেছি যা মোটর তারের এবং রোবোক্লোর মধ্যে যায়। দ্রষ্টব্য: যদি আপনি এটি করেন, আপনি লক্ষ্য করবেন যে মোট তারের দৈর্ঘ্য সত্যিই দীর্ঘ। কিন্তু আমার প্রয়োজন না হলে আমি কোন কাটতে চাইনি। আমি (পরবর্তী ধাপের জন্য) রাস্পবেরি এবং আরডুইনো এর মধ্যে ইউএসবি এর সাথে যোগাযোগের সমস্যার মুখোমুখি হয়েছি, সম্ভবত ইএমআই শব্দের কারণে.. কিন্তু আমি সফটওয়্যারের সাহায্যে এটি নিয়ে কাজ করেছি।

যদি এটি একটি সমস্যা হয়ে দাঁড়ায়, আপনি তারগুলি ছোট করতে পারেন - আপনি মেটাল শিল্ডিংও কিনতে পারেন (আমাজন থেকে, 1 ব্যাস)।

শেষ কথা: এটা আমার এখনও করা হয়নি --- রোবোক্লো অটো-কনফিগার বা অটো-টিউন (এনকোডার ব্যবহার করে) আছে যাতে বাম এবং ডান দিকের মোটর একই গতিতে চলে এবং রোবট সোজা হয়ে যায়।

খনি প্রায় 12 ফুট উপরে খুব সামান্য বক্ররেখা কিন্তু যথেষ্ট না যে আমি এটি সম্পর্কে কিছু করার প্রয়োজন অনুভব করেছি।

ধাপ 3: Arduino যোগ এবং প্রোগ্রামিং

আপনি ব্যারেল প্লাগ এবং কিছু তারের প্রয়োজন হবে, এছাড়াও একটি USB তারের। Arduino সংযোগকারীর জন্য আপনি সঠিকটি পেয়েছেন তা নিশ্চিত করুন।

আপনাকে Arduino IDE ডাউনলোড করতে হবে।

এখানে Github এ সর্বশেষ স্কেচ যা রোবট চালনা পরিচালনা করে:

github.com/elicorrales/wallace.robot.ardui…

আপনি আপনার কম্পিউটারের সাথে Arduino সংযুক্ত করবেন IDE, এবং স্কেচ কিভাবে লেখা হয় তার উপর ভিত্তি করে, আপনি রোডোক্লোর সাথে সিরিয়াল কমিউনিকেশন (সফটওয়্যার সিরিয়াল) এর জন্য Arduino এ 10 এবং 11 পিন ব্যবহার করবেন।

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

এটি ASCII- অক্ষর ভিত্তিক, যা কেবল Arduino IDE এর "সিরিয়াল মনিটর" উইন্ডো ব্যবহার করে ডিবাগ এবং পরীক্ষা করা সহজ করে তোলে।

কমান্ডগুলি "0" (শূন্য) নম্বর থেকে শুরু হয় এবং প্রয়োজন অনুসারে উপরে যায়

"20" এর মধ্যে শুরু হওয়া কমান্ডগুলি সরাসরি রোবোক্লো কমান্ড, এবং সেই সংখ্যার নীচেরগুলি কঠোরভাবে আরডুইনো-সম্পর্কিত কমান্ড।

ইএমআই শব্দের কারণে, আমি একটি চেকসাম অন্তর্ভুক্ত করার জন্য কমান্ড স্ট্রিং উন্নত করেছি।

সুতরাং, কোন স্ট্রিং অন্তর্ভুক্ত করা হবে:

স্ট্রিং এ # টোকেন এর সংখ্যা সহ এটি

চেকসাম

উদাহরণস্বরূপ, বলুন আপনি Arduino এর কমান্ডের মেনু দিয়ে সাড়া দিতে চান:

4 0 12 16

"4" স্ট্রিংয়ে চারটি টোকেন।

"0" হল মেনু কমান্ড।

"12" হল আমার বেছে নেওয়া এলোমেলো সংখ্যা।

"16" হল 4 + 0 + 12 এর সমষ্টি।

একই MENU কমান্ড ভিন্ন হতে পারে:

4 0 20 24

কারণ আমি একটি ভিন্ন এলোমেলো সংখ্যা বেছে নিয়েছি, চেকসামটিও ভিন্ন।

উদাহরণ, বলুন আপনি 100 % গতিতে এগিয়ে যেতে চান:

5 29 0 134 100

"5" পাঁচটি টোকেন

"29" ফরওয়ার্ড কমান্ড

এলোমেলো সংখ্যা "0"

"134" চেকসাম

"100" প্যারামিটার 1 (এই ক্ষেত্রে গতি)

যদি Arduino সেই ইনকামিং স্ট্রিং যাচাই করতে না পারে, এটি কেবল এটি ফেলে / উপেক্ষা করে, কোন প্রতিক্রিয়া নেই।

যদি Arduino X মিলিসেকেন্ডের সাথে পরবর্তী মুভমেন্ট কমান্ড না পায়, তাহলে এটি Roboclaw- এ STOP মোটর পাঠায়।

আরডুইনো শুরু হয় এবং ইউএসবি পোর্টে অটো-স্ট্যাটাস পাঠানো শুরু করে … যদি না এটি বন্ধ করতে বলা হয়।

এই মুহুর্তে আপনার আইডিইতে "সিরিয়াল মনিটর" ব্যবহার করে রোবোক্লো নিয়ন্ত্রণ এবং মোটর ঘুরতে দেখার জন্য প্রস্তুত হওয়া উচিত।

ধাপ 4: রাস্পবেরি পাই যোগ করা এবং প্রোগ্রামিং (node.js)

আবার, যদি আপনি আমার রোবোটিক্স প্লেলিস্টটি দেখেন, এমনকি শুরু থেকেই, আমি রাস্পবেরি চালু এবং চালানোর জন্য প্রতিটি ধাপ অতিক্রম করেছি।

আমি যে একটি জিনিসের উপর আলোকপাত করতে পারি তা হল আপনার একটি 5V রেগুলেটর প্রয়োজন হবে, এবং একরকম এটির জন্য একটি ইউএসবি কেবল তৈরি, কাটা/সংশোধন করতে হবে, অথবা রাস্পবেরিকে অন্যভাবে শক্তি দিতে হবে।

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

github.com/elicorrales/wallace.robot.raspb…

এমনকি পরীক্ষার স্ক্রিপ্টও আছে।

আপনি node.js সার্ভার কোডটি একবার দেখে নিতে পারেন এবং আপনি দেখতে পাবেন কিভাবে রাস্পবেরি টের্স সংখ্যাসূচক নির্দেশনাগুলিকে REST- টাইপ url স্ট্রিংয়ে রূপান্তর করে। আপনি টেস্ট কমান্ড পাঠাতে "কার্ল" ব্যবহার করতে পারেন।

উদাহরণ:

আপনার RP3 IP ঠিকানা: 8084/arduino/api/forward/50

মোটরগুলি ক্ষণিকের জন্য চাকাগুলিকে সামনের দিকে ঘুরিয়ে দেবে।

যদি আপনি এটি একটি শেল স্ক্রিপ্ট লুপে রাখেন, আপনি দেখতে পাবেন চাকাগুলি ঘুরতে থাকে।

Node.js কোড (server.js) সিরিয়াল কমস Arduino হারিয়ে গেলে পুনরায় সংযোগ বৈশিষ্ট্য অন্তর্ভুক্ত করে। আপনি রাস্পবেরি থেকে আরডুইনো আনপ্লাগ করে এবং এটি পুনরায় প্লাগ করে এটি পরীক্ষা করতে পারেন।

নিশ্চিত করুন যে আপনি দুজনের মধ্যে সিরিয়াল বড রেটের সাথে মেলে।

Arduino ডেটার খারাপ প্যাকেট ফেলে দেওয়ার কারণে, এবং node.js লেভেলে, এবং ব্রাউজার জাভাস্ক্রিপ্ট লেভেলে, সবকিছুই অনেকগুলি "ড্রাইভ" কমান্ড পাঠানোর জন্য কোডেড, আমি 2 000 000 বাউড পর্যন্ত চালাতে সক্ষম হয়েছি (2Mbps)।

যদি আপনি পরীক্ষার স্ক্রিপ্টগুলি চালাতে পান এবং আপনি চাকাগুলি ঘুরতে দেখছেন, তাহলে আপনি পরবর্তী পদক্ষেপের জন্য প্রস্তুত।

ধাপ 5: চূড়ান্ত ধাপ - প্রোগ্রামিং / ওয়েব পেজ ক্লায়েন্ট ব্যবহার করা

এই সবের রাস্পবেরি অংশের গিথুব লিঙ্কে অন্তর্ভুক্ত, ক্লায়েন্ট ফাইল।

index.html। index.js p5.min.js.

তারা ইউএসবি গেমপ্যাডকে গেমপ্যাড এপিআই (ব্রাউজার-ভিত্তিক) এর মাধ্যমে পরিচালনা করে এবং ওয়েব পেজে পাওয়া বিভিন্ন বোতাম এবং স্লাইডার দেখতে হবে।

জাভাস্ক্রিপ্ট কোড ক্যোয়ারী (ভোট) X- এবং Y- অক্ষের মান একটি জয়স্টিকের জন্য.. এটি খুব দ্রুত নির্বাচন করে, এবং এটি 8084 এ শোনা node.js সার্ভারে সমস্ত মান বন্ধ করে দেয়।

জয়স্টিকের কাঁচা X- এবং Y- অক্ষের মান 0 এবং 1 এর মধ্যে।

কিন্তু মোটর চালানোর জন্য আরডুইনোতে ব্যবহৃত Roboclaw মোটর কন্ট্রোলার লাইব্রেরি ফাংশন, আশা করে যে -100 থেকে 0 (পিছনে) বা (0 থেকে 100) এগিয়ে একটি মান।

সো…। যে p5.min.js অন্তর্ভুক্ত উদ্দেশ্য। এটি খুব সুন্দর, সুবিধাজনক মানচিত্র () ফাংশন আছে যেখানে আপনি এটিকে কাঁচা মান দেন, এটি কাঁচা (বর্তমান) পরিসীমা এবং নতুন, পছন্দসই পরিসীমা। এবং এটি কাঁচা মানকে নতুন, ম্যাপ করা পরিসরে মান রূপান্তর করে।

আরেকটি বিষয়: 100 গতিতে, রোবটটি খুব চতুর হতে পারে। আমি ক্রমাগত কোন কিছুর মধ্যে দৌড়াচ্ছিলাম। কিন্তু এমনকি আপনি এটিতে আরও ভাল হয়ে উঠলেও, বাম বা ডানদিকে ঘোরানোর সময় এটি এখনও স্পর্শকাতর।

আপনার যোগ করার জন্য কিছু ওয়েব পেজে বর্তমান ম্যাক্স স্পিড স্লাইডারের অনুরূপ হবে। সেই স্লাইডার নির্ধারণ করে যে সর্বোচ্চ বা সর্বোচ্চ মান কত যা আপনি জয়স্টিক্স Xs এবং Ys কে ম্যাপ করবেন।

উদাহরণ:

আপনি 0 -> 1 থেকে 0 -> 100 পর্যন্ত ম্যাপ করছেন বলুন খুব দ্রুত হতে পারে।

কিন্তু, যদি আপনি সেই ম্যাক্স স্পিড স্লাইডারটিকে একটু পিছনে স্লাইড করেন, এখন আপনি 0 -> 1 থেকে 0 -> 80 বা 70 ম্যাপ করছেন।

এর মানে হল যে আপনার নোড.জেএস (এবং আরডুইনোতে) পাঠানো গতির এত বড় পরিবর্তন ছাড়াই আপনার জয়স্টিকটি সরানোর জন্য আপনার আরও অবকাশ রয়েছে।

এবং আপনি যা করতে পারেন তা হল Xs (বাম বা ডানদিকে ঘোরানো) Ys (সামনে বা পিছনে) থেকে তাদের নিজস্ব সর্বোচ্চ উপলব্ধ গতিতে আলাদা করা।

সুতরাং, আপনি দ্রুত রৈখিক গতির জন্য 0 থেকে 100, 0 থেকে -100 এ Ys ছেড়ে যেতে পারেন, কিন্তু আরো নিয়ন্ত্রিত ঘূর্ণনশীল আন্দোলনের জন্য Xs সর্বোচ্চ গতি কমিয়ে দিন। দুই ভুবনের সেরা.

ধাপ 6: চ্ছিক: মাউস ড্র্যাগ এবং / অথবা টাচ ইভেন্ট দিয়ে রোবট চালান

যদি আপনি এতদূর পৌঁছে থাকেন, আপনি জানেন যে সফ্টওয়্যার স্তরগুলি ব্রাউজার থেকে শুরু করে এবং জাভাস্ক্রিপ্টের মাধ্যমে ড্রিলিং এবং রাস্পবেরি নোড.জেএস সার্ভারে, অবশেষে আরডুইনোতে, গেমপ্যাড জয়স্টিক এক্স- এবং ওয়াই-কোঅর্ডিনেটকে রূপান্তর করছে " ফরওয়ার্ড "(বা" ব্যাকওয়ার্ড ", ইত্যাদি) কমান্ড (এবং তাদের গতির মান)।

আরও, আপনি তখন জানেন যে যখন জয়স্টিকের Xs এবং Ys নেগেটিভ 1, শূন্য থেকে প্লাস 1, সেগুলিকে শূন্য এবং 100 এর মধ্যে রূপান্তরিত করতে হবে। ঠিক আছে, ওয়েব পৃষ্ঠায় সর্বাধিক গতি সেটিংয়ের উপর নির্ভর করে।

Soo… মাউস, বা স্পর্শ ইভেন্টগুলি (স্মার্টফোনের মতো) ব্যবহার করার একমাত্র কাজ হল, সেই ইভেন্টগুলি ক্যাপচার করা, Xs এবং Ys ধরুন।

কিন্তু ---- সেই Xs এবং Ys নেতিবাচক 1 এবং 1 এর মধ্যে নয়। তারা 0 শুরু করে এবং ইতিবাচকভাবে বৃদ্ধি পায়, কারণ এগুলি মূলত কিছু HTML উপাদান (যেমন বুটস্ট্র্যাপ প্যানেল) বা ক্যানভাসের পিক্সেল বা আপেক্ষিক স্ক্রিন স্থানাঙ্ক।

তাই আবার সেখানে, P5 এর Js লাইব্রেরির "ম্যাপ ()" ফাংশনটি আমাদের প্রয়োজন অনুযায়ী পুনরায় ম্যাপ করার জন্য খুব সহজ।

আমি দুটি ভিন্ন ওয়েব পেজ রাখার জন্য কোডটি রিফ্যাক্ট করেছি, একটি গেমপ্যাড ব্যবহার করে ডেস্কটপের জন্য, আরেকটি মোবাইলের জন্য, টাচ ইভেন্ট ব্যবহার করে।

এছাড়াও, একবার Xs এবং Ys পুনরায় ম্যাপ করা হলে, তাদের একই চেইন কোড ইত্যাদিতে খাওয়ানো হয়, যেমন গেমপ্যাড থেকে Xs এবং Ys।

প্রস্তাবিত: