সুচিপত্র:

ওয়্যারলেস সার্ভো কন্ট্রোল: 6 টি ধাপ
ওয়্যারলেস সার্ভো কন্ট্রোল: 6 টি ধাপ

ভিডিও: ওয়্যারলেস সার্ভো কন্ট্রোল: 6 টি ধাপ

ভিডিও: ওয়্যারলেস সার্ভো কন্ট্রোল: 6 টি ধাপ
ভিডিও: জয়স্টিক দিয়ে সার্ভো মোটর নিয়ন্ত্রণ | Servo Motor Control With Joystick and Arduino | Techshopbd 2024, জুলাই
Anonim
ওয়্যারলেস সার্ভো কন্ট্রোল
ওয়্যারলেস সার্ভো কন্ট্রোল
ওয়্যারলেস সার্ভো কন্ট্রোল
ওয়্যারলেস সার্ভো কন্ট্রোল

এই প্রজেক্টটি একটি পোটেন্টিওমিটার (নব) এর মাধ্যমে ওয়্যারলেসভাবে একটি সার্ভোর ঘূর্ণন নিয়ন্ত্রণ করে। ঘূর্ণন 180 ডিগ্রীতে সীমাবদ্ধ।

ধাপ 1: উপাদান

উপাদান
উপাদান
উপাদান
উপাদান
উপাদান
উপাদান

