In: Electrical Engineering
DTMF Home Automation System
This project is about controlling of home appliances using DTMF (Dual Tone Multi Frequency) technology. These appliances includes lights, fans, central heating, etc. A control unit will be required to encode the 4bit binary code from the DTMF decoder to link with 16 appliances or operations. However anyone can control your appliances if they know the cell number of the phone connected to the module. Furthermore, the number of appliances is limited to 16, which is the number of DTMF tones. These problems can be solved by using a controller at both transmit and receive end, and introduce a digital code. Now it will be possible to use more than one tone per command. For example, using 2 tones will give 16x16 =256 commands. A duplex operation can now be possible.
I need help Designing the DTMF Home Automation System using an Arduino.
I need the source code and circuit
Platform assembly
Now you need to tight Arduino board, relay board, DTMF board to the appropriate place with the bolts.
Make connection as shown in the above figure.
The source code will be for the 4 home appliances.
Source code:
const int Q1 = 8; // Defining Digital Input Pins from DTMF Module const int Q2 = 9; const int Q3 = 10; const int Q4 = 11;
const int D1 = 4; // Defining Digital output Pins for Relay Board const int D2 = 5; const int D3 = 6; const int D4 = 7; int SoQ1 = 0; // Defining variable to store the status(HIGH/LOW) of above inputs. int SoQ2 = 0; int SoQ3 = 0; int SoQ4 = 0; int oldCon = 0; // Variable to know what was the last button pressed. void setup(){ pinMode(Q1, INPUT); // Defining pins as input. pinMode(Q2, INPUT); pinMode(Q3, INPUT); pinMode(Q4, INPUT); pinMode(D1, OUTPUT); // Defining pins as output. pinMode(D2, OUTPUT); pinMode(D3, OUTPUT); pinMode(D4, OUTPUT); } void loop(){ SoQ1 = digitalRead(Q1); // Reading status of Input Pins. It can be LOW or HIGH SoQ2 = digitalRead(Q2); SoQ3 = digitalRead(Q3); SoQ4 = digitalRead(Q4); if(SoQ4==LOW && SoQ3==LOW && SoQ2==LOW && SoQ1==HIGH ) // Condition for Button 1. It is equal to Binary - 0001 { if (oldCon!=1){ digitalWrite(D1, HIGH); } oldCon=1; } else if(SoQ4==LOW && SoQ3==LOW && SoQ2==HIGH && SoQ1==LOW ) // Condition for Button 2. It is equal to Binary - 0010 { if (oldCon!=2){ digitalWrite(D1, LOW); } oldCon=2; } else if(SoQ4==LOW && SoQ3==LOW && SoQ2==HIGH && SoQ1==HIGH ) // Condition for Button 3. It is equal to Binary - 0011 { if (oldCon!=3){ digitalWrite(D2, HIGH); } oldCon=3; } else if(SoQ4==LOW && SoQ3==HIGH && SoQ2==LOW && SoQ1==LOW ) // Condition for Button 4. It is equal to Binary - 0100 { if (oldCon!=4){ digitalWrite(D2, LOW); } oldCon=4; } else if(SoQ4==LOW && SoQ3==HIGH && SoQ2==LOW && SoQ1==HIGH ) // Condition for Button 5. It is equal to Binary - 0101 { if (oldCon!=5){ digitalWrite(D3, HIGH); } oldCon=5; } else if(SoQ4==LOW && SoQ3==HIGH && SoQ2==HIGH && SoQ1==LOW ) // Condition for Button 6. It is equal to Binary - 0110 { if (oldCon!=6){ digitalWrite(D3, LOW); } oldCon=6; } else if(SoQ4==LOW && SoQ3==HIGH && SoQ2==HIGH && SoQ1==HIGH ) // Condition for Button 7. It is equal to Binary - 0111 { if (oldCon!=7){ digitalWrite(D4, HIGH); } oldCon=7; } else if(SoQ4==HIGH && SoQ3==LOW && SoQ2==LOW && SoQ1==LOW ) // Condition for Button 8. It is equal to Binary - 1000 { if (oldCon!=8){ digitalWrite(D4, LOW); } oldCon=8; } else if(SoQ4==HIGH && SoQ3==LOW && SoQ2==LOW && SoQ1==HIGH ) // Condition for Button 9. It is equal to Binary - 1001 { if (oldCon!=9){ digitalWrite(D1, LOW); digitalWrite(D2, LOW); digitalWrite(D3, LOW); digitalWrite(D4, LOW); } oldCon=9; } delay(50); // Debounce Delay. }
Dial the phone number attached to the kit. Receive the call. Then the procedure will be as follows.
If you press 1: Device 1 will be on.
If you press 2: Device 1 will be off.
If you press 3: Device 2 will be on.
If you press 4: Device 2 will be off.
If you press 5: Device 3 will be on.
If you press 6: Device 3 will be off.
If you press 7: Device 4 will be on.
If you press 8: Device 4 will be off.
If you press 8: All devices will be off.