DTMF मॉड्यूल का उपयोग करते हुए मोबाइल फोन नियंत्रित रोबोट कार

समस्याओं को खत्म करने के लिए हमारे साधन का प्रयास करें





इस परियोजना में हम DTMF मॉड्यूल और Arduino का उपयोग करके अपने सेलफोन के माध्यम से एक मैनुअल रोबोट को नियंत्रित करने जा रहे हैं।

By: Ankit Negi, Kanishk Godiyal and Navneet Singh sajwan



DTMF मॉड्यूल का उपयोग करते हुए मोबाइल फोन नियंत्रित रोबोट कार

परिचय

इस परियोजना में दो सेल फोन, एक कॉलिंग के लिए और एक कॉल प्राप्त करने के लिए उपयोग किया जाता है। कॉल प्राप्त करने वाला फोन ऑडियो जैक के माध्यम से रोबोट से जुड़ा होता है।

जो व्यक्ति कॉल कर रहा है, वह डायल पैड कीज़ दबाकर रोबोट को नियंत्रित कर सकता है। (यानी रोबोट को दुनिया के किसी भी कोने से संचालित किया जा सकता है)।



आवश्यक घटक

1 - अरुडिनो यूएनओ

2 - मैनुअल रोबोट

3 - 4 मोटर्स (यहां हमने 300 आरपीपी प्रत्येक का इस्तेमाल किया)

4 - DTMF मॉड्यूल

5 - मोटर चालक

6 - 12 वोल्ट की बैटरी

7 - स्विच करें

8 - हेडफोन जैक

9 - दो सेल फ़ोन

10 - तारों को जोड़ना

मैनुअल रोबोट के बारे में

एक मैनुअल रोबोट में चेसिस (शरीर) होता है जिसमें तीन या चार मोटरें (जो टायर से खराब होती हैं) को आवश्यकता के आधार पर संलग्न किया जा सकता है।

उपयोग की जाने वाली मोटर्स हमारी आवश्यकता पर निर्भर करती हैं यानी वे या तो उच्च गति या उच्च टोक़ या दोनों का एक अच्छा संयोजन प्रदान कर सकती हैं। क्वाड कॉप्टर जैसे एप्लिकेशन को गुरुत्वाकर्षण के खिलाफ उठाने के लिए बहुत उच्च गति की मोटरों की आवश्यकता होती है, जबकि मैकेनिकल आर्म को हिलाने या खड़ी ढलान पर चढ़ने जैसे एप्लिकेशन को उच्च गति वाले मोटरों की आवश्यकता होती है।

रोबोट के बाईं और दाईं ओर दोनों मोटर्स अलग-अलग समानांतर में जुड़े हुए हैं। आमतौर पर वे DPDT (डबल पिन डबल थ्रो) स्विच के माध्यम से 12volt बैटरी से जुड़े होते हैं।

लेकिन इस परियोजना में हम बॉट को नियंत्रित करने के लिए डीपीडीटी के बजाय मोबाइल फोन का उपयोग करेंगे।

मोटर चालक के बारे में

Arduino GPIO (सामान्य प्रयोजन इनपुट आउटपुट) पिन का उपयोग करके अधिकतम 40mA का वर्तमान देता है, जबकि यह Vcc और ग्राउंड का उपयोग करके 200mA देता है।

मोटर्स को संचालित करने के लिए बड़े प्रवाह की आवश्यकता होती है। हम अपनी मोटरों को चलाने के लिए सीधे arduino का उपयोग नहीं कर सकते हैं इसलिए हम एक मोटर चालक का उपयोग करते हैं।

मोटर चालक में एच ब्रिज (जो ट्रांजिस्टर का एक संयोजन है) शामिल है। मोटर चालक का IC (L298) 5v द्वारा संचालित होता है जिसे Arduino द्वारा आपूर्ति की जाती है।

मोटरों को बिजली देने के लिए, यह arvino से 12v इनपुट लेता है जिसे अंततः 12 v बैटरी द्वारा आपूर्ति की जाती है। तो arduino सिर्फ बैटरी से बिजली लेता है और मोटर चालक को देता है।

