সুচিপত্র:

ওয়েব নিয়ন্ত্রিত রোভার: 14 টি ধাপ (ছবি সহ)
ওয়েব নিয়ন্ত্রিত রোভার: 14 টি ধাপ (ছবি সহ)

ভিডিও: ওয়েব নিয়ন্ত্রিত রোভার: 14 টি ধাপ (ছবি সহ)

ভিডিও: ওয়েব নিয়ন্ত্রিত রোভার: 14 টি ধাপ (ছবি সহ)
ভিডিও: SpaceX Starbase Ground Support Systems Near Complete, Movies being made from Space, JWST Update 2024, নভেম্বর
Anonim
ওয়েব নিয়ন্ত্রিত রোভার
ওয়েব নিয়ন্ত্রিত রোভার
ওয়েব নিয়ন্ত্রিত রোভার
ওয়েব নিয়ন্ত্রিত রোভার

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

এই নির্দেশযোগ্য, আমরা একটি সহজ কিন্তু শক্তিশালী ওয়াইফাই/ওয়েব নিয়ন্ত্রিত রোভার তৈরি করতে যা লাগবে তা দেখব। ব্যবহৃত চ্যাসি হচ্ছে অ্যাকটোবটিকস গোসনেক। আমি এটির আকার, সম্প্রসারণ-ক্ষমতা এবং খরচের জন্য এটি বেছে নিয়েছি কিন্তু আপনি আপনার নিজের পছন্দের অন্য কোন চ্যাসি ব্যবহার করতে পারেন।

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

মোটর চালানোর জন্য, আমি একটি RoboClaw 2x5a বেছে নিয়েছি। এটি কমান্ড করার জন্য সহজ সিরিয়াল যোগাযোগের অনুমতি দেয় এবং RPI এবং Gooseneck এর মোটরগুলির সাথে ভাল কাজ করে।

অবশেষে, এটি দূরবর্তীভাবে চালানোর জন্য POV টাইপ ভিডিও ফিডব্যাকের জন্য একটি ওয়েবক্যাম রয়েছে। আমি প্রতিটি বিষয় পরবর্তীতে আরো বিস্তারিতভাবে কভার করব।

ধাপ 1: হার্ডওয়্যার প্রয়োজন

হার্ডওয়্যার প্রয়োজন
হার্ডওয়্যার প্রয়োজন
হার্ডওয়্যার প্রয়োজন
হার্ডওয়্যার প্রয়োজন
হার্ডওয়্যার প্রয়োজন
হার্ডওয়্যার প্রয়োজন
হার্ডওয়্যার প্রয়োজন
হার্ডওয়্যার প্রয়োজন
  • Actobotics Gooesneck চ্যাসি বা আপনার পছন্দের উপযুক্ত প্রতিস্থাপন
  • আপনার পছন্দের রাস্পবেরি পাই (বা ক্লোন) - এই বটটিতে একটি RPI মডেল B ব্যবহার করা হয়, তবে কমপক্ষে দুটি ইউএসবি পোর্ট থাকলে যেকোন কাজ করবে
  • স্ট্যান্ডার্ড সার্ভো প্লেট বি x1
  • 90 ° একক কোণ চ্যানেল বন্ধনী x1
  • RoboClaw 2x5a মোটর ড্রাইভার
  • S3003 বা অনুরূপ স্ট্যান্ডার্ড সাইজের সার্ভো
  • ছোট রুটিবোর্ড বা মিনি রুটিবোর্ড
  • মহিলা থেকে মহিলা জাম্পার তার
  • পুরুষ থেকে মহিলা জাম্পার তার
  • ওয়েব ক্যাম (alচ্ছিক) - আমি একটি Logitech C110 ব্যবহার করি, এবং এখানে RPI এর জন্য সমর্থিত ক্যামের একটি তালিকা
  • সার্ভো পাওয়ারের জন্য 5v-6v পাওয়ার সোর্স
  • ড্রাইভ মোটর পাওয়ারিংয়ের জন্য 7.2v-11.1v ব্যাটারি
  • RPI এর জন্য 5v 2600mah (বা উচ্চতর) USB পাওয়ার ব্যাংক
  • ইউএসবি ওয়াইফাই অ্যাডাপ্টার

