Tuesday, October 27, 2015

RF 433 MHz (Wireless Radio Frequency) Communication Between two Microcontroller [Step By Step Tutorial ]




RF Modules are popularly used in the remote control system. In  Quadcopter, Robot remote control, Industrial remote control, telemetry and remote sensing etc.  Get more details here RF_Wiki
max232 433mhz module
RF module interfacing tutorial

RF Module :

RF Module means Wireless Radio Frequency Module. RF module consists of two units. One Transmitter unit and another is Receiver unit. Basically, RF modules are used to building a wireless connection between two points. We can easily communicate over  300-500m distance through RF module . in this tutorial we are using RF Module at the 433Mhz frequency and it supports baud rate 9600. Although didn't try this. In this tutorial, I will use baud rate2400.

We will use UART  communication to interface RF Module with microcontroller. As we did previously in Bluetooth Interfacing with Pic Microcontroller tutorial. Now let's take a look on RF Transmitter and Receiver respectively .

RF Transmitter :


RF Module ( Wireless Radio Frequency )Transmitter_Tx
RF Module ( Wireless Radio Frequency )Transmitter_Tx
max232 433mhz module
max232 433mhz module

RF Receiver :

RF Module ( Wireless Radio Frequency ) Receiver Rx
RF 433 MHz (Wireless Radio Frequency) Communication Between two Microcontroller [Step By Step Tutorial ]


RF Module ( Wireless Radio Frequency ) Receiver pin out
RF Module ( Wireless Radio Frequency ) Receiver Pinout

MikroC Code :

Now open MikroC and Create a new Project .If you are an expert you don't have to follow this steps .


Create New Project in MikroC_1

Create New Project in MikroC_2

Create New Project in MikroC_3

 Include All Library in mikroc
RF 433 MHz (Wireless Radio Frequency) Communication Between two Microcontroller [Step By Step Tutorial ]


Mikro C Library Funtions :

UARTx_Init:  This function will initialize USART option of  Microcontroller with Baud rate . We will use baud rate 2400 . The code will be look like this :
 UART1_Init(2400);


UARTx_Data_Ready: This checks if it is available to read or transmit data .
UARTx_Read_Text: To read text data .Look at the example .
if (UART1_Data_Ready() == 1) {
UART1_Read_Text(  txt,  ")" , 2); }
This is checking if data is available to read . ")" . The txt char array variable will be being stored until the ")" will found . 2 means to try for 2 times . So , I think our text should not be longer than 2 character .
UARTx_Write_Text: This will send text data . Look at the example :

if (UART1_Tx_Idle() == 1) {// this will check , if the last data transmission is completed

 UART1_Write_Text("button2");
 }

UARTx_Write: This will send char data . Look at the example :
if (UART1_Tx_Idle() == 1) {// this will check , if the last data transmission is completed

 UART1_Write( '(' );
 }
 

Reducing Noise :

To reduce noise, we will use a trick. Before reading the data text we will keep a function and this will check the first character. If the character will be '(', it will be checked by an if statement. Finally read text function will be performed until the char  ')' will be found. That means microcontroller will show us only the text between '(' and ')'.

Please follow the example:
If we send  (A) , Lcd will show "A" . If we send (B) , we will get "B" . Unless we cant get any text output.  If we send "(A" , this will show no output to LCD display.

 Source Code :

# Transmitter :




 char txt[16];  
 char chk;  
 int i=0,ckop=0;  
 void main() {  
 ADCON1=0x0F;         // Configure RE1 pin as input  
 CMCON=7;  
 for(i=0;i<16;i++){txt[i]=' ';}  
   TRISA.F0=1;  
    TRISA.F1=1;        // Initialize ADC  
      TRISA.F2=1;  
      TRISA.F3=1;  
   UART1_Init(2400);  
      delay_ms(200);            // Initialize LCD  
  while(1){  
  if(PORTA.F0==0){  delay_ms(100);  
  if (UART1_Tx_Idle() == 1)  
  UARt1_Write_Text(",,,,,,,,,,,");  
 UART1_Write('(');  
   UART1_Write('A');  
  UART1_Write(')');  
   UARt1_Write_Text(",,,,,,,,,,,");  
  }  
 if(PORTA.F1==0){   delay_ms(100);  
  if (UART1_Tx_Idle() == 1)  
   UARt1_Write_Text(",,,,,,,,,,,");  
 UART1_Write('(');  
  UART1_Write('B');  
  UART1_Write(')');  
   UARt1_Write_Text(",,,,,,,,,,,");  
  }  
 if(PORTA.F2==0){  delay_ms(100);  
  if (UART1_Tx_Idle() == 1)  
  UARt1_Write_Text(",,,,,,,,,,,");  
 UART1_Write('(');  
  UART1_Write('C');  
  UART1_Write(')');  
   UARt1_Write_Text(",,,,,,,,,,,");  
  }  
  if(PORTA.F3==0){  delay_ms(100);  
  if (UART1_Tx_Idle() == 1)  
   UARt1_Write_Text(",,,,,,,,,,,");  
 UART1_Write('(');  
  UART1_Write('D');  
  UART1_Write(')');  
   UARt1_Write_Text(",,,,,,,,,,,");  
  }  
 }  
 }
 

# Receiver :





 // LCD module connections  
 sbit LCD_RS at LATB7_bit;  
 sbit LCD_EN at LATB6_bit;  
 sbit LCD_D4 at LATB5_bit;  
 sbit LCD_D5 at LATB4_bit;  
 sbit LCD_D6 at LATB3_bit;  
 sbit LCD_D7 at LATB2_bit;  
 sbit LCD_RS_Direction at TRISB7_bit;  
 sbit LCD_EN_Direction at TRISB6_bit;  
 sbit LCD_D4_Direction at TRISB5_bit;  
 sbit LCD_D5_Direction at TRISB4_bit;  
 sbit LCD_D6_Direction at TRISB3_bit;  
 sbit LCD_D7_Direction at TRISB2_bit;  
 // End LCD module connections  
 char txt[16];  
 char chk;  
 int i=0,ckop=0;  
 void main() {  
 ADCON1=0x0E;         // Configure RE1 pin as input  
 CMCON=7;  
 for(i=0;i<16;i++){txt[i]=' ';}  
  Lcd_Init();  
   UART1_Init(2400);  
      delay_ms(200);            // Initialize LCD  
  Lcd_Cmd(_LCD_CLEAR);        // Clear display  
  Lcd_Cmd(_LCD_CURSOR_OFF);     // Cursdhhdor off  
   Lcd_Cmd(_LCD_CLEAR);  
  Lcd_Out(1, 4, "Welcome");  
  Lcd_Out(2, 2, "pictutorial.net");  
  delay_ms(1500);  
   Lcd_Cmd(_LCD_CLEAR);  
   Lcd_Out(1, 2, "Received Data");  
  while(1){  
   ckop=2;  
 if (UART1_Data_Ready() == 1){  
  chk = UART1_Read();  
  for(i=0;i<16;i++){txt[i]=' ';}  
      if(chk=='('){  
  UART1_Read_Text(txt,")",2);  // reads text until 'enter' is found  
  Lcd_Cmd(_LCD_CLEAR);  
  Lcd_Out(1, 2, "Received Data");  
  Lcd_Out(2,1,txt);  
  delay_ms(500);  
  }  
  }  
 }  
 }

RF 433 MHz (Wireless Radio Frequency) Communication Between two Microcontroller [Step By Step Tutorial ]

Proteus Circuit:

How to Create a New Project in Proteus 8_Step1
How to Create a New Project in Proteus 8_Step1
How to Create a New Project in Proteus 8_Step2
How to Create a New Project in Proteus 8_Step2

How to Create a New Project in Proteus 8_Step3
How to Create a New Project in Proteus 8_Step3
How to Pick parts from Proteus library
How to Pick parts from Proteus library
RF 433 MHz (Wireless Radio Frequency) Communication Between two Microcontroller [Step By Step Tutorial ]
How to find Power, Ground etc
Now just complete the circuit as I have given below.