यह हमें 2 एम्पीयर की अधिकतम धारा देकर मोटर्स की गति और दिशा को नियंत्रित करने की अनुमति देता है।

DTMF मॉडल का परिचय

DTMF का मतलब ड्यूल टोन मल्टी फ्रिक्वेंसी है। हमारा डायल पैड एक दो टोनर मल्टीपल फ्रिक्वेंसी है यानी एक बटन दो टोन का मिश्रण देता है जिसमें अलग फ्रीक्वेंसी होती है।

एक स्वर टन के उच्च आवृत्ति समूह से उत्पन्न होता है, जबकि अन्य निम्न आवृत्ति समूह से। यह इसलिए किया जाता है ताकि किसी भी प्रकार की आवाज टन की नकल न कर सके।

तो, यह बस फोन कीपैड के इनपुट को चार बिट बाइनरी कोड में डिकोड करता है। कीपैड संख्याओं की आवृत्तियों जो हमने अपनी परियोजना में उपयोग की हैं, नीचे दी गई तालिका में दिखाई गई हैं

डिजिट्लो फ़्रीक्वेंसी (हर्ट्ज़) हाई फ़्रीक्वेंसी (हर्ट्ज़) 2697133647701209677014778852133609411336

डायल पैड के अंकों का द्विआधारी डिकोड अनुक्रम नीचे दी गई तालिका में दिखाया गया है।

अंक डी 3 डी 2 डी 1 डी ० 1 1 दो 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 * 1 1 1 # 1 1

सर्किट आरेख

सम्बन्ध

मोटर चालक -

  • पिन side ए ’और’ बी ’बाईं ओर की मोटर को नियंत्रित करते हैं जबकि पिन and सी’ और ’डी’ मोटर के दाईं ओर नियंत्रित करते हैं। ये चार पिन चार मोटरों से जुड़े होते हैं।
  • पिन 8 E ’IC (L298) को पावर करने के लिए है जो कि arduino (5v) से लिया गया है।
  • पिन 'F' ग्राउंड है।
  • पिन via जी ’बैटरी से 12 वोल्ट बिजली लेती है जो विनडू के पिन के माध्यम से होती है।
  • पिन्स ‘H’, ‘I’, and J ’और receives K’ को Arduino से तर्क प्राप्त होता है।

DTMF -

  • pin pin a, IC (SC9270D) को पावर देने के लिए 3.5 वोल्ट के अर्दीनो से जुड़ा होता है।
  • पिन Pin b ’जमीन से जुड़ा हुआ है
  • DTMF का इनपुट जैक के माध्यम से फोन से लिया जाता है।
  • बाइनरी डेटा के रूप में आउटपुट (D0 - D3) पिन के माध्यम से arduino में जाता है।

ARDUINO -

  • DTMF के उत्पादन से (D0 - D3) पिन आर्दीनो के डिजिटल पिंस में आते हैं। हम इस आउटपुट को आर्डिनो में (2 - 13) से भिन्न चार डिजिटल पिनों में से किसी से जोड़ सकते हैं। यहां हमने 8, 9, 10 और 11 पिन का इस्तेमाल किया।
  • Arduino के डिजिटल पिन 2 और 3 मोटर चालक के पिन नंबर and H ’और’ I ’से जुड़े होते हैं जबकि Arduino के 12 और 13 पिन of J’ और ’K’ से जुड़े होते हैं।
  • आर्डिनो 12 वोल्ट की बैटरी से जुड़ा होता है।

कार्यक्रम CODE-

