Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

433MHz Trasnceiver Problem

Status
Not open for further replies.

eacastro

Newbie level 3
Newbie level 3
Joined
Apr 4, 2009
Messages
3
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,332
Hi all

I'm student and working with a small project which involves wireless transmission. I'm using the Parallax 433MHz Transceiver (OOK modulation, 2500 feet sight line) and have a problem during the transmission.

I'm using the UART from PIC16F876A with a baud rate of 2400 b.Initially the MCU is only in TX mode, while my PC is in RX mode (using Hyperterminal).
The MCU sends numbers as characters (0,1,2...).
I could receive succesfully this data in my PC, but only if the distance between TX and RX is around 20cms. If I exceed distance, the RX receives the characters but mixed with garbage characters.

I'vet tried differente baud rates (9600, 4800) but the problem is still the same, only works fine if the distance is 20cms or less, no more.
Datasheet says it works with 2500 feet.

I have no idea why I'm getting garbage characters over my strings.
This link is for the wireless transceiver:

**broken link removed**

My configuration is:

TX:
MCU (pin TX)----> RF Transmitter (pin Data, "TX/RX Sel" = High, this is TX mode).

RX:
RF Transmitter (pin Data, "TX/RX Sel" = Low, this is RX mode) --> MAX232---->RS232 PC



Thanks for your help/comments/suggestions.
 

This is just shooting the dark, but it's the first things to come to my mind for troubleshooting.

Make sure you have an adequate power supply for your system (if your using a battery, think about using a stiff +5V source... a "wall wart" 5V transformer or 5V linear regulator fed from a supply hooked up to the AC from the wall). If your supply droops during TX, that could definitely result in reduced range.

I'd be curious what kind of signal level you are seeing on the RSSI pin (Receive Signal Strength Indicator). Put an oscilloscope probe on it (high-impedance, 1M probe). First look at it with all other transmitters turned OFF. This would be equivalent to the noise floor power level. Next, put your devices right next to each other, and run data across the link (as continuous as possible... perhaps make a while(1) loop to just keep sending out characters). This should cause the RSSI line to rise in voltage. If there is some additional documentation, see if it tells you what range the RSSI output voltage can be. As you move the devices further apart, you should see the RSSI level drop, too. That might give you some hints as to the power levels coming out of the two devices.

Maybe you could swap the TX and RX devices... see if one has a stronger output power than the other.
 
The line of sight might be achieved by using a high gain Yagi aerial at both ends, this would give an additional 2 X 18 Db = 36 dB gain or 60 X that over a dipoles, which you are using , right ?
Frank
 
Well, it could be a number of things. But are they too close? try moving them 20 feet apart and see if they work.
 
The line of sight might be achieved by using a high gain Yagi aerial at both ends, this would give an additional 2 X 18 Db = 36 dB gain or 60 X that over a dipoles, which you are using , right ?
Frank

I'd imagine he's using the rubber-duck monopoles shown in the documentation (this sounds very much like a prototype-phase design, to me). Even if he's just using the little antennas, he says the signal falls apart after 20 cm... that's about 7-8 inches. At 433 MHz, that's not even close to 1 wavelength of separation. Methinks there is a setup issue to be resolved, first.
 
If they are too close, the receiver will be way overdriven, and he could be losing a number of bits at the start of everything he is sending. Especially if the module is advertised as 2500 feet operation--there is a lot of receiver gain in there.
 
Line-of-sight range up to 250 feet (depending on conditions)
this is the datasheet said. The datasheet said using some rub-antenna.
But use some higher gain antenna as foresaid, I guess the range maybe extend to 2500 feet.
 
Hi folks

Thanks for all your comments and help.
First, I wrote by mistake "2500 feet". Datasheet states it is "250 feet".

Finally after a lot of fight, I could establish good communication (no garbage charcters) in a 6 meters distance away. Just to give some notes, my MCU is connected to the 433MHz Transceiver and set it as TX.
My PC is connected also to another 433MHz Transceiver and set it as RX.
I use Hyperterminal for data reception.

This is my theory. Since this is an asyncronous link, my RX is always receiving external noise that is mixed with my TX signal.

At the beginning I was sending my numbers as characters for testing from my MCU , using a while loop. The delay of each send was around 300milliseconds in this while loop.
I think this delay between each character was giving a chance to the RX to capture noise along with my TX signal.

So I decided to reduce the delay time to 40mS and voilà, the reception was faster and no garbage characters shown. I think the 433MHz Transceiver as RX, did not have enough chance to capture noise, only my signal, but this is just my theory.

After this, I increased also the baud rate from 2400 to 9600. Then I moved my MCU with the transceiver connected around 6 meters away from my PC. Even with a wall as obstacle, the data was succesfully received.

Thanks!
 

Hi folks

Thanks for all your comments and help.
First, I wrote by mistake "2500 feet". Datasheet states it is "250 feet".

