ওয়্যারলেস সার্ভো মোটর নিয়ন্ত্রণ 2.4 গিগাহার্টজ যোগাযোগ লিঙ্ক ব্যবহার করে

সমস্যাগুলি দূর করার জন্য আমাদের উপকরণটি ব্যবহার করে দেখুন





এই পোস্টে আমরা একটি বেতার সার্ভো মোটর সার্কিট তৈরি করতে যা যা ২.৪ গিগাহার্টজ যোগাযোগের লিঙ্কে 6 সার্ভো মোটরকে বেতারভাবে নিয়ন্ত্রণ করতে পারে।



ভূমিকা

প্রকল্পটি দুটি ভাগে বিভক্ত: 6 টি সম্ভাব্য একটি ট্রান্সমিটার এবং 6 সহ একটি রিসিভার সার্কিট servo মোটর ।

রিমোটটিতে স্বতন্ত্রভাবে রিসিভারে 6 স্বতন্ত্র সার্ভো মোটরগুলি নিয়ন্ত্রণ করতে 6 টি পোটোনিওমিটার রয়েছে। পেন্টিওমিটার ঘোরানোর মাধ্যমে, কোণটি servo মোটর নিয়ন্ত্রণ করা যেতে পারে



প্রস্তাবিত সার্কিটটি যেখানে আপনার নিয়ন্ত্রণের গতি প্রয়োজন সেখানে ব্যবহার করা যেতে পারে, উদাহরণস্বরূপ কোনও রোবোটের বাহু বা আরসি গাড়ির সম্মুখ চাকা দিক নিয়ন্ত্রণ।

সার্কিটের কেন্দ্রস্থল হ'ল এনআরএফ 24 ল01 মডিউল যা এটি ট্রান্সসিভার যা এটি আইএসএম ব্যান্ডে কাজ করে (শিল্প, বৈজ্ঞানিক ও চিকিত্সা ব্যান্ড) এটি একই ফ্রিকোয়েন্সি ব্যান্ড যা আপনার ডাব্লুআই-এফআই কাজ করে।

NRF24L01 মডিউলগুলির চিত্র:

এটিতে 125 টি চ্যানেল রয়েছে এটির সর্বাধিক ডেটা রেট 2MBps এবং এটির তাত্ত্বিক সর্বোচ্চ 100 মিটার পরিসীমা রয়েছে। যোগাযোগ লিঙ্ক স্থাপনের জন্য আপনার এ জাতীয় দুটি মডিউল প্রয়োজন।

পিন কনফিগারেশন:

এটি এসপিআই যোগাযোগ প্রোটোকলে কাজ করে। এই মডিউলটির কাজ করতে আপনাকে 8 টি পিনের 7 টি আরডুইনোর সাথে সংযুক্ত করতে হবে।

এটি 3.3 ভিতে কাজ করে এবং 5 ভি মডিউলটিকে মেরে ফেলে তাই পাওয়ার করার সময় যত্ন নেওয়া উচিত। সৌভাগ্যক্রমে আমাদের সাথে আরডিনোতে 3.3V ভোল্টেজ নিয়ন্ত্রক রয়েছে এবং এটি কেবলমাত্র আরডুইনোর 3.3V সকেট থেকে চালিত হওয়া উচিত।

এবার ট্রান্সমিটার সার্কিটের দিকে এগিয়ে যাওয়া যাক।

ট্রান্সমিটার সার্কিট:

সার্কিটটিতে 10 কে ওহম মানটির 6 পন্টিওমিটার রয়েছে। 6 পেন্টিওমিটারের মাঝারি টার্মিনালটি A0 থেকে A5 এনালগ ইনপুট পিনের সাথে সংযুক্ত।

সার্কিট ডায়াগ্রামে আপনার যদি কোনও বিভ্রান্তি থাকে তবে আপনি আরডিউনো সংযোগের জন্য এনআরএফ 24 এল01 এর জন্য স্কিম্যাটিকের পাশে ট্যাবুলেশনটি উল্লেখ করতে পারেন refer

এই সার্কিটটি ডিসি জ্যাকের মাধ্যমে ইউএসবি বা 9 ভি ব্যাটারি থেকে চালিত হতে পারে।

দয়া করে এখানে লাইব্রেরির ফাইলটি ডাউনলোড করুন: github.com/nRF24/

ট্রান্সমিটারের জন্য প্রোগ্রাম:

//----------------------Program Developed by R.Girish------------------------//
#include
#include
#include
RF24 radio(9,10)
const byte address[6] = '00001'
#define pot1 A0
#define pot2 A1
#define pot3 A2
#define pot4 A3
#define pot5 A4
#define pot6 A5
const int threshold = 20
int potValue1 = 0
int potValue2 = 0
int potValue3 = 0
int potValue4 = 0
int potValue5 = 0
int potValue6 = 0
int angleValue1 = 0
int angleValue2 = 0
int angleValue3 = 0
int angleValue4 = 0
int angleValue5 = 0
int angleValue6 = 0
int check1 = 0
int check2 = 0
int check3 = 0
int check4 = 0
int check5 = 0
int check6 = 0
const char var1[32] = 'Servo1'
const char var2[32] = 'Servo2'
const char var3[32] = 'Servo3'
const char var4[32] = 'Servo4'
const char var5[32] = 'Servo5'
const char var6[32] = 'Servo6'
void setup()
{
Serial.begin(9600)
radio.begin()
radio.openWritingPipe(address)
radio.setChannel(100)
radio.setDataRate(RF24_250KBPS)
radio.setPALevel(RF24_PA_MAX)
radio.stopListening()
}
void loop()
{
potValue1 = analogRead(pot1)
if(potValue1 > check1 + threshold || potValue1 {
radio.write(&var1, sizeof(var1))
angleValue1 = map(potValue1, 0, 1023, 0, 180)
radio.write(&angleValue1, sizeof(angleValue1))
check1 = potValue1
Serial.println('INPUT:1')
Serial.print('Angle:')
Serial.println(angleValue1)
Serial.print('Voltage Level:')
Serial.println(potValue1)
Serial.println('----------------------------------')
}
potValue2 = analogRead(pot2)
if(potValue2 > check2 + threshold || potValue2 {
radio.write(&var2, sizeof(var2))
angleValue2 = map(potValue2, 0, 1023, 0, 180)
radio.write(&angleValue2, sizeof(angleValue2))
check2 = potValue2
Serial.println('INPUT:2')
Serial.print('Angle:')
Serial.println(angleValue2)
Serial.print('Voltage Level:')
Serial.println(potValue2)
Serial.println('----------------------------------')
}
potValue3 = analogRead(pot3)
if(potValue3 > check3 + threshold || potValue3 {
radio.write(&var3, sizeof(var3))
angleValue3 = map(potValue3, 0, 1023, 0, 180)
radio.write(&angleValue3, sizeof(angleValue3))
check3 = potValue3
Serial.println('INPUT:3')
Serial.print('Angle:')
Serial.println(angleValue3)
Serial.print('Voltage Level:')
Serial.println(potValue3)
Serial.println('----------------------------------')
}
potValue4 = analogRead(pot4)
if(potValue4 > check4 + threshold || potValue4 {
radio.write(&var4, sizeof(var4))
angleValue4 = map(potValue4, 0, 1023, 0, 180)
radio.write(&angleValue4, sizeof(angleValue4))
check4 = potValue4
Serial.println('INPUT:4')
Serial.print('Angle:')
Serial.println(angleValue4)
Serial.print('Voltage Level:')
Serial.println(potValue4)
Serial.println('----------------------------------')
}
potValue5 = analogRead(pot5)
if(potValue5 > check5 + threshold || potValue5 {
radio.write(&var5, sizeof(var5))
angleValue5 = map(potValue5, 0, 1023, 0, 180)
radio.write(&angleValue5, sizeof(angleValue5))
check5 = potValue5
Serial.println('INPUT:5')
Serial.print('Angle:')
Serial.println(angleValue5)
Serial.print('Voltage Level:')
Serial.println(potValue5)
Serial.println('----------------------------------')
}
potValue6 = analogRead(pot6)
if(potValue6 > check6 + threshold || potValue6 {
radio.write(&var6, sizeof(var6))
angleValue6 = map(potValue6, 0, 1023, 0, 180)
radio.write(&angleValue6, sizeof(angleValue6))
check6 = potValue6
Serial.println('INPUT:6')
Serial.print('Angle:')
Serial.println(angleValue6)
Serial.print('Voltage Level:')
Serial.println(potValue6)
Serial.println('----------------------------------')
}
}
//----------------------Program Developed by R.Girish------------------------//

এটি ট্রান্সমিটার সমাপ্ত করে।

গ্রাহক:

রিসিভার সার্কিটটিতে 6 টি সার্ভো মোটর, একটি আড়ডিনো এবং দুটি পৃথক বিদ্যুত সরবরাহ থাকে।

দ্য সার্ভো মোটরগুলি পরিচালনা করতে উচ্চতর কারেন্ট প্রয়োজন তাই এটি আরডুইনো থেকে চালিত হওয়া উচিত নয় । এজন্য আমাদের দুটি পৃথক শক্তির উত্স প্রয়োজন।

মাইক্রো সার্ভো মোটরগুলির জন্য যথোপযুক্তভাবে सर्वोকে ভোল্টেজ প্রয়োগ করুন 4.8V যথেষ্ট, আপনি যদি বাল্কিয়ার সার্ভো মোটরগুলি বিদ্যুৎ করতে চান তবে সার্ভোর রেটিংয়ের সাথে ভোল্টেজ ম্যাচিং প্রয়োগ করুন।

দয়া করে মনে রাখবেন যে সরো মোটর কিছুক্ষণ ক্ষমতাহীনতা গ্রহণ করে এমনকি এমন কোনও মুহুর্ত না থাকে কারণ এটি সার্ডো মোটরের বাহু সর্বদা তার মন্তব্য করা অবস্থান থেকে যে কোনও পরিবর্তনের বিরুদ্ধে লড়াই করে।

গ্রহীতার জন্য প্রোগ্রাম:

//----------------------Program Developed by R.Girish------------------------//
#include
#include
#include
#include
RF24 radio(9,10)
const byte address[6] = '00001'
Servo servo1
Servo servo2
Servo servo3
Servo servo4
Servo servo5
Servo servo6
int angle1 = 0
int angle2 = 0
int angle3 = 0
int angle4 = 0
int angle5 = 0
int angle6 = 0
char input[32] = ''
const char var1[32] = 'Servo1'
const char var2[32] = 'Servo2'
const char var3[32] = 'Servo3'
const char var4[32] = 'Servo4'
const char var5[32] = 'Servo5'
const char var6[32] = 'Servo6'
void setup()
{
Serial.begin(9600)
servo1.attach(2)
servo2.attach(3)
servo3.attach(4)
servo4.attach(5)
servo5.attach(6)
servo6.attach(7)
radio.begin()
radio.openReadingPipe(0, address)
radio.setChannel(100)
radio.setDataRate(RF24_250KBPS)
radio.setPALevel(RF24_PA_MAX)
radio.startListening()
}
void loop()
{
delay(5)
while(!radio.available())
radio.read(&input, sizeof(input))
if((strcmp(input,var1) == 0))
{
while(!radio.available())
radio.read(&angle1, sizeof(angle1))
servo1.write(angle1)
Serial.println(input)
Serial.print('Angle:')
Serial.println(angle1)
Serial.println('--------------------------------')
}
else if((strcmp(input,var2) == 0))
{
while(!radio.available())
radio.read(&angle2, sizeof(angle2))
servo2.write(angle2)
Serial.println(input)
Serial.print('Angle:')
Serial.println(angle2)
Serial.println('--------------------------------')
}
else if((strcmp(input,var3) == 0))
{
while(!radio.available())
radio.read(&angle3, sizeof(angle3))
servo3.write(angle3)
Serial.println(input)
Serial.print('Angle:')
Serial.println(angle3)
Serial.println('--------------------------------')
}
else if((strcmp(input,var4) == 0))
{
while(!radio.available())
radio.read(&angle4, sizeof(angle4))
servo4.write(angle4)
Serial.println(input)
Serial.print('Angle:')
Serial.println(angle4)
Serial.println('--------------------------------')
}
else if((strcmp(input,var5) == 0))
{
while(!radio.available())
radio.read(&angle5, sizeof(angle5))
servo5.write(angle5)
Serial.println(input)
Serial.print('Angle:')
Serial.println(angle5)
Serial.println('--------------------------------')
}
else if((strcmp(input,var6) == 0))
{
while(!radio.available())
radio.read(&angle6, sizeof(angle6))
servo6.write(angle6)
Serial.println(input)
Serial.print('Angle:')
Serial.println(angle6)
Serial.println('--------------------------------')
}
}
//----------------------Program Developed by R.Girish------------------------//

এটি রিসিভার শেষ করে।

এই প্রকল্পটি কীভাবে পরিচালনা করবেন:

Both উভয় সার্কিটকে শক্তি প্রদান করুন।
Pot এখন পেন্টিওমিটারের যে কোনও একটি নকটি ঘোরান।
3rd উদাহরণস্বরূপ 3 য় পেনটিমিওমিটার, রিসিভারে সংশ্লিষ্ট सर्वोটি ঘুরবে।
• এটি সমস্ত সার্ভো মোটর এবং সম্ভাবনাময় যন্ত্রগুলির জন্য প্রযোজ্য।

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

এই আরডুইনো ভিত্তিক ওয়্যারলেস সার্ভো মোটর প্রকল্প সম্পর্কে আপনার যদি কোনও নির্দিষ্ট প্রশ্ন থাকে তবে দয়া করে মন্তব্য বিভাগে প্রকাশ করুন আপনি দ্রুত প্রতিক্রিয়া পেতে পারেন।




পূর্ববর্তী: 200, 600 মেইনস 220 ভি তে স্ট্রিং সার্কিট পরবর্তী: ব্যাক ইএমএফ ব্যবহার করে উচ্চ বর্তমান সেন্সরলেস বিএলডিসি মোটর নিয়ন্ত্রক