top of page

DTMF controlled Robot using Arduino

Businesswomen Walking in Hallway

Introduction

We are here with our next robot that is Mobile or DTMF Controlled Robot. DTMF controlled Robot runs over mobile DTMF technology that exists in Dial tone. DTMF stands for Dual Tone Multiple Frequency. There are some frequencies that we use to create DTMF tone.

 

Required Components

  • Arduino UNO

  • DC Motor

  • Mobile Phone

  • DTMF decoder Module

  • Motor Driver L293D

  • 9 Volt Battery

  • Battery Connector

  • Aux wire

  • Robot Chasis with wheel

  • Connecting wires

DTMF

DTMF is a Dual Tone Multiple Frequency decoder module which has a MT8870 DTMF decoder IC which decodes DTMF tone signal to digital signal that are acceptable for arduino digitally. Here an aux wire is needed for connecting DTMF module to phone.

Circuit Diagram 

Circuit digram for Arduino based DTMF Controlled Robot is very similar with our other robot like PC controlled robotLine Follower etc..

  • Here one motor driver is connected to arduino for driving robot.

  • Motor driver’s input pin 2, 7, 10 and 15 is connected at arduino digital pin number 6, 5, 4 and 3 respectively.

  • Here we have used two DC motors to driver robot in which one motor is connected at output pin of motor driver 3 and 6 and another motor is connected at 11 and 14.

  • A 9 volt Battery is also used to power the motor driver for driving motors. A DTMF decoder attached with this circuit and this decoder is plugged into a mobile using an aux wire for receiving command or DTMF Tone.

  • DTMF decoder pin D0-D3 is directly connected with Arduino’s pin number 19,18,17,16.

  • Two 9 Volt batteries are used to power the circuit in which one is used for power the motors, connected at motor driver IC pin number 8.

  • And another battery is connected to power the remaining circuit. (Shown in figure 1)

Working

DTMF controlled robot run by some commands that are send via mobile phone. We are here using DTMF function of mobile phone. Here we have used the mobile phone to show working of project. One is user mobile phone that we will call ‘remote phone’ and second one that are connected with Robot’s circuit using aux wire. This mobile phone we will call ‘Receiver Phone’.   

 

  • First we make a call by using remote phone to receiver phone and then attend the call by manually or automatic answer mode. Now here is how this DTMF controlled robot is controlled by cell phone:

  • When we presses ‘2’ by remote phone, robot start to moving forward and moving continues forward until next command comes

  • When we presses ‘8’ by remote phone, robot change his state and start moving in backward direction until other command comes.

  • When we press ‘4’, Robot get turn left till next command executed.

  • When we press ‘6’, robot turned to right.

  • And for stopping robot we pass‘5’.

 

Code

​​​#define m11 3
#define m12 4
#define m21 5
#define m22 6

#define D0 19
#define D1 18
#define D2 17
#define D3 16

void forward()
{
   digitalWrite(m11, HIGH);
   digitalWrite(m12, LOW);
   digitalWrite(m21, HIGH);
   digitalWrite(m22, LOW);
}

void backward()
{
   digitalWrite(m11, LOW);
   digitalWrite(m12, HIGH);
   digitalWrite(m21, LOW);
   digitalWrite(m22, HIGH); 
}

void left()
{
   digitalWrite(m11, HIGH);
   digitalWrite(m12, LOW);
   digitalWrite(m21, LOW);
   digitalWrite(m22, LOW);
}

void right()
{
   digitalWrite(m11, LOW);
   digitalWrite(m12, LOW);
   digitalWrite(m21, HIGH);
   digitalWrite(m22, LOW);
}

void Stop()
{
   digitalWrite(m11, LOW);
   digitalWrite(m12, LOW);
   digitalWrite(m21, LOW);
   digitalWrite(m22, LOW);
}

void setup() 
{
  pinMode(D0, INPUT);
  pinMode(D1, INPUT);
  pinMode(D2, INPUT);
  pinMode(D3, INPUT);

  pinMode(m11, OUTPUT);
  pinMode(m12, OUTPUT);
  pinMode(m21, OUTPUT);
  pinMode(m22, OUTPUT);
}

void loop() 
{

  int temp1=digitalRead(D0);
  int temp2=digitalRead(D1);
  int temp3=digitalRead(D2);
  int temp4=digitalRead(D3);
 
  if(temp1==0 && temp2==1 && temp3==0 && temp4==0)
  forward();

  else if(temp1==0 && temp2==0 && temp3==1 && temp4==0)
  left();

  else if(temp1==0 && temp2==1 && temp3==1 && temp4==0)
  right();

  else if(temp1==0 && temp2==0 && temp3==0 && temp4==1)
  backward();

   else if(temp1==1 && temp2==0 && temp3==1 && temp4==0)
  Stop();
}

bottom of page