RF remote controlled home loads
                As  I already mentioned earlier the basic need to
build an embedded system is the desired application. First you decide what
application you want. I chose my application that is  to build a system that can control the home
loads through  remote.  I decided to do that project strongly, and
what is next step ?  That Is our required
functionality. Here I decided to control four home loads that might be fan,
lights, TV, etc., .  
Then draw the basic block diagram
of your application
I built my
block diagram as I required.  Go through
the required components, I chose                              
Transmitter Part:-
Ø  Since
I am using wireless communication I required one receiver transmitter pair.
     Here am using RF Txr &Rxr pair which will be operated in 433MHz frequency
band. These pair can operate in limited area  up to 80mtrs. Instead we can use
IR transmission also but it can operate in line –of-sight conditions.
Ø 
To operate the four loads I can choose 4-push
buttons at the transmitter side. Since wireless communication is a serial
communication we can’t transmit parallel data. So we require a Encoder which
can convert parallel data to serial data. Here I chose HT12E encoder. With this
I completed the basic requirements to build transmitter part. The total circuit
will
      be shown later.
Receiver Part:-
Ø  To
control the actions we need one controller. I am choosing AT89C51 controller
because am good at this.
Ø 
Since we are controlling AC loads we need Relay circuits(SPDT single pole double threw 12-v)
Designing:-
Transmitter:-
HT12E
is 18-pin dip it has 8-Address pins and 4 Data pins.
Pins 1-8 are address pins here we don’t
need. 14-pin is floating pin. Pins 10-13 are data pins D8 to D11 respectively. 15
and 16 pins are oscillator pins.17th pin is Data out. S1-S4 are push
buttons.
Receiver:-
          Receiver data flow:-
                       RF receiver à Decoder à microcontroller à relays à loads
Ø 
The RF receiver part connection is same just like
transmitter part. The parallel is fed to AT89C51 microcontroller. The resulted
outputs are  fed to relays through
transistors.
MicroController:-
 It is a 8-bit and 40-pin DIP micro controller
developed by Atmel corporation. It has 4 ports
PORT-0:
multiplexed  Address and Data lines
floating pins
PORT-1:
I/O port floating pins
PORT-2:
higher order Address pins floating pins
PORT-3:
I/O pins and have a special function to each pin
11.0592MHz
crystal provides the Clock frequency to the Micro controller.
Relay:-
 1N4148 diode protects the transistor and relay
from the damage and back emf.
FLOW CHART:-
        Flow chart will illustrates the total
control functionality of the circuit
Initially all the inputs are
assigned to ‘1’ and all the loads are assigned to ‘0’.      
 
When switch1 is pressed at the Txr it generate 1110 data. This data is
compared in the micro-controller. If it matches then load1 preformed XOR operation  with ‘1’. If initial value is ‘0’
  
0 xor 1=1; When second time pressed the same switch-1 then (already load-1=’1’)
0 xor 1=1; When second time pressed the same switch-1 then (already load-1=’1’)
                                               1 xor 1=0;
 The same operation is performed to switches-1,-2
and -3.
Source Code:-
#include<reg51.h>
sfr rfr=0x90;
sbit load1=P3^0;
sbit load2=P3^1;
sbit load3=P3^2;
sbit load4=P3^3;
unsigned int i;
void main()
{
 rfr=0x0F;  // initialising as input port
 load1=0;   // output pin
 load2=0;  // output pin
 load3=0;  // output pin
 load4=0;  // output pin
 while(1)  // super loop
 {
  if(rfr==0x0E)  // checks if switch-1 is pressed or not
  {
    load1^='1';    //xor operation
   for(i=0;i<50;i++);
   }
  else if(rfr==0x0D)  // checks if switch-2 is pressed or not
  {
   load2^='1';     //xor operation
   for(i=0;i<50;i++);
   }
  else if(rfr==0x0B)   // checks if switch-3 is pressed or not
  {
   load3^='1';   //xor operation
   for(i=0;i<50;i++);
   }
  else if(rfr==0x07)   // checks if switch-4 is pressed or not
  {
   load4^='1';   //xor operation
   for(i=0;i<50;i++);
   }
  }
}
 




 