এই প্রকল্পটি নিয়ে গঠিত

  • ইউএসবি সংযোগকারী তারের সঙ্গে 2 Arduino UNO নিয়ামক বোর্ড
  • 2 nRF24L01-2.4GHz RF ট্রান্সসিভার মডিউল (এই মডিউলগুলির সাহায্যের জন্য
  • NRF24L01 এর জন্য 2 টি সকেট অ্যাডাপ্টার বোর্ড (ব্যাকপ্যাক চিপ)
  • 1 alচ্ছিক Arduino সামঞ্জস্যপূর্ণ 328 ProtoShield প্রোটোটাইপ সম্প্রসারণ বোর্ড
  • 1 servo
  • 1 এনালগ potentiometer
  • সোল্ডারিং লোহা এবং ঝাল
  • তার
  • সুই নাকযুক্ত প্লেয়ার
  • মোড়ানো অন্তরক, আমি বৈদ্যুতিক টেপ ব্যবহার করেছি

ধাপ 2: সার্ভার বোর্ড

সার্ভার বোর্ড
সার্ভার বোর্ড

সার্ভার বোর্ডে একটি ট্রান্সসিভার মডিউল, ieldাল বোর্ড (যা সরাসরি আরডুইনো বোর্ডের সাথে সরাসরি সংযোগ করে) এবং সার্ভো থাকে। আমি সিদ্ধান্ত নিয়েছি ieldাল বোর্ড অন্তর্ভুক্ত করার জন্য আনাড়ি ব্রেডবোর্ড এড়ানোর জন্য এবং প্রকল্প এবং সামগ্রিকভাবে নিটারের সমাপ্তি দিতে।

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

শিল্ড বোর্ড পিনগুলি সরাসরি আরডুইনো পিনের সাথে মিলে যায়। Ieldাল বোর্ড সংযুক্ত করার আগে, আমি তারের এবং ঝাল দিয়ে বোর্ডের রেলগুলিতে স্থল এবং 5 ভোল্ট পিন সংযুক্ত করেছি। আমি'াল বোর্ড রেলগুলিতে উপাদানগুলির 5 ভোল্ট এবং গ্রাউন্ড ওয়্যারগুলি বিক্রি করেছি, তারপর অবশেষে আরডুইনোকে শিল্ড বোর্ডের সাথে সংযুক্ত করেছি।

পাওয়ারের জন্য 3 ভোল্ট পিন এবং যোগাযোগের জন্য ডিজিটাল পিন 2 এর সাথে সার্ভো সংযুক্ত থাকে।

** দ্রষ্টব্য: এই বিল্ডটি সম্পন্ন করার পরেই আমি লক্ষ্য করেছি যে আমার আরডুইনো বোর্ডগুলি অভিন্ন নয়। আমার সার্ভার ট্রান্সসিভার vাল বোর্ডে 5 ভোল্ট রেল দ্বারা চালিত হয়, যখন ক্লায়েন্ট ট্রান্সসিভার 3 ভোল্ট পিন দ্বারা চালিত হয়, যদিও আমি বিশ্বাস করি যে ট্রান্সসিভারে অ্যাডাপ্টার চিপের একটি কাজ সঠিক ভোল্টেজ প্রদান করা। আমি নিশ্চিতভাবে বলতে পারি যে ছবিতে প্রদত্ত কনফিগারেশনের সাথে মিলিত কোডটি বর্ণিত প্রভাব তৈরি করে।

ধাপ 3: সার্ভার কোডার: কপি এবং পেস্ট করুন

// সার্ভার কোড/ * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> GND> GND VCC> 5V */// transceiver wiring

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

// servo লাইব্রেরি

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

// ট্রান্সসিভার লাইব্রেরি

#সার্ভপিন সংজ্ঞায়িত করুন 2

// ঘোষণা servo আউটপুট পিন

ServoTimer2 serv;

// servo নামের ঘোষণা

RH_NRF24 nrf24;

// ট্রান্সসিভার নামের ঘোষণা

int timeOUT = 0;

// servo জন্য পরিবর্তনশীল

int ডাল = 90;

// ডাল সংরক্ষণ করতে পরিবর্তনশীল

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

{serv.attach (Servopin); // servo জিনিস

Serial.begin (9600); // ট্রান্সসিভার জিনিস

যদি (! nrf24.init ())

Serial.println ("init ব্যর্থ"); // সিরিয়াল মনিটর স্টাফ যদি (! nrf24.setChannel (12)) // সেট চ্যানেল 125 Serial.println ("setChannel ব্যর্থ"); যদি (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF ব্যর্থ"); // সিরিয়াল মনিটর স্টাফ}

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

{যদি (nrf24.available ()) {uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN]; uint8_t len = sizeof (buf); যদি (nrf24.recv (buf, & len)) // সিরিয়াল মনিটর স্টাফ {Serial.print ("অনুরোধ পেয়েছে:"); ডাল = strtol ((const char*) buf, NULL, 10); // ডাটা টাইপ পরিবর্তন জিনিস

int prin = মানচিত্র (ডাল, 750, 2250, 0, 180); // ডাটা টাইপ পরিবর্তন জিনিস

Serial.println (প্রিন); serv.write (ডাল); // সার্ভো মুভ করে}}

}

ধাপ 4: ক্লায়েন্ট বোর্ড

ক্লায়েন্ট বোর্ড
ক্লায়েন্ট বোর্ড

ক্লায়েন্ট বোর্ড একটি ট্রান্সসিভার মডিউল এবং potentiometer গঠিত। ট্রান্সসিভার মডিউলটি একইভাবে ওয়্যার্ড করা হয় ** সার্ভার বোর্ডের ব্যতীত যে theাল বোর্ড ছাড়া, এটি সরাসরি Arduino বোর্ড পিনগুলিতে তারযুক্ত হয়।

পোটেন্টিওমিটার 5v, স্থল, এবং এনালগ পিন 2 এর সাথে সংযুক্ত।

** দ্রষ্টব্য: সার্ভার বোর্ড ধাপে উল্লিখিত হিসাবে, আমার আরডুইনো বোর্ডগুলি অভিন্ন নয়। এই ক্ষেত্রে ট্রান্সসিভারটি 3.3V লেবেলযুক্ত পিনে তারযুক্ত, সরাসরি 5V পিনের সংলগ্ন, কিন্তু আবার, সবকিছু ঠিকঠাক কাজ করছে বলে মনে হচ্ছে।

ধাপ 5: ক্লায়েন্ট কোড: কপি এবং পেস্ট করুন

// ক্লায়েন্ট কোড/ * NRF24L01 Arduino CE> D8 CSN> D10 SCK> D13 MO> D11 MI> D12 RO> GND> GND VCC> 5V */// transceiver wiring

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

// ট্রান্সসিভার লাইব্রেরি

int potpin = A2; // potentiometer বিলম্ব

int val;

temp tempChar [5];

স্ট্রিং valString = ""; // ডাটা টাইপ পরিবর্তন জিনিস

RH_NRF24 nrf24; // ট্রান্সসিভার জিনিস

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

{Serial.begin (9600); যদি (! nrf24.init ()) Serial.println ("init ব্যর্থ"); // init পরে ডিফল্ট হল 2.402 GHz (চ্যানেল 2), 2Mbps, 0dBm যদি (! Nrf24.setChannel (12)) Serial.println ("setChannel ব্যর্থ"); যদি (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF ব্যর্থ"); } // ট্রান্সসিভার জিনিস

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

val = analogRead (potpin); // potentiometer জিনিস

val = মানচিত্র (val, 0, 1023, 750, 2250);

valString = val; স্ট্রিং str = (valString); str.toCharArray (tempChar, 5); // ডেটাটাইপ পরিবর্তন nrf24.send (tempChar, sizeof (tempChar));

}

ধাপ 6: কোড সম্পর্কে একটি নোট:

কোডটিতে Arduino সফটওয়্যার ইন্টারফেসের সিরিয়াল মনিটর থেকে প্রতিক্রিয়া আকারে কিছু সীমিত সমস্যা সমাধানের কার্যকারিতা রয়েছে। সার্ভার কোড (ctrl + shift + M) থেকে সিরিয়াল মনিটর দেখার সময়, আপনি 1 এবং 180 এর মধ্যে একটি সংখ্যার আকারে potentiometer এর অবস্থা দেখতে সক্ষম হবেন।

এছাড়াও, এখানে ওয়্যারলেস এবং সার্ভোর জন্য লাইব্রেরি রয়েছে:

www.airspayce.com/mikem/arduino/RadioHead/

github.com/nabontra/ServoTimer2

প্রস্তাবিত: