Go Down

Topic: Best cheap and simple 433MHz modules with good range (Read 148675 times) previous topic - next topic

olof_n

Hi!

I use a lot of cheap 433Mhz modules with 17cm wire antenna.
No problem to send 50m and through a wall.

I have noticed that they do not work well when powered from low voltage (3,3V). The high voltage (up to 12V) the better on the transmitter.
Also the reciver works best with 5V.

I have tested a lot to increase the range and noticed that if I put capacitors on VCC and GND I get a bit better stability.
One big bulk capacitor and a small 0.1uF.
The capacitors are optional and you will get a good result without them.

Bianco

Which protocol do you use?

Have you measured the effect of voltage on the range?

olof_n

#17
Aug 17, 2014, 04:05 pm Last Edit: Aug 17, 2014, 04:57 pm by olof_n Reason: 1
I use virtual wire.

My weather station (50m away from my house) sends real time and historical data to my indoor modules.
First I tried to power my indoor Arduino (8Mhz) with 3.3V and lost a lot of transmissions. Then I tried to power it from a 5V USB/Serial adapter and it worked a lot better.
I also added the capacitors to get a more stable voltage (big cap) and to filter out interferences (small cap).

One Arduino recives weater data and stores it in a database (serial -> python -> database).
I have also a second Arduino which display the real time data on a LCD.  First I powered it with 3.3V because the LCD was a 3.3V model, missed a lot of transmissions. Changed to 5V and it worked much better.

I also have more transmitters, two (weather station, homemade energy meter) use 12V and three use 5V (sensors). 12V is better but 5V works good to.
Try 5V first, if you miss a lot of transmissions try a higher voltage on the transmitter.


Bianco

Your weather station is home made with one of these modules or store bought?

(I'm trying to find out what range you can get from the cheap transmitter to the cheap receiver using only 5V on both ends)

olof_n

It is homemade.

I use the following sensors:
Wind direction & Speed:   Sparkfuns Weather Meters
Rain:   Sparkfuns Weather Meters
Pressure sensor:   BMP085
Humidity & Temperature:   DHT22

Arduino MCU:Atmega1284 with RTC & LCD.
The RF-modules are the cheap ones from ebay.

Database/Web server run on a Cubieboard.



Bianco

I replaced this cheap crap by these cheap modules. Note that the receiver has a built-in resonator.


It's night and day: I went from 8 meters of range to several dozens.

robwlakes

The shielding over the RF stages looks impressive as well. I reckon there are three important criteria to match with 433Tx'ers.  The first, and universal aspect, is plenty of sensitivity.  Second is the observation made by Bianco, having a SAW resonator as a filter will allow selectivity, and reduce a lot of unwanted noise. 

However a less obvious aspect is the speed at which the AGC and middle of signal, point stabilizes.  If it is too slow, it may not reflect/capture incoming headers/data quick enough.  If the header is short, say around 10 bits, this can be rather crucial.  Many Arduino applications seem to be around the 200uS to 400uS interval for the keying of the signal, ie probably at the high end data rates for the older, simpler Rx designs. The more modern receivers should provide a quicker, crisper lock onto the desired signal and as a result provide more reliable range for reception.  Bianco is right, the Rx needs to be a good one, and maybe not just the cheapest.

Another similar brand worth considering is the Dorji line.
Learning Flute and C++, heading for a meltdown.

Bianco


However a less obvious aspect is the speed at which the AGC and middle of signal, point stabilizes.  If it is too slow, it may not reflect/capture incoming headers/data quick enough.  If the header is short, say around 10 bits, this can be rather crucial.

Is that an aspect you can cover selecting the proper parameters with Virtual Wire?

robwlakes



However a less obvious aspect is the speed at which the AGC and middle of signal, point stabilizes.  If it is too slow, it may not reflect/capture incoming headers/data quick enough.  If the header is short, say around 10 bits, this can be rather crucial.

Is that an aspect you can cover selecting the proper parameters with Virtual Wire?

I think so Bianco, it would simply mean lowering the "bit rate" for matching Tx & Rx.  I was referring to the situation where the Tx maybe in a device like a weather station (where my main experience comes from) and that can't be altered. However if a higher bit rate was required a longer header (I have used a weather station where it had a header of around 80 bits!) could work.

Overall though it has to be kept in mind that 433Mhz systems generally have very low data bandwidth (eg shorts bursts of data, 40-100mS  every 45 secs, and also why they are legal I guess), so lowering the bit rate could be another way of improving reception, and few more milliseconds every 45 seconds would not hurt the average data rate.

Ideally I would suggest that sending 2X worth of header bits (where X>14) and requiring X of them for a valid header would be a handy rule of thumb.  It is interesting to capture the 433Mhz Rx output on a PC with Audacity running and see the waveform change as the signal is detected and the AGC kicks in.

Cheers,Rob
Learning Flute and C++, heading for a meltdown.

Bianco

On the other hand, can the baud rate be too low. Does going under 1000 bps seems silly?

robwlakes

I don,t think so.  Using something like Audacity as a very cheap storage 'scope is handy in these situations as you can actually see what is going on at Rx out (just make sure you sample at a high rate, sub 1mS is at the very top end of an audio sampler's range but it does give heaps of usable information).

