Ρομπότ αυτοκινήτου ελεγχόμενο από κινητό τηλέφωνο που χρησιμοποιεί τη μονάδα DTMF

Δοκιμάστε Το Όργανο Μας Για Την Εξάλειψη Των Προβλημάτων





Σε αυτό το έργο πρόκειται να ελέγξουμε ένα χειροκίνητο ρομπότ μέσω του κινητού μας χρησιμοποιώντας τη μονάδα DTMF και το Arduino.

Από: Ankit Negi, Kanishk Godiyal και Navneet Singh sajwan



Ρομπότ αυτοκινήτου ελεγχόμενο από κινητό τηλέφωνο που χρησιμοποιεί τη μονάδα DTMF

ΕΙΣΑΓΩΓΗ

Σε αυτό το έργο χρησιμοποιούνται δύο κινητά τηλέφωνα, ένα για κλήση και ένα για λήψη κλήσης. Το τηλέφωνο που λαμβάνει την κλήση συνδέεται στο ρομπότ μέσω υποδοχής ήχου.

Το άτομο που καλεί μπορεί να ελέγξει το ρομπότ πατώντας τα πλήκτρα του πληκτρολογίου. (δηλαδή το ρομπότ μπορεί να χρησιμοποιηθεί από οποιαδήποτε γωνιά του κόσμου).



ΑΠΑΙΤΟΥΜΕΝΑ ΣΥΣΤΑΤΙΚΑ

1 - Arduino UNO

2 - Χειροκίνητο ρομπότ

3 - 4 κινητήρες (εδώ χρησιμοποιήσαμε 300 r.p.m το καθένα)

4 - Ενότητα DTMF

5 - Οδηγός κινητήρα

Μπαταρία 6 - 12 volt

7 - Διακόπτης

8 - Υποδοχή ακουστικών

9 - Δύο κινητά τηλέφωνα

10 - Σύνδεση καλωδίων

ΓΙΑ ΤΟ ΕΓΧΕΙΡΙΔΙΟ ROBOT

Ένα χειροκίνητο ρομπότ αποτελείται από σασί (αμάξωμα) στο οποίο μπορούν να προσαρτηθούν τρεις ή τέσσερις κινητήρες (που βιδώνονται με ελαστικά) ανάλογα με τις απαιτήσεις.

Οι κινητήρες που χρησιμοποιούνται εξαρτώνται από την απαίτησή μας, δηλαδή μπορούν είτε να παρέχουν υψηλή ταχύτητα είτε υψηλή ροπή ή έναν καλό συνδυασμό και των δύο. Εφαρμογές όπως το τετραπλό copter απαιτούν κινητήρες πολύ υψηλής ταχύτητας για ανύψωση έναντι της βαρύτητας, ενώ η εφαρμογή όπως η κίνηση ενός μηχανικού βραχίονα ή η αναρρίχηση σε μια απότομη κλίση απαιτεί κινητήρες υψηλής ροπής.

Και οι δύο κινητήρες στην αριστερή και τη δεξιά πλευρά του ρομπότ συνδέονται παράλληλα ξεχωριστά. Συνήθως συνδέονται με μια μπαταρία 12Volt μέσω των διακοπτών DPDT (διπλή ακίδα διπλής ρίψης).

Αλλά σε αυτό το έργο θα χρησιμοποιήσουμε κινητό τηλέφωνο αντί για DPDT για τον έλεγχο του bot.

ΣΧΕΤΙΚΑ ΜΕ ΟΔΗΓΟ ΜΟΤΟΡ

Το Arduino δίνει μέγιστο ρεύμα 40mA χρησιμοποιώντας ακροδέκτες GPIO (έξοδος εισόδου γενικής χρήσης), ενώ δίνει 200mA χρησιμοποιώντας Vcc και γείωση.

Οι κινητήρες απαιτούν μεγάλο ρεύμα για να λειτουργήσουν. Δεν μπορούμε να χρησιμοποιήσουμε το arduino απευθείας για να τροφοδοτήσουμε τους κινητήρες μας, οπότε χρησιμοποιούμε ένα μηχανοκίνητο πρόγραμμα οδήγησης.

Ο οδηγός κινητήρα περιέχει το H Bridge (που είναι ένας συνδυασμός τρανζίστορ). Το IC (L298) του οδηγού κινητήρα οδηγείται από 5v που παρέχεται από το arduino.

Για την τροφοδοσία των κινητήρων, απαιτείται είσοδος 12v από το arduino που τελικά τροφοδοτείται από μπαταρία 12 v. Έτσι, το arduino παίρνει μόνο ενέργεια από την μπαταρία και δίνει στον οδηγό του κινητήρα.

Μας επιτρέπει να ελέγξουμε την ταχύτητα και την κατεύθυνση των κινητήρων δίνοντας μέγιστο ρεύμα 2 αμπέρ.

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΝΟΤΗΤΑ DTMF

Το DTMF σημαίνει πολλαπλή συχνότητα διπλού τόνου. Το πληκτρολόγιο επιλογής μας είναι μια πολλαπλή συχνότητα δύο τόνων, δηλαδή ένα κουμπί δίνει ένα μείγμα δύο τόνων με διαφορετική συχνότητα.

Ένας τόνος δημιουργείται από μια ομάδα τόνων υψηλής συχνότητας ενώ άλλος από μια ομάδα χαμηλών συχνοτήτων. Γίνεται έτσι ώστε οποιοσδήποτε τύπος φωνής να μην μιμείται τους τόνους.

Έτσι, απλώς αποκωδικοποιεί την είσοδο του πληκτρολογίου του τηλεφώνου σε δυαδικό κώδικα τεσσάρων bit. Οι συχνότητες των αριθμών πληκτρολογίων που χρησιμοποιήσαμε στο έργο μας φαίνονται στον παρακάτω πίνακα

DigitLow συχνότητα (hertz) Υψηλή συχνότητα (hertz) 2697133647701209677014778852133609411336

Η δυαδική αποκωδικοποιημένη ακολουθία των ψηφίων του πληκτρολογίου εμφανίζεται στον παρακάτω πίνακα.

ψηφίο Δ3 Δ2 Δ1 Δ0 1 0 0 0 1 δύο 0 0 1 0 3 0 0 1 1 4 0 1 0 0 5 0 1 0 1 6 0 1 1 0 7 0 1 1 1 8 1 0 0 0 9 1 0 0 1 0 1 0 1 0 * 1 0 1 1 # 1 1 0 0

ΔΙΑΓΡΑΜΜΑ ΚΥΚΛΩΜΑΤΟΣ

ΣΥΝΔΕΣΕΙΣ

Οδηγός κινητήρα -

  • Οι ακίδες «Α» και «Β» ελέγχουν τον κινητήρα της αριστερής πλευράς ενώ οι ακίδες «C» και «D» ελέγχουν τη δεξιά πλευρά του κινητήρα. Αυτές οι τέσσερις ακίδες συνδέονται με τους τέσσερις κινητήρες.
  • Η καρφίτσα «E» είναι για την τροφοδοσία IC (L298) που λαμβάνεται από το arduino (5v).
  • ο πείρος «F» είναι γειωμένος.
  • Ο ακροδέκτης ‘G’ παίρνει 12 βολτ από την μπαταρία μέσω του Vin pin του arduino.
  • Οι καρφίτσες 'H', 'I', 'J' και 'K' λαμβάνουν λογική από το arduino.

DTMF -

  • ο ακροδέκτης «a» συνδέεται με 3,5 volt arduino για την τροφοδοσία του IC (SC9270D).
  • Ο πείρος «b» συνδέεται με τη γείωση.
  • Η είσοδος του DTMF λαμβάνεται από το τηλέφωνο μέσω βύσματος.
  • Η έξοδος με τη μορφή δυαδικών δεδομένων μέσω (D0 - D3) καρφίτσες πηγαίνει στο arduino.

ARDUINO -

  • η έξοδος του DTMF από (D0 - D3) ακροδέκτες έρχεται σε ψηφιακές ακίδες του arduino. Μπορούμε να συνδέσουμε αυτήν την έξοδο με οποιαδήποτε από τις τέσσερις ψηφιακές ακίδες που κυμαίνονται από (2 - 13) στο arduino. Εδώ χρησιμοποιήσαμε τις καρφίτσες 8, 9, 10 και 11.
  • Οι ψηφιακές ακίδες 2 και 3 του arduino συνδέονται με τον αριθμό pin «H» και «I» του μηχανοδηγού, ενώ οι ακίδες 12 και 13 του arduino συνδέονται με τα «J» και «K».
  • Το arduino είναι συνδεδεμένο με μπαταρία 12 volt.