আমার বটের উপর, আমি 4 চাকা ব্যবহার করি যাতে এটি আরও একটু অল-টেরেন-ইন্ডোর হয়। এই বিকল্পের জন্য আপনার প্রয়োজন হবে:

  • 4 "হেভি ডিউটি হুইল x2
  • 4 মিমি বোর সেট স্ক্রু হাব (0.770 ইঞ্চি) x2

ধাপ 2: চ্যাসি একত্রিত করা

চ্যাসি একত্রিত করা
চ্যাসি একত্রিত করা
চ্যাসি একত্রিত করা
চ্যাসি একত্রিত করা
চ্যাসি একত্রিত করা
চ্যাসি একত্রিত করা

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

আমার বট -এ, আমি চ্যাসিগুলি 4 ভারী দায়িত্বের চাকার জন্য যে চাকাগুলি নিয়ে এসেছি তা প্রতিস্থাপন করা বেছে নিয়েছি। এটি alচ্ছিক এবং প্রয়োজন না হলে আপনি এটি করতে চান।

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

ইলেকট্রনিক্স মাউন্ট করা
ইলেকট্রনিক্স মাউন্ট করা
ইলেকট্রনিক্স মাউন্ট করা
ইলেকট্রনিক্স মাউন্ট করা
ইলেকট্রনিক্স মাউন্ট করা
ইলেকট্রনিক্স মাউন্ট করা

আপনার ইলেকট্রনিক্স মাউন্ট করার জন্য Gooseneck এর অনেক জায়গা এবং বিকল্প রয়েছে। আমি আপনাকে একটি গাইড লাইন হিসেবে এই ছবিগুলো দিচ্ছি, কিন্তু আপনি কিভাবে এটিকে সাজাতে চান তা বেছে নিতে পারেন। বোর্ড এবং ব্যাটারি মাউন্ট করার জন্য আপনি স্ট্যান্ড-অফ, ডাবল-সাইডেড টেপ, ভেলক্রো বা সার্ভো-টেপ ব্যবহার করতে পারেন।

ধাপ 4: ওয়েবক্যাম যুক্ত করা

ওয়েবক্যাম যুক্ত করা হচ্ছে
ওয়েবক্যাম যুক্ত করা হচ্ছে
ওয়েবক্যাম যুক্ত করা হচ্ছে
ওয়েবক্যাম যুক্ত করা হচ্ছে
ওয়েবক্যাম যুক্ত করা হচ্ছে
ওয়েবক্যাম যুক্ত করা হচ্ছে

এই ধাপের জন্য 90 ডিগ্রি বন্ধনী, লাইটওয়েট সার্ভো হাব এবং.3125 স্ক্রুগুলির চার (4) নিন:

  • সার্ভো হাব নিন এবং এটি বন্ধনীটির এক পাশে রাখুন এবং চিত্রের মত.2125 "স্ক্রু দিয়ে তাদের সুরক্ষিত করুন
  • পরবর্তীতে সার্ভোকে সার্ভো ব্র্যাকেটে মাউন্ট করুন
  • সার্ভোস মেরুদন্ডে সার্ভো হর্নের সাথে 90 ডিগ্রি বন্ধনী সংযুক্ত করুন এবং সেগুলিকে একসাথে সংযুক্ত করতে সার্ভোর সাথে আসা হর্ন স্ক্রু ব্যবহার করুন
  • এখন বাকি স্ক্রুগুলির সাথে হংস-গলার শীর্ষে বন্ধনীতে সার্ভো মাউন্ট করুন
  • 90 ডিগ্রি বন্ধনীতে জিপ-টাই বা ডবল পার্শ্বযুক্ত টেপ সহ ক্যামেরা মাউন্ট করুন

প্রয়োজনে গাইডের জন্য ছবিগুলি ব্যবহার করুন।

ধাপ 5: এটা সব আপ তারের

