Introduction: Control Your Home and Robot by Missed Call From Cell Phone
You can find lots of projects from internet about controlling things like light, fan, washing machine and your robot from remote location. There are several ways for controlling these remotely such as using DTMF signal from cell phone (required DTMF decoder cricuit), using Bluetooth (require bluetooth module), using Internet (require Internet server,WiFi module or Ethernet Shield and lots of programming) or RF transmitter and receiver (Seeed RF link kit). A microcontroller or Arduino board is common for all systems.
I am introducing here a completely new and very easy way to control household appliances (light, fan, washing machine) and your robot from remote place by using cell phone. A very small component is required and very easy to made.
When we call someone from our cell phone we hear several long beep tone from our phone. I will use these tone as a hint to control our thing.
Keep reading to know how to control your light, fan and robot by cell phone missed call.
Step 1: What You Need...
1. Old working mobile phone
2. Arduino Uno or any other Arduino board
3. LED (6-pcs) and Resistor (6-pcs, 220-330 ohms)
4. Mini breadboard
3. Some jumper wires and little knowledge on soldering
Step 2: How It's Works...
Every mobile phone has a vibration motor for phone vibration. Normally +Ve terminal of the motor is connected to the positive terminal of battery and the -ve (Signal) terminal of the motor is connected to controller IC. The motor is controlled by a PWM signal from the IC. A PWM (pulse width modulation) signal is nothing but a Pulse train. The total number of pulse is proportional to the phone ring time. That is the fuel of my project. When we call someone by our cell-phone we hear a long beep sound several times until the called person have't receive the call. The number of beep may depends on the carrier. In my country (Bangladesh) it's about 6 times and takes about 30 seconds than shows no answer to the caller mobile if the called person have't received within this period. In my project I will control 6 different LED correspond to six beep but it is possible to control more using this method. For the work to done I need to know the total number of pulse for every beep. I found it for Nokia phone and its about 800 for every beep. There are some pulse between the gap of beep tone. I have divided the total pulse into six group:
0 to 800 --> group 1
800 to 1700 --> group 2
1700 to 2700 --> group 3
2700 to 3600 --> group 4
3600 to 4400 --> group 5
4400 to rest --> group 6.
You can make your own group. You can make 12 groups considering long beep and short beep different and than you may control 12 things.
I don't sure without Nokia, phone from another brand have the same number of pulse but I have the way to find it.
I will explain it in next step.
Step 3: Connecting Phone With Arduino
First you need to identified the +ve and signal terminal of the vibrator. You can do it easily by using multimeter. Disassemble your phone and locate the vibration motor. Connect one lead of your multimeter to +ve battery terminal and another lead to a point of vibrator. If it shows zero resistance, the connected pin of the motor is positive terminal. Move the multimeter lead to another terminal of the motor. If it shows high resistance you found the right terminal (the signal pin). You can remove the vibrator from the motherboard if you like or keep it own place.
Now you required some soldering. Solder one wire to the signal pin of the motor and another pin to the ground of the motherboard shown in figure. Then reassemble the phone and tight the screws. Turn on your phone.
Congratulation! you have successfully completed the most hard and important step.
Step 4: Connect With Arduino and Count Pulse...
This step is optional for you if you have a Nokia phone and you may skip this step. I will explain here how to find number of pulse for every ring beep. For Nokia phone I mentioned the pulse ranges in a previous step. But you can experiment yourself and find it again.
First connect motor's signal pin to Arduino digital pin 2 and ground of phone motherboard to Arduino ground. I will use interrupt for counting pulse and for that I used Arduino digital pin 2 because this pin is used for external interrupt and called interrupt number 0 (zero) in arduino environment. Now upload pulse_counter sketch attached below to your arduino. Turn on your phone, enable vibrating alert on your phone and open serial monitor from arduino IDE. Call from another cell phone to the connected phone. Notice beep tone and see the number of pulse to the serial monitor. First,dial and end call after completing one beep tone and write down the last number printed in serial monitor. Dial again and end at the beginning of the second beep and write down the maximum number. Again dial and end call after 2 beep and note down the last printed number. Do the same for 3, 4, 5 and 6 beep also. Now, we will set rang for each beep.
Let, maximum number noted for first beep is 700 and maximum number for the beginning of the second beep is 900. Using these values our first range will be 0 to 800. Last value for first range is taken between 700 and 900. Find the range for all beep by same way.
Step 5: Control Things by Missed Call...
In this step we will control six LED by missed call. All leds can be on and off individually. You need to connect six led to the arduino pin 7 to 12 through current limiting resistor shown in schematic given above. The value of the resistor depends on the color of the led, brightness of the led and the operating voltage.
Resistor value in ohms = (Operating voltage – LED forward voltage) / Current in amperes
Typically the maximum rated current of an led is 20mA but 10mA will work fine. For the led forward voltage see the image given above.
Arduino uno works in 5V, so the required resistor value for a red led with standard brightness (10mA) will be
R = (5 -1.9)/10 = 310 ohm and minimum value is (5-1.9)/20 = 155 ohm. So, you should not use a resistor less than 155 ohm. The maximum value of the resistance for minimum brightness (5mA led current) is 3.1/5 = 620 ohm. So, you can take any value between the rang 155 to 620 ohm considering your desire brightness.
After completing the connection of resistor now you need to connect vibrator signal wire to arduino pin 2 and ground to arduino ground.
Complete your connection?
Now it is the time to upload the program to the arduino. Download the program attached below and upload it to your arduino. If successfully uploaded then you are ready to test your invention. Dial the number of your connected phone from another cell-phone and wait to complete a ring (long beep) and then end the call. LED1 should on. If you dial again and disconnect the call after completing one ring the LED1 should off now. If you do this for 2,3,4,5 and 6 beep the corresponding LEDs will be on and off. A working video is uploaded herewith. Enjoy this!
Step 6: Conclusion...
I have tried to make it understandable to you but till you have any confusion please comment bellow. I would try my best to help you.
I have shown here only how to control LED but it will be easy if you want to control house-hold appliances such as light, fan, TV, Air conditions, Washing machine even your Robot. For these you have to add relay between your arduino and load. You also have to use a relay driver such as ULN2003 or general purpose transistor because arduino pin can't drive relay directly.
You can also use Seeed Studio Relay Shield instead of using relay and relay driver. Relay shield has integrated relay and driver and make your work easy.
If you have like this instructable please vote for me.