Finally after a lot of fight, I could establish good communication (no garbage charcters) in a 6 meters distance away. Just to give some notes, my MCU is connected to the 433MHz Transceiver and set it as TX.
My PC is connected also to another 433MHz Transceiver and set it as RX.
I use Hyperterminal for data reception.

This is my theory. Since this is an asyncronous link, my RX is always receiving external noise that is mixed with my TX signal.

At the beginning I was sending my numbers as characters for testing from my MCU , using a while loop. The delay of each send was around 300milliseconds in this while loop.
I think this delay between each character was giving a chance to the RX to capture noise along with my TX signal.

So I decided to reduce the delay time to 40mS and voilà, the reception was faster and no garbage characters shown. I think the 433MHz Transceiver as RX, did not have enough chance to capture noise, only my signal, but this is just my theory.

After this, I increased also the baud rate from 2400 to 9600. Then I moved my MCU with the transceiver connected around 6 meters away from my PC. Even with a wall as obstacle, the data was succesfully received.

Thanks!

It sounds like you are on the right path now. Since you will not always be transmitting, one way to make sure you "clear the buffer" on the receiver would be to have your system do some simple data framing.

Have the transmitter send out some junk characters, followed by a string of characters to sync the receiver, followed by your data, and a string to "close the connection". The initial characters are allowed to be corrupted by the ambient noise. Once the receiver quits hearing "junk", the sync character string arrives. Then the receiver can record the following characters as the real data being sent across the link, until it sees the "close" string.

One other thing you might do is connect the receiver's RSSI signal into comparator and use it to trigger the receiver. If the signal level is too low, the receiver device ignores the incoming data. If the RSSI level goes above some preset threshold, enable the receiving device and record/interpret the data.
 

Hi enjunear, thanks for your comments, really helped me.

Now the challenge comes, since I'm trying to build a wireless data acquisition system. So both RF Transceivers will be TX/RX. The idea is to send "commands" from the PC to the MCU, then the MCU interpret the "command" and execute different tasks. Once the task is completed, it sends back the result to the PC.
Since the RF Transceiver has only one bidirectional data pin, I decided to implement a 74LS243 3-state transceiver to split TX and RX from the "Data" pin. Is something like this:

RF Trans _______ 74243___________ MCU
<DATA pin >-----|A0_ B0 |----------< TX MCU
<DATA pin >-----|A1_ B1 |----------> RX MCU
______________ |______ |
______________ |__OEAB| ---------< RD0 MCU
______________ |__OEBA|----------< RD0 MCU


"TX/RX Sel" pin -----------------------< RD0 MCU



In the MCU side, the data direction is handled by the MCU (by handling the OEAB pins). In this case, RD0 gives the direction to the 74243 (B->A or A->B ) and also set the RF Transmitter as RX or TX.
If TX=> B0->A0 and "TX/RX Sel" = 1
If RX=> A1->B1 and "TX/RX Sel" = 0

In the PC side, I do the same, but the direction control is given by the RTSEnable signal (I program this pin with Visual Basic).
So basically this is my trigger for TX or RX.
I think the idea of using a comparator with the RSSI for reception trigger sounds great , the only thing I'm concerned is when it has to switch to TX mode.

Again, your comments are more than welcome.
Rgds.
 

Hi enjunear, thanks for your comments, really helped me.

Now the challenge comes, since I'm trying to build a wireless data acquisition system. So both RF Transceivers will be TX/RX. The idea is to send "commands" from the PC to the MCU, then the MCU interpret the "command" and execute different tasks. Once the task is completed, it sends back the result to the PC.
Since the RF Transceiver has only one bidirectional data pin, I decided to implement a 74LS243 3-state transceiver to split TX and RX from the "Data" pin. Is something like this:

RF Trans _______ 74243___________ MCU
<DATA pin >-----|A0_ B0 |----------< TX MCU
<DATA pin >-----|A1_ B1 |----------> RX MCU
______________ |______ |
______________ |__OEAB| ---------< RD0 MCU
______________ |__OEBA|----------< RD0 MCU


"TX/RX Sel" pin -----------------------< RD0 MCU



In the MCU side, the data direction is handled by the MCU (by handling the OEAB pins). In this case, RD0 gives the direction to the 74243 (B->A or A->B ) and also set the RF Transmitter as RX or TX.
If TX=> B0->A0 and "TX/RX Sel" = 1
If RX=> A1->B1 and "TX/RX Sel" = 0

In the PC side, I do the same, but the direction control is given by the RTSEnable signal (I program this pin with Visual Basic).
So basically this is my trigger for TX or RX.
I think the idea of using a comparator with the RSSI for reception trigger sounds great , the only thing I'm concerned is when it has to switch to TX mode.

Again, your comments are more than welcome.
Rgds.

In the case where the MCU has received a command, you can simply ignore the RSSI input. After a command is received, I would anticipate the next state you'd go to, after processing the command, would be Transmit. The RSSI comparator input would only be listened to when the MCU is back in a Receive/idle(?) state.

It sounds like you are well on your way to a very interesting project!
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top