Arduino Phone Remote Control DTMF Shield





Buy this on eBay
Price = RM 98 (not inclusive of shipment cost)

http://www.ebay.com/itm/170963005284

Product Demo

DTMF Shield for Arduino. The first shield for Arduino made by Copafrog.

Check out the various method that you can use it here:

 
http://www.youtube.com/watch?v=1DntwuO4t1I
 
 

Projects Showcase

Phone Remote Control DTMF Shield with Wave Shield
for Remote AC Power Switching with Voice Response System / IVR

 
https://www.youtube.com/watch?v=KZEWB-8GRYw
 
 

  Phone Remote Control AC Power Switching
 
 

Universal Phone Remote Control AC Power Switching

  
 

Download the User Manual

http://copafrog.com/copafrog_dtmf_shield.pdf


Sample Arduino Code
 

int val1, val2, val3, val4;
int ledState1, ledState2, ledState3, ledState4;
// Variables used
int dtmf;
String dial;

void setup() {                  
Serial.begin(9600);
dial = "";


// Arduino Outputs

pinMode(13, OUTPUT);
pinMode(12, OUTPUT); 
pinMode(11, OUTPUT); 
pinMode(10, OUTPUT);
// MT8870DE Outputs to Arduino Inputs
pinMode(2, INPUT); // Significant bit 1, pin 11 on CM8870
pinMode(3, INPUT); // Significant bit 2, pin 12 on CM8870
pinMode(4, INPUT); // Significant bit 4, pin 13 on CM8870
pinMode(5, INPUT); // Significant bit 8, pin 14 on CM8870
pinMode(6, INPUT); // Significant STD

   Serial.println("System Reset");
   delay(20);

}

void loop() {
while(digitalRead(6) == HIGH) { 
delay(500);

  Serial.println("System Start");

dtmf = 0;
if (digitalRead(2) == HIGH) dtmf = dtmf + 1;
if (digitalRead(3) == HIGH) dtmf = dtmf + 2;
if (digitalRead(4) == HIGH) dtmf = dtmf + 4;
if (digitalRead(5) == HIGH) dtmf = dtmf + 8;


if (dtmf == 1) dial = "1";
if (dtmf == 2) dial = "2";
if (dtmf == 3) dial = "3";
if (dtmf == 4) dial = "4";
if (dtmf == 5) dial = "5";
if (dtmf == 6) dial = "6";
if (dtmf == 7) dial = "7";
if (dtmf == 8) dial = "8";
if (dtmf == 9) dial = "9";
if (dtmf == 10) dial = "0";
if (dtmf == 11) dial = "*";
if (dtmf == 12) dial = "#";


Serial.println(dial);     // The digit contained in DTMF data

// Handle Digit 1
if (dial == "1") {
val1 = digitalRead(13);   
if(val1==0) {
  ledState1=1;}
  else { 
  ledState1=0;
  }
//Serial.println(val1);
//Serial.println(ledState1);
} // Finished handling Digit 1


// Handle Digit 2
if (dial == "2") {
val2 = digitalRead(12);   
if(val2==0) {
  ledState2=1;}
  else { 
  ledState2=0;
  }
//Serial.println(val1);
//Serial.println(ledState1);
} // Finished handling Digit 2

// Handle Digit 3
if (dial == "3") {
val3 = digitalRead(11);   
if(val3==0) {
  ledState3=1;}
  else { 
  ledState3=0;
  }
//Serial.println(val1);
//Serial.println(ledState1);
} // Finished handling Digit 3

// Handle Digit 4
if (dial == "4") {
val4 = digitalRead(10);   
if(val4==0) {
  ledState4=1;}
  else { 
  ledState4=0;
  }
//Serial.println(val1);
//Serial.println(ledState1);
} // Finished handling Digit 4


}
digitalWrite(13, ledState1);    // sets the LED to the button's value
digitalWrite(12, ledState2);    // sets the LED to the button's value
digitalWrite(11, ledState3);    // sets the LED to the button's value
digitalWrite(10, ledState4);    // sets the LED to the button's value
}