Microcontroller remote controlling project


Published on

Microcontroller based remote controlling project using mobile phone. with implementing this u can remotely control ur home appliances like fan, light, tv even industrial machines through a mobile phone being in a long distance.

Published in: Education, Business, Technology
1 Comment
No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Microcontroller remote controlling project

  1. 1. DTMF BASED REMOTE CONTROLLING OF HOME APPLIANCES USINGMOBILE PHONE A project for the partial fulfillment of requirements for the B.Sc.(Honors) degree. Project Supervisor FarhanaBinte Sufi Lecturer Department of Applied Physics & Electronic Engineering University of Rajshahi Submitted by Roll no.-09034939 Registration no.-1701 Session 2008-2009
  2. 2. CERTIFICATION This is to certify that the project “DTMF BASED REMOTECONTROLLING OF HOME APPLIANCES USING MOBILE PHONE” has been carried out by examinee Roll: 09034939, Session: 2008-09 under my supervision for the B.Sc. (Hons.) Part-IV Examination-2012. The examinee has completed the project in due time and successfully. FARHANA BINTE SUFI Lecturer Dept. Of Applied Physics and Electronic Engineering University of Rajshahi Rajshai-6205
  3. 3. ACKNOWLADGEMENT I would like to take this opportunity to express my deepest sense of gratitude and respect to my honorable teacher & project supervisor “ FarhanaBinte Sufi “ , Lecturer , Department of Applied Physics & Electronic Engineering, University of Rajshahi, who guided me in this project and help me in every stage where any difficulty comes. And she has given me valuable suggestions on the development of my project and suggested me to prepare this project paper. I am also thankful to Professor A.B. Md. Ismail, Chairman, Department of Applied Physics & Electronic Engineering, University of Rajshahi, for his kindness in providing me access to the seminar library, internet connections and lab facilities. My heartiest thank to all my respectable teachers, and my classmates for providing moral support and encouragement to enhance my knowledge on Microcontroller. Foremost and finally, it is generosity and guidance of Almighty God to honor me with power and persistence to get this work done. Bipro Roy Chanchal Date: 17/11/2012 TheAuthor
  4. 4. CONTENTS page 1. Introduction…………………………………………………………. 01 2. DTMF Basics……………………………………………………….. 02 3. Decoder Description………………………………………………… 05 4. ATMega 16 Microcontroller……………………………………....... 07 5. Design Basics…………………………………………………………11 6. Implementation& Discussion………………………………………..15 7. Conclusion………………………………………………………........16 8. Appendix……………………………………………………………..17 9. Reference…………………………………………………………….. 23
  5. 5. ABSTRACT The project demonstrates a novel method which enables users to control their home appliances and systems for remotely using a cell phone-based interface. To access the control unit, the user should send an authentication code Dual Tone Multi Frequency along with the required function to his/her home control system via Global System for Mobile communication (GSM). Upon being properly authenticated, the cell phone-based interface at home (control unit) would relay the commands to a microcontroller that would perform the required function. Four mobile keypad buttons generate four different DTMF signals at input which is sent to the mobile at output section via GSM. Then the signal is transferred to a Microcontroller. Microcontroller output is used to make active or inactive two magnetic relays for four different state (i.e. keypad button 2 is used make two relays idle. Keypad button 4 is used to make one relay one and so on.)
  7. 7. INTRODUCTION The remote control technologies have been used in the fields like factory automation, space exploration, in places where human access is difficult. As this has been achieved in the domestic systems partially, many corporations and laboratories are researching the methods which enable human to control and monitor efficiently and easily in the house or outdoor. Controlling the domestic system regardless of time and space is an important challenge. As the mobile phone enables us to connect with the outside devices via mobile communication network regardless of time and space, the mobile phone is a suitable device to control domestic systems. [1] This project proposes a method to control a domestic system using a mobile phone, irrespective of the phone model and mobile phone carrier. The system suggested consists of the mobile phone normally registered in communication service and a mobile phone that can receive a call from another phone. Existing methods for control and monitoring, using mobile phones have usage problems because the cost and need for continuous control. One of the disadvantage, being the lack of feedback during the process. This paper proposes to solve the problems of existing methods of control that use simple voice call. Method proposed uses the DTMF (Dual Tone Multi Frequency) generated when a keypad button of the mobile phone is pressed by the user. The mobile phone user controls the system by sending the DTMF tone to the access point. Mobile communication network coverage is larger than that of LANs, thus user can take advantage of mobile phones to control the system.
  8. 8. DTMF BASICS DTMF is a generic communication term for touch tone (a Registered Trademark of AT&T). The tones produced when dialing on the keypad on the phone could be used to represent the digits, and a separate tone is used for each digit. However, there is always a chance that a random sound will be on the same frequency which will trip up the system. It was suggested that if two tones were used to represent a digit, the likelihood of a false signal occurring is ruled out. This is the basis of using dual tone in DTMF communication.[2] DTMF dialing uses a keypad with 12/16 buttons. Each key pressed on the phone generates two tones with specific frequencies, so a voice or a random signal cannot imitate the tones. One tone is generated from a high frequency group of tones and the other from low frequency group.[2] The frequencies generated on pressing different phone keys are shown in the Table 1. Table 1 – Frequencies generated on Key presses [3] Button Low Frequency(Hz) High Frequency(Hz) 1 697 1209 2 697 1336 3 697 1477 4 770 1209 5 770 1336 6 770 1477 7 852 1209 8 852 1336 9 852 1477 0 941 1209 * 941 1336 # 941 1477 Each row and column of the keypad corresponds to a certain tone and creates a specific frequency. Each button lies at the intersection of the two tones as shown in Table 2.
  9. 9. Table 2 – Row and Column Frequency Correspondence [1] 1 2 3 697 4 5 6 770 7 8 9 852 * 0 # 941 1209 1336 1477 Frequency(Hz) When a button is pressed, both the row and column tones are generated by the telephone instrument. These two tones will be unique and different from tones of other keys. So, whenever we say that there is a low and high frequency associated with a button, it is actually the sumof two waves is transmitted. This fundamental principle can be extended to various applications. DTMF signals can be transmitted over a radio to switch on or switch off home appliances, flash lights, motors, cameras, warning systems, irrigation systems and so on. These encoded data can be stored in a microcontroller and can be transmitted serially to another system for processing. Block diagram for the proposed method is shown in Figure 1. [1]
  10. 10. Figure 1 – Block diagram of the scheme [1]
  11. 11. DECODER DESCRIPTION The decoder used is M-8870. For operating functions (see Fig. 2 – Structure of M-8870). M-8870 includes a band split filter that separates the high and low tones of the received pair, and a digital decoder that verifies both the frequency and duration of the received tones before parsing the resulting 4- bitcode to the output bus. The M-8870 decoder uses a digital counting technique to determine the frequencies of the limited tones and to verify that they correspond to standard DTMF frequencies. Table 3 shows values of Decoder output for various frequencies. Table 3- Values of Decoder output for various frequencies [3] Button Low Frequency(Hz) High Frequency(Hz) Q1 Q2 Q3 Q4 1 697 1209 0 0 0 1 2 697 1336 0 0 1 0 3 697 1477 0 0 1 1 4 770 1209 0 1 0 0 5 770 1336 0 1 0 1 6 770 1477 0 1 1 0 7 852 1209 0 1 1 1 8 852 1336 0 0 0 0 9 852 1477 1 0 0 1 0 941 1209 1 0 1 0 * 941 1336 1 0 1 1 # 941 1477 1 1 0 0
  12. 12. Figure 2 - Structure of 8870 Decoder [3]
  13. 13. ATMEGA 16 MICROCONTROLLER The ATmega16 is a low-power CMOS 8-bit microcontroller based on the AVR enhanced RISC architecture. By executing powerful instructions in a single clock cycle, the ATmega16 achieves throughputs approaching 1 MIPS per MHz allowing the system designer to optimize power consumption versus processing speed. The AVR core combines a rich instruction set with 32 general purpose working registers. All the32 registers are directly connected to the Arithmetic Logic Unit (ALU), allowing two independent registers to be accessed in one single instruction executed in one clock cycle. The resulting architecture is more code efficient while achieving throughputs up to ten times faster than conventional CISC microcontrollers. The ATmega16 provides the following features: 16 Kbytes of In- System Programmable Flash Program memory with Read-While-Write capabilities, 512 bytes EEPROM, 1 Kbyte SRAM, 32 general purpose I/O lines, 32 general purpose working registers, a JTAG interface for Boundary scan, On- chip Debugging support and programming, three flexible Timer/Counters with compare modes, Internal and External Interrupts, a serial programmable USART, a byte oriented Two-wire Serial Interface, an 8-channel, 10-bit ADC with optional differential input stage with programmable gain (TQFP package only), a programmable Watchdog Timer with Internal Oscillator, an SPI serial port, and six software selectable power saving modes. . The Idle mode stops the CPU while allowing the USART, Two-wire interface, A/D Converter, SRAM, Timer/Counters, SPI port, and interrupt system to continue functioning. The Power-down mode saves the register contents but freezes the Oscillator, disabling all other chip functions until the next External Interrupt or Hardware Reset. In Power-save mode, the Asynchronous Timer continues to run, allowing the user to maintain a timer base while the rest of the device is sleeping. The ADC Noise Reduction mode stops the CPU and all I/O modules except Asynchronous Timer and ADC, to minimize switching noise during ADC conversions. In Standby mode, the crystal/resonator Oscillator is running while the rest of the device is sleeping. This allows very fast start-up combined with low-power consumption. In Extended Standby mode, both the main Oscillator and the Asynchronous Timer continue to run. The device is manufactured using Atmel‟s high density nonvolatile memory technology. The On chip ISP Flash allows the program memory to be reprogrammed in-system through an SPI serial interface, by a conventional nonvolatile memory programmer, or by an On-chip Boot program
  14. 14. running on the AVR core. The boot program can use any interface to download the application program in the Application Flash memory. Software in the Boot Flash section will continue to run while the Application Flash section is updated, providing true Read-While-Write operation. By combining an 8-bit RISC CPU with In-System Self-Programmable Flash on a monolithic chip, the Atmel ATmega16 is a powerful microcontroller that provides a highly-flexible and cost-effective solution to many embedded control applications. The ATmega16 AVR is supported with a full suite of program and system development tools including: C compilers, macro assemblers, program debugger/simulators, in-circuit emulators, and evaluation kits.[4] Pin Descriptions VCC Digital supply voltage. GND Ground. Port A (PA7..PA0) Port A serves as the analog inputs to the A/D Converter. Port A also serves as an 8-bit bi-directional I/O port, if the A/D Converter is not used. Port pins can provide internal pull-up resistors (selected for each bit). The Port A output buffers have symmetrical drive characteristics with both high sink and source capability. When pins PA0 to PA7 are used as inputs and are externally pulled low, they will source current if the internal pull-up resistors are activated. The Port A pins are tri-stated when a reset condition becomes active, even if the clock is not running. Port B (PB7..PB0) Port B is an 8-bit bi-directional I/O port with internal pull- up resistors (selected for each bit). The Port B output buffers have symmetrical drive characteristics with both high sink and source capability. As inputs, Port B pins that are externally pulled low will source current if the pull-up resistors are activated. The Port B pins are tri-stated when a reset condition becomes active, even if the clock is not running. Port B also serves the functions of various special features of the ATmega16. Port C (PC7..PC0) Port C is an 8-bit bi-directional I/O port with internal pull- up resistors (selected for each bit). The Port C output buffers have symmetrical drive characteristics with both high sink and source capability. As inputs, Port C pins that are externally pulled low will source current if the pull-up resistors are activated. The Port C pins are tri-stated when a reset condition becomes active, even if the clock is not running. If the JTAG interface is enabled, the pull-up resistors on pins PC5(TDI), PC3(TMS) and PC2(TCK) will be activated even if a reset occurs. Port C also serves the functions of the JTAG interface and other special features of the ATmega16. Port D (PD7..PD0) Port D is an 8-bit bi-directional I/O port with internal pull- up resistors (selected for each bit). The Port D output buffers have symmetrical
  15. 15. drive characteristics with both high sink and source capability. As inputs, Port D pins that are externally pulled low will source current if the pull-up resistors are activated. The Port D pins are tri-stated when a reset condition becomes active, even if the clock is not running. Port D also serves the functions of various special features of the ATmega16. RESET Reset Input. A low level on this pin for longer than the minimum pulse length will generate a reset, even if the clock is not running. Shorter pulses are not guaranteed to generate a reset. XTAL1 Input to the inverting Oscillator amplifier and input to the internal clock operating circuit. XTAL2 Output from the inverting Oscillator amplifier. AVCC AVCC is the supply voltage pin for Port A and the A/D Converter. It should be externally connected to VCC, even if the ADC is not used. If the ADC is used, it should be connected to VCC through a low-pass filter. AREF AREF is the analog reference pin for the A/D Convert.
  16. 16. Figure 3 - Pin Configuration of AT Mega16 microcontroller. [2]
  17. 17. DESIGN BASICS The operation is initiated by calling the second mobile phone (which is connected to the DTMF as shown in the Fig.1) and typing in the desired number corresponding to the required control effort at the transmitter end. When the handset of the phone at the receiver end is picked up or the phone is picked up automatically, the receiver end comprises of input device, decoder, microcontroller, and relays. The input section consists of a mobile phone and a condenser microphone. For the decoder section, the underlying concept is DTMF signal reception and the decoded signal is fed to the microcontroller. The microcontroller output is connected to relays which perform the required action. Once the connection is established between the two phones, whatever phone key is pressed at the transmitting end, the corresponding DTMF tone is heard in the ear piece of the receiver phone. The ear piece is connected to a condenser microphone which picks up the DTMF tone and this output is fed to the DTMF decoder. The DTMF decoder will give the corresponding BCD value of the tone. The output of DTMF decoder is inverted by IC 74LS04, which is the input of microcontroller. This output is connected to PORT A of the Atmega 16L microcontroller. Then microcontroller‟s output from PORT D is fed to the relays. Microcontroller is programmed as by pressing a button of caller handset it activates or deactivates the corresponding relay to switch on or off the home appliances. Table-4 Actions performed corresponding to the key pressed Number pressed by user Output of DTMF decoder Input to microcontroller Output from microcontroller Action performed 2 0x02 00000010 0x0D 00001101 0x00 00000000 Both relays off 4 0x04 00000100 0x0B 00001011 0x01 00000001 One relay on 6 0x06 00000110 0x09 00001001 0x02 00000010 Another relay on 8 0x08 00001000 0x07 00000111 0x03 00000011 Both relays on
  18. 18. On a word each key press at transmitter end reflects as a BCD value Q1Q2Q3Q4 at the outputs of 8870 DTMF decoder. (The corresponding values are shown in Table 3) Then outputs Q1Q2Q3Q4 are inverted and processed by microcontroller and sent to the relay which is the basic structure of proposed work. In this project required power is assumed from 220 V AC main power line. For this scheme AC voltage is step downed and a 7805 voltage regulator is used to supply continuous dc voltage. Main circuit diagram is shown in figure 4.
  19. 19. Microcontroller was programmed in C language on AVR Studio 4 software. But C program is not compatible with ATmega 16, it supports Hex file. The software AVR Studio 4 builds the Hex file corresponding to the C program. [5] For working in Proteus an equivalent circuit is used, where 8870 DTMF decoder is replaced with 4 binary switches. So the microcontroller input is given by the switches. Equivalent circuit using Proteus 7.7 is given in figure 5. Figure 5- Equivalent circuit using Proteus 7.7
  20. 20. IMPLEMENTATION AND DISCUSSION The circuit was build and tested. Refer fig. 4 for the picture of the tested circuit. At first the circuit was simulated with software PROTEUS7.7. After successful simulation in PROTEUS the circuit was implemented on a project board. Here relays were checked and each of two relays from microcontroller output was connected with 220V AC light. Relay acts as a switch [6]. The device controlled two 220V / 40W bulb. Then main circuit was implemented onto PCB (Printed Circuit Board). Required VCC for microcontroller and VDD for DTMF decoder were supplied from main 220V AC power line. 220VAC was firstly step downed to 9V with a step down transformer. Then it was rectified and passed through a 5V voltage regulator IC7805 to VCC and VDD of microcontroller and DTMF decoder. Handset at transmitting end must be in General mode or profile, thus it can generate audible keypad tones. Handset at receiving end must have the facility of automatic receiving the calls.
  21. 21. CONCLUSION This paper presents a method to control a domestic system using the DTMF tone generated by transmitting telephone instrument when the user pushes the keypad buttons of the mobile phone connected to the remote domestic system. This control method uses commercial mobile communication networks as the path of data transmission. This enables the user to control the system continuously by sending the mobile phone DTMF tone. This system is implemented in the 2G mobile communication network, so video data cannot be obtained. Future work includes research on the robot control system in the 3G mobile communication networks. This will facilitate controlling the remote robot, using the DTMF of mobile phone with video data from the remote mobile robot‟s camera. The project is also useful in industry automation. This setup with a little modification can be adapted to the following applications. [1] 1) Combination Lock 2) Home Security System 3) Mobile / Wireless Robot control 4) Wireless Radio Control 5) Continuous monitoring of system status 6) Remote Switches etc.
  22. 22. APPENDIX Appendix 1 -List of Components used 1) IC 7805 2) Rectifier Diode 1N4007 3) 220v-9v Transformer 4) Condenser Microphone 5) 12MHz Crystal Oscillator 6) 3.57 MHz Crystal Oscillator 7) 8870 DTMF Decoder 8) 7404 NOT Gate 9) ATmega 16L Microcontroller 10) Transistor BC 547 11) 6 volts Relay 12) Capacitors of different values 13) Resistors of different values.
  23. 23. Appendix 2- Microcontroller Program #include<avr/io.h> Void main(void) { Unsigned intk,h ; DDRA= 0X00; DDRD=0XFF; While (1) { k=~PINA; h=k & 0X0F; switch (h) { case 0X0D ; { PORTD=0x00; break; } case 0x0B; { PORTD=0x01; break; }
  24. 24. case 0x09; { PORTD=0x02; break; } case 0x07; { PORTD=0x03; break; } } } }
  25. 25. Appendix 3-ATmega Programming Logic/Port Control Example Guide Hex Values: 0xFF = all bits set (turned on/high/1/5V) ----------------------- binary equivalent is 0b11111111 0x00 = all bits cleared (turned off/low/0/0V) ------------------- binary equivalent is 0b00000000 0xF0 = bits 0-3 are cleared (0) and bits 4-7 are set (1) ------ binary equivalent is 0b11110000 0x88 = bits 3 and 7 set (1) the rest are cleared (0) ----------- binary equivalent is 0b10001000 Look up : hexadecimal for an entire list of possible hex values. ATmega pin number equivalents example: Number 7 6 5 4 3 2 1 0 – Pin numbers on the port (and bit numbers) 0x0F==0b00001111 0 0 0 0 1 1 1 1– set to high and low with hex/binary values Setting Bit Values: Many times we would like to set the voltage high for only a single pin of a port, and to do that you create what is called a „bit mask‟, which is a binary number that has single 1-bit in the location corresponding to the pin you want to set, and all the rest of the bits are zero. You then use this number with a bitwise logical operator to finish the task. To create such a number, we should use the command: _BV(PXn) // Where X is the port letter, and n is the pin number. For example, suppose you would like to make pin 2 on PORTA to be an output. You therefore need a bit mask with a 1 in bit number 2 location. The corresponding bit mask is easily built by the command: _BV(PA2) Setting the port‟s data direction (input or output) on an ATmega: DDRX = 0x00; // Clears all the bits in the PORTx register, which makes all the associated pins to be inputs (keep in mind there are only ports A, B, C, and
  26. 26. D on the ATmega328), so you can read various signals from things such as switches, sensors, or for analog to digital conversion, etc. (by default all pins are set to input, but you should always set them to make sure anyway.) DDRX = 0xFF; // Sets all the bits in the PORTx register, which makes all the associated pins to be outputs (keep in mind there are only ports A,B,C, and D on the ATmega328), so you can control devices, such as motors, LED’s, speakers, etc., pretty much anything you would want the microcontroller to control (keep in mind that the ATmega cannot source much current, so you will probably need to use a transistor between the microcontroller and whatever you are trying to control if it needs more than 10 mA of current). Initializing Port Values: PORTX = 0xFF; // Clears all the bits in the PORTx register, and assuming that the pins are outputs, will make all the pins in PORTx go high (as mentioned in the section on Hex values above). So for example, PORTA = 0xFF; would set all pins in port A to on/high/1/5V, which would be the same as writing: PORTA = 0b11111111; Keep in mind that the right-most bit corresponds to pin 0 on PORTA in this example. PORTX = 0x00; // Clears all bits in the PORTx register and makes all pins in PORTx go low (as mentioned in the section on Hex values above). So for example, PORTB = 0x00; would clear all bits in the PORTB register and make all pins in PORTB go off/low/0/0V. This would be the same as writing: PORTB = 0b00000000; Bitwise Logic: PORTX |= 0xF0; // Method for setting bits. Performs a bitwise OR operation with the current bit values of PORTX and the bit mask represented by the binary number, 0xF0. The result is that only pins 4-7 in PORTX are set high, and the other pins are not affected. Equivalent in „long hand‟ would be: PORTX = PORTX | 0xF0; PORTX &= ~0x01; // Method for clearing bits. Performs a bitwise AND operation with the current bit values of PORTX and the bit mask represented by the binary number, ~(0b00000001) or 0b11111110. The result is that pin 0 is set low (referred toas „cleared‟), regardless of what was there before. In this
  27. 27. example, only pin 0 is cleared, and the state of the other pins are not affected. Equivalent in „long hand‟ would be PORTX = PORTX & ~0x01; PORTX ^= 0x02; // Method for toggling bits. Performs a bitwise XOR operation with the current bit values of PORTX and the bit mask represented by the binary number, 0x02. The result is that pin 1 is ‘toggled’ between the off and on states. Think of this operation like a light switch. Each time the statement is executed, it changes the state to be the opposite of what it was previously. Similar to the prior statements, this method of toggling only affects the bits in the locations where there are ones in the bit mask hex value. „Long hand‟ would be PORTX = PORTX ^ 0x02; The methods shown above are what we need to do to set up and control all the functions of the microcontroller. For example, suppose to turn on the ADC (analog to digital converter). To do so, set bit 7 in the ADCSRA register. See if can remember how to do this (without disturbing bits 6 – 0) from the description above1. 1 ADCSRA |= 0x80; Equivalently, we would have written: ADCSRA |= _BV(ADEN); // (ADEN is macro-defined to be 7)
  28. 28. REFERENCES [1] Tuljappa M Ladwa, Sanjay M Ladwa, R SudharshanKaarthik ; “Control of Remote Domestic System Using DTMF” ; ICICI-BME 2009 Bandung, Indonesia,2009. [2] Yun Chan Cho and Jae WookJeon ; “Remote Robot control System based on DTMF of Mobile Phone” ; IEEE International Conference INDIN 2008, July 2008. [3] 8870 Datasheet, http://www.clare.com/datasheets/8870-01.pdf [4] ATmega 16 Microcontroller Datasheet, http://www.atmel.com/dyn/products/datasheets.asp?family_id=607 [5]Joe Pardue ;“C Programming for Microcontrollers”; 3rd Ed , 2010. [6]Kevin R. Sullivan ; “Understanding Relays” . [7]Relay, http://en.wikipedia.org/wiki/Relay