ওয়্যারিং ইট অল আপ
ওয়্যারিং ইট অল আপ
ওয়্যারিং ইট অল আপ
ওয়্যারিং ইট অল আপ
ওয়্যারিং ইট অল আপ
ওয়্যারিং ইট অল আপ
ওয়্যারিং ইট অল আপ
ওয়্যারিং ইট অল আপ

এই রোবটের জন্য ওয়্যারিং মোটামুটি সামনের দিকে।

মোটর:

যদি আপনি ইতিমধ্যে এটি না করে থাকেন তবে সোল্ডার উভয় মোটরগুলিতে নেতৃত্ব দেয়

রোবটের সামনে (হংস-ঘাড়ের সাথে শেষ) আপনার মুখোমুখি:

  • M1A এবং M1B চ্যানেলে বাম মোটরের মোটর তারগুলি সংযুক্ত করুন
  • ডান মোটরের মোটর তারগুলিকে M2A এবং M2B চ্যানেলে সংযুক্ত করুন

গ্রাউন্ড (GND) সংযোগ:

  • গ্রাউন্ড জাম্পার বোর্ডে রোবোক্লোর একটি গ্রাউন্ড পিন সংযুক্ত করুন। রোবোক্লোর গ্রাউন্ড পিন লাইনটি কেন্দ্রের সবচেয়ে কাছের (ছবি দেখুন)
  • RPI- এ PIN 6 কে জাম্পার বোর্ডের সাথে সংযুক্ত করুন। পিন অ্যাসাইনমেন্টের জন্য RPI হেডার পিক দেখুন।
  • সার্ভার ব্যাটারি প্যাক থেকে GND কে জাম্পার বোর্ডের একটি পিনের সাথে সংযুক্ত করুন।
  • জাম্পার বোর্ড থেকে servos GND তারে একটি জাম্পার তার চালান।

RPI থেকে RoboClaw:

RPI GPIO14 TXD পিনকে RoboClaw S1 পিনের সাথে সংযুক্ত করুন

শক্তি:

  • Servo ব্যাটারি থেকে POS তারের servos POS সীসা সংযোগ করুন
  • মোটর ব্যাটারি থেকে POS তারের সংযোগ করুন RoboClaw মোটর পাওয়ার ইনপুট টার্মিনালের POS (+) এর সাথে। আমরা আপাতত GND টার্মিনাল সংযোগ বিচ্ছিন্ন রেখে দেব।

ধাপ 6: RPI সেট আপ করা

RPI সেট আপ করা হচ্ছে
RPI সেট আপ করা হচ্ছে

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

আপনার RPI সেটআপ পেতে, নিম্নলিখিত পৃষ্ঠাগুলি দেখুন:

  • RPI বেসিক সেটআপ
  • আরপিআই কুইক স্টার্ট গাইড
  • NOOBS সেটআপ গিল্ড

সাধারণ জাম্প-অফ পৃষ্ঠাগুলির জন্য, আরপিআই প্রধান পৃষ্ঠা এবং ইলিনাক্স পৃষ্ঠাগুলি শুরু করার জন্য দুর্দান্ত জায়গা।

RPI সাধারণ ওয়াইফাই সেটআপের জন্য এই লিঙ্কটি দেখুন।

আপনি যদি বটটিতে কোনও ধরণের ক্যামেরা বা ওয়েব ক্যাম ব্যবহার করার পরিকল্পনা করেন তবে প্রাথমিক পৃষ্ঠাগুলি পেতে এই পৃষ্ঠাগুলি দেখুন।

  • RPI ক্যাম সেটআপ
  • eLinix RPI ক্যাম সেটআপ

ভিডিও আসছে:

RPI তে ভিডিও স্ট্রিমিং কাজ করার কয়েকটি উপায় আছে, কিন্তু আমি যে পদ্ধতিটি পছন্দ করি তা হল মোশন ব্যবহার করা।

আপনার RPI এ এটি ইনস্টল করার জন্য এটি চালান: sudo apt-get install motion