RF 433 MHz (Wireless Radio Frequency) Communication Between two Microcontroller [Step By Step Tutorial ]
RF 433 MHz (Wireless Radio Frequency) Communication Between two Microcontroller [Step By Step Tutorial ]

Result :

RF 433 MHz (Wireless Radio Frequency) Communication Between two Microcontroller [Step By Step Tutorial ]
RF 433 MHz (Wireless Radio Frequency) Communication Between two Microcontroller [Step By Step Tutorial ]

RF 433 MHz (Wireless Radio Frequency) Communication Between two Microcontroller [Step By Step Tutorial ]
RF Module ( Wireless Radio Frequency ) Controlled Simulation

Watch Real Life Video :


  Download Link(Google Drive)

Thank You!



Reactions:

6 comments:

Post a Comment

Share and Bookmark this Blog

Tags

: (1) 18F2550 (1) 36KHz (3) and (1) Based (1) battery (1) Bipolar (1) Blinking (1) blinks (1) Bluetooth (1) bluetooth device interfacing (1) bluetooth module (1) button (1) circuit (1) clock (1) control (1) crystal oscillator (3) Db9 (1) DC Motor (2) digital (2) Digital Voting Machine (1) digital voting machine using pic (1) display (2) DS1307 (1) electronic (1) embedded c programming tutorial (11) embedded c tutorial (11) experiment kit (4) external interrupt (4) flash (1) flashing (1) Gas Leakage detector (1) HC-06 (1) home (1) how (1) How to (10) i2c tutorial (1) in (1) indicator (1) infrared Connection (3) interface (8) interfacing (3) Interrupt (3) Introduction (1) IR Connection (3) IR Receiver (4) IR Transmitter (4) key pad (1) keypad (1) lavel (1) Lcd 16x2 (2) lcd 2x16 (2) led (1) lm35 (2) LPG (1) machine (1) make (1) Make bootloader (1) making (1) matrix (1) max232 (1) membrane keyboard (1) meter (2) Micocontroller (1) microchip (4) microchip pic (2) microchips (3) microcontroller (9) microcontroller based (3) microcontroller programming (3) Microcontroller Project (4) Microcontroller Projects (1) microcontroller_project (2) microcontrollers (4) Microprocessor (2) mikroC (5) mikroc code to start and stopstart and stop dc motor (1) mikroc pro for pic (2) Motion detector (1) MQ-9 Gas Sensor (1) musical (1) NEC Protocol (4) pcb (5) PIC (3) pic controller (11) pic microcontroller (11) pic microcontroller tutorial (11) pic programming (1) pic programming in c (12) pic proteus (1) Pic Tutorial (12) pic18 (2) pic18f2550 (11) picmicrocontroller (4) picRFモジュール (1) PIR Motion Sensor (1) printed circuit board (1) proteus (6) pulse width modulation (1) push (1) push button (1) PWM (1) real (1) rf transmitter (3) Rs 232 (1) Rs232 (1) scroll (1) scrolling (1) Serial communication (1) Serial Connection (1) Serial Port (1) serial port rs232 (1) Servo Motembedded c programming tutorial (1) simulation (2) Soil Moisture Meter (1) speed control (1) step by step (7) step bystep (1) Stepper Motor (2) text (2) Thief Detector (1) time (1) timer (4) timer0 (4) tone (1) TSOP38236 Receiver (4) tutorial (2) Unipolar (1) USART Connection (1) USB (1) usb 1.0 (1) USB bootloadere (1) USB HID (1) using (9) voltmeter (1) voting (1) water level indicator (3) with (2) work (1)

Live Traffic Feed


Live Traffic Feed
Live Traffic Feed

Comment Option isn't working properly

Comment option isn't working properly. If you have anything to say, you are requested to use the "Contact Form" below here.

Leave Your Message Here

Name

Email *

Message *

Google+ Followers

Like on Facebook