int x // initialising variables
int y
int z
int w
int a=20
void setup()
{
pinMode(2,OUTPUT) //left motor
pinMode(3,OUTPUT) //left
pinMode(8,INPUT) // output from DO pin of DTMF
pinMode(9,INPUT) //output from D1 pin of DTMF
pinMode(10,INPUT) //output from D2 pin of DTMF
pinMode(11,INPUT) // output from D3 pin of DTMF
pinMode(12,OUTPUT) //right motor
pinMode(13,OUTPUT) //right
Serial.begin(9600)// begin serial communication between arduino and laptop
}
void decoding()// decodes the 4 bit binary number into decimal number
{
if((x==0)&&(y==0)&&(z==0)&&(w==0))
{
a=0
}
if((x==0)&&(y==0)&&(z==1)&&(w==0))
{
a=2
}
if((x==0)&&(y==1)&&(z==0)&&(w==0))
{
a=4
}
if((x==0)&&(y==1)&&(z==1)&&(w==0))
{
a=6
}
if((x==1)&&(y==0)&&(z==0)&&(w==0))
{
a=8
}
}
void printing()// prints the value received from input pins 8,9,10 and 11 respectively
{
Serial.print(' x ')
Serial.print( x )
Serial.print(' y ')
Serial.print( y )
Serial.print(' z ')
Serial.print( z )
Serial.print(' w ')
Serial.print( w )
Serial.print(' a ')
Serial.print(a)
Serial.println()
}
void move_forward()// both side tyres of bot moves forward
{
digitalWrite(2,HIGH)
digitalWrite(3,LOW)
digitalWrite(12,HIGH)
digitalWrite(13,LOW)
}
void move_backward()//both side tyres of bot moves backward
{
digitalWrite(3,HIGH)
digitalWrite(2,LOW)
digitalWrite(13,HIGH)
digitalWrite(12,LOW)
}
void move_left()// only left side tyres move forward
{
digitalWrite(2,HIGH)
digitalWrite(3,LOW)
digitalWrite(12,LOW)
digitalWrite(13,HIGH)
}
void move_right()//only right side tyres move forward
{
digitalWrite(2,LOW)
digitalWrite(3,HIGH)
digitalWrite(12,HIGH)
digitalWrite(13,LOW)
}
void halt()// all motor stops
{
digitalWrite(2,LOW)
digitalWrite(3,LOW)
digitalWrite(12,LOW)
digitalWrite(13,LOW)
}
void reading()// take readings from input pins that are connected to DTMF D0, D1, D2 and D3 PINS.
{
x=digitalRead(8)
y=digitalRead(9)
z=digitalRead(10)
w=digitalRead(11)
}
void loop()
{
reading()
decoding()
if((x==0)&&(y==0)&&(z==1)&&(w==0))
{
move_forward()
reading()
decoding()
printing()
}
if((x==1)&&(y==0)&&(z==0)&&(w==0))
{
move_backward()
reading()
decoding()
printing()
}
if((x==0)&&(y==1)&&(z==0)&&(w==0))
{
move_left()
reading()
decoding()
printing()
}
if((x==0)&&(y==1)&&(z==1)&&(w==0))
{
move_right()
reading()
decoding()
printing()
}
if((x==0)&&(y==0)&&(z==0)&&(w==0))
{
halt()
reading()
decoding()
printing()
}
a=20
printing()
}

कोड परीक्षा

  1. सबसे पहले, हम शून्य सेटअप से पहले सभी चर को इनिशियलाइज़ करते हैं।
  2. शून्य सेटअप में, उपयोग किए जाने वाले सभी पिनों को उनके उद्देश्य के अनुसार इनपुट या आउटपुट के रूप में असाइन किया जाता है।
  3. एक नया फ़ंक्शन 'शून्य डिकोडिंग ()' बनाया गया है। इस फ़ंक्शन में सभी बाइनरी इनपुट जो हमें DTMF से मिलते हैं, को arduino द्वारा दशमलव में डिकोड किया जाता है। और इस दशमलव मान के लिए निर्दिष्ट चर a है।
  4. एक अन्य समारोह 'शून्य मुद्रण ()' बनाया गया है। यह फ़ंक्शन DTMF पिन से इनपुट मान प्रिंट करने के लिए उपयोग किया जाता है।
  5. इसी तरह, आवश्यक कार्य करने के लिए पांच कार्यों की आवश्यकता होती है। ये कार्य हैं:

void Move_left () // रोबोट बाएँ मुड़ता है

शून्य चाल_ ठीक () // रोबोट सही हो जाता है

void Move_forward () // रोबोट आगे बढ़ता है

शून्य चाल_बैकवर्ड () // रोबोट पीछे की ओर बढ़ता है

