Pessoal bom dia,

Estou tentado enviar variáveis de temperatura e humidade de um DHT11 através do radio nrf24l01.

Estou usando um arduino MEGA como TX e um arduino duemilanove com RX.

No código do TX coloquei um texto para ser enviado e as variáveis de temp e humidade.

No RX o texto chega normalmente porém os valores de temperatura e huidade chegam "zerados".

O que posso estar errando aqui? Segue os códigos

TX:

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include "DHT.h"

RF24 radio(7, 8);
const byte rxAddr[6] = "00001";

#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

int dados[2];

void setup()
{
radio.begin();
radio.setRetries(15, 15);
radio.openWritingPipe(rxAddr);

radio.stopListening();

Serial.begin(9600);
Serial.println("DHTxx test!");

dht.begin();


}

void loop()
{
float h = dht.readHumidity();
float t = dht.readTemperature();

if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;

dados[0] = h;
dados[1] = t;
}
Serial.print("Humidade: ");
Serial.print(h);
Serial.print(" % ");
Serial.print("Temperatura: ");
Serial.print(t);
Serial.println(" *C ");

const char text[] = "RAFAEL";
radio.write(&text, sizeof(text));
radio.write(&dados, sizeof(dados));


}

RX:

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <LiquidCrystal.h>

int dados[2];

RF24 radio(2, 3);

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

const byte rxAddr[6] = "00001";

void setup()
{
lcd.begin(16, 2); // start the library
delay(1000);

while (!Serial);
Serial.begin(9600);

radio.begin();
radio.openReadingPipe(0, rxAddr);

radio.startListening();
}

void loop()
{
if (radio.available())
{
char text[32] = {0};
radio.read(&text, sizeof(text));
radio.read(&dados, sizeof(dados));

Serial.print(text);
Serial.print(dados[0]);
Serial.println(dados[1]);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(text);
delay(1000);
}
}

Obrigado

Exibições: 753

Responder esta

Respostas a este tópico

Olá Rafael,

   Cara, eu acho que seu problema esta na forma como você esta construindo o seu envio e recebimento de variaveis, obviamente não fiz nenhum teste, estou apenas teorizando,  mas acho que a construção do seu radio.write e radio.read é que tá um pouco diferente do que conheço, visto que em todos os exemplos que já vi,  todo o enunciado é feito em uma unica linha.

   Bem, existem vários modelos dentro dos exemplos da propria biblioteca, porem, eu sempre gosto de me basear nos modelos criados pela galera do futebol de robos, pois eles conseguiram limpar o codigo de forma maravilhosa.

   Dá uma olhada aqui e veja como eles fazem:   http://futebol-uff.blogspot.com.br/2012/12/nrf24l01-testes-iniciais...

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço