433.92Mhz outdoor sensor

Hello guys!

I’m in a project where we need to match with a outdoor weather sensor witch send temperature and humidity by RF at 433.92 MHz.

I have the receiver, and Arduino experience, and the data transmission format by the sensor’s manufacturer; but I can´t get the data from the sensor.

I have used some codes but any good result was gotten; for example with the VirtualWire example, I can receive the code from my own transmitter, but don’t get anything from the sensor.
What I need to change? Any clue?

This is the data received from the manufacturer.

And the Arduino code used to try match with it.

#include <VirtualWire.h>

const int led_pin = 13;
const int transmit_pin = 12;
const int receive_pin = 11;
const int transmit_en_pin = 3;

void setup()
    Serial.begin(9600); // Debugging only

    // Initialise the IO and ISR
    vw_setup(2000); // Bits per sec

    vw_rx_start();       // Start the receiver PLL running

void loop()
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;

    if (vw_get_message(buf, &buflen)) // Non-blocking
 int i;

 // Message with a good checksum received, dump it.
 Serial.print("Got: ");
 for (i = 0; i < buflen; i++)
    Serial.print(buf[i], HEX);
    Serial.print(' ');

VirtualWire can't be used with weather sensors. You need special code for each type of sensor.

Yours may have already been decoded or reverse engineered, but this blog article will get you started.

First, thanks for your reply.

Second, I'm following that and another tutorials and trying to read the sensor signal, but seems that there is too much noise (see attached image).
Where is the problem, in the receiver, or maybe in the emitter? With thise noise maybe it will be really hard to read the 0s and 1s in the Arduino, right?

That signal makes no sense to me. Judging from the manufacturer's information in your first post, it can't possibly correspond to a transmission from your sensor.

How did you record it? Please post a diagram showing your wiring.

Yes, it is, adding a 17,5cm antenna i get better results, and translation that signals to 0s and 1s according the manufacturer’s information they coincide. It sent 36 bits between a Star/stop signal of 4000us on LOW.

Now, the problem is the noise. There is noise in the middle of the sensor transition as you can see in the following image. I don’t care about this because the signal is sent 10 times, so usually one o them it would be useful.

Mi problem is with the noise between the signals sent by the outdoor sensor (following image). If I use interrupts in Arduino to read the signals, this noise will “block” my Arduino because signals is always changing and it could’t run the script.

In both images the signal was taken with the sensor and the receiver separate by less than 10cm, so more close it can be. And I was trying with capacitors to reduce the noise but it was useless.

About the diagram, it is the this one with the same components, a cheap 433 receiver, and arduino powering it and then connected to the arduino by a jumper or to the PC by a jack connection to use Audacity.

Reading another post, seems that the problem is that the receiver auto-regulate the gain; when there is a strong signal (outdoor sensor sending data), gain decrease and noise it is low, but when it stop to send data, received signals are very low, so the receiver increase the gain until those weak signals (noise) became strong as you can see in the picture. This effects can be seen in the Audacity, but it’s hard do post here because i have to scroll to see it. ¿Is there any way to avoid this, or some 433,92Mhz receiver with no auto gain? ¿Maybe where gain is driven by a input pin?

Thanks a lot, and sorry for my english :cold_sweat:

Those cheap 433 receivers generate broadband noise when theres no demodulatable input signal, so what you are seeing is what you would expect.
You should be looking for the ST/SP signal, namely the 4000 us low state, as that should be unique to each data transmission.
What you havnt indicated is how big a gap is there between each of the sensors transmissions.
ie if the signal is sent 10 times, whats the time in between.
The AGC decay time of those receivers is around 4 -5 ms , so the 4 ms ST/SP signal may be too long.

I can see the ST/SP signal, they are between the 10 data packets, like this:

...Noise - 1DATA - ST/SP - 2DATA - ST/SP - 3DATA - ST/SP - 4DATA - ST/SP - 5DATA - ST/SP - 6DATA -ST/SP - 7DATA - ST/SP - 8DATA - ST/SP - 9DATA - ST/SP - 10DATA - Noise...

The whole data transmission last around 900ms and the transmission are made each 57 seconds, as the manufacturer says.

My problem is with the noise. I will purchase more receivers to try to improve it, but I don't know if it would be enough. Could someone recommend me one, or some advice about what characteristic it would need to have?

You could try a better receiver. The superheterodyne ones are more sensitive and perform much better. Look for the metal crystal case, as many manufacturers lie about their receivers.

Superhet receiver below, on eBay here.

Superregenerative receiver, advertised as superhet (receiver to the left, no crystal)