সুচিপত্র:

সোনিক LED ফিডব্যাক: 7 টি ধাপ (ছবি সহ)
সোনিক LED ফিডব্যাক: 7 টি ধাপ (ছবি সহ)

ভিডিও: সোনিক LED ফিডব্যাক: 7 টি ধাপ (ছবি সহ)

ভিডিও: সোনিক LED ফিডব্যাক: 7 টি ধাপ (ছবি সহ)
ভিডিও: 🌱斗罗大陆 S1 EP1-130!唐三以双世之能问鼎斗罗大陆!成就双神神位!【斗罗大陆 Soul Land】#国漫 2024, জুলাই
Anonim
সোনিক LED ফিডব্যাক
সোনিক LED ফিডব্যাক
সোনিক LED ফিডব্যাক
সোনিক LED ফিডব্যাক
সোনিক LED ফিডব্যাক
সোনিক LED ফিডব্যাক

আবার হাই, ঘৃণা করে যে আপনার রোবট সবকিছুতে চলে? এটি সেই সমস্যার সমাধান করবে। 8 টি সোনিক সেন্সরের সাহায্যে এটি জটিল মনে হচ্ছে … কিন্তু আসলে আমি এটা খুব সহজ করে দিয়েছি। আমি এমন প্রকল্পগুলি পোস্ট করার চেষ্টা করি যা আপনাকে আরডুইনো সম্পর্কে জানতে সাহায্য করে এবং 'বাক্সের বাইরে' ধারণাটি দেখায়। এই পোস্টটি আপনাকে 595 সুইচিং, প্রো-মিনিসকে প্রোগ্রামযোগ্য সেন্সর হিসাবে এবং রিয়েল টাইম নেতৃত্বাধীন প্রতিক্রিয়াগুলির দুর্দান্ত ব্যবহার বুঝতে সাহায্য করবে। আপনি যদি 'কপি এবং পেস্ট এবং প্লাগ-ইন' হিসাবে Arduino উপভোগ করেন তবে আপনি এটি এড়িয়ে যেতে পারেন।

আমি প্রো-মিনি ব্যবহার করতে পছন্দ করি। এগুলি প্রায় 2.50 ডলার, পুরোপুরি উনো হিসাবে কাজ করে এবং হেডারগুলি ইনস্টল করা তাদের খুব নমনীয় করে তোলে। একটি সেন্সর মাইক্রো হিসাবে ব্যবহার করা হলে আপনি কেনা সেন্সর যা নির্দেশ করেন তার পরিবর্তে আপনি যা চান তা করতে পারেন। I2C দিয়ে শুধুমাত্র 2 টি তারের সাহায্যে এগুলো একসঙ্গে এক লাইনে বাঁধা যায়। তাই MEGA এর উপর চলে যান আমি 4 মিনিগুলি 4 টি পৃথক লাইন কোড একই সময়ে চালাতে পারি, শুধুমাত্র $ 10.00 এ। এখানে আমি একটি 595 এর মাধ্যমে সোনিক সেন্সর পপ করতে এবং রিয়েলটাইম নেতৃত্বাধীন দূরত্ব দেখানোর জন্য একটি মিনি ব্যবহার করি। তারপরে মাদার বোর্ডের সাথে কেবল 8 বিট ডেটা ভাগ করুন। এটি মাদার বোর্ড থেকে ভার বহন করে এবং তার কোডটি খুব সহজ করে তোলে।

সোনিক সেন্সরের সমস্যা আছে … কোন চাক্ষুষ প্রতিক্রিয়া নেই। আপনি কখনই জানেন না যে সেন্সরটি কেবল একটি মৃত ওজন বা কাজ করছে! আমি বিশ্বাস করি যে কে কখনও 'BLINK' নিয়ে এসেছিল আইনস্টাইনের চেয়ে স্মার্ট। শুধু একটি নেতৃত্বাধীন এবং তথ্যের একটি বিশ্ব জ্বলজ্বলে দ্বারা রিলে হয়। সুতরাং একটি সোনিক সেন্সরের রিয়েলটাইম প্রতিক্রিয়া প্রয়োজন। এখানে আমি প্রতিটি সেন্সর নিরীক্ষণের জন্য একটি অ্যারে ব্যবহার করেছি। আপনি তাদের প্রয়োজন নেই, শুধু leds ছাড়া সেন্সর করা। কিন্তু পিসিবিতে এলইডি থাকা সহায়ক।