शून्य पड़ाव () // रोबोट बंद हो जाता है

  1. अब इन कार्यों का उपयोग शून्य लूप फ़ंक्शन में किया जाता है ताकि जब भी उन्हें सेलफ़ोन के डायलपैड से इनपुट के अनुसार बुलाया जाए तो वे अपना कार्य कर सकें।

उदाहरण के लिए:::

if((x==0)&&(y==0)&&(z==1)&&(w==0))
{
move_forward()
reading()
decoding()
printing()
}

इसलिए जब बटन 2 दबाया जाता है या इनपुट पिंस पर 0010 प्राप्त होता है, तो arduino इसे डीकोड करता है और इस प्रकार ये कार्य अपना काम करते हैं: आगे बढ़ें()

पढ़ना ()

डिकोडिंग ()

मुद्रण()

काम कर रहा है

हमने अपनी परियोजना में जिन नियंत्रणों का उपयोग किया है वे इस प्रकार हैं -

2 - आगे बढ़ने के लिए

4 - बाएं मुड़ने के लिए

6 - दाएं मुड़ना

8 - पीछे की ओर जाने के लिए

0 - बंद करने के लिए

रोबोट से जुड़े फोन पर कॉल करने के बाद, व्यक्ति अपना डायल पैड खोलता है।

  • अगर '2' दबाया जाता है DTMF इनपुट प्राप्त करता है, इसे अपने बाइनरी समतुल्य संख्या F 0010 ’में डिकोड करता है और इसे Arduino के डिजिटल पिन पर भेजता है। आर्डिनो तब इस कोड को मोटर चालक को भेजता है जैसा कि हमने प्रोग्राम किया है जब कोड '0010' होगा, तो मोटरें दक्षिणावर्त दिशा में घूमेंगी और इसलिए हमारा रोबोट आगे बढ़ेगा।
  • यदि is 4 'दबाया जाता है, तो इसका समतुल्य कोड ’0100' है और प्रोग्रामिंग के अनुसार बाईं ओर की मोटरें बंद हो जाएंगी और केवल दाईं ओर की मोटरें दक्षिणावर्त घूमेंगी और इसलिए हमारा रोबोट बाईं ओर मुड़ जाएगा।
  • यदि motor 6 'दबाया जाता है, तो दाईं ओर की मोटर बंद हो जाएगी और केवल बाईं ओर की मोटरें दक्षिणावर्त घूमेंगी और इसलिए हमारा रोबोट दाईं ओर मुड़ जाएगा।
  • यदि rotate 8 'दबाया जाता है, तो हमारी मोटरें एंटीक्लॉकवाइज दिशा में घूमेंगी और इस तरह हमारा रोबोट पिछड़ जाएगा।
  • यदि will 0 'दबाया जाता है तो हमारी सभी मोटरें बंद हो जाएंगी और रोबोट नहीं चलेगा।

इस परियोजना में हमने केवल पाँच डायल पैड नंबर को एक फ़ंक्शन सौंपा है। हम इस परियोजना के उन्नत संस्करण को बनाने के लिए किसी भी प्रकार के अन्य तंत्र को जोड़ सकते हैं और उस तंत्र को एक डायल पैड नंबर दे सकते हैं।

मन में रखने के लिए सूत्र

1 - जैक ढीला नहीं होना चाहिए।

2 - फोन कीपैड टोन अधिकतम होना चाहिए।

3 - इंटरनेट / वाई-फाई प्राप्त फोन को हस्तक्षेप के प्रभावों से बचने के लिए बंद किया जाना चाहिए।

4 - DTMF का लेफ्ट पिन (यानी पिन) b ') ग्राउंड है और राइट पिन (यानी पिन। A) 3.3v से जुड़ा है।

DTMF का उपयोग करके सेलफोन नियंत्रित रोबोट कार सर्किट की प्रोटोटाइप छवियां
सेलफोन के वीडियो प्रदर्शन ने DTMF का उपयोग करके आरसी कार को नियंत्रित किया



पिछला: Arduino में EEPROM का परिचय अगला: इस लाइन फॉलोअर रोबोट को साइंस फेयर प्रोजेक्ट के लिए बनाएं