এই ইনস্ট্রাক্টেবলটি স্ট্রিমিংয়ের জন্য এটি সেট আপ করে চলেছে।

ধাপ 7: RPI সিরিয়াল পোর্ট কনফিগার করা

RX এবং TX ব্যবহারের জন্য আমাদের লিনাক্স কনসোল মোড অক্ষম করতে হবে কারণ আমরা এই পোর্ট থেকে RoboClaw মোটর কন্ট্রোলারের সাথে কথা বলতে চাই। এটি করার জন্য, আপনি এই পদ্ধতি বা এই সরঞ্জামটি ব্যবহার করতে পারেন। পদ্ধতিটি আপনার পছন্দ, কারণ তারা উভয়েই শেষ পর্যন্ত একই কাজ করে।

ধাপ 8: পাইথন মডিউল ইনস্টল করা

আপনার RPI তে পাইথন ইনস্টল করার পাশাপাশি পাইথন প্যাকেজ ইনস্টলার পিপ লাগবে।

পিপ ইনস্টল করতে:

  1. sudo apt-get python-setuptools ইনস্টল করুন
  2. sudo easy_install pip

তারপর:

  1. সুডো পিপ ফ্লাস্ক ইনস্টল করুন
  2. sudo pip pyserial ইনস্টল করুন
  3. sudo pip RPIO ইনস্টল করুন

কোডটি চালানোর জন্য এটি প্রয়োজনীয় সমস্ত মডিউল হবে।

ধাপ 9: RoboClaw সেট আপ

আমার রোবট কোডটি রোবোক্লোর সাথে স্ট্যান্ডার্ড সিরিয়াল মোডে 19200 বাউডে কথা বলছে।

এই জন্য RoboClaw সেট আপ করতে:

  1. RoboClaw- এ "MODE" বোতাম টিপুন
  2. বিলম্বের মধ্যে LED 5 (পাঁচ) বার ফ্ল্যাশ না হওয়া পর্যন্ত সেট বোতামটি টিপুন
  3. সংরক্ষণ করতে "LIPO" বোতামটি টিপুন
  4. পরবর্তী "SET" বোতাম টিপুন যতক্ষণ না LED বিলম্বের মধ্যে 3 (তিন) বার ফ্ল্যাশ করে
  5. সংরক্ষণ করতে LIPO বোতামটি টিপুন

মোটর নিয়ন্ত্রক স্থাপনের জন্য এটিই। প্রয়োজনে আরও তথ্যের জন্য উপরের লিঙ্ক করা পিডিএফ দেখুন।

ধাপ 10: রোভার প্রোগ্রাম/ফাইল ইনস্টল করা

আপনার Pi ব্যবহারকারী ডিরেক্টরিতে rover.zip ফাইলটি আপনার RPI এ ডাউনলোড করুন এবং অনুলিপি করুন।

আপনি যদি লিনাক্স বা ম্যাক চালাচ্ছেন, তাহলে আপনি এটি করতে 'scp' ব্যবহার করতে পারেন:

scp location/location/of/the/file/rover.zip pi@your_rpi_ip:/

উইন্ডোজের জন্য, আপনি pscp ডাউনলোড এবং ব্যবহার করতে পারেন এবং তারপর করুন:

pscp /location/of/the/file/rover.zip pi@your_rpi_ip:/

একবার জিপ ফাইলটি আরপিআই -তে অনুলিপি করা হলে, পিআই ব্যবহারকারী হিসাবে এটিতে লগ ইন করুন।

এখন চালান:

unzip rover.zip

এটি ফাইলগুলিকে 'রোভার' নামে একটি ফোল্ডারে আনজিপ করবে এবং সেই ফোল্ডারের নীচে নিম্নলিখিতগুলি থাকবে:

  • restrover.py (রোবটের জন্য পাইথন কোড)
  • স্ট্যাটিক (নিয়ন্ত্রণ পৃষ্ঠায় বোতামগুলির জন্য ইমেজ ফাইলগুলি ধারণ করে)
  • টেমপ্লেট (index.htlm ফাইল, নিয়ন্ত্রণ ওয়েব পেজ ধারণ করে)