ধাপ 1: পিসিবি তৈরি করুন

পিসিবি তৈরি করুন
পিসিবি তৈরি করুন
পিসিবি তৈরি করুন
পিসিবি তৈরি করুন
পিসিবি তৈরি করুন
পিসিবি তৈরি করুন
পিসিবি তৈরি করুন
পিসিবি তৈরি করুন

পিসিবি তৈরি এবং জনসংখ্যা। সতর্কতা … আমি সনিক সেন্সর প্লাগ ইন করার জন্য 4 টি পিন সংযোগে PCB- এ ভুল করেছি। ECHO এবং TRIGGER Vcc এবং ভিত্তিগুলি পিসিবিতে প্লাগ করতে যাচ্ছিল। সংযোগকারীদের জন্য পর্যাপ্ত জায়গা নেই তাই আমি কেবল পিন-আউট দিয়ে পিসিবি তৈরি করেছি। সুতরাং আপনি পিসিবিতে একটি তারের সংযোগকারীকে সোল্ডার করতে পারেন এবং প্রকৃত সোনিক সেন্সরগুলিতে প্লাগ করতে পারেন। লেডগুলির জন্য আমি ভিতরের প্রান্তে হলুদ লেড এবং বাইরে লাল। সেন্সরগুলি সঠিকভাবে পরিমাপ করা হলে এটি আপনাকে দূরত্বে দেখতে সাহায্য করে।

এটি আমার তৈরি করা কয়েকটা সাইড পিসিবির মধ্যে একটি। আমি বরং 2 ইএ একক দিকে এবং রান জাম্পার করতে চাই। কিন্তু নেতৃত্বাধীন ডিসপ্লে পেতে আপনার কমপক্ষে উপরের পিসিবি প্রয়োজন। আমি ডাউনলোডে লেআউট আলাদা করেছি।

পিসিবি হল একটি প্রো-মিনি যার জন্য A4-A5 প্রান্ত হেডারের ভিতরে। যেভাবেই হোক A4-A5 কে মাস্টার A4-A5 এর সাথে সংযুক্ত করুন। ভিসিসি এবং গ্রাউন্ডগুলিও ভুলে যাবেন না।

ধাপ 2: অনেক ভুল

অনেক ভুল
অনেক ভুল

এখন আমার ভুলের জন্য … আমি একবারে ট্রিগারগুলিকে পপ করার চেষ্টা করেছি (সবাই একসাথে বাঁধা) এবং এই ধরণের কাজটি ভালভাবে কাজ করেছিল কিন্তু কিছু মিথস্ক্রিয়া ঘটেছিল। তাই এখন সব ECHOS মাইক্রো (8) এবং TRIGGERS একটি 595 দ্বারা সেট করা হয়। আরো তিনটি পিন (3)। এলইডিগুলির জন্য, মাল্টিপ্লেক্সিং কাজ করবে না। আপনি প্রতিটি নেতৃত্বের জন্য একটি সম্পূর্ণ অন সময় প্রয়োজন। এর মানে হল 7 টি লেডের প্রতিটি সারির নিজস্ব 595 থাকতে হবে। একবার আপনি 595 আপডেট করলে পরবর্তী আপডেট না হওয়া পর্যন্ত লেডগুলি জ্বলতে থাকবে। যেখানে মাল্টিপ্লেক্সিং শুধুমাত্র সেকেন্ডের দশম দশকের জন্য আলো জ্বালায়। এটি আমার পাঠকদের মধ্যে ভাল কাজ করে এবং এটি একটি ডেডিকেটেড মাইক্রো প্রয়োজন। 8 টি সোনিক সেন্সর স্ক্যান করার এবং দূরত্ব পরিমাপ করার সময় নেই। আমি চেষ্টা করেছি এবং খুব খারাপ ফলাফল পেয়েছি। এলইডিগুলিকে মাল্টিপ্লেক্স করা মানে সারি + কলামের গ্রিড এবং এর মানে হল পিসিবিতে প্রায় 64+ ফিড থ্রু।