Πρόγραμμα 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. Δημιουργείται μια νέα συνάρτηση “void αποκωδικοποίηση ()”. Σε αυτήν τη συνάρτηση, όλη η δυαδική είσοδος που λαμβάνουμε από το DTMF αποκωδικοποιείται στο δεκαδικό με το arduino. Και η μεταβλητή που έχει εκχωρηθεί για αυτήν την δεκαδική τιμή είναι α.
  4. Πραγματοποιείται μια άλλη λειτουργία «άκυρη εκτύπωση ()». Αυτή η λειτουργία χρησιμοποιείται για την εκτύπωση τιμών εισόδου από καρφίτσες DTMF.
  5. Παρομοίως, απαιτούνται πέντε συναρτήσεις που απαιτούνται για την εκτέλεση της απαιτούμενης εργασίας. Αυτές οι λειτουργίες είναι:

void move_left () // ρομπότ στρίβει αριστερά

void move_right () // το ρομπότ στρίβει δεξιά

void move_forward () // το ρομπότ κινείται προς τα εμπρός

void move_backward () // το ρομπότ κινείται προς τα πίσω

void halt () // ρομπότ σταματά

  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 λαμβάνει την είσοδο, την αποκωδικοποιεί στον ισοδύναμο δυαδικό αριθμό, δηλαδή «0010» και την αποστέλλει σε ψηφιακές καρφίτσες του arduino. Στη συνέχεια, το arduino στέλνει αυτόν τον κωδικό στον οδηγό του κινητήρα καθώς έχουμε προγραμματίσει πότε ο κωδικός θα είναι «0010», οι κινητήρες θα περιστρέφονται δεξιόστροφα και ως εκ τούτου το ρομπότ μας θα προχωρήσει προς τα εμπρός.
  • Εάν πατηθεί το «4» τότε ο ισοδύναμος κωδικός του είναι «0100» και σύμφωνα με τον προγραμματισμό, οι κινητήρες της αριστεράς πλευράς θα σταματήσουν και μόνο οι κινητήρες της δεξιάς πλευράς θα περιστραφούν δεξιόστροφα και ως εκ τούτου το ρομπότ μας θα στρίψει αριστερά.
  • Εάν πατηθεί το «6» τότε ο κινητήρας της δεξιάς πλευράς θα σταματήσει και μόνο οι κινητήρες της αριστερής πλευράς θα περιστραφούν δεξιόστροφα και ως εκ τούτου το ρομπότ μας θα στρίψει δεξιά.
  • Εάν πατηθεί το «8» τότε οι κινητήρες μας θα περιστραφούν αριστερόστροφα και έτσι το ρομπότ μας θα κινηθεί προς τα πίσω.
  • Εάν πατηθεί το '0' τότε όλοι οι κινητήρες μας θα σταματήσουν και το ρομπότ δεν θα κινηθεί.

Σε αυτό το έργο έχουμε εκχωρήσει μια συνάρτηση μόνο σε πέντε αριθμούς πληκτρολογίου. Μπορούμε να προσθέσουμε οποιοδήποτε τύπο άλλου μηχανισμού και να αντιστοιχίσουμε έναν αριθμό πληκτρολογίου κλήσης σε αυτόν τον μηχανισμό για να δημιουργήσουμε μια αναβαθμισμένη έκδοση αυτού του έργου.

ΣΗΜΕΙΑ ΓΙΑ ΝΑ ΔΙΑΤΗΡΕΙ

1 - Ο γρύλος δεν πρέπει να είναι χαλαρός.

2 - Οι ήχοι πληκτρολογίου τηλεφώνου πρέπει να είναι μέγιστοι.

3 - Το Internet / Wi-Fi του τηλεφώνου λήψης θα πρέπει να είναι κλειστό για να αποφευχθούν οι παρεμβολές.

4 - Ο αριστερός πείρος (δηλ. Ο πείρος 'b') του DTMF είναι γειωμένος και ο δεξί πείρος (δηλαδή ο πείρος 'a') συνδέεται με 3.3v.

Πρωτότυπες εικόνες του κυκλώματος ρομπότ ελεγχόμενου κινητού τηλεφώνου χρησιμοποιώντας DTMF
Βίντεο επίδειξης ελεγχόμενου κινητού τηλεφώνου RC Car χρησιμοποιώντας DTMF



Προηγούμενο: Εισαγωγή στο EEPROM στο Arduino Επόμενο: Δημιουργήστε αυτό το ρομπότ Line Follower για το Science Fair Project