Wirless communication using 433Mhz Transmitter/Reciever Pair at the Rx and Tx


I am trying to communicate between an arduino board and an AVR board using the 433Mhz Transmitter Reciever pair.

– arduino board connected to PC
–Tx pin of arduino connected to data pin of the 433Mhz -transmitter
– Rx pin of the AVR connected to data pin of the 433Mhz receiver
–AVR board programmed to read data on its Rx Pin

i could successfully transmit data from the arduino board to the avr board, with the Tx pin of the Arduino board connected to the data pin of the transmitter and then using Serial.print() ( i was sending data from the pc to the arduino, which was then transmitted wireless to the AVR board). The AVR board had its Rx pin connected to the data pin of the receiver.
code on arduino side

void setup(){
//2400 baud for the 433model

void loop(){
a=Serial.read(); //to receive data sent from the PC (was sent using the keyboard and a C program)
Serial.print(a); //for transmitting data using the 433Mhz module

–arduino board connected to PC
–Rx pin of arduino connected to data pin of the 433Mhz -Reciever
–Tx pin of the AVR connected to data pin of the 433Mhz receiver
–AVR board programmed to transmit data on its Tx Pin

But when i tried to do the reverse, sending data from the AVR board ( was continuously transmitting a to z) and try to read on the arduino board, i am unable to do so. I used the same code as above for receiving the data.
Interestingly, when i simply connected the Tx pin of the AVR to the RX pin of the Arduino, i was able to receive the data successfully, implying that the data format is compatible. But am unable to do it using the 433Mhz reciever. I checked the 433Mhz modules, and they are in working condition.

where could i be going wrong?
Has anyone faced such a problem and has found a solution to it?


Are you using the very cheap 433MHz modules ? (I guess you do).

Having transmitting them something with the serial data is pure luck.
You have to use a software protocol to use those.
The VirtualWire is ment for those modules, Index of /mikem/arduino
Use other pins with the VirtualWire library, so you can still use the RX and TX for the serial monitor of the Arduino IDE.

The thing with Virtual Wire is that on the transmitter side, am not using an arduino board. i have an AVR board transmitting the messages.

But when the two boards are connected using wires, i.e the Tx Pin on the AVR side is connected to the Rx pin of the Arduino board, the communication is working perfectly. It is only when i try to do it wirelessly, the thing doesnt seem to work . It seems the execution is forever stuck in the statement


i dont think virtual wire will work, since it need the Tx side too to be running the VW protocol. Whereas in my case am using the uart of the AVR.


Do you use those cheap modules ? Perhaps you can upload a photo of it.

If you do, you can't use the TX and RX. You have to use a protocol.
You could check the Projects section of http://www.avrfreaks.net
Some have made an protocol to be able to use those.

i’ll check about the avr-protocols.

meanwhile here is the setup. i am continuously transmitting characters on the transmitter side, but the receiver is not getting anything. But when i connect the Tx with the Rx (ref:image) the thing works perfectly, without any errors or junk characters. so i am not sure if the protocol is the trouble. but then maybe things are different for wireless.



i forgot to mention that, the thing works fine when the transmitter and reciever are interchanged. Meaning , when the Transmitter module is connected to the arduino board, and the reciver module to the AVR board, and both of them are programmed appropriately, the communication works seamlessly. I can send messages to the avr board sucessfully, implying that the 433Mhz modules seems to be working o.k.


They are not the cheapest RF modules.
But they seem to be just like them, with ASK modulation.
Can you tell where you bought them and what the pins are ?
You wrote "the 433Mhz Transmitter Reciever pair", but I'm still trying to figure out which one you have.

If they are ASK (just like the cheapest modules on Ebay) they can not be connected with RX and TX.
Did you find an example somewhere, connecting these with RX and TX ?

Which Arduino board do you use ?
Which AVR board, and with what avr chip ?

i got this transmitter/receiver pair from here. And yes, they do use ASK modulation.

The avr board has Atmega16L- 8PU chip on it
the arduino board has the ATMEGA-328PU chip and i use the "Arduino Duemilanove w/ATmega328" option for downloading the program into it

But i still dont get why i cannot connect it to the Rx and Tx pins, when i can use the arduino as transmitter and avr as the receiver without any trouble.


The ATmega16L at 8MHz is older and the ATmega328P is newer. But I think they are not that different to explain the difference that you have. If the transmitter would be used at 3.3V, that would be too low.

The RF communication should have something to start and stop the protocol, so the receiver is able to recognize it. The start can be a gap or a few pulses.
The TX serial data can be used to switch the transmitter on and off, but that seems to me almost impossible to work.
Perhaps with a short distance, the receiver might be able to get the bits right. But I still think that is pure luck.

really am grateful to ur replies. i am pretty much new at these boards and wireless and everything.

so then, how do i make them(the two boards) communicate? any solutions or suggestions that might work. The wired communication is working, it just when i introduce the wireless (or should i say, remove the wires) that they have this "failure to communicate".


For the Arduino, the only seriously library is the VirtualWire. Index of /mikem/arduino
I’m sorry, but that just is how it is.

Or you could use better modules, like the RF22 or RFM22b or CC1101 and a few others.
They have chips that will take care of the protocol.
Sometimes they use SPI interface or serial RX and TX interface.

Well thanks for everything. i'll try to make this thing work. if i find a solution, i'll post it here.


use same clock on both side, example: set 8mhz internal in tx side and set 8mhz in rx side