পিসিবিতে বিশৃঙ্খলার কারণে আমি 595 থেকে মাত্র 7 টি আউটপুট ব্যবহার করেছি। দূরত্বে আপনি বলতে পারবেন না যে 7 বা 8 টি এলইডি আছে কেবল তাদের গতি। আপনি সমস্ত এলইডিগুলিকে একটি একক প্রতিরোধকের সাথে বাঁধতে প্রলুব্ধ হতে পারেন এবং এটি কাজ করে, তবে অ্যারের উজ্জ্বলতা লাইটের পরিমাণের সাথে পরিবর্তিত হয়। সুতরাং প্রতি নেতৃত্বে একটি প্রতিরোধক সেরা। আমি শুধু 595 ভালবাসি কিন্তু যদি তারা শুধু Vcc এবং 0-out পিনগুলি সরিয়ে নেয় বা 18 টি পিন আইসি একই দিকে সমস্ত আউটপুট দিয়ে তৈরি করে … সমস্ত আটটি আউটপুট সংযুক্ত করা এত সহজ হবে। কিন্তু তারপর এটি 30 সেন্টের কম বিক্রি হবে না।

ধাপ 3: মাউন্ট সেন্সর

মাউন্ট সেন্সর
মাউন্ট সেন্সর
মাউন্ট সেন্সর
মাউন্ট সেন্সর
মাউন্ট সেন্সর
মাউন্ট সেন্সর
মাউন্ট সেন্সর
মাউন্ট সেন্সর

কফি idাকনা আঠালো সোনিক সেন্সর। পুরুষ জ্যাককে প্রতিটি সেন্সরের ভেতরের দিকে বাঁকানো দরকার। আপনি যদি একবারে একটি পিন বাঁকেন তবে এটি আরও ভাল কাজ করে। আমি 2 সাইড ফোম টেপ ব্যবহার করেছি যাতে কম্পন কম হয়। আমার সেন্সরগুলি খুব কাছাকাছি এবং PCB- এর সাথে আরও ভালভাবে মিলতে তাদের 1/4 ইঞ্চি জায়গা প্রয়োজন। আমি আগে সোনিক সেন্সর ব্যবহার করেছি এবং কখনও কখনও কেউ সঠিকভাবে পরিমাপ করতে ব্যর্থ হয় এবং আপনাকে এটি মনে রাখতে হবে। তাই তাদের সবাইকে স্থায়ীভাবে আঠালো করবেন না।

এটি ব্যবহার করার আগে এটি প্রতিটিতে দ্রুত দূরত্ব পরীক্ষা চালাতে সহায়তা করে। আমি প্রায় 20 টি ব্যাচে একটি দুর্বল পড়া সহ একটি সেন্সর পাই। আমি যে মূল্য দিয়েছি তার জন্য খারাপ নয়।

ধাপ 4: হার্ড ওয়্যার

হার্ড ওয়্যার
হার্ড ওয়্যার

আমি ভেবেছিলাম পিসি থেকে জ্যাক এবং প্লাগের জন্য জায়গা থাকবে

সোনিক পিন কিন্তু আমি দৌড়ে রুম থেকে বেরিয়ে এলাম। তাই আমি পিসিবি প্রান্তকে শক্তভাবে তারযুক্ত করেছি এবং শুধু মহিলা জ্যাক (8ea) দিয়ে ইকো এবং ট্রিগার তার তৈরি করেছি। আমি সেন্সরের 8ea Vcc এবং 8ea ভিত্তি একসাথে বেঁধেছি তাই এটি তাদের জন্য PCB- এর সাথে মাত্র 2 টি সংযোগ তৈরি করেছে।

8 টি সেন্সর এবং 8 595 এর সাথে একটি ইউএনও বা প্রো-মিনি এটিকে শক্তি দিতে পারে না। এই প্রকল্পের অংশ হিসাবে অবশ্যই 5v নিয়ন্ত্রিত উৎস থাকতে হবে। আমার রোবট ব্যাটারি থেকে একটি সহজ 7805 @ 1amp আছে। এটি সমস্ত ডিভাইসের জন্য সমস্ত 5v Vcc এর সাথে সম্পর্কযুক্ত। 7805 একটি ভোল্টের মত ড্রপ করে তাই আপনাকে এটি খাওয়ানোর জন্য কমপক্ষে 6.5 ভোল্টের প্রয়োজন। এটি 3.3v এ 2 লিথিয়াম ব্যাটারি। আমার রোবটটিতে ব্যবহৃত ড্রিল প্যাক থেকে পুরানো নিক্যাড রয়েছে এবং 8 টি নিক্যাড $ 20 ট্যাংক টাইপ চ্যাসিসে সাধারণ চীন গিয়ার 12v মোটর চালায়।

