Saturday, 14 May 2011

DTMF(Dual Tone Multi Frequency) or Mobile controlled bot

DTMF is Dual Tone Multi Frequency.The circuit is given by


The components required are:

1) DTMF Decoder IC - MT8870 or  CM8870
2) atmega32
3) l293d
4) cd7004
5) 100k resistances – 2 no.
6)  330k resistances
7)  10k resistances-2 no
8)  0.47 micro farad capacitor
9)  22pfarat capacitor – 4 no
10)  0.1micro farad capacitor
11)  3.57 mhz crytal
12) 12mhz crystal
13)  push to on switch
14)  12v 100 rpm motor – 2no.

15)  Battery - 6v
16)  74LS04-not gate
17)  IN4007 diode
18)  LM7805



Conventionally, Wireless-controlled robots use RF circuits, which have the drawbacks of limited working range, limited frequency range and the limited control. Use of a mobile phone for robotic control can overcome these limitations. It provides the advantage of robust control, working range as large as the coverage area of the service provider, no interference with other controllers and up to twelve controls.

For signaling, it will use dual-tone multi-frequency (DTMF) tones. These are the tones that you hear when you press keys on a telephone keypad. The CM8870 IC or MT8870 IC interprets the tones as a 4-bit digital signal, which is input to microcontroller Atmega32.
So then based on which key is pressed, the robot will be able to interpret the tone and activate relays and such to turn on motors and move about.

We use Handsfree headset of phone, which consists of TIP,which is connected to mt 8870, and ring and ground are grounded.



The picture of my bot is given below. I know it looks rough, but this is what I along with my friends Sunil and Virupaksh could manage within one night :)


The code is

#include<avr/io.h>
#include<util/delay.h>
#include<lcd4.c>
#define CHECKBIT(x,b) x&(1<<b)   //Checks bit status
#define SETBIT(x,b) x|=(1<<b)    //Sets the particular bit
#define CLEARBIT(x,b) x&=~(1<<b)  //Sets the particular bit
#define TOGGLEBIT(x,b) x^=(1<<b)  //Toggles the particular bit
int check1()
{
if((PINA & 0b00000001)==0b00000001)
return 1;
else
return 0;

}

int check2()
{
if((PINA & 0b00000010)==0b00000010)
return 1;
else
return 0;

}

int check3()
{
if((PINA & 0b00000100)==0b00000100)
return 1;
else
return 0;

}

int check4()
{
if((PINA & 0b00001000)==0b00001000)
return 1;
else
return 0;

}

int main()

DDRA=0x00;DDRD=0xFF;
unsigned int k, h;
port();
initiate();
pos(1,1);string("techieNITRKL",0);
int a=0,b=0,c=0,d=0,f=0;

//PORTA=0x00;
while(1)
{
a=check1();
b=check2();
c=check3();
d=check4();
f=((a*1000) + (b*100) + (c*10) + d);

pos(2,1);number(f);
if(f==1110)
{
pos(2,7);number(2);//forward
PORTD=0b00000101;
}

else if(f==1011)
{
pos(2,7);number(4);//left
PORTD=0b00000111;
}

else if(f==1001)
{
pos(2,7);number(5);//back
PORTD=0b00001010;
}

else if(f==1010)
{
pos(2,7);number(6);//right
PORTD=0b00001101;
}
else
{
pos(2,7);string("P",0);
PORTD=0b00001111;
}

}

return 0;
}

4 comments:

  1. which mobile did you use???

    ReplyDelete
  2. I am very much pleased with the contents you have mentioned. I wanted to thank you for this great article. I enjoyed every little bit part of it and I will be waiting for the new updates. cell phone detection

    ReplyDelete
  3. This comment has been removed by the author.

    ReplyDelete
  4. This comment has been removed by the author.

    ReplyDelete