আপনি যদি একটি ওয়েব ক্যাম ব্যবহার করেন, তাহলে টেমপ্লেট ফোল্ডারে index.html ফাইলের নীচে লাইন পরিবর্তন করুন। আপনার ভিডিও স্ট্রীমের জন্য src ইউআরএল মেলাতে IFRAME লাইনে URL পরিবর্তন করুন।

ধাপ 11: বট আপ শুরু

বট আপ শুরু
বট আপ শুরু

আরপিআই এর সাথে ইউএসবি পাওয়ার সংযুক্ত করুন।

বট কোড চালু করতে, পাই ব্যবহারকারী হিসাবে লগ ইন করুন এবং চালান:

  • সিডি রোভার
  • sudo পাইথন restrover.py

যদি সবকিছু ঠিক থাকে, তাহলে আপনার এই ধাপে ছবির অনুরূপ একটি স্ক্রিন দেখা উচিত

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

এখন, রোবক্লো মোটর পাওয়ার ইনপুটে NEG (-) টার্মিনালের সাথে GND (-) তারের সংযোগ করুন।

ধাপ 12: বট কন্ট্রোল পেজ অ্যাক্সেস করা

বট কন্ট্রোল পেজ অ্যাক্সেস করা
বট কন্ট্রোল পেজ অ্যাক্সেস করা
বট কন্ট্রোল পেজ অ্যাক্সেস করা
বট কন্ট্রোল পেজ অ্যাক্সেস করা

রোবটের পাইথন স্ক্রিপ্ট চলার পর, RoboClaw কে পাওয়ার আপ করুন এবং তারপর আপনার RPI এর আইপি তে নেভিগেট করুন:

your_rpi_ip

আপনি ছবিগুলির মতো ওয়েব কন্ট্রোল পেজ পপ আপ দেখতে পাবেন। যদি না হয়, আপনার RPI আউটপুট টার্মিনাল পরীক্ষা করুন এবং কোন ত্রুটি দেখুন এবং সেগুলি সংশোধন করুন।

পৃষ্ঠায় একবার, আপনি বট নিয়ন্ত্রণ করতে প্রস্তুত।

রোবটটি "মেড রান" সেটিং এবং মাঝারি গতিতে শুরু হবে।

বটটি পৃষ্ঠার বোতামগুলির মাধ্যমে বা কীবোর্ডের কীগুলির মাধ্যমে নিয়ন্ত্রণ করা যায়।

চাবিগুলি হল:

  • w - এগিয়ে
  • z - বিপরীত/পিছনে
  • a - দীর্ঘ বাম মোড়
  • s - দীর্ঘ ডান মোড়
  • q - ছোট বাম মোড়
  • e - ছোট ডান মোড়
  • 1 - প্যান ক্যামেরা বাকি
  • 2 - প্যান ক্যামেরা ডান
  • 3 - সম্পূর্ণ বাম প্যান
  • 4 - সম্পূর্ণ ডান প্যান
  • / - হোম/ সেন্টার ক্যামেরা
  • h - হোল্ট/স্টপ রোবট

পাঠানো কমান্ডের মধ্যে অর্ধ সেকেন্ড বিলম্ব বাফার রয়েছে। অবাঞ্ছিত পুনরাবৃত্তি কমান্ডগুলি দূর করার জন্য আমি এটি করেছি। আপনি অবশ্যই কোড থেকে এটি অপসারণ করতে পারেন যদি আপনি চান (index.html এ)

বাকি নিয়ন্ত্রণ এবং এটি নিয়ন্ত্রণ করা স্ব -ব্যাখ্যামূলক হওয়া উচিত।

ধাপ 13: পাইথন/ফ্লাস্ক কোড

এই বট পাইথন এবং ফ্লাস্ক ওয়েব ফ্রেমওয়ার্ক ব্যবহার করে। আপনি আগ্রহী হলে এখানে ফ্লাস্ক সম্পর্কে আরো জানতে পারেন।