ধাপ 5: সোনিক স্কেচ ডাউনলোড করুন

সোনিক স্কেচ ডাউনলোড করুন
সোনিক স্কেচ ডাউনলোড করুন

স্কেচ ডাউনলোড করুন এবং ইনস্টল করুন। কথা বলার অনেক উপায় আছে

আরেকটি ইউএনও কিন্তু আমি আই 2 সি পছন্দ করি। বিভ্রান্তি হচ্ছে সম্বোধন এবং মাস্টার/ ক্রীতদাস। বেশিরভাগ সেন্সরের মতো (২ য় মিনিটিকে সেন্সর হিসেবে ভাবুন) আপনি সেন্সরকে সম্বোধন করেন এবং x পরিমাণ বাইট চান। এখানে একই জিনিস। ২ য় মিনিতে আপনি x পরিমাণ বাইট আলাদা করে পাঠাতে চান। বিভ্রান্তি হল নাম কোন ব্যাপার না। আপনি যদি নামগুলি ভাগ করেন তবে এটি কেবল আপনাকে মনে রাখতে সহায়তা করে। তাই স্কেচে আমি সেন্ড 8 সেন্টিক দূরত্ব পরিমাপ সেন্ড R1, SendR2, SendR3, SendR4, SendL1, sendL2, sendL3, sendL4 হিসাবে পাঠান। মাস্টার মাত্র 8 বাইট পায় যদি ডেটা থাকে এবং আপনি সেই বাইটগুলিকে যা কিছু চান কল করতে পারেন। আমি এগুলিকে gotR1, gotR2, got….. পাঠিয়েছি বাইটের অর্ডার একই। তাই বাইট A, B, C….. নাম পরিবর্তন করে ভাববেন না আপনাকে ভিন্ন তথ্য দেবে। এবং অন্য ধরা, আপনি শুধুমাত্র ডেটা গ্রহণ করতে পারেন যা পাঠাতে বলা হয়েছে। সুতরাং আপনি যদি অন্যান্য ডেটা চান তবে আপনাকে অবশ্যই উভয় মাস্টার এবং স্লেভ পরিবর্তন করতে হবে।

ধাপ 6: যোগাযোগ

কমিউনিকেশন
কমিউনিকেশন

আপনি যদি একে অপরের সাথে কথা বলার জন্য 2 ইউনো সেট আপ করতে জানেন তবে আপনি এটি এড়িয়ে যেতে পারেন। আমি শেষে কিছু তথ্য tidbits আছে। এটি সহজ করার জন্য আমি রোবট বেস এম 1 এবং সোনিক সেন্সরকে এস 2 হিসাবে ইউএনও বলব। Vcc, স্থল, A4, A5 একে অপরের সাথে সংযুক্ত করুন।

S2 এর স্কেচে এটি #অন্তর্ভুক্তির সাথে শুরু হয়

তারপর পাঠানোর জন্য 8 বাইট তৈরি করুন। বাইট R1, বাইট R2, বাইট L1 ইত্যাদি। Uno একটি 8bit মাইক্রো তাই তারা 'int' এর পরিবর্তে 'বাইট' ব্যবহার করে 1byte পাঠায় সঠিক।

