Specifications for the RF receiver:
Working voltage: 5.0V +0.5V
Working current:[ch8804]4.5mA (5.0VDC)
Working principle: super-regeneration
Modulation method: OOK/ASK
Frequency range: 250MHz-450MHz
Frequency bandwidth: 1MHz (315MHz, having result from testing at lowing the sensitivity 3dBm)
Sensitivity: excel 105dBm (50[ch937])
Velocity: <5Kbps (at 315MHz and -95dBm)
Output signal: TTL electric level signal entire transmission;
Aerial length: 24cm (315MHz, 18cm (433.92MHz)
from the data pins is quite similar to the output on the antenna.
So are you saying that you measured the output from the antenna on an oscilloscope and saw a square wave? You must have a good scope.
If you are not recieving anything on the RX then check it is receiving at the same frequency, there are two frequencies you can get this at. If they are close together (less than 1ft) the antenna should not matter much.
It is a super-regeneration receiver and they are not the most stable of things. They use positive feedback to improve the gain and so are inherently unstable. Therefore depending on the amount of feedback they can be extremely deaf or they can howl and act like a transmitter.
If you still receive nothing then I would suspect the receiver is faulty.
Just to add my thought. And to quote from your linked website:
that the trasmitter needs to be sending data CONSTANTLY or else the receiver will be left hanging and will start reading random junk floating in RF space -- by sending data all the time, just imagine that you're overpowering all the junk. So you'll probably need to decide on a byte of information that actually means "nothing" or "no data now" or "off"
I think this is like old modem ... you need to always send data otherwise it will sleep or disconnect. Not the best analogy, but that is the first thing come to my mind.
So IMHO, you might need to catch this "98" and read useful data. Maybe fixed length or you can send the data length after 98. So some kind of a protocol header.
Hmm... but from your initial post. It does sound like the receiver don't receive any signal at all. Is this the case. On the other hand if you keep receiving 98 on your receiver. This should be good news, i.e. your receiver is working!
I am not expert in RF. I am curious too about how the frequency is set. Hope that bumping this thread will attract more people with RF experience!
I notice that the modulation method of the receiver is ASK, that is audio shift keying. That means on the transmit side you need to modulate the data with an audio tone, you seem to be just turning the carrier on and off that is AM (amplitude modulation).
Try setting up a simple oscillator (or use a signal generator) and feeding that into the transmitter and see if you get the audio on the reciever.
Since the RX receiving frequencies is quite wide ( 250-450Mhz )
This doesn't make sense. Reciever typically operates within a narrow band and both transmitter and reciever are tuned to either 315Mhz or 433MHz. I would focus on finding out if you have a receiver/transmitter pair tuned for the same frequency (check labeling) - if not you need to replace one or both.
That means on the transmit side you need to modulate the data with an audio tone
I don't see anything in the specification to support that modulation in any shape or form is the reponsibility of the micro controller. This is an assumption at best (unless I missed something) and so it's better to keep it simple at first.
Check frequencies (Rx/Tx pair must match)
Test with a low speed binary signal continuesly (2400 baud is a good start and hex values 0x55 or 0xaa are excellent canditates for testing). After a few bytes (needed for Rx auto tuning), you should see a steady stream of received bytes.
Can you post the code you had when using virtual wire? I have a set of Tx/Rx modules, Virtual wire was very easy to set up.
Virtualwire sends some additional data to get the Tx/Rx synched up, am not sure sending out solo messages.
Could be that 2400 is too fast for these modules also. Virtual wire shows the speed being set at bits per second. If rfserial.begin is attempting 2400 baud, that's like [edit - 11!] times faster.
Receiver work fine on a “direct connection” when I plug the receiver pin 2 directly to the transmitter pin 3… Got the “hello” text…
Still not working using the RF Module…
Does the delay() in the transmitter loop have anything to so with the speed ?
VirtualWire TX code :-
vw_setup(1200); // Bits per sec
vw_set_ptt_inverted(false); // Required for DR3100
vw_set_tx_pin(3); // Uses the same pin as SoftSerial
const char *msg = "hello";
digitalWrite(13, true); // Flash a light to show transmitting
vw_send((uint8_t *)msg, strlen(msg));
vw_wait_tx(); // Wait until the whole message is gone
VirtualWire RX code :-
vw_setup(1200); // Bits per sec
vw_set_rx_pin(2); // RX pin is 2
vw_set_tx_pin(3); // RX pin is 3, no used
vw_set_ptt_inverted(false); // Required for DR3100, not used
vw_set_ptt_pin(4); // Move the ptt pins to 4, not used
vw_rx_start(); // Start the receiver PLL running
uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message(buf, &buflen)) // Non-blocking
digitalWrite(13, true); // Flash a light to show received good message
// Message with a good checksum received, dump it.
for (i = 0; i < buflen; i++)
Found the problem.. I did not have a 18cm antenna at both the TX & RX.. after I installed the 18cm antenna at both sides.. I can get the message over RF but the range was very very near... like less than 10cm...
Any idea how to increase the range or use a bigger/stronger antenna ?