Página principal


Arduino
Receptor temperatura y humedad
433MHz - MX-05V

xsetaseta@gmail.com

Esta es la segunda parte del montaje en el arduino para transmitir temperatura y humedad mediante radio en la frecuencia de 433MHz.


Circuito receptor MX-05V.



Esquema MX-05V.



Conexión en el arduino.

Programa
//-------------
// SETA43
// 07/05/2014
//-------------
//
//Receptor
//

#include <VirtualWire.h>
const int RX_DIO_Pin = 2;


 float h,humedad,temperatura;
 int dato1,dato2;
 byte indice;

void setup()
{
pinMode(13, OUTPUT);
Serial.begin(9600);
/* Initialises the DIO pin used to receive data from the Rx module */
vw_set_rx_pin(RX_DIO_Pin);
/* Receive at 2000 bits per second */
vw_setup(2000);
/* Enable the receiver */
vw_rx_start();
}

/* Main program */
void loop()
{
uint8_t Buffer_Size = 2;
unsigned int Data;
int Data1;
uint8_t RxBuffer[Buffer_Size];


if (vw_get_message(RxBuffer, &Buffer_Size)) // Non-blocking
  {
    digitalWrite(13, HIGH);
    Data = RxBuffer[0] << 8 | RxBuffer[1];
    h=Data; h=h/100;
    if(h==333.33)
        {
         indice=0;
         Serial.print("Humedad: "); 
         Serial.print(humedad);
         Serial.print(" %  ");
         Serial.print("Temperatura: ");          
         Serial.print(temperatura);
         Serial.print(" C ");
         Serial.print(dato1);
         Serial.print(" ");
         Serial.println(dato2);
        }
      else
        {
          indice++;
          if(indice==1) humedad=h;
          if(indice==2)
             {
               if (Data>=35000)
                {
                  Data1=Data-65536;
                  h=Data1;
                }
                else
                {
                 h=Data; 
                }                
              h=h/100;   temperatura=h; 
             }
          if(indice==3) dato1=Data;
          if(indice==4) dato2=Data;          
        }
    digitalWrite(13, LOW);
  }
}


En el programa se reciben 5 datos.
El primero es 33333, es un numero de sincronización de la recepción.
El segundo es la humedad, multiplicada por 100, esto es para que sean enteros de 2 bytes.
El tercero es la temperatura, multiplicada por 100, esto es para que sean enteros de 2 bytes.
El cuarto es 222, este numero se lo he puesto a modo de seguridad. Debido a que puede recibir señales de múltiplos transmisores, se debe identificar con un numero de identificación único. Para simplificar el programa, no he utilizado la identificación por numero.
El quito es un numero consecutivo del 0 al 100.



Salida del puerto serie.



Hasta pronto.
JUAN GALAZ

Bibliografía:
http://forum.hobbycomponents.com/viewtopic.php?f=39&t=1324
http://www.seta43.netau.net/ardurab.html
http://playground.arduino.cc/Main/DHTLib
http://www.pjrc.com/teensy/td_libs_VirtualWire.html