There must be some sort of RC circuit stabilising the detector of the average or mid point of the signal in these devices that sets the upper and lower limits for data bit rates. (If it was too slow the data would arrive before the header had stabilised the Rx, if it was too quick the signal would fluctuate too much along with the signal changes.)  I would ignore that aspect for the moment as most OOK 433mH Rx/Tx are designed to work in that sub-mS range.

How quickly the Rx circuit stabilises the bias before the data arrives, would depend on the the strength of the signal and/or the length of the header(headers have equal on to off time ratios for this purpose, and stronger signals would pull the centering biasing circuit in quicker) rather than the bit rate.  Once the RX is stabilised in the header then the bit rate should not be so important eg to be longer than 1 mS.  I think I would try more header bits in the Tx stream if I had control over that.  Set the Rx to look for 25%-50% of them before accepting it as a valid header.  eg 60 header bits Tx'ed, and  >= 25 Rx'ed means a Valid header
Learning Flute and C++, heading for a meltdown.

Bianco

I didn't make a very serious experiment, but it seems I have a more reliable connection at 2000 bps than at 500.


How quickly the Rx circuit stabilises the bias before the data arrives, would depend on the the strength of the signal and/or the length of the header(headers have equal on to off time ratios for this purpose, and stronger signals would pull the centering biasing circuit in quicker) rather than the bit rate.  Once the RX is stabilised in the header then the bit rate should not be so important eg to be longer than 1 mS.  I think I would try more header bits in the Tx stream if I had control over that.  Set the Rx to look for 25%-50% of them before accepting it as a valid header.  eg 60 header bits Tx'ed, and  >= 25 Rx'ed means a Valid header

There's already so much for me to learn that I can't go as deep as that for now. I'm using VirtualWire on the Arduino (Tx) and a VirtualWire port in Python on the Raspberry Pi (Rx).

robwlakes

Ah very nice combo, I am also partial to a bit of Raspberry Pi :) and I like Python.

I reckon you are going ok then, leave the software for a while, and see if the getting the raw signal strength up by trying antennas (I read recently a 17cm strand of Cat5 Cable wire was effective for 433MHz Tx &Rx) and supply voltages (I think the Rx was kept at 5V but the Tx was keyed with a  9or12V power supply???  Just check the specs on the Tx) will get you over the line.

Have you had a read of this advanced/replacment version of Virtual Wire?  I haven't used it but it looks well documented so could be worth a read.

Rob
Learning Flute and C++, heading for a meltdown.

Bianco


Ah very nice combo, I am also partial to a bit of Raspberry Pi :)

Well, it's cheaper than an Arduino + WiFi shield...

Quote
and I like Python.

I like easy languages :smiley-mr-green:

Quote
I reckon you are going ok then, leave the software for a while, and see if the getting the raw signal strength up by trying antennas (I read recently a 17cm strand of Cat5 Cable wire was effective for 433MHz Tx &Rx)

I'm having nightmares about antennas. I haven't tried the cat5 wire for the moment.

Quote
and supply voltages (I think the Rx was kept at 5V but the Tx was keyed with a  9or12V power supply???  Just check the specs on the Tx) will get you over the line.

5V (R-Pi) on the Rx. The Tx is powered by a barebone ATmega328P, which is powered by 3*AAA batteries.

Quote
Have you had a read of this advanced/replacment version of Virtual Wire?  I haven't used it but it looks well documented so could be worth a read.

I tried it before using VirtualWire: I couldn't make it work. But I discovered Arduino two or three weeks ago and I had never coded in C, so...

robwlakes

Chuckle!!! I like your approach.... :)

Antenna for 433MHz can be simple. Just 17 cm "micro whip" of wire will get you started.

Try powering the Tx with a +9V battery (if it's specs allow it) and keep the Arduino on the 3x1.5V =4.5V.

The IDE for Aduino is a great place to lesrn C or C++. I do not grasp the OOP side of it but there are many well written examples in tutorials and libraries to learn from. I think you will enjoy the journey. I certainly have.

Best wishes with it,

Rob
Learning Flute and C++, heading for a meltdown.

Go Up