'সেটআপ ()' এ যোগ করুন 'ওয়্যার.বেগিন (ঠিকানা)' এটি I2c কে বলে যে এটি কোন ডিভাইস। ঠিকানা সাধারণত 4-200 এর মধ্যে আপনার পছন্দ মত কোন সংখ্যা। এক বাইটের আকার। এখানে আমি 10 নম্বরটি ব্যবহার করেছি। সুতরাং এই সেন্সর S2 এর সাথে কথা বলার জন্য মাস্টারকে অবশ্যই Wire.requestFrom (10, 8) থেকে কল করতে হবে। এটি ঠিকানা 10 এবং 8 হল কত বাইট চেয়েছিলেন। এছাড়াও 'সেটআপ ()' এ Wire.onRequest (isr anyName) যোগ করুন। যখন M1 অনুরোধটি কল করে তখন S2 সেন্সর বিরতির সাথে প্রতিক্রিয়া জানায়। এটি শুধু ফাংশনকে যেকোন নাম বলে। সুতরাং এই anyName ফাংশন তৈরি করা প্রয়োজন। স্কেচটি দেখুন এবং 'SendThis ()' ফাংশনটি দেখুন এখানেই বাইটগুলি আসলে M1 তে পাঠানো হয়। বাইট একা যায় এবং নাম না এবং পাঠানো আদেশে। এখান থেকেই পাঠানো ডাটার আকার এবং পরিমাণ শুরু হয়। বাইটের এই সহজ বিন্যাসে পাঠানো এবং গ্রহণ করা উচিত। এখানে 8 বাইট পাঠানো হয়েছে এবং 8 বাইট প্রাপ্ত হয়েছে। এখানে একটি নোট একটি ফাংশন কল করা প্রয়োজন ()। বিলম্ব (), মিলিস (), সিরিয়াল.প্রিন্ট () এর মতো। একটি ISR (ইন্টারাপ্ট সার্ভিস রুটিন) ব্যবহার করার সময় ফাংশনটি কল করে ()। তাই Wire.onRequest (sendThis) Wire.onRequest (sendThis ()) নয়।

আমার যে বিভ্রান্তি ছিল তা ছিল কর্তা/দাস জিনিস। প্রথমে আমি ভেবেছিলাম মাস্টার সর্বদা মাস্টার। কিন্তু স্কেচের মধ্যে আপনি মাস্টার/স্লেভকে অন্য মাইক্রো থেকে অনুরোধ করতে বা অন্য মাইক্রোতে পাঠাতে পারেন। যতক্ষণ আপনি উপরে বর্ণিত মৌলিক বিন্যাস অনুসরণ করেছেন। মনে রাখবেন … আপনি শুধুমাত্র ডেটা ভাগ করেন যা বরাদ্দ করা হয়েছে।

প্রাচীর থেকে দুটো জোয়ার বিট। ISR ইন্টারাপ্ট শুধুমাত্র স্কেচ লাইনের মাঝে বাধা দেয়। যদি আপনি 'while বা for' লুপে লক হয়ে থাকেন, লুপটি বের না হওয়া পর্যন্ত কিছুই হয় না। কোন বড় চুক্তি নয় কারণ এটি কয়েক মাইক্রোসেকেন্ড হতে পারে এবং ডেটা পুরানো।

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

সহজ:

int x = 5696; (কোন বৈধ int মান, সর্বোচ্চ 65k বা 32k নেতিবাচক)

বাইট হাই = x >> 8; (22)

বাইট lo = x; (64)

বাইট পাঠান এবং অন্য প্রান্তে একত্রিত করুন ….

বাইট হাই = Wire.read ();

বাইট lo = Wire.read ();

int newx = (হাই << 8) + লো; (5696)

ধাপ 7: বন্ধ

বন্ধ
বন্ধ
বন্ধ
বন্ধ
বন্ধ
বন্ধ
বন্ধ
বন্ধ

বন্ধ করতে, এই সনিক সেন্সরটি মাদার বোর্ডকে রিয়েল টাইমে কাঁচা দূরত্বের ডেটা দেয়। এটি মাইক্রোকে মুক্ত করে এবং স্কেচটিকে অনেক কম জটিল করে তোলে। মাইক্রো এখন এলোমেলো অনুমানের পরিবর্তে ভাল ডেটার উপর ভিত্তি করে ধীরগতি, ঘুরানো, থামানো বা বিপরীত করার একটি ভাল সিদ্ধান্ত নিতে পারে। ব্লুটুথ আইডিই সম্পর্কে আমার অন্য পোস্টটি দেখুন তার ছাড়া স্কেচ আপলোড করতে এবং আপনার স্কেচে দ্রুত পরিবর্তনের জন্য আপনার রোবটকে সব সময় সংযুক্ত করতে হবে। এই দেখার জন্য ধন্যবাদ। oldmaninsc।

প্রস্তাবিত: