وائرلیس امدادی موٹر کنٹرول 2.4 گیگا ہرٹز مواصلت لنک کا استعمال کرتے ہوئے

مسائل کو ختم کرنے کے لئے ہمارے آلے کو آزمائیں





اس پوسٹ میں ہم ایک وائرلیس سروکو موٹر سرکٹ تعمیر کرنے جارہے ہیں جو 2.4 گیگا ہرٹز مواصلاتی لنک پر 6 سرو موٹرس کو بغیر وائرلیس کنٹرول کرسکتے ہیں۔



تعارف

پروجیکٹ کو دو حصوں میں تقسیم کیا گیا ہے: ایک ٹرانسمیٹر 6 پوٹینومیٹر اور 6 کے ساتھ ایک رسیور سرکٹ امدادی موٹریں .

ریموٹ میں 6 انفرادی امدادی موٹرز کو آزادانہ طور پر وصول کنندہ پر قابو کرنے کے لئے 6 پوٹینومیٹر ہیں۔ پوٹینومیٹر کو گھومنے سے ، زاویہ امدادی موٹر کو کنٹرول کیا جاسکتا ہے .



مجوزہ سرکٹ استعمال کیا جاسکتا ہے جہاں آپ کو کنٹرول موشن کی ضرورت ہو ، مثال کے طور پر روبوٹ کا بازو یا آر سی کار کا فرنٹ وہیل سمت کنٹرول۔

سرکٹ کا دل NRF24L01 ماڈیول ہے جو ایک ٹرانسیور ہے جو ISM بینڈ پر کام کرتا ہے (صنعتی ، سائنسی اور میڈیکل بینڈ) یہ وہی فریکوینسی بینڈ ہے جس میں آپ کا WI-FI کام کرتا ہے۔

NRF24L01 ماڈیول کی مثال:

اس میں 125 چینلز ہیں ، اس میں اعداد و شمار کی زیادہ سے زیادہ شرح 2MBps ہے اور اس کی نظریاتی زیادہ سے زیادہ حد 100 میٹر ہے۔ مواصلاتی لنک قائم کرنے کے ل You آپ کو اس طرح کے دو ماڈیول کی ضرورت ہوگی۔

پن کی تشکیل:

یہ ایس پی آئی مواصلات پروٹوکول پر کام کرتا ہے۔ اس ماڈیول کو کام کرنے کے ل You آپ کو 8 میں سے 7 پنوں کو ارڈینو سے جوڑنا ہوگا۔

یہ 3.3 V پر کام کرتا ہے اور 5V ماڈیول کو مار دیتا ہے لہذا طاقت کے وقت دیکھ بھال کرنی ہوگی۔ خوش قسمتی سے ہمارے پاس اردوینو پر 3.3V وولٹیج ریگولیٹر موجود ہے اور اسے صرف اریڈینو کے 3.3V ساکٹ سے ہی چلنا چاہئے۔

اب چلیں ٹرانسمیٹر سرکٹ کی طرف۔

ٹرانسمیٹر سرکٹ:

سرکٹ 10 پو اووم ویلیو کے 6 پوٹینومیٹر پر مشتمل ہے۔ 6 پوٹینومیٹروں کا درمیانی ٹرمینل A0 سے A5 مطابق ان پٹ پن سے منسلک ہے۔

ٹیبلولیشن NRF24L01 کے لئے ارڈینو کنکشن سے متعلق اسکیمٹک کے سوا دی گئی ہے جس کا آپ حوالہ کرسکتے ہیں ، اگر آپ کو سرکٹ ڈایاگرام میں کوئی الجھن ہے۔

یہ سرکٹ USB یا 9V بیٹری سے DC جیک کے ذریعہ چلائی جا سکتی ہے۔

براہ کرم لائبریری کی فائل یہاں ڈاؤن لوڈ کریں: 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 سرو موٹرز ، ایک ارڈینو اور دو الگ بجلی کی فراہمی پر مشتمل ہے۔

امدادی موٹروں کو چلانے کے ل higher زیادہ موجودہ کی ضرورت ہوتی ہے لہذا اسے ارڈینو سے نہیں چلنا چاہئے . اسی لئے ہمیں دو الگ الگ پاور سورس کی ضرورت ہے۔

براہ کرم مائیکرو سروو موٹرز کے لئے امدادی طور پر وولٹیج کا اطلاق کریں۔

براہ کرم یاد رکھیں کہ امدادی موٹر کچھ طاقت استعمال کرتی ہے یہاں تک کہ جب کوئی لمحہ نہ ہوتا ہو ، اس کی وجہ یہ ہے کہ امدادی موٹر کا بازو اپنی تبصرہ شدہ پوزیشن سے ہونے والی کسی بھی تبدیلی کے خلاف ہمیشہ لڑتا ہے۔

وصول کنندہ کے لئے پروگرام:

//----------------------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 دونوں سرکٹ کو طاقت دیں۔
enti اب کسی بھی پوٹینومیٹر کی نوک کو گھمائیں۔
example مثال کے طور پر تیسرا پوٹینومیٹر ، وصول کنندہ میں متعلقہ سروو گھومتا ہے۔
• یہ سب سرو موٹرز اور قابلیت کے لئے موزوں ہے۔

نوٹ: آپ ٹرانسمیٹر کو کمپیوٹر سے مربوط کرسکتے ہیں اور سیریل مانیٹر کو کھولنے کے ل serial اعداد و شمار کو دیکھ سکتے ہیں جیسے امدادی موٹر کا زاویہ ، ینالاگ پن پر وولٹیج کی سطح اور اس وقت کون سا پوٹینومیٹر چل رہا ہے۔

اگر آپ کو اردوینو پر مبنی وائرلیس امدادی موٹر پروجیکٹ کے بارے میں کوئی خاص سوال ہے تو ، براہ کرم تبصرہ سیکشن میں اظہار کریں کہ آپ کو فوری جواب مل سکتا ہے۔




پچھلا: مینز 220V پر 200 ، 600 ایل ای ڈی اسٹرنگ سرکٹ اگلا: بیک ای ایم ایف کا استعمال کرتے ہوئے اعلی موجودہ سینسر لیس بی ایل ڈی سی موٹر کنٹرولر