Handygesteuertes Roboterauto mit DTMF-Modul

Versuchen Sie Unser Instrument, Um Probleme Zu Beseitigen





In diesem Projekt werden wir einen manuellen Roboter über unser Mobiltelefon mithilfe des DTMF-Moduls und von Arduino steuern.

Von: Ankit Negi, Kanishk Godiyal und Navneet Singh Sajwan



Handygesteuertes Roboterauto mit DTMF-Modul

EINFÜHRUNG

In diesem Projekt werden zwei Mobiltelefone verwendet, eines zum Anrufen und eines zum Empfangen des Anrufs. Das Telefon, das den Anruf entgegennimmt, ist über eine Audiobuchse mit dem Roboter verbunden.

Die anrufende Person kann den Roboter einfach durch Drücken der Wähltasten steuern. (d. h. der Roboter kann von jedem Winkel der Welt aus bedient werden).



ERFORDERLICHE KOMPONENTEN

1 - Arduino UNO

2 - Manueller Roboter

3 - 4 Motoren (hier haben wir jeweils 300 U / min verwendet)

4 - DTMF-Modul

5 - Motortreiber

6 - 12 Volt Batterie

7 - Wechseln

8 - Kopfhörerbuchse

9 - Zwei Handys

10 - Kabel anschließen

ÜBER MANUELLEN ROBOTER

Ein manueller Roboter besteht aus einem Fahrgestell (Karosserie), an dem je nach Anforderung drei oder vier Motoren (die mit Reifen verschraubt sind) angebracht werden können.

Zu verwendende Motoren hängen von unserer Anforderung ab, d. H. Sie können entweder eine hohe Drehzahl oder ein hohes Drehmoment oder eine gute Kombination von beiden bereitstellen. Anwendungen wie Quad-Copter erfordern Motoren mit sehr hoher Geschwindigkeit, um gegen die Schwerkraft zu heben, während Anwendungen wie das Bewegen eines mechanischen Arms oder das Besteigen eines steilen Abhangs Motoren mit hohem Drehmoment erfordern.

Beide Motoren auf der linken und rechten Seite des Roboters sind separat parallel geschaltet. Normalerweise werden sie über DPDT-Schalter (Double Pin Double Throw) an eine 12-Volt-Batterie angeschlossen.

In diesem Projekt verwenden wir jedoch ein Mobiltelefon anstelle von DPDTs, um den Bot zu steuern.

ÜBER MOTORFAHRER

Arduino liefert einen maximalen Strom von 40 mA unter Verwendung von GPIO-Pins (General Purpose Input Output), während es 200 mA unter Verwendung von Vcc und Masse liefert.

Motoren benötigen zum Betrieb großen Strom. Wir können Arduino nicht direkt zum Antrieb unserer Motoren verwenden, daher verwenden wir einen Motortreiber.

Der Motortreiber enthält die H-Brücke (eine Kombination von Transistoren). Der IC (L298) des Motortreibers wird von 5 V angetrieben, die von Arduino geliefert werden.

Um die Motoren anzutreiben, wird ein 12-V-Eingang von Arduino benötigt, der letztendlich von einer 12-V-Batterie versorgt wird. Der Arduino nimmt also nur Strom aus der Batterie und gibt ihn an den Motortreiber weiter.

Es ermöglicht uns, die Drehzahl und Richtung der Motoren durch einen maximalen Strom von 2 Ampere zu steuern.

EINFÜHRUNG IN DAS DTMF-MODUL

DTMF steht für Dual Tone Multi Frequency. Unser Zifferblatt ist eine Mehrfachfrequenz mit zwei Tonern, d. H. Eine Taste ergibt eine Mischung aus zwei Tönen mit unterschiedlicher Frequenz.

Ein Ton wird aus einer Hochfrequenzgruppe von Tönen erzeugt, während der andere aus einer Niederfrequenzgruppe erzeugt wird. Dies geschieht so, dass jede Art von Stimme die Töne nicht imitieren kann.

Es dekodiert einfach die Eingabe der Telefontastatur in einen 4-Bit-Binärcode. Die Häufigkeit der Tastaturnummern, die wir in unserem Projekt verwendet haben, ist in der folgenden Tabelle aufgeführt

DigitLow Frequenz (Hertz) Hochfrequenz (Hertz) 2697133647701209677014778852133609411336

Die binär decodierte Reihenfolge der Ziffern des Wähltastenfelds ist in der folgenden Tabelle aufgeführt.

Ziffer D3 D2 D1 D0 1 0 0 0 1 zwei 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

SCHALTPLAN

ANSCHLÜSSE

Kraftfahrer -

  • Pin 'A' und 'B' steuern den Motor auf der linken Seite, während Pin 'C' und 'D' die rechte Seite des Motors steuern. Diese vier Stifte sind mit den vier Motoren verbunden.
  • Pin 'E' dient zur Stromversorgung des IC (L298), der vom Arduino (5 V) stammt.
  • Pin 'F' ist Masse.
  • Pin 'G' nimmt über den Vin-Pin des Arduino 12 Volt Strom von der Batterie auf.
  • Die Pins 'H', 'I', 'J' und 'K' empfangen Logik von Arduino.

DTMF -

  • Pin 'a' ist mit 3,5 Volt Arduino verbunden, um den IC (SC9270D) mit Strom zu versorgen.
  • Pin 'b' ist mit Masse verbunden.
  • Die Eingabe von DTMF erfolgt über eine Buchse vom Telefon.
  • Die Ausgabe in Form von Binärdaten über (D0 - D3) Pins geht an Arduino.

ARDUINO -

  • Die Ausgabe von DTMF von (D0 - D3) -Pins erfolgt über digitale Pins von Arduino. Wir können diesen Ausgang mit jedem der vier digitalen Pins verbinden, die von (2 - 13) in Arduino variieren. Hier haben wir die Pins 8, 9, 10 und 11 verwendet.
  • Die digitalen Pins 2 und 3 von Arduino sind mit den Pin-Nummern 'H' und 'I' des Motortreibers verbunden, während die Pins 12 und 13 von Arduino mit 'J' und 'K' verbunden sind.
  • Das Arduino ist an eine 12-Volt-Batterie angeschlossen.

Programmcode-

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()
}

CODE ERKLÄRUNG

  1. Zunächst initialisieren wir alle Variablen vor dem Einrichten der Leere.
  2. Bei der Leereneinstellung werden alle zu verwendenden Pins entsprechend ihrem Zweck als Eingang oder Ausgang zugewiesen.
  3. Eine neue Funktion 'void decoding ()' wird durchgeführt. In dieser Funktion wird der gesamte Binäreingang, den wir von DTMF erhalten, von Arduino auf Dezimalzahl dekodiert. Die für diesen Dezimalwert zugewiesene Variable ist a.
  4. Eine weitere Funktion 'Void Printing ()' wird ausgeführt. Diese Funktion wird verwendet, um Eingabewerte von DTMF-Pins zu drucken.
  5. In ähnlicher Weise sind fünf Funktionen erforderlich. Funktionen sind erforderlich, um die erforderliche Aufgabe auszuführen. Diese Funktionen sind:

void move_left () // Roboter biegt nach links ab

void move_right () // Roboter biegt nach rechts ab

void move_forward () // Roboter bewegt sich vorwärts

void move_backward () // Roboter bewegt sich rückwärts

void halt () // Roboter stoppt

  1. Jetzt werden diese Funktionen in der Void-Loop-Funktion verwendet, um ihre Aufgabe zu erledigen, wenn sie gemäß der Eingabe vom Wähltastenfeld des Mobiltelefons aufgerufen werden.

Zum Beispiel:::

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

Wenn also Taste 2 gedrückt wird oder 0010 an den Eingangspins empfangen wird, decodiert Arduino dies und somit erledigen diese Funktionen ihre Arbeit: move_forward ()

lesen()

decoding ()

Drucken()

SCHALTUNG ARBEITEN

Die Steuerelemente, die wir in unserem Projekt verwendet haben, sind wie folgt:

2 - Um vorwärts zu kommen

4 - Nach links abbiegen

6 - Nach rechts abbiegen

8 - Rückwärts bewegen

0 - um anzuhalten

Nach einem Anruf bei dem mit dem Roboter verbundenen Telefon öffnet die Person ihre Wähltastatur.

  • Wenn '2' gedrückt wird. Der DTMF empfängt den Eingang, decodiert ihn in seiner binären Äquivalentzahl, d. H. '0010', und sendet ihn an digitale Pins von Arduino. Das Arduino sendet diesen Code dann an den Motortreiber, wie wir programmiert haben, wenn der Code '0010' lautet. Die Motoren drehen sich im Uhrzeigersinn und daher bewegt sich unser Roboter vorwärts.
  • Wenn '4' gedrückt wird, lautet der entsprechende Code '0100'. Gemäß der Programmierung stoppen die Motoren auf der linken Seite und nur die Motoren auf der rechten Seite drehen sich im Uhrzeigersinn, sodass sich unser Roboter nach links dreht.
  • Wenn '6' gedrückt wird, stoppt der Motor auf der rechten Seite und nur die Motoren auf der linken Seite drehen sich im Uhrzeigersinn und daher dreht sich unser Roboter nach rechts.
  • Wenn '8' gedrückt wird, drehen sich unsere Motoren gegen den Uhrzeigersinn und somit bewegt sich unser Roboter rückwärts.
  • Wenn '0' gedrückt wird, stoppen alle unsere Motoren und der Roboter bewegt sich nicht.

In diesem Projekt haben wir nur fünf Wähltastennummern eine Funktion zugewiesen. Wir können jede Art von anderem Mechanismus hinzufügen und diesem Mechanismus eine Wähltastatur zuweisen, um eine aktualisierte Version dieses Projekts zu erstellen.

ZU BEACHTENDE PUNKTE

1 - Der Wagenheber sollte nicht locker sein.

2 - Die Töne der Telefontastatur sollten maximal sein.

3 - Das Internet / WLAN des empfangenden Telefons sollte geschlossen sein, um Interferenzeffekte zu vermeiden.

4 - Der linke Pin (d. H. Pin 'b') des DTMF ist geerdet und der rechte Pin (d. H. Pin 'a') ist mit 3,3 V verbunden.

Prototypbilder der Mobiltelefon-gesteuerten Roboterautoschaltung unter Verwendung von DTMF
Videodemonstration eines Mobiltelefons mit RCMF



Zurück: Einführung in das EEPROM in Arduino Weiter: Machen Sie diesen Line Follower Robot für das Science Fair-Projekt