Olá pessoal, estou escrevendo um post para meu blog e nele gostaira de deixar um tutorial mostrando como enviar o valor da temperatura via RF 433MHz.
Aparentemente, o transmissor está funcionando corretamente, mas do lado receptor não consigo ler os dados.
Já pesquisei bastante pela web e aqui no forum, mas não estou conseguindo achar o problema.
Desde já grato pela atenção.
Abaixo estão os código:
TRANSMISSOR
/*--------------------------------------------------------------------------------
* Medidor de Temperatura com LM35, RF 433 MHz
*
* RF TX - 433 MHz
*
* www.binarycodec.blogspot.com
* Data: 06/08/2013
* v.1.0
---------------------------------------------------------------------------------*/
#include <VirtualWire.h>
// Declarando pinos para transmissao (RF TX 433 MHz)
const int led_pin = 13;
const int transmit_pin = 10;
// Declarando o Sensor LM35
int SENSOR = 0;
int D = 0;
int T = 0;
int ResultadoSensor;
char ResultadoSensorCharMsg[10];
void setup() {
// Comunicacao com o Serial Monitor
Serial.begin(9600); // baud-rate
Serial.println("Transmissor");
// Inicializando E/S do transmissor
vw_set_tx_pin(transmit_pin);
vw_set_ptt_inverted(true); // Requerido para DR3100
vw_setup(2000); // Bits por segundos
}
void loop() {
// Funcoes do Sensor - Calculos
D = analogRead(SENSOR);
T = (D * 5 * 100)/1023;
Serial.print(T);
Serial.println(" C");
delay(1000);
// Funcoes para transmissao
//Lendo e armazenando o valor da temperatura
//ResultadoSensor = analogRead(T);
// Convertndo int para char
itoa(T, ResultadoSensorCharMsg,10);
digitalWrite(led_pin, HIGH); // Pisca LED no pino 13 enquanto esta transmitindo
vw_send((uint8_t *)ResultadoSensorCharMsg, strlen(ResultadoSensorCharMsg));
vw_wait_tx(); // Espera o envio da informacao
digitalWrite(led_pin, LOW);
delay(1000);
}
RECEPTOR
/*---------------------------------------------------------------------------
* Medidor de Temperatura com LM35, RF 433 MHz
*
* RF RX - 433 MHz
*
* www.binarycodec.blogspot.com
* Data: 06/08/2013
* v.1.0
-------------------------------------------------------------------------------*/
#include <VirtualWire.h>
const int led_pin = 13;
const int receive_pin = 12;
int T; //resultado sensor
char ResultadoSensorCharMsg[10]; // conteudo da transmissao
void setup() {
// Comunicacao com o Serial Monitor
Serial.begin(9600);
Serial.println("Receptor");
// Inicializando E/S do receptor
vw_set_rx_pin(receive_pin);
vw_set_ptt_inverted(true); // Requerido para DR3100
vw_setup(2000); // Bits por segundo
vw_rx_start(); // Inicia a recepcao
}
void loop()
{
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message(buf, &buflen)) // Sem bloqueios na recepcao
{
int i;
digitalWrite(led_pin, HIGH); // Pisca LED no pino 13 se receber a mensagem integra
Serial.print("OK: "); // Verifica checksum. Se mensagem integra, escreve OK:
for (i = 0; i < buflen; i++)
{
ResultadoSensorCharMsg[i] = char(buf[i]);
}
//verifica se terminou a transmissao
ResultadoSensorCharMsg[buflen] = '\0';
//Convertendo char para inteiro
T = atoi(ResultadoSensorCharMsg);
Serial.print("temp.: C");
Serial.println(T);
digitalWrite(led_pin, LOW);
}
}