একটি ফ্লাস্ক অ্যাপ এবং সাধারণ পাইথন স্ক্রিপ্ট থেকে বড় পার্থক্য হল @app.route ক্লাস/পদ্ধতি ইউআরআই হ্যান্ডলিং করতে ব্যবহৃত হয়। এর বাইরে এটি বেশিরভাগ অংশে বেশ স্বাভাবিক পাইথন।

#!/usr/bin/env পাইথন

# # ওয়াইফাই/ওয়েব চালিত রোভার # # স্কট বিয়াসলি লিখেছেন - 2015 # # RPIO, pyserial এবং Flask ব্যবহার করে) রোবক্লো মোটর কন্ট্রোলারের সাথে কথা বলার জন্য কম পোর্টের সাথে সংযোগ করুন: # আইওইআরআর: প্রিন্ট ("কম পোর্ট নয় ", servo_pos) # সময় নির্ধারণ করার জন্য একটু বাস করুন। ঘুম (3) # # ইউআরআই হ্যান্ডলার - সব বট পেজ অ্যাকশন এখানে করা হয় # # বট কন্ট্রোল পেজ (হোম পেজ) Send app.route ("/" পাঠান) def index (): return render_template ('index.html', name = None) @app.route ("/forward") def forward (): global last_direction, run_ti আমি প্রিন্ট "ফরওয়ার্ড" go_forward () last_direction = 0 # ঘুম 100ms + run_time time.sleep (0.100 + run_time) # যদি একটানা না হয়, তাহলে বিলম্বের পরে থামুন যদি run_time> 0: last_direction = -1 halt () return "ok" app.route ("/backward)" def backward যদি run_time> 0: last_direction = -1 halt () "ok" @app.route ("/left") def left (): global last_direction, turn_tm_offset print "left" go_left () last_direction = -1 # sleep @1 /2 সেকেন্ড টাইম।স্লিপ (0.500 - turn_tm_offset) # stop halt () time.sleep (0.100) return "ok" @app.route ("/right") def right (): global last_direction, turn_tm_offset print "right" go_right () # ঘুম/1/2 সেকেন্ড টাইম। ঘুম (0.500 - turn_tm_offset) last_direction = -1 # stop halt () time.sleep (0.100) return "ok" @app.route ("/ltforward") def ltforward (): গ্লোবাল লাস্ট_ডাইরেকশন, টার্ন_টি m_offset মুদ্রণ "লেফট ফরওয়ার্ড টার্ন" go_left () # ঘুম @1/8 সেকেন্ড সময়। ঘুম (0.250 - (turn_tm_offset / 2)) last_direction = -1 # stop halt () time.sleep (0.100) return "ok" @app রুট stop halt () time.sleep (0.100) return "ok" @app.route ("/stop") def stop (): global last_direction print "stop" halt () last_direction = -1 # ঘুম 100ms time.sleep (0.100) "ok" return app.route ("/panlt") def panlf (): global servo_pos প্রিন্ট করুন "Panlt" servo_pos -= 100 যদি servo_pos 2500: servo_pos = 2500 servo.set_servo (18, servo_pos) # ঘুম 150ms সময়। ঘুম (0.150) ফিরুন "ঠিক আছে" @app.route ("/home") def home (): global servo_pos print "Home" servo_pos = 1250 servo.set_servo (18, servo_pos) # sleep 150ms time.sleep (0.150) return "ঠিক আছে" @app.route ("/panfull_lt") def panfull_lt (): global servo_pos print "Pan full l eft "servo_pos = 500 servo.set_servo (18, servo_pos) # ঘুম 150ms time.sleep (0.150) return" ok " @app.route ("/panfull_rt ") def panfull_rt (): global servo_pos print" Pan full right "servo_pos = 2500 servo.set_servo (18, servo_pos) # ঘুম 150ms time.sleep (0.150) "ok" return app.route ("/speed_low") def speed_low (): global speed_offset, last_direction, turn_tm_offset speed_offset = 42 turn_tm_offset = 0.001 # শেষ গতিতে নতুন গতি পেতে বর্তমান দিকটি আপডেট করুন speed_mid (): গ্লোবাল speed_offset, last_direction, turn_tm_offset speed_offset = 84 turn_tm_offset = 0.166 # নতুন গতি পেতে বর্তমান দিক আপডেট করুন যদি last_direction == 0: go_forward () যদি last_direction == 1: go_backward () # ঘুম 150ms time.sleep (0.150) "ok" return app.route ("/speed_hi") def speed_hi (): global speed_offset, last_direction, turn_tm_offset speed_offset = 126 tur n_tm_offset = 0.332 # নতুন গতি পেতে বর্তমান দিক আপডেট করুন যদি last_direction == 0: go_forward () যদি last_direction == 1: go_backward () # sleep 150ms time.sleep (0.150) return "ok" @app.route ("/ক্রমাগত ") ডিফ কন্টিনিউয়াস (): গ্লোবাল রান_টাইম প্রিন্ট" কন্টিনিউয়াস রান "রান_টাইম = 0 # ঘুম 100ms টাইম। ঘুম (0.100)" ঠিক আছে " @app.route ("/mid_run ") ডিফ মিড_রুন (): গ্লোবাল রান_টাইম প্রিন্ট" মিড run "run_time = 0.750 halt () # sleep 100ms time.sleep (0.100) return" ok " @app.route ("/short_time ") def short_time (): global run_time print" short run "run_time = 0.300 halt () # ঘুম 100ms time.sleep (0.100) "ok" # # মোটর ড্রাইভ ফাংশন # def go_forward (): global speed_offset if speed_offset! = 42: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (128 + speed_offset)) অন্যথায়: roboclaw.write (chr (127 - speed_offset)) roboclaw.write (chr (255 - speed_offset)) def go_backward (): global speed_offset if speed_offset! = 42: roboclaw.write (chr (127 - speed_offset)) roboclaw.wri te (chr (255 - speed_offset)) else: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (128 + speed_offset)) def go_left (): global speed_offset if speed_offset! = 42: roboclaw.write (ক্র speed_offset! = 42: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (255 - speed_offset)) অন্য: roboclaw.write (chr (127 - speed_offset)) roboclaw.write (chr (128 + speed_offset)) def halt (): roboclaw.write (chr (0)) যদি _name_ == "_main_": app.run (host = '0.0.0.0', port = 80, debug = True)

আপনি যদি ফ্লাস্ক থেকে ডিবাগ তথ্য না চান বা প্রয়োজন না হয়, তাহলে app.run লাইনে 'মিথ্যা' ডিবাগ সেট করুন।

যদি _name_ == "_main_":

app.run (হোস্ট = '0.0.0.0', পোর্ট = 80, ডিবাগ = মিথ্যা)

আপনি যে পোর্টটি ফ্লাস্ক http সার্ভার এখানে শোনেন তাও পরিবর্তন করতে পারেন।

ধাপ 14: অন্যান্য হার্ডওয়্যার ব্যবহার করা

আপনি যদি অন্য হার্ডওয়্যার ব্যবহার করতে চান, যেমন অন্য ধরনের SBC (সিঙ্গেল বোর্ড কম্পিউটার), আপনার অন্যান্য বোর্ডে যেমন পাইগন এবং ফ্লাস্ক চালানোর ক্ষেত্রে বিগল হাড়, PCDuino ইত্যাদিতে সামান্য সমস্যা থাকতে হবে … আপনাকে GPIO এর সাথে মেলে কোড পরিবর্তন করতে হবে লেআউট এবং নতুন বোর্ডের সার্ভো ড্রাইভিং ক্ষমতা ব্যবহার করুন।

অন্য ধরনের মোটর ড্রাইভার ব্যবহার করার জন্য, আপনাকে শুধু go_forward, go_backward, go_left, go_right এবং halt ফাংশনগুলি সংশোধন করতে হবে যা প্রতিস্থাপন মোটর ড্রাইভারকে মোটরকে সেই বিশেষ ফাংশনটি করতে করতে করতে হবে।

প্রস্তাবিত: