LusoRobótica - Robótica em Português

Electrónica => Electrónica Geral => Tópico iniciado por: r16 em 21 de Agosto de 2012, 22:38

Título: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 21 de Agosto de 2012, 22:38
Olá pessoal.
Hoje tive mais uma ideia luminosa, que se trata de passar a temperatura que esta no meu quarto e no quarto da minha filha, para o meu arduino da sala que por sua vez ligado a este tem um lCD a mostrar a temperatura.

Pois bem, eu há poucos dias conclui um projecto em que usando um encode e decoder e um emissor e receptor rf:

https://sites.google.com/site/kitoeag/radio-controle (https://sites.google.com/site/kitoeag/radio-controle)

consegui atraves do arduino ligar luz da minha varanda, que se encontra a 10metros do arduino, isto sem fios.

optei por esta solucao por ser BASTANTE economica face aos xbees e afins.
Mas como isto nao tem bidireccionalidade, gostaria de saber
se com dois arduinos..

1 arduino no quarto com sensor de temperatura.
com um emissor rf 315mhz e encoder.

e
1 arduino na sala com um receptor rf 315mhz e um decoder.

consigo com estes componentes receber via rf a temperatura do quarto para a sala?
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 21 de Agosto de 2012, 23:00
Se já tens os módulos experimenta, mas com obstruções duvido que dê, mas experimenta.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 21 de Agosto de 2012, 23:14
Encontrei aqui um site onde de facto nao preciso do encode e decoder para nada.

so preciso do rf emissor e receptor.

http://labdegaragem.com/profiles/blogs/tutorial-transmissor-e-receptor-rf-link-com-arduino
 (http://labdegaragem.com/profiles/blogs/tutorial-transmissor-e-receptor-rf-link-com-arduino)

ou seja neste caso o arduino emissor esta a enviar a mensagem hello que e recebida pelo arduino receptor...

agora a ideia seria..que o arduino emissor... enviasse a temperatura para o arduino receptor..

parece me possivel nao?

tenho tudo menos dois arduinos , ou melhor tenho dois mas um ta em servico na terra.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: Pedrock em 21 de Agosto de 2012, 23:17
Se conseguires enviar "Hello" então também consegues enviar a temperatura.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 21 de Agosto de 2012, 23:36
Se conseguires enviar "Hello" então também consegues enviar a temperatura.

boa.

Mas aqui neste caso autor do post diz assim:

"Este exemplo mostra o receiver recebendo a informação do emissor, que nesse caso é o "hello". Ao abrir o Serial monitor do Arduino-1.0, você verá que os dados que chegam são números, estes números são números da tabela ASCII. Você pode ver que o número hexadecimal "68" equivale a letra "h"."

tabela ASCII: http://www.labdegaragem.com.br/wiki/index.php?title=Tabela_ASCII (http://www.labdegaragem.com.br/wiki/index.php?title=Tabela_ASCII)

achas que no codigo dava para por tipo um conversor para o arduino receptor.. lesse bem a temperatura inves de usar esses numeros hexadecimais?

vou ver se compro outro arduino para fazer o teste.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: Pedrock em 21 de Agosto de 2012, 23:42
Sim, não há problema.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 22 de Agosto de 2012, 01:14
Escrevi isto há uns tempos:
http://lusorobotica.com/index.php?topic=5125.0 (http://lusorobotica.com/index.php?topic=5125.0)

Lê, experimenta o código com os 2 arduinos e vê se a essa distância consegues receber alguma coisa. Eu não usei encoders nem decoders e no código já tem um conversor de bytes para texto.

Cumprimentos.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: Hugu em 22 de Agosto de 2012, 01:32
porque n envias a leitura da tempª pela rede electrica?  8)

http://www.redcircuits.com/Page11.htm (http://www.redcircuits.com/Page11.htm)

Desafio: meteres mais sensores a enviarem leituras e receberes por exemplo num lcd a varias leituras...  8)
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 25 de Agosto de 2012, 02:04
Pessoal desculpem ainda nao ter dado nenhum feedback, mas so para a semana me chega o material para testar.
obrigado.

ps: hugo é fixe isso, mas para já não necessito de tanto ;)
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: senso em 25 de Agosto de 2012, 03:19
Podes sempre usar os nRF24L da Nordic, compras deles no eBay por 3€, mais barato que esses módulos RF, mas muito melhores, com mais alcance e tratam de grande parte do trabalho.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: kast em 25 de Agosto de 2012, 15:55
Fiz algo parecido há mais de um ano, e neste momento estou a tentar melhorar.

Pode ver aqui:
http://lusorobotica.com/index.php?topic=3080.0 (http://lusorobotica.com/index.php?topic=3080.0)

Utilizei modulos RFM12B
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: FET_Destroyer em 25 de Agosto de 2012, 16:36
Boas r16
Eu e o maurosmartins andamos a trabalhar num projecto que é o RFduino, que acabou por falta de tempo dos dois, mas basicamente consistia num PCB com um ATMEL com o bootloader arduino, com socket para pilhas e com um transceiver RF da nordic, um dos exemplos testados era precisamente isso que querias fazer. Um sensor envia temperatura e outro envia por serie para o PC, o objectivo era criar mais nós mas como exemplo apenas testamos um, podes dar uma vista de olhos em http://rfduino.wordpress.com/ (http://rfduino.wordpress.com/) podes encontrar la alguma coisa que te dê jeito. Tem la exemplos de codigo, esquemáticos, etc.

Cumprimentos
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 26 de Agosto de 2012, 22:17
Podes sempre usar os nRF24L da Nordic, compras deles no eBay por 3€, mais barato que esses módulos RF, mas muito melhores, com mais alcance e tratam de grande parte do trabalho.

Efectivamente isto parece ser muito porreiro , isto faz de emissor e receptor certo? ou seja tem bidirecionalidade como aqui ja foi dito?

tinha já agora uma questao...se eu usar um componente poderei a ele tambem ligar um encoder e um decoder ht12e ht12d correcto?
eu tenho um emissor e receptor de 315mhz ambos tem la mencionado a saida OUT que vai ligar ao encoder e decoder.. mas este componente da nordic pelo que vi nao tem a saida OUT qual e a saida que faz o mesmo trabalho? qual o pin?



Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: senso em 26 de Agosto de 2012, 22:21
O nRF fala por SPI e envia e recebe dados, não precisa de nada de encoders e decoders, e tens bibliotecas para arduino para ele.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 26 de Agosto de 2012, 22:31
O nRF fala por SPI e envia e recebe dados, não precisa de nada de encoders e decoders, e tens bibliotecas para arduino para ele.

entao queres me dizer que:

eu com um arduino master e um NRF master.

poderei ligar um rele no quarto tendo la um nrf slave.

e poderei ligar outro rede noutro quarto tendo tambem la um nrf slave.

sem necessidade de ter arduino nos slaves nrf ?ou tenho que tambem neles ter um arduino interligado a eles?


Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: senso em 26 de Agosto de 2012, 22:43
Cada nRF precisa de ter um micro-controlador, um arduino é muito overkill um simples attiny2313 chega perfeitamente para implementar um nó/slave.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: kast em 26 de Agosto de 2012, 22:47
Atenção à frequência do nRF, eu utilizei o RFM12 por causa da rede wireless cá de casa ...
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: senso em 26 de Agosto de 2012, 22:48
Podes mudar os canais, mete o wireless em no canal 0 e o nRf no canal máximo e ficas com umas centenas de Mhz a separar os dois.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 26 de Agosto de 2012, 22:54
Ok entendi.
So mais duas questoes:

Entao eu no arduino master/nrf master consigo enviar informacao para o nrf do quarto 1 ligar... sem que o nrf do quarto2 se ligue e vice versa??

Foi por causa disto que no outro projecto implementei os encoders e decoders...pois conseguia ter dezenas de decoders sem eles interferirem uns com os outros.


2º pergunta: em um nrf slave consigo comandar quantos reles? apenas um ou mais que um?

Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 26 de Agosto de 2012, 22:58
Basta arranjares forma de identificar o receptor. Podes enviar um nr que identifique o receptor antes de enviares a mensagem e depois envias a mensagem.
Depois programas o arduino ou o microcontrolador que usares para interpretar o comando apenas se a primeira mensagem que ele receber for igual ao nr que o identifica, caso contrário ignora a mensagem que vem a seguir e volta a esperar por uma mensagem nova.

Edit: Depende das saidas que o teu microcontrolador tiver, mas se quiseres controlar bastantes há soluções como shift registers (?).
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: kast em 26 de Agosto de 2012, 23:16
Creio que cada nrf precisa de ter um id para trabalhar ....

A mesma coisa acontece com os RFM12.

Se bem me lembro creio que podes ter 125 canais, isto com o  nRF
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 26 de Agosto de 2012, 23:16
Basta arranjares forma de identificar o receptor. Podes enviar um nr que identifique o receptor antes de enviares a mensagem e depois envias a mensagem.
Depois programas o arduino ou o microcontrolador que usares para interpretar o comando apenas se a primeira mensagem que ele receber for igual ao nr que o identifica, caso contrário ignora a mensagem que vem a seguir e volta a esperar por uma mensagem nova.

Edit: Depende das saidas que o teu microcontrolador tiver, mas se quiseres controlar bastantes há soluções como shift registers (?).

Neste caso seria o controlador seria mesmo o arduino...
rglove achas que é tarefa facil entao fazer isso? por o arduinomaster /nrf a comunicar com varios slaves sem que eles interfiram uns com os outros?

Relativamente as saidas... o arduino tem varias falemos vá de 4...
de que forma é que o arduino master /nrf diz ao arduino slave/nrf olha ligame ai o rele 1, agora liga me o rele 2 , agora liga-me o 3 e já agora liga me o rele 4 tambem.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: senso em 26 de Agosto de 2012, 23:18
É tal e qual um Serial.print, só que em vez de serial é o nome que deres ao nRF, podes ter milhares de nRF's, dá uma olhada aqui:
http://jeelabs.org/ (http://jeelabs.org/)
http://jeelabs.com/products/jeenode (http://jeelabs.com/products/jeenode)
São módulos RFM12 com um atmega, programavel com o IDE do Arduino, e tem toda a componente de comunicação tratada
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: kast em 26 de Agosto de 2012, 23:21
epá ... há bibliotecas para usar isso ...

Deve ser mais fácil se começares por ler a info que vem com as bibliotecas.

Estou a fazer algo parecido ... e digo-te que é bem simples, neste momento estou a tentar usar o nRF também porque é bem mais barato que o RFM12.

Quanto a não se baralharem podes fazer muita coisa por software.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 01 de Setembro de 2012, 17:07
Ora viva pessoal, enquanto não tenho os NRF, já reuni algum material

tenho um emissor rf315 e um receptor..

consegui COMUNICAR entre eles com este codigo do rglove:

emissor:

Código: [Seleccione]
#include <VirtualWire.h> // É necessário utilizar esta biblioteca para transmitir a informação

char info[30];
int index = 0;
char inChar;

void setup() {
  pinMode(6,OUTPUT);
  Serial.begin(9600);
  vw_set_tx_pin(6); // Esta função diz que o pino responsável por transferir a informação é o 6
  vw_set_ptt_inverted(true); // Sei que esta função tem de ser usada, mas não sei o que significa, se alguém souber e quiser acrescentar
  vw_setup(2000); // função responsável por declarar a velocidade de transmissão (neste caso 2000bps)
}

void loop()
{
  if (Serial.available() > 0) {  // Se houver informação à espera para ser lida começa o loop abaixo
      while (1) {
      inChar = Serial.read(); // Guarda temporariamente o primeiro caracter/byte
      info[index] = inChar; // Coloca o caracter numa array de caracteres
      index++; // acrescenta 1 valor a index, de forma a que quando se repetirem as operações de cima o byte não seja escrito no mesmo sítio
        delay(2); // Este pequeno delay é necessário para que chegue o próximo byte, caso este delay não cá esteja o arduino vai terminar o loop
        if (Serial.available() <= 0) { // Esta condição é necessária para verificar se existe mais informação para ser lida
          index = 0; // Como não existe mais informação para ler a variável index volta a 0
          const char *msg = info;
          vw_send((uint8_t *)msg, strlen(msg)); // envia a informação recebida pela porta Serial para o receptor RF
          vw_wait_tx(); // espera que a informação seja transferida
          memset( &info, 0, sizeof(info) ); // faz reset à array de caracteres, de forma a ficar limpa para ser escrita novamente
          break; // por fim termina o loop e dá continuidade ao código (neste caso não há mais código, mas poderia haver)
        }
      }
   }
}

receptor:

Código: [Seleccione]
#include <VirtualWire.h>

char info[30];

void setup()
{
    Serial.begin(9600);
    pinMode(7,INPUT);
    vw_set_rx_pin(7); // Pino de recepção
    vw_set_ptt_inverted(true);
    vw_setup(2000);
    vw_rx_start(); // Necessário para começar a receber informação
}

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

    if (vw_get_message(buf, &buflen)) // Caso chegue alguma mensagem ao receptor
    {
int i;
        digitalWrite(13, true); // Esta parte é opcional, eu utilizei para testar e ver se estava a receber alguma coisa
for (i = 0; i < buflen; i++) // Basicamente isto vai repetir para cada byte recebido e vai guardar a informação numa array de caracteres
{
          info[i]=buf[i];
}
Serial.println(String(info)); // Enviamos pela porta Serial a informação recebida
        memset( &info, 0, sizeof(info) ); // Fazemos reset à variável info para utilizar uma outra vez
        digitalWrite(13, false);
    }
}





tenho tambem um LCD 16x2 que tambem ja conseguir fazer com que funcionasse com o example HELLO WORLD.

codigo:

Código: [Seleccione]
/*
  LiquidCrystal Library - Hello World
 
 Demonstrates the use a 16x2 LCD display.  The LiquidCrystal
 library works with all LCD displays that are compatible with the
 Hitachi HD44780 driver. There are many of them out there, and you
 can usually tell them by the 16-pin interface.
 
 This sketch prints "Hello World!" to the LCD
 and shows the time.
 
  The circuit:
 * LCD RS pin to digital pin 12
 * LCD Enable pin to digital pin 11
 * LCD D4 pin to digital pin 5
 * LCD D5 pin to digital pin 4
 * LCD D6 pin to digital pin 3
 * LCD D7 pin to digital pin 2
 * LCD R/W pin to ground
 * 10K resistor:
 * ends to +5V and ground
 * wiper to LCD VO pin (pin 3)
 
 Library originally added 18 Apr 2008
 by David A. Mellis
 library modified 5 Jul 2009
 by Limor Fried (http://www.ladyada.net)
 example added 9 Jul 2009
 by Tom Igoe
 modified 22 Nov 2010
 by Tom Igoe
 
 This example code is in the public domain.

 http://www.arduino.cc/en/Tutorial/LiquidCrystal
 */

// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("hello, world!");
}

void loop() {
  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):
  lcd.setCursor(0, 1);
  // print the number of seconds since reset:
  lcd.print(millis()/1000);
}


e tenho um sensor de temperatura humidade que funciona com este codigo:

Código: [Seleccione]
#define dht11_pin 53 //Analog port 0 on Arduino Uno
//#define dht11_pin 54 //Analog port 0 on Arduino Mega2560
 
byte read_dht11_dat()
{
  byte i = 0;
  byte result=0;
  for(i=0; i< 8; i++)
  {
    while (!digitalRead(dht11_pin));
    delayMicroseconds(30);
    if (digitalRead(dht11_pin) != 0 )
      bitSet(result, 7-i);
    while (digitalRead(dht11_pin));
  }
  return result;
}
 
 
void setup()
{
  pinMode(dht11_pin, OUTPUT);
  digitalWrite(dht11_pin, HIGH);
  Serial.begin(9600);
  Serial.println("Ready");
}
     
void loop()   
{
  byte dht11_dat[5];   
  byte dht11_in;
  byte i;// start condition
       
  digitalWrite(dht11_pin, LOW);
  delay(18);
  digitalWrite(dht11_pin, HIGH);
  delayMicroseconds(1);
  pinMode(dht11_pin, INPUT);
  delayMicroseconds(40);     
   
  if (digitalRead(dht11_pin))
  {
    Serial.println("dht11 start condition 1 not met"); // wait for DHT response signal: LOW
    delay(1000);
    return;
  }
  delayMicroseconds(80);
  if (!digitalRead(dht11_pin))
  {
    Serial.println("dht11 start condition 2 not met");  //wair for second response signal:HIGH
    return;
  }
   
  delayMicroseconds(80);// now ready for data reception
  for (i=0; i<5; i++)
  {  dht11_dat[i] = read_dht11_dat();}  //recieved 40 bits data. Details are described in datasheet
   
  pinMode(dht11_pin, OUTPUT);
  digitalWrite(dht11_pin, HIGH);
  byte dht11_check_sum = dht11_dat[0]+dht11_dat[2];// check check_sum
  if(dht11_dat[4]!= dht11_check_sum)
  {
    Serial.println("DHT11 checksum error");
  }
  Serial.print("Current humdity = ");
  Serial.print(dht11_dat[0], DEC);
  Serial.print("%  ");
  Serial.print("temperature = ");
  Serial.print(dht11_dat[2], DEC);
  Serial.println("C  ");
  delay(2000); //fresh time
}



A ideia agora seria colocar junto do arduino standalone o sensor de temp humidade, e o emissor RF.


Depois no meu arduino mega, junto com o lcd, e receptor rf..
Ler na PRIMEIRA linha a temperatura
e na SEGUNDA linha a humidade.

Alguem tem ideia como se juntam esses 3 codigos?

Obrigado
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: kast em 01 de Setembro de 2012, 18:13
Este código deve servir para emissor:

Código: [Seleccione]
// EMISSOR
#include <VirtualWire.h> // É necessário utilizar esta biblioteca para transmitir a informação
#define dht11_pin 53 //Analog port 0 on Arduino Uno //#define dht11_pin 54 //Analog port 0 on Arduino Mega2560

char info[30];
int index = 0;
char inChar;

byte read_dht11_dat()
{
  byte i = 0;
  byte result=0;
  for(i=0; i< 8; i++)
  {
    while (!digitalRead(dht11_pin));
    delayMicroseconds(30);
    if (digitalRead(dht11_pin) != 0 )
      bitSet(result, 7-i);
    while (digitalRead(dht11_pin));
  }
  return result;
}

void setup() {
  pinMode(6,OUTPUT);
  Serial.begin(9600);
  vw_set_tx_pin(6); // Esta função diz que o pino responsável por transferir a informação é o 6
  vw_set_ptt_inverted(true); // Sei que esta função tem de ser usada, mas não sei o que significa, se alguém souber e quiser acrescentar
  vw_setup(2000); // função responsável por declarar a velocidade de transmissão (neste caso 2000bps)
  pinMode(dht11_pin, OUTPUT);
  digitalWrite(dht11_pin, HIGH);
  Serial.println("Ready");
}

void loop()
{
    byte dht11_dat[5];   
  byte dht11_in;
  byte i;// start condition
       
  digitalWrite(dht11_pin, LOW);
  delay(18);
  digitalWrite(dht11_pin, HIGH);
  delayMicroseconds(1);
  pinMode(dht11_pin, INPUT);
  delayMicroseconds(40);     
   
  if (digitalRead(dht11_pin))
  {
    Serial.println("dht11 start condition 1 not met"); // wait for DHT response signal: LOW
    delay(1000);
    return;
  }
  delayMicroseconds(80);
  if (!digitalRead(dht11_pin))
  {
    Serial.println("dht11 start condition 2 not met");  //wair for second response signal:HIGH
    return;
  }
   
  delayMicroseconds(80);// now ready for data reception
  for (i=0; i<5; i++)
  {  dht11_dat[i] = read_dht11_dat();}  //recieved 40 bits data. Details are described in datasheet
   
  pinMode(dht11_pin, OUTPUT);
  digitalWrite(dht11_pin, HIGH);
  byte dht11_check_sum = dht11_dat[0]+dht11_dat[2];// check check_sum
  if(dht11_dat[4]!= dht11_check_sum)
  {
    Serial.println("DHT11 checksum error");
  }
 // Serial.print("Current humdity = ");
 // Serial.print(dht11_dat[0], DEC);
 // Serial.print("%  ");
 // Serial.print("temperature = ");
 // Serial.print(dht11_dat[2], DEC);
 // Serial.println("C  ");
 
 

 
  // if (Serial.available() > 0) {  // Se houver informação à espera para ser lida começa o loop abaixo
  //    while (1) {
  //    inChar = Serial.read(); // Guarda temporariamente o primeiro caracter/byte
  //    info[index] = inChar; // Coloca o caracter numa array de caracteres
  //    index++; // acrescenta 1 valor a index, de forma a que quando se repetirem as operações de cima o byte não seja escrito no mesmo sítio
  //      delay(2); // Este pequeno delay é necessário para que chegue o próximo byte, caso este delay não cá esteja o arduino vai terminar o loop
       
  //      if (Serial.available() <= 0) { // Esta condição é necessária para verificar se existe mais informação para ser lida
  //        index = 0; // Como não existe mais informação para ler a variável index volta a 0
          const char *msg = dht11_dat;
          vw_send((uint8_t *)msg, strlen(msg)); // envia a informação recebida pela porta Serial para o receptor RF
          vw_wait_tx(); // espera que a informação seja transferida
          memset( &info, 0, sizeof(info) ); // faz reset à array de caracteres, de forma a ficar limpa para ser escrita novamente
         
         
  //       break; // por fim termina o loop e dá continuidade ao código (neste caso não há mais código, mas poderia haver)
    delay(2000); //fresh time
        }
      }
   }
}
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: kast em 01 de Setembro de 2012, 18:23
Este código deve servir para receptor (há algumas coisas que não sei se vão funcionar bem):

Código: [Seleccione]
//RECEPTOR
#include <VirtualWire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

char info[30];

void setup()
{
    lcd.begin(16, 2);
    Serial.begin(9600);
    pinMode(7,INPUT);
    vw_set_rx_pin(7); // Pino de recepção
    vw_set_ptt_inverted(true);
    vw_setup(2000);
    vw_rx_start(); // Necessário para começar a receber informação
}

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

    if (vw_get_message(buf, &buflen)) // Caso chegue alguma mensagem ao receptor
    {
int i;
        digitalWrite(13, true); // Esta parte é opcional, eu utilizei para testar e ver se estava a receber alguma coisa
for (i = 0; i < buflen; i++) // Basicamente isto vai repetir para cada byte recebido e vai guardar a informação numa array de caracteres
{
          info[i]=buf[i];
          if (i=0){
             lcd.setcursor(0,0);
             lcd.print("Humi ");
             lcd.print(buf[i], DEC);
             lcd.print(" %");
          }
          if (i=2){
             lcd.setcursor(0,1);
             lcd.print("Temp ");
             lcd.print(buf[i], DEC);
             lcd.print(" C");
  }
Serial.println(String(info)); // Enviamos pela porta Serial a informação recebida
        memset( &info, 0, sizeof(info) ); // Fazemos reset à variável info para utilizar uma outra vez
        digitalWrite(13, false);
    }
}
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 02 de Setembro de 2012, 02:43
Este código deve servir para emissor:

Código: [Seleccione]
// EMISSOR
#include <VirtualWire.h> // É necessário utilizar esta biblioteca para transmitir a informação
#define dht11_pin 53 //Analog port 0 on Arduino Uno //#define dht11_pin 54 //Analog port 0 on Arduino Mega2560

char info[30];
int index = 0;
char inChar;

byte read_dht11_dat()
{
  byte i = 0;
  byte result=0;
  for(i=0; i< 8; i++)
  {
    while (!digitalRead(dht11_pin));
    delayMicroseconds(30);
    if (digitalRead(dht11_pin) != 0 )
      bitSet(result, 7-i);
    while (digitalRead(dht11_pin));
  }
  return result;
}

void setup() {
  pinMode(6,OUTPUT);
  Serial.begin(9600);
  vw_set_tx_pin(6); // Esta função diz que o pino responsável por transferir a informação é o 6
  vw_set_ptt_inverted(true); // Sei que esta função tem de ser usada, mas não sei o que significa, se alguém souber e quiser acrescentar
  vw_setup(2000); // função responsável por declarar a velocidade de transmissão (neste caso 2000bps)
  pinMode(dht11_pin, OUTPUT);
  digitalWrite(dht11_pin, HIGH);
  Serial.println("Ready");
}

void loop()
{
    byte dht11_dat[5];   
  byte dht11_in;
  byte i;// start condition
       
  digitalWrite(dht11_pin, LOW);
  delay(18);
  digitalWrite(dht11_pin, HIGH);
  delayMicroseconds(1);
  pinMode(dht11_pin, INPUT);
  delayMicroseconds(40);     
   
  if (digitalRead(dht11_pin))
  {
    Serial.println("dht11 start condition 1 not met"); // wait for DHT response signal: LOW
    delay(1000);
    return;
  }
  delayMicroseconds(80);
  if (!digitalRead(dht11_pin))
  {
    Serial.println("dht11 start condition 2 not met");  //wair for second response signal:HIGH
    return;
  }
   
  delayMicroseconds(80);// now ready for data reception
  for (i=0; i<5; i++)
  {  dht11_dat[i] = read_dht11_dat();}  //recieved 40 bits data. Details are described in datasheet
   
  pinMode(dht11_pin, OUTPUT);
  digitalWrite(dht11_pin, HIGH);
  byte dht11_check_sum = dht11_dat[0]+dht11_dat[2];// check check_sum
  if(dht11_dat[4]!= dht11_check_sum)
  {
    Serial.println("DHT11 checksum error");
  }
 // Serial.print("Current humdity = ");
 // Serial.print(dht11_dat[0], DEC);
 // Serial.print("%  ");
 // Serial.print("temperature = ");
 // Serial.print(dht11_dat[2], DEC);
 // Serial.println("C  ");
 
 

 
  // if (Serial.available() > 0) {  // Se houver informação à espera para ser lida começa o loop abaixo
  //    while (1) {
  //    inChar = Serial.read(); // Guarda temporariamente o primeiro caracter/byte
  //    info[index] = inChar; // Coloca o caracter numa array de caracteres
  //    index++; // acrescenta 1 valor a index, de forma a que quando se repetirem as operações de cima o byte não seja escrito no mesmo sítio
  //      delay(2); // Este pequeno delay é necessário para que chegue o próximo byte, caso este delay não cá esteja o arduino vai terminar o loop
       
  //      if (Serial.available() <= 0) { // Esta condição é necessária para verificar se existe mais informação para ser lida
  //        index = 0; // Como não existe mais informação para ler a variável index volta a 0
          const char *msg = dht11_dat;
          vw_send((uint8_t *)msg, strlen(msg)); // envia a informação recebida pela porta Serial para o receptor RF
          vw_wait_tx(); // espera que a informação seja transferida
          memset( &info, 0, sizeof(info) ); // faz reset à array de caracteres, de forma a ficar limpa para ser escrita novamente
         
         
  //       break; // por fim termina o loop e dá continuidade ao código (neste caso não há mais código, mas poderia haver)
    delay(2000); //fresh time
        }
      }
   }
}


quando tento compilar esta me a dar este erro:

Código: [Seleccione]
sketch_sep02a.cpp: In function 'void loop()':
sketch_sep02a:72: error: invalid conversion from 'byte*' to 'const char*'
sketch_sep02a.cpp: At global scope:
sketch_sep02a:78: error: expected declaration before '}' token
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 02 de Setembro de 2012, 16:20
Código: [Seleccione]
#include <VirtualWire.h> // É necessário utilizar esta biblioteca para transmitir a informação
#define dht11_pin 53 //Analog port 0 on Arduino Uno //#define dht11_pin 54 //Analog port 0 on Arduino Mega2560

char info[30];
int index = 0;
char inChar;

byte read_dht11_dat()
{
  byte i = 0;
  byte result=0;
  for(i=0; i< 8; i++)
  {
    while (!digitalRead(dht11_pin));
    delayMicroseconds(30);
    if (digitalRead(dht11_pin) != 0 )
      bitSet(result, 7-i);
    while (digitalRead(dht11_pin));
  }
  return result;
}

void setup() {
  pinMode(6,OUTPUT);
  Serial.begin(9600);
  vw_set_tx_pin(6); // Esta função diz que o pino responsável por transferir a informação é o 6
  vw_set_ptt_inverted(true); // Sei que esta função tem de ser usada, mas não sei o que significa, se alguém souber e quiser acrescentar
  vw_setup(2000); // função responsável por declarar a velocidade de transmissão (neste caso 2000bps)
  pinMode(dht11_pin, OUTPUT);
  digitalWrite(dht11_pin, HIGH);
  Serial.println("Ready");
}

void loop()
{
    char dht11_dat[5];   
  byte dht11_in;
  byte i;// start condition
       
  digitalWrite(dht11_pin, LOW);
  delay(18);
  digitalWrite(dht11_pin, HIGH);
  delayMicroseconds(1);
  pinMode(dht11_pin, INPUT);
  delayMicroseconds(40);     
   
  if (digitalRead(dht11_pin))
  {
    Serial.println("dht11 start condition 1 not met"); // wait for DHT response signal: LOW
    delay(1000);
    return;
  }
  delayMicroseconds(80);
  if (!digitalRead(dht11_pin))
  {
    Serial.println("dht11 start condition 2 not met");  //wair for second response signal:HIGH
    return;
  }
   
  delayMicroseconds(80);// now ready for data reception
  for (i=0; i<5; i++)
  {  dht11_dat[i] = read_dht11_dat();}  //recieved 40 bits data. Details are described in datasheet
   
  pinMode(dht11_pin, OUTPUT);
  digitalWrite(dht11_pin, HIGH);
  byte dht11_check_sum = dht11_dat[0]+dht11_dat[2];// check check_sum
  if(dht11_dat[4]!= dht11_check_sum)
  {
    Serial.println("DHT11 checksum error");
  }
          const char *msg = dht11_dat;
          vw_send((uint8_t *)msg, strlen(msg)); // envia a informação recebida pela porta Serial para o receptor RF
          vw_wait_tx(); // espera que a informação seja transferida
          memset( &info, 0, sizeof(info) ); // faz reset à array de caracteres, de forma a ficar limpa para ser escrita novamente
    delay(2000); //fresh time
}

Não me deu erros a compilar. Experimenta.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 02 de Setembro de 2012, 16:30
Alterei umas coisas para o receptor, experimenta o código do Kast, se não der experimenta o que eu modifiquei:

Código: [Seleccione]
#include <VirtualWire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup()
{
    lcd.begin(16, 2);
    Serial.begin(9600);
    pinMode(7,INPUT);
    vw_set_rx_pin(7); // Pino de recepção
    vw_set_ptt_inverted(true);
    vw_setup(2000);
    vw_rx_start(); // Necessário para começar a receber informação
}

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

    if (vw_get_message(buf, &buflen)) // Caso chegue alguma mensagem ao receptor
    {
int i;
        digitalWrite(13, true); // Esta parte é opcional, eu utilizei para testar e ver se estava a receber alguma coisa
for (i = 0; i < buflen; i++) // Basicamente isto vai repetir para cada byte recebido e vai guardar a informação numa array de caracteres
{
          if (i==0){
             lcd.setcursor(0,0);
             lcd.print("Humi ");
             lcd.print(buf[i], DEC);
             lcd.print(" %");
          }
          if (i==2){
             lcd.setcursor(0,1);
             lcd.print("Temp ");
             lcd.print(buf[i], DEC);
             lcd.print(" C");
  }
}
            Serial.println(String("Humidade: " + String(buf[0],DEC) + "%; Temperatura: " + String(buf[2],DEC) + "ºC"));
            digitalWrite(13, false);
    }
}
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 02 de Setembro de 2012, 18:58
rglove o codigo que me enviaste modificado para o emissor ja compila bem.

mas o codigo do receptor tanto do kast como do teu...
nao aparece nem a temp nem a humidade no lcd
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 02 de Setembro de 2012, 19:12
Mas recebes a temperatura e a humidade pelo serial monitor? Não encontro nenhum erro no código, se receberes alguma coisa no serial monitor é porque ligaste mal o lcd e se não recebes nada no serial monitor é porque ligaste mal o receptor/transmissor.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 02 de Setembro de 2012, 19:33
tenho tudo bem ligado...

por exemplo com o teu codigo do teu antigo projecto RF.
funciona bem, o que escrevo no serial monitor do emissor

aparece no serial monitor do rf receptor.


em relacao ao lcd testei o exemplo do hello world da biblioteca do lcd e tambem me aparece hello world logo ta bem ligado..

tive o cuidado de verificar todos os pinos..na configuracao e ta tudo ok.


de notar que: eu nao tenho potenciometro para regular o contraste tive que optar por usar um pin PWR, mas se me esta a funcionar no example
tambem teria que estar a funcionar aqui
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 02 de Setembro de 2012, 19:39
Mas recebes alguma coisa no serial monitor? Algum texto?
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 02 de Setembro de 2012, 19:52
com o novo codigo nao....

so com o teu codigo do teu projecto é que recebo quando escrevo no serial monitor do emissor.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 02 de Setembro de 2012, 20:06
Eu agora não estou em casa, quando chegar dou uma vista de olhos nos códigos.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 02 de Setembro de 2012, 20:08
Eu agora não estou em casa, quando chegar dou uma vista de olhos nos códigos.

ok amigo
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 02 de Setembro de 2012, 20:12
Já agora, faz isto:
Mete o código que funciona do receptor (do tutorial) no arduino que está ligado ao receptor e vê se recebes alguma coisa no serial monitor com o arduino que tem o sensor e o transmissor a funcionar com o código que postei aqui.

Se não receberes nada no arduino que tem o receptor é porque o problema está no arduino que tem o transmissor.
Se receberes não te assustes pq vais receber caracteres estranhos.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 02 de Setembro de 2012, 21:11
Já agora, faz isto:
Mete o código que funciona do receptor (do tutorial) no arduino que está ligado ao receptor e vê se recebes alguma coisa no serial monitor com o arduino que tem o sensor e o transmissor a funcionar com o código que postei aqui.

Se não receberes nada no arduino que tem o receptor é porque o problema está no arduino que tem o transmissor.
Se receberes não te assustes pq vais receber caracteres estranhos.



fiz o que me disseste nao recebi nada...
isto e mesmo estranho porque se eu puser o codigo emissor e o codigo receptor do teu tutorial recebo o que escrevo..

e ja testei o example do sensor e tambem me aparece no serial monitor a temp e hum
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: kast em 02 de Setembro de 2012, 21:14
bom ... agora é preciso fazer o debug ... mas cheira-me que é um problema com o tipo de variáveis utilizado ....
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 02 de Setembro de 2012, 21:20
bom ... agora é preciso fazer o debug ... mas cheira-me que é um problema com o tipo de variáveis utilizado ....

pois,alguma coisa é  :-\ agora o que ...
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: kast em 02 de Setembro de 2012, 21:27
Código: [Seleccione]
coloca este codigo no emissor e verifica se aparece a humidade e a temperatura no serial.

[code// EMISSOR
#include <VirtualWire.h> // É necessário utilizar esta biblioteca para transmitir a informação
#define dht11_pin 7 //Analog port 0 on Arduino Uno //#define dht11_pin 54 //Analog port 0 on Arduino Mega2560

char info[30];
int index = 0;
char inChar;

byte read_dht11_dat()
{
  byte i = 0;
  byte result=0;
  for(i=0; i< 8; i++)
  {
    while (!digitalRead(dht11_pin));
    delayMicroseconds(30);
    if (digitalRead(dht11_pin) != 0 )
      bitSet(result, 7-i);
    while (digitalRead(dht11_pin));
  }
  return result;
}

void setup() {
  pinMode(6,OUTPUT);
  Serial.begin(9600);
  vw_set_tx_pin(6); // Esta função diz que o pino responsável por transferir a informação é o 6
  vw_set_ptt_inverted(true); // Sei que esta função tem de ser usada, mas não sei o que significa, se alguém souber e quiser acrescentar
  vw_setup(2000); // função responsável por declarar a velocidade de transmissão (neste caso 2000bps)
  pinMode(dht11_pin, OUTPUT);
  digitalWrite(dht11_pin, HIGH);
  Serial.println("Ready");
}

void loop()
{
    byte dht11_dat[5];   
  byte dht11_in;
  byte i;// start condition
       
  digitalWrite(dht11_pin, LOW);
  delay(18);
  digitalWrite(dht11_pin, HIGH);
  delayMicroseconds(1);
  pinMode(dht11_pin, INPUT);
  delayMicroseconds(40);     
   
  if (digitalRead(dht11_pin))
  {
    Serial.println("dht11 start condition 1 not met"); // wait for DHT response signal: LOW
    delay(1000);
    return;
  }
  delayMicroseconds(80);
  if (!digitalRead(dht11_pin))
  {
    Serial.println("dht11 start condition 2 not met");  //wair for second response signal:HIGH
    return;
  }
   
  delayMicroseconds(80);// now ready for data reception
  for (i=0; i<5; i++)
  {  dht11_dat[i] = read_dht11_dat();}  //recieved 40 bits data. Details are described in datasheet
   
  pinMode(dht11_pin, OUTPUT);
  digitalWrite(dht11_pin, HIGH);
  byte dht11_check_sum = dht11_dat[0]+dht11_dat[2];// check check_sum
  if(dht11_dat[4]!= dht11_check_sum)
  {
    Serial.println("DHT11 checksum error");
  }
  Serial.print("Current humdity = ");
  Serial.print(dht11_dat[0], DEC);
  Serial.print("%  ");
  Serial.print("temperature = ");
  Serial.print(dht11_dat[2], DEC);
  Serial.println("C  ");
 
 

 
  // if (Serial.available() > 0) {  // Se houver informação à espera para ser lida começa o loop abaixo
  //    while (1) {
  //    inChar = Serial.read(); // Guarda temporariamente o primeiro caracter/byte
  //    info[index] = inChar; // Coloca o caracter numa array de caracteres
  //    index++; // acrescenta 1 valor a index, de forma a que quando se repetirem as operações de cima o byte não seja escrito no mesmo sítio
  //      delay(2); // Este pequeno delay é necessário para que chegue o próximo byte, caso este delay não cá esteja o arduino vai terminar o loop
       
  //      if (Serial.available() <= 0) { // Esta condição é necessária para verificar se existe mais informação para ser lida
  //        index = 0; // Como não existe mais informação para ler a variável index volta a 0
  //        const char *msg = dht11_dat;
  //        vw_send((uint8_t *)msg, strlen(msg)); // envia a informação recebida pela porta Serial para o receptor RF
  //        vw_wait_tx(); // espera que a informação seja transferida
  //        memset( &info, 0, sizeof(info) ); // faz reset à array de caracteres, de forma a ficar limpa para ser escrita novamente
         
         
  //       break; // por fim termina o loop e dá continuidade ao código (neste caso não há mais código, mas poderia haver)
    delay(2000); //fresh time
  //      }
      }
   }
}
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 02 de Setembro de 2012, 22:27
Já agora experimenta também este código para o emissor. Abre o serial monitor e vê se recebes alguma coisa. Posta aqui tudo o que receberes.
Mete o código no receptor também para ver se recebes alguma coisa (mete primeiro o do tutorial para ver se recebes).

Código: [Seleccione]
#include <VirtualWire.h> // É necessário utilizar esta biblioteca para transmitir a informação
#define dht11_pin 53 //Analog port 0 on Arduino Uno

void setup() {
  pinMode(dht11_pin, OUTPUT);
  digitalWrite(dht11_pin, HIGH);
  pinMode(6,OUTPUT);
  Serial.begin(9600);
  vw_set_tx_pin(6);
  vw_set_ptt_inverted(true);
  vw_setup(2000);
}

void loop()
{
  Serial.println("Inicio");
  byte dht11_dat[5];   
  byte dht11_in;
  byte i;
       
  digitalWrite(dht11_pin, LOW);
  delay(18);
  digitalWrite(dht11_pin, HIGH);
  delayMicroseconds(1);
  pinMode(dht11_pin, INPUT);
  delayMicroseconds(40);     
    Serial.println("Pronto");
  if (digitalRead(dht11_pin))
  {
    delay(1000);
    return;
  }
  delayMicroseconds(80);
  if (!digitalRead(dht11_pin))
  {
      return;
  }
  delayMicroseconds(80);
  Serial.println("A receber info");
  for (i=0; i<5; i++)
  {  dht11_dat[i] = read_dht11_dat();}
    Serial.println("info recebida");
  pinMode(dht11_pin, OUTPUT);
  digitalWrite(dht11_pin, HIGH);
  byte dht11_check_sum = dht11_dat[0]+dht11_dat[2];
  if(dht11_dat[4]!= dht11_check_sum)
  {
    Serial.println("Erro");
  }
  char dados[5];
  for (int b=0;b<5;b++) {
    dados[b] = dht11_dat[b];
  }
 
  vw_send((uint8_t *)dados, strlen(dados));
  vw_wait_tx();
  Serial.println("Informacao transmitida");
  delay(2000);
}

byte read_dht11_dat()
{
  byte i = 0;
  byte result=0;
  for(i=0; i< 8; i++)
  {
    while (!digitalRead(dht11_pin));
    delayMicroseconds(30);
    if (digitalRead(dht11_pin) != 0 )
      bitSet(result, 7-i);
    while (digitalRead(dht11_pin));
  }
  return result;
}
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 02 de Setembro de 2012, 22:41
Já agora experimenta também este código para o emissor. Abre o serial monitor e vê se recebes alguma coisa. Posta aqui tudo o que receberes.
Mete o código no receptor também para ver se recebes alguma coisa (mete primeiro o do tutorial para ver se recebes).

Código: [Seleccione]
#include <VirtualWire.h> // É necessário utilizar esta biblioteca para transmitir a informação
#define dht11_pin 53 //Analog port 0 on Arduino Uno

void setup() {
  pinMode(dht11_pin, OUTPUT);
  digitalWrite(dht11_pin, HIGH);
  pinMode(6,OUTPUT);
  Serial.begin(9600);
  vw_set_tx_pin(6);
  vw_set_ptt_inverted(true);
  vw_setup(2000);
}

void loop()
{
  Serial.println("Inicio");
  byte dht11_dat[5];   
  byte dht11_in;
  byte i;
       
  digitalWrite(dht11_pin, LOW);
  delay(18);
  digitalWrite(dht11_pin, HIGH);
  delayMicroseconds(1);
  pinMode(dht11_pin, INPUT);
  delayMicroseconds(40);     
    Serial.println("Pronto");
  if (digitalRead(dht11_pin))
  {
    delay(1000);
    return;
  }
  delayMicroseconds(80);
  if (!digitalRead(dht11_pin))
  {
      return;
  }
  delayMicroseconds(80);
  Serial.println("A receber info");
  for (i=0; i<5; i++)
  {  dht11_dat[i] = read_dht11_dat();}
    Serial.println("info recebida");
  pinMode(dht11_pin, OUTPUT);
  digitalWrite(dht11_pin, HIGH);
  byte dht11_check_sum = dht11_dat[0]+dht11_dat[2];
  if(dht11_dat[4]!= dht11_check_sum)
  {
    Serial.println("Erro");
  }
  char dados[5];
  for (int b=0;b<5;b++) {
    dados[b] = dht11_dat[b];
  }
 
  vw_send((uint8_t *)dados, strlen(dados));
  vw_wait_tx();
  Serial.println("Informacao transmitida");
  delay(2000);
}

byte read_dht11_dat()
{
  byte i = 0;
  byte result=0;
  for(i=0; i< 8; i++)
  {
    while (!digitalRead(dht11_pin));
    delayMicroseconds(30);
    if (digitalRead(dht11_pin) != 0 )
      bitSet(result, 7-i);
    while (digitalRead(dht11_pin));
  }
  return result;
}

com este codigo no serial monitor do emissor recebo
INICIO
PRONTO
INICIO
PRONTO
INICIO
PRONTO

No receptor com o codigo do tutorial nao aparece nada




volto a frizar que com o codigo example que colei na pagina 2 do sensor de temperatura, aparece no serial a temp e a humidade.. logo fica descartada a hipotese de ser pinos mal ligados
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 02 de Setembro de 2012, 22:45
Experimenta agora.

Código: [Seleccione]
#include <VirtualWire.h> // É necessário utilizar esta biblioteca para transmitir a informação
#define dht11_pin 53 //Analog port 0 on Arduino Uno

void setup() {
  pinMode(dht11_pin, OUTPUT);
  digitalWrite(dht11_pin, HIGH);
  pinMode(6,OUTPUT);
  Serial.begin(9600);
  vw_set_tx_pin(6);
  vw_set_ptt_inverted(true);
  vw_setup(2000);
}

void loop()
{
  Serial.println("Inicio");
  byte dht11_dat[5];   
  byte dht11_in;
  byte i;
       
  digitalWrite(dht11_pin, LOW);
  delay(18);
  digitalWrite(dht11_pin, HIGH);
  delayMicroseconds(1);
  pinMode(dht11_pin, INPUT);
  delayMicroseconds(40);     
  if (digitalRead(dht11_pin))
  {
    delay(1000);
    return;
  }
  delayMicroseconds(80);
  if (!digitalRead(dht11_pin))
  {
      return;
  }
  delayMicroseconds(80);
  for (i=0; i<5; i++)
  {  dht11_dat[i] = read_dht11_dat();}
    Serial.println("info recebida");
  pinMode(dht11_pin, OUTPUT);
  digitalWrite(dht11_pin, HIGH);
  byte dht11_check_sum = dht11_dat[0]+dht11_dat[2];
  if(dht11_dat[4]!= dht11_check_sum)
  {
    Serial.println("Erro");
  }
  char dados[5];
  for (int b=0;b<5;b++) {
    dados[b] = dht11_dat[b];
  }
 
  vw_send((uint8_t *)dados, strlen(dados));
  vw_wait_tx();
  Serial.println("Informacao transmitida");
  delay(2000);
}

byte read_dht11_dat()
{
  byte i = 0;
  byte result=0;
  for(i=0; i< 8; i++)
  {
    while (!digitalRead(dht11_pin));
    delayMicroseconds(30);
    if (digitalRead(dht11_pin) != 0 )
      bitSet(result, 7-i);
    while (digitalRead(dht11_pin));
  }
  return result;
}
[/quote]
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 02 de Setembro de 2012, 22:53
Experimenta agora.

Código: [Seleccione]
#include <VirtualWire.h> // É necessário utilizar esta biblioteca para transmitir a informação
#define dht11_pin 53 //Analog port 0 on Arduino Uno

void setup() {
  pinMode(dht11_pin, OUTPUT);
  digitalWrite(dht11_pin, HIGH);
  pinMode(6,OUTPUT);
  Serial.begin(9600);
  vw_set_tx_pin(6);
  vw_set_ptt_inverted(true);
  vw_setup(2000);
}

void loop()
{
  Serial.println("Inicio");
  byte dht11_dat[5];   
  byte dht11_in;
  byte i;
       
  digitalWrite(dht11_pin, LOW);
  delay(18);
  digitalWrite(dht11_pin, HIGH);
  delayMicroseconds(1);
  pinMode(dht11_pin, INPUT);
  delayMicroseconds(40);     
  if (digitalRead(dht11_pin))
  {
    delay(1000);
    return;
  }
  delayMicroseconds(80);
  if (!digitalRead(dht11_pin))
  {
      return;
  }
  delayMicroseconds(80);
  for (i=0; i<5; i++)
  {  dht11_dat[i] = read_dht11_dat();}
    Serial.println("info recebida");
  pinMode(dht11_pin, OUTPUT);
  digitalWrite(dht11_pin, HIGH);
  byte dht11_check_sum = dht11_dat[0]+dht11_dat[2];
  if(dht11_dat[4]!= dht11_check_sum)
  {
    Serial.println("Erro");
  }
  char dados[5];
  for (int b=0;b<5;b++) {
    dados[b] = dht11_dat[b];
  }
 
  vw_send((uint8_t *)dados, strlen(dados));
  vw_wait_tx();
  Serial.println("Informacao transmitida");
  delay(2000);
}

byte read_dht11_dat()
{
  byte i = 0;
  byte result=0;
  for(i=0; i< 8; i++)
  {
    while (!digitalRead(dht11_pin));
    delayMicroseconds(30);
    if (digitalRead(dht11_pin) != 0 )
      bitSet(result, 7-i);
    while (digitalRead(dht11_pin));
  }
  return result;
}
[/quote]

neste so aparece INICIO
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 02 de Setembro de 2012, 22:57
Acho que o problema está nesses ifs, estão a ser verificados e o return faz com que o loop comece de início.
Experimenta sem os ifs:

Código: [Seleccione]
#include <VirtualWire.h> // É necessário utilizar esta biblioteca para transmitir a informação
#define dht11_pin 53 //Analog port 0 on Arduino Uno

void setup() {
  pinMode(dht11_pin, OUTPUT);
  digitalWrite(dht11_pin, HIGH);
  pinMode(6,OUTPUT);
  Serial.begin(9600);
  vw_set_tx_pin(6);
  vw_set_ptt_inverted(true);
  vw_setup(2000);
}

void loop()
{
  Serial.println("Inicio");
  byte dht11_dat[5];   
  byte dht11_in;
  byte i;
       
  digitalWrite(dht11_pin, LOW);
  delay(18);
  digitalWrite(dht11_pin, HIGH);
  delayMicroseconds(1);
  pinMode(dht11_pin, INPUT);
  delayMicroseconds(40);     
  delayMicroseconds(80);
  delayMicroseconds(80);
  for (i=0; i<5; i++)
  {  dht11_dat[i] = read_dht11_dat();}
    Serial.println("info recebida");
  pinMode(dht11_pin, OUTPUT);
  digitalWrite(dht11_pin, HIGH);
  byte dht11_check_sum = dht11_dat[0]+dht11_dat[2];
  if(dht11_dat[4]!= dht11_check_sum)
  {
    Serial.println("Erro");
  }
  char dados[5];
  for (int b=0;b<5;b++) {
    dados[b] = dht11_dat[b];
  }
 
  vw_send((uint8_t *)dados, strlen(dados));
  vw_wait_tx();
  Serial.println("Informacao transmitida");
  delay(2000);
}

byte read_dht11_dat()
{
  byte i = 0;
  byte result=0;
  for(i=0; i< 8; i++)
  {
    while (!digitalRead(dht11_pin));
    delayMicroseconds(30);
    if (digitalRead(dht11_pin) != 0 )
      bitSet(result, 7-i);
    while (digitalRead(dht11_pin));
  }
  return result;
}
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 02 de Setembro de 2012, 23:01
Acho que o problema está nesses ifs, estão a ser verificados e o return faz com que o loop comece de início.
Experimenta sem os ifs:

Código: [Seleccione]
#include <VirtualWire.h> // É necessário utilizar esta biblioteca para transmitir a informação
#define dht11_pin 53 //Analog port 0 on Arduino Uno

void setup() {
  pinMode(dht11_pin, OUTPUT);
  digitalWrite(dht11_pin, HIGH);
  pinMode(6,OUTPUT);
  Serial.begin(9600);
  vw_set_tx_pin(6);
  vw_set_ptt_inverted(true);
  vw_setup(2000);
}

void loop()
{
  Serial.println("Inicio");
  byte dht11_dat[5];   
  byte dht11_in;
  byte i;
       
  digitalWrite(dht11_pin, LOW);
  delay(18);
  digitalWrite(dht11_pin, HIGH);
  delayMicroseconds(1);
  pinMode(dht11_pin, INPUT);
  delayMicroseconds(40);     
  delayMicroseconds(80);
  delayMicroseconds(80);
  for (i=0; i<5; i++)
  {  dht11_dat[i] = read_dht11_dat();}
    Serial.println("info recebida");
  pinMode(dht11_pin, OUTPUT);
  digitalWrite(dht11_pin, HIGH);
  byte dht11_check_sum = dht11_dat[0]+dht11_dat[2];
  if(dht11_dat[4]!= dht11_check_sum)
  {
    Serial.println("Erro");
  }
  char dados[5];
  for (int b=0;b<5;b++) {
    dados[b] = dht11_dat[b];
  }
 
  vw_send((uint8_t *)dados, strlen(dados));
  vw_wait_tx();
  Serial.println("Informacao transmitida");
  delay(2000);
}

byte read_dht11_dat()
{
  byte i = 0;
  byte result=0;
  for(i=0; i< 8; i++)
  {
    while (!digitalRead(dht11_pin));
    delayMicroseconds(30);
    if (digitalRead(dht11_pin) != 0 )
      bitSet(result, 7-i);
    while (digitalRead(dht11_pin));
  }
  return result;
}

AGORA no LCD na primeira linha com o teu codigo de tutorial receptor

aparece na primeira linha humi 30%
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 02 de Setembro de 2012, 23:06
E o que é que aparece na temperatura?
Experimenta então este para o transmissor e abre o serial monitor do mesmo para ver se recebes a temperatura e a humidade:

Código: [Seleccione]
#include <VirtualWire.h> // É necessário utilizar esta biblioteca para transmitir a informação
#define dht11_pin 53 //Analog port 0 on Arduino Uno

void setup() {
  pinMode(dht11_pin, OUTPUT);
  digitalWrite(dht11_pin, HIGH);
  pinMode(6,OUTPUT);
  Serial.begin(9600);
  vw_set_tx_pin(6);
  vw_set_ptt_inverted(true);
  vw_setup(2000);
}

void loop()
{
  Serial.println("Inicio");
  byte dht11_dat[5];   
  byte dht11_in;
  byte i;
       
  digitalWrite(dht11_pin, LOW);
  delay(18);
  digitalWrite(dht11_pin, HIGH);
  delayMicroseconds(1);
  pinMode(dht11_pin, INPUT);
  delayMicroseconds(40);     
  delayMicroseconds(80);
  delayMicroseconds(80);
  for (i=0; i<5; i++)
  {  dht11_dat[i] = read_dht11_dat();}
    Serial.println("info recebida");
  pinMode(dht11_pin, OUTPUT);
  digitalWrite(dht11_pin, HIGH);
  byte dht11_check_sum = dht11_dat[0]+dht11_dat[2];
  if(dht11_dat[4]!= dht11_check_sum)
  {
    Serial.println("Erro");
  }
  char dados[5];
  for (int b=0;b<5;b++) {
    dados[b] = dht11_dat[b];
  }
 
  vw_send((uint8_t *)dados, strlen(dados));
  vw_wait_tx();
  Serial.println("Informacao transmitida");
  Serial.println("Temp: " + String(dht11_dat[0]) + "; Hum: " + String(dht11_dat[2]));
  delay(2000);
}

byte read_dht11_dat()
{
  byte i = 0;
  byte result=0;
  for(i=0; i< 8; i++)
  {
    while (!digitalRead(dht11_pin));
    delayMicroseconds(30);
    if (digitalRead(dht11_pin) != 0 )
      bitSet(result, 7-i);
    while (digitalRead(dht11_pin));
  }
  return result;
}
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 02 de Setembro de 2012, 23:15
E o que é que aparece na temperatura?
Experimenta então este para o transmissor e abre o serial monitor do mesmo para ver se recebes a temperatura e a humidade:

Código: [Seleccione]
#include <VirtualWire.h> // É necessário utilizar esta biblioteca para transmitir a informação
#define dht11_pin 53 //Analog port 0 on Arduino Uno

void setup() {
  pinMode(dht11_pin, OUTPUT);
  digitalWrite(dht11_pin, HIGH);
  pinMode(6,OUTPUT);
  Serial.begin(9600);
  vw_set_tx_pin(6);
  vw_set_ptt_inverted(true);
  vw_setup(2000);
}

void loop()
{
  Serial.println("Inicio");
  byte dht11_dat[5];   
  byte dht11_in;
  byte i;
       
  digitalWrite(dht11_pin, LOW);
  delay(18);
  digitalWrite(dht11_pin, HIGH);
  delayMicroseconds(1);
  pinMode(dht11_pin, INPUT);
  delayMicroseconds(40);     
  delayMicroseconds(80);
  delayMicroseconds(80);
  for (i=0; i<5; i++)
  {  dht11_dat[i] = read_dht11_dat();}
    Serial.println("info recebida");
  pinMode(dht11_pin, OUTPUT);
  digitalWrite(dht11_pin, HIGH);
  byte dht11_check_sum = dht11_dat[0]+dht11_dat[2];
  if(dht11_dat[4]!= dht11_check_sum)
  {
    Serial.println("Erro");
  }
  char dados[5];
  for (int b=0;b<5;b++) {
    dados[b] = dht11_dat[b];
  }
 
  vw_send((uint8_t *)dados, strlen(dados));
  vw_wait_tx();
  Serial.println("Informacao transmitida");
  Serial.println("Temp: " + String(dht11_dat[0]) + "; Hum: " + String(dht11_dat[2]));
  delay(2000);
}

byte read_dht11_dat()
{
  byte i = 0;
  byte result=0;
  for(i=0; i< 8; i++)
  {
    while (!digitalRead(dht11_pin));
    delayMicroseconds(30);
    if (digitalRead(dht11_pin) != 0 )
      bitSet(result, 7-i);
    while (digitalRead(dht11_pin));
  }
  return result;
}

ora bem no codigo emissor nesse aparece isto no serial:

Inicio
info recebida
Informacao transmitida
Temp: ; Hum: 
Inicio
info recebida
Informacao transmitida
Temp: ; Hum: 
Inicio


no codigo receptor, abocado enganei me nao tinha o teu a correr tinha ESTE e tenho este de momento

Código: [Seleccione]
#include <VirtualWire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int ledPin = 10;

void setup()
{
  pinMode(ledPin, OUTPUT);
    lcd.begin(16, 2);
    Serial.begin(9600);
    pinMode(9,INPUT);
    vw_set_rx_pin(9); // Pino de recepção
    vw_set_ptt_inverted(true);
    vw_setup(2000);
    vw_rx_start(); // Necessário para começar a receber informação
}

void loop()
{
  analogWrite(ledPin, 600);
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;

    if (vw_get_message(buf, &buflen)) // Caso chegue alguma mensagem ao receptor
    {
int i;
        digitalWrite(13, true); // Esta parte é opcional, eu utilizei para testar e ver se estava a receber alguma coisa
for (i = 0; i < buflen; i++) // Basicamente isto vai repetir para cada byte recebido e vai guardar a informação numa array de caracteres
{
          if (i==0){
             lcd.setCursor(0,0);
             lcd.print("Humi ");
             lcd.print(buf[i], DEC);
             lcd.print(" %");
          }
          if (i==2){
             lcd.setCursor(0,1);
             lcd.print("Temp ");
             lcd.print(buf[i], DEC);
             lcd.print(" C");
  }
}
            Serial.println(String("Humidade: " + String(buf[0],DEC) + "%; Temperatura: " + String(buf[2],DEC) + "ºC"));
            digitalWrite(13, false);
    }
}

aparece isto no serial monitor receptor:
Humidade: 29%; Temperatura: 0ºC
Humidade: 28%; Temperatura: 0ºC
Humidade: 27%; Temperatura: 0ºC
Humidade: 27%; Temperatura: 0ºC


e caracteres malucos no lcd e depois desaparecem
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 02 de Setembro de 2012, 23:34
Experimenta este código. Utiliza uma biblioteca que anexei. Faz o download e mete na pasta das bibliotecas.
Abre dps o serial monitor e diz o que recebes. Usa o código no arduino que tem o sensor.

Código: [Seleccione]
#include <dht11.h>
 
dht11 DHT11;
 
#define DHT11PIN 2
 
void setup()
 {
   Serial.begin(115200);
   Serial.println("DHT11 TEST PROGRAM ");
   Serial.print("LIBRARY VERSION: ");
   Serial.println(DHT11LIB_VERSION);
   Serial.println();
 }
 
void loop()
 {
   Serial.println("\n");
 
  int chk = DHT11.read(DHT11PIN);
 
  Serial.print("Read sensor: ");
   switch (chk)
   {
     case DHTLIB_OK:
                Serial.println("OK");
                break;
     case DHTLIB_ERROR_CHECKSUM:
                Serial.println("Checksum error");
                break;
     case DHTLIB_ERROR_TIMEOUT:
                Serial.println("Time out error");
                break;
     default:
                Serial.println("Unknown error");
                break;
   }
 
  Serial.print("Humidity (%): ");
   Serial.println((float)DHT11.humidity, 2);
 
  Serial.print("Temperature (oC): ");
   Serial.println((float)DHT11.temperature, 2);
   
  delay(2000);
 }
 
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 02 de Setembro de 2012, 23:39
Experimenta este código. Utiliza uma biblioteca que anexei. Faz o download e mete na pasta das bibliotecas.
Abre dps o serial monitor e diz o que recebes. Usa o código no arduino que tem o sensor.

Código: [Seleccione]
#include <dht11.h>
 
dht11 DHT11;
 
#define DHT11PIN 2
 
void setup()
 {
   Serial.begin(115200);
   Serial.println("DHT11 TEST PROGRAM ");
   Serial.print("LIBRARY VERSION: ");
   Serial.println(DHT11LIB_VERSION);
   Serial.println();
 }
 
void loop()
 {
   Serial.println("\n");
 
  int chk = DHT11.read(DHT11PIN);
 
  Serial.print("Read sensor: ");
   switch (chk)
   {
     case DHTLIB_OK:
                Serial.println("OK");
                break;
     case DHTLIB_ERROR_CHECKSUM:
                Serial.println("Checksum error");
                break;
     case DHTLIB_ERROR_TIMEOUT:
                Serial.println("Time out error");
                break;
     default:
                Serial.println("Unknown error");
                break;
   }
 
  Serial.print("Humidity (%): ");
   Serial.println((float)DHT11.humidity, 2);
 
  Serial.print("Temperature (oC): ");
   Serial.println((float)DHT11.temperature, 2);
   
  delay(2000);
 }
 


Read sensor: OK
Humidity (%): 30.00
Temperature (oC): 30.00


Read sensor: OK
Humidity (%): 30.00
Temperature (oC): 30.00


Read sensor: OK
Humidity (%): 30.00
Temperature (oC): 30.00


Read sensor: OK
Humidity (%): 30.00
Temperature (oC): 30.00


Read sensor: OK
Humidity (%): 30.00
Temperature (oC): 30.00



Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 02 de Setembro de 2012, 23:41
Ligaste em que pino a saida do sensor? Tens de ligar ao pino 2, ou então muda o pino no código para o pino que quiseres.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 02 de Setembro de 2012, 23:43
foi o que fiz mudei para o pin que tenho o DATA do dht11 ao arduino.

ta a ler bem
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 02 de Setembro de 2012, 23:47
Experimenta variar a temperatura, ou a humidade, só para ter a certeza que não há nenhum erro e os valores que está a mostrar são os reais.

Se estiver tudo ok já te envio outro código.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 02 de Setembro de 2012, 23:50
Experimenta variar a temperatura, ou a humidade, só para ter a certeza que não há nenhum erro e os valores que está a mostrar são os reais.

Se estiver tudo ok já te envio outro código.

sim coloquei a mao em cima apertei o sensor aumentou os valores
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 02 de Setembro de 2012, 23:57
Ok, então experimenta este código:
Código: [Seleccione]
#include <dht11.h>
#include <VirtualWire.h>
 
dht11 DHT11;
 
#define DHT11PIN 2
 
void setup()
 {
   Serial.begin(115200);
   vw_set_tx_pin(6);
   vw_set_ptt_inverted(true);
   vw_setup(2000);
 }
 
void loop()
 {
   Serial.println("\n");
 
  int chk = DHT11.read(DHT11PIN);
 
  Serial.print("Read sensor: ");
   switch (chk)
   {
     case DHTLIB_OK:
                Serial.println("OK");
                break;
     case DHTLIB_ERROR_CHECKSUM:
                Serial.println("Checksum error");
                break;
     case DHTLIB_ERROR_TIMEOUT:
                Serial.println("Time out error");
                break;
     default:
                Serial.println("Unknown error");
                break;
   }
 
  Serial.print("Humidity (%): ");
   Serial.println(DHT11.humidity);
 
  Serial.print("Temperature (oC): ");
   Serial.println(DHT11.temperature);
   char data[1];
   data[0] = DHT11.temperature;
   data[1] = DHT11.humidity;
   vw_send((uint8_t *)data, strlen(data));
   vw_wait_tx();
  delay(2000);
 }

Vou escrever o código para o receptor, mas entretanto podes experimentar com o do tutorial. O do lcd não vai funcionar ainda, não vale a pena tentares com esse. Tenta com o do tutorial, mas vais receber caracteres estranhos. Se receberes é bom sinal.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 03 de Setembro de 2012, 00:09
Ok, então experimenta este código:
Código: [Seleccione]
#include <dht11.h>
#include <VirtualWire.h>
 
dht11 DHT11;
 
#define DHT11PIN 2
 
void setup()
 {
   Serial.begin(115200);
   vw_set_tx_pin(6);
   vw_set_ptt_inverted(true);
   vw_setup(2000);
 }
 
void loop()
 {
   Serial.println("\n");
 
  int chk = DHT11.read(DHT11PIN);
 
  Serial.print("Read sensor: ");
   switch (chk)
   {
     case DHTLIB_OK:
                Serial.println("OK");
                break;
     case DHTLIB_ERROR_CHECKSUM:
                Serial.println("Checksum error");
                break;
     case DHTLIB_ERROR_TIMEOUT:
                Serial.println("Time out error");
                break;
     default:
                Serial.println("Unknown error");
                break;
   }
 
  Serial.print("Humidity (%): ");
   Serial.println(DHT11.humidity);
 
  Serial.print("Temperature (oC): ");
   Serial.println(DHT11.temperature);
   char data[1];
   data[0] = DHT11.temperature;
   data[1] = DHT11.humidity;
   vw_send((uint8_t *)data, strlen(data));
   vw_wait_tx();
  delay(2000);
 }

Vou escrever o código para o receptor, mas entretanto podes experimentar com o do tutorial. O do lcd não vai funcionar ainda, não vale a pena tentares com esse. Tenta com o do tutorial, mas vais receber caracteres estranhos. Se receberes é bom sinal.

bom com este codigo de emissor recebo:


Read sensor: OK
Humidity (%): 28
Temperature (oC): 28


Read sensor: OK
Humidity (%): 27
Temperature (oC): 29


Read sensor: OK
Humidity (%): 27
Temperature (oC): 29


Read sensor: OK
Humidity (%): 27
Temperature (oC): 29


mas com o teu codigo de receptor:

Código: [Seleccione]
int ledPin = 10; // pino a substituir o potenciometro para contraste
   
   
    #include <VirtualWire.h>

char info[30];

void setup()
{
   pinMode(ledPin, OUTPUT);
    Serial.begin(9600);
    pinMode(7,INPUT);
    vw_set_rx_pin(7); // Pino de recepção
    vw_set_ptt_inverted(true);
    vw_setup(2000);
    vw_rx_start(); // Necessário para começar a receber informação
}

void loop()
{
 
  analogWrite(ledPin, 600);
   
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;

    if (vw_get_message(buf, &buflen)) // Caso chegue alguma mensagem ao receptor
    {
int i;
        digitalWrite(13, true); // Esta parte é opcional, eu utilizei para testar e ver se estava a receber alguma coisa
for (i = 0; i < buflen; i++) // Basicamente isto vai repetir para cada byte recebido e vai guardar a informação numa array de caracteres
{
          info[i]=buf[i];
}
Serial.println(String(info)); // Enviamos pela porta Serial a informação recebida
        memset( &info, 0, sizeof(info) ); // Fazemos reset à variável info para utilizar uma outra vez
        digitalWrite(13, false);
    }
}
nao recebo nada no serial monitor..

atencao que o bitrate do emissor ta muito alto nao sei se é mesmo assim se nao
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 03 de Setembro de 2012, 00:20
Alto? O bitrate está a 2000, esses módulos chegam aos 4800bps, não está alto. Tem de estar igual no receptor e no transmissor.

Provavelmente estás a receber, mas caracteres em branco.

Experimenta este código no receptor. Depois abre o serial monitor e posta o que recebeste.

Código: [Seleccione]
#include <VirtualWire.h>
void setup()
{
    Serial.begin(9600);
    pinMode(7,INPUT);
    vw_set_rx_pin(7);
    vw_set_ptt_inverted(true);
    vw_setup(2000);
    vw_rx_start();
}

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

    if (vw_get_message(buf, &buflen))
    {
        Serial.print("Temperatura: ");
        Serial.print(buf[0]);
        Serial.print("; Humidade: ");
        Serial.println(buf[1]);
    }
}
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 03 de Setembro de 2012, 00:24
Alto? O bitrate está a 2000, esses módulos chegam aos 4800bps, não está alto. Tem de estar igual no receptor e no transmissor.

Provavelmente estás a receber, mas caracteres em branco.

Experimenta este código no receptor. Depois abre o serial monitor e posta o que recebeste.

Código: [Seleccione]
#include <VirtualWire.h>
void setup()
{
    Serial.begin(9600);
    pinMode(7,INPUT);
    vw_set_rx_pin(7);
    vw_set_ptt_inverted(true);
    vw_setup(2000);
    vw_rx_start();
}

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

    if (vw_get_message(buf, &buflen))
    {
        Serial.print("Temperatura: ");
        Serial.print(buf[0]);
        Serial.print("; Humidade: ");
        Serial.println(buf[1]);
    }
}

ok alterei ai nesse codigo o bitrate para ficar igual ao do emissor
e aparece isto no serial:

Temperatura: ; Humidade: 
Temperatura: ; Humidade: 
Temperatura: ; Humidade: 
Temperatura: ; Humidade: 
Temperatura: ; Humidade: 
Temperatura: ; Humidade: 


ou seja a tem e hum aparecem em branco

esta a:
  Serial.begin(115200 no emissor
e a   Serial.begin(115200
no receptor
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 03 de Setembro de 2012, 00:38
Ah, estavas a falar do bitrate da ligação Serial. Podes diminuir se quiseres, não tem de estar igual. Pensei que estavas a falar do bitrate dos módulos rf. Com que intervalo de tempo é que recebes isso no receptor? Tens o receptor ligado ao pino 7 como está definido no código? Experimenta assim, mas acho que não vai mudar nada:

Código: [Seleccione]
#include <VirtualWire.h>
void setup()
{
    Serial.begin(9600);
    pinMode(7,INPUT);
    vw_set_rx_pin(7);
    vw_set_ptt_inverted(true);
    vw_setup(2000);
    vw_rx_start();
}

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

    if (vw_get_message(buf, &buflen))
    {
        byte info[1];
           for (int i=0; i<=1;i++) {
              info[i] = buf[i];
           }
        Serial.print("Temperatura: ");
        Serial.print(info[0]);
        Serial.print("; Humidade: ");
        Serial.println(info[1]);
    }
}
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 03 de Setembro de 2012, 00:45
Ah, estavas a falar do bitrate da ligação Serial. Podes diminuir se quiseres, não tem de estar igual. Pensei que estavas a falar do bitrate dos módulos rf. Com que intervalo de tempo é que recebes isso no receptor? Tens o receptor ligado ao pino 7 como está definido no código? Experimenta assim, mas acho que não vai mudar nada:

Código: [Seleccione]
#include <VirtualWire.h>
void setup()
{
    Serial.begin(9600);
    pinMode(7,INPUT);
    vw_set_rx_pin(7);
    vw_set_ptt_inverted(true);
    vw_setup(2000);
    vw_rx_start();
}

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

    if (vw_get_message(buf, &buflen))
    {
        byte info[1];
           for (int i=0; i<=1;i++) {
              info[i] = buf[i];
           }
        Serial.print("Temperatura: ");
        Serial.print(info[0]);
        Serial.print("; Humidade: ");
        Serial.println(info[1]);
    }
}

recebo no serial monitor do receptor de dois em dois segundos..

Temperatura: ; Humidade: 
Temperatura: ; Humidade: 
Temperatura: ; Humidade: 
Temperatura: ; Humidade: 
Temperatura: ; Humidade: 
Temperatura: ; Humidade: 
Temperatura: ; Humidade: 
Temperatura: ; Humidade: 
Temperatura: ; Humidade: 
Temperatura: ; Humidade: 
Temperatura: ; Humidade: 
Temperatura: ; Humidade: 
Temperatura: ; Humidade: 
Temperatura: ; Humidade: 
Temperatura: ; Humidade: 
Temperatura: ; Humidade: 
Temperatura: ; Humidade: 


em relacao ao pino nao tenho no 7 tenho no 9 mas eu alterei no codigo
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 03 de Setembro de 2012, 00:50
Sendo assim o problema não está no receptor, está na conversão de int para char...
Experimenta este código no transmissor e diz o que recebes no serial monitor
Código: [Seleccione]
#include <dht11.h>
#include <VirtualWire.h>
 
dht11 DHT11;
 
#define DHT11PIN 2
 
void setup()
 {
   Serial.begin(115200);
   vw_set_tx_pin(6);
   vw_set_ptt_inverted(true);
   vw_setup(2000);
 }
 
void loop()
 {
   Serial.println("\n");
 
  int chk = DHT11.read(DHT11PIN);
 
  Serial.print("Read sensor: ");
   switch (chk)
   {
     case DHTLIB_OK:
                Serial.println("OK");
                break;
     case DHTLIB_ERROR_CHECKSUM:
                Serial.println("Checksum error");
                break;
     case DHTLIB_ERROR_TIMEOUT:
                Serial.println("Time out error");
                break;
     default:
                Serial.println("Unknown error");
                break;
   }
 char data[2];
   data[0] = DHT11.temperature;
   data[1] = DHT11.humidity;
  Serial.print("Humidity (%): ");
   Serial.println(data[1]+80);
 
  Serial.print("Temperature (oC): ");
   Serial.println(data[0]+80);
      vw_send((uint8_t *)data, strlen(data));
   vw_wait_tx();
  delay(2000);
 }
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 03 de Setembro de 2012, 00:55
Sendo assim o problema não está no receptor, está na conversão de int para char...
Experimenta este código no transmissor e diz o que recebes no serial monitor
Código: [Seleccione]
#include <dht11.h>
#include <VirtualWire.h>
 
dht11 DHT11;
 
#define DHT11PIN 2
 
void setup()
 {
   Serial.begin(115200);
   vw_set_tx_pin(6);
   vw_set_ptt_inverted(true);
   vw_setup(2000);
 }
 
void loop()
 {
   Serial.println("\n");
 
  int chk = DHT11.read(DHT11PIN);
 
  Serial.print("Read sensor: ");
   switch (chk)
   {
     case DHTLIB_OK:
                Serial.println("OK");
                break;
     case DHTLIB_ERROR_CHECKSUM:
                Serial.println("Checksum error");
                break;
     case DHTLIB_ERROR_TIMEOUT:
                Serial.println("Time out error");
                break;
     default:
                Serial.println("Unknown error");
                break;
   }
 char data[2];
   data[0] = DHT11.temperature;
   data[1] = DHT11.humidity;
  Serial.print("Humidity (%): ");
   Serial.println(data[1]+80);
 
  Serial.print("Temperature (oC): ");
   Serial.println(data[0]+80);
      vw_send((uint8_t *)data, strlen(data));
   vw_wait_tx();
  delay(2000);
 }

assim da valores errados no emissor:



Read sensor: OK
Humidity (%): 101
Temperature (oC): 107


Read sensor: OK
Humidity (%): 101
Temperature (oC): 107


Read sensor: OK
Humidity (%): 101
Temperature (oC): 107

e no receptor aparece a mesma:

Temperatura: ; Humidade: 
Temperatura: ; Humidade: 
Temperatura: ; Humidade: 


:(

vou me deitar que amanha tenho que acordar cedo no entanto o que postares aqui depois testo.
um abraço ate amanha
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 03 de Setembro de 2012, 01:09
Pois, era isso que queria ver... O erro não está ai, o erro está noutro lado... Vamos lá ver se é desta... Para o receptor experimenta o primeiro código que postei que no serial monitor aparecia a temperatura e a humidade em branco. Experimenta este código para o transmissor:

Código: [Seleccione]
#include <dht11.h>
#include <VirtualWire.h>
 
dht11 DHT11;
 
#define DHT11PIN 2
 
void setup()
 {
   Serial.begin(115200);
   pinMode(6,OUTPUT);
   vw_set_tx_pin(6);
   vw_set_ptt_inverted(true);
   vw_setup(2000);
 }
 
void loop()
 {
   Serial.println("\n");
 
  int chk = DHT11.read(DHT11PIN);
 
  Serial.print("Read sensor: ");
   switch (chk)
   {
     case DHTLIB_OK:
                Serial.println("OK");
                break;
     case DHTLIB_ERROR_CHECKSUM:
                Serial.println("Checksum error");
                break;
     case DHTLIB_ERROR_TIMEOUT:
                Serial.println("Time out error");
                break;
     default:
                Serial.println("Unknown error");
                break;
   }
 char data[2];
   data[0] = DHT11.temperature;
   data[1] = DHT11.humidity;
  Serial.print("Humidity (%): ");
   Serial.println(data[1]+0);
 
  Serial.print("Temperature (oC): ");
   Serial.println(data[0]+0);
   const char *msg = data;
      vw_send((uint8_t *)msg, strlen(msg));
   vw_wait_tx();
  delay(2000);
 }


Até amanhã então, abraço.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 03 de Setembro de 2012, 17:47
Pois, era isso que queria ver... O erro não está ai, o erro está noutro lado... Vamos lá ver se é desta... Para o receptor experimenta o primeiro código que postei que no serial monitor aparecia a temperatura e a humidade em branco. Experimenta este código para o transmissor:

Código: [Seleccione]
#include <dht11.h>
#include <VirtualWire.h>
 
dht11 DHT11;
 
#define DHT11PIN 2
 
void setup()
 {
   Serial.begin(115200);
   pinMode(6,OUTPUT);
   vw_set_tx_pin(6);
   vw_set_ptt_inverted(true);
   vw_setup(2000);
 }
 
void loop()
 {
   Serial.println("\n");
 
  int chk = DHT11.read(DHT11PIN);
 
  Serial.print("Read sensor: ");
   switch (chk)
   {
     case DHTLIB_OK:
                Serial.println("OK");
                break;
     case DHTLIB_ERROR_CHECKSUM:
                Serial.println("Checksum error");
                break;
     case DHTLIB_ERROR_TIMEOUT:
                Serial.println("Time out error");
                break;
     default:
                Serial.println("Unknown error");
                break;
   }
 char data[2];
   data[0] = DHT11.temperature;
   data[1] = DHT11.humidity;
  Serial.print("Humidity (%): ");
   Serial.println(data[1]+0);
 
  Serial.print("Temperature (oC): ");
   Serial.println(data[0]+0);
   const char *msg = data;
      vw_send((uint8_t *)msg, strlen(msg));
   vw_wait_tx();
  delay(2000);
 }


Até amanhã então, abraço.


bom com esse codigo parece que ja estamos mais perto ;)
ora aparece isto no serial monitor do emissor:


Read sensor: OK
Humidity (%): 24
Temperature (oC): 29


Read sensor: OK
Humidity (%): 24
Temperature (oC): 29


Read sensor: OK
Humidity (%): 24
Temperature (oC): 29


Read sensor: OK
Humidity (%): 24
Temperature (oC): 29


Read sensor: OK
Humidity (%): 23
Temperature (oC): 29

mas os valores sao errados

agora com este codigo no receptor :
Código: [Seleccione]
#include <VirtualWire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int ledPin = 10;

void setup()
{
  pinMode(ledPin, OUTPUT);
    lcd.begin(16, 2);
    Serial.begin(115200);
    pinMode(9,INPUT);
    vw_set_rx_pin(9); // Pino de recepção
    vw_set_ptt_inverted(true);
    vw_setup(2000);
    vw_rx_start(); // Necessário para começar a receber informação
}

void loop()
{
  analogWrite(ledPin, 600);
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;

    if (vw_get_message(buf, &buflen)) // Caso chegue alguma mensagem ao receptor
    {
int i;
        digitalWrite(13, true); // Esta parte é opcional, eu utilizei para testar e ver se estava a receber alguma coisa
for (i = 0; i < buflen; i++) // Basicamente isto vai repetir para cada byte recebido e vai guardar a informação numa array de caracteres
{
          if (i==0){
             lcd.setCursor(0,0);
             lcd.print("Humi ");
             lcd.print(buf[i], DEC);
             lcd.print(" %");
          }
          if (i==2){
             lcd.setCursor(0,1);
             lcd.print("Temp ");
             lcd.print(buf[i], DEC);
             lcd.print(" C");
  }
}
            Serial.println(String("Humidade: " + String(buf[0],DEC) + "%; Temperatura: " + String(buf[2],DEC) + "ºC"));
            digitalWrite(13, false);
    }
    }

aparece isto no serial monitor:
Humidade: 29%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 27%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 27%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 93%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 27%; Temperatura: 194ºC
Humidade: 27%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 27%; Temperatura: 194ºC
Humidade: 27%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 27%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC
Humidade: 29%; Temperatura: 194ºC


e no lcd
aparece na primeira linha:
humi 27%
temp 194 C

mas passado uns segundos o lcd começa a aparecer caracteres malucos
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 04 de Setembro de 2012, 00:42
Boas, desculpa só responder a esta hora, mas tive uns problemas hoje e só agora é que cheguei a casa. Antes de mais, porque é que os valores estão incorretos?
O código está a funcionar, mas não era esse o código que queria que experimentasses para o receptor, era outro. Já posto.

É só acrescentar a esse código do receptor o código para escrever os valores no lcd.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 04 de Setembro de 2012, 00:45
Código: [Seleccione]
#include <VirtualWire.h>
void setup()
{
    Serial.begin(9600);
    pinMode(7,INPUT);
    vw_set_rx_pin(7);
    vw_set_ptt_inverted(true);
    vw_setup(2000);
    vw_rx_start();
}

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

    if (vw_get_message(buf, &buflen))
    {
        Serial.print("Temperatura: ");
        Serial.print(buf[0]);
        Serial.print("; Humidade: ");
        Serial.println(buf[1]);
    }
}

Usa este para o receptor. Os valores que te apareciam de humidade no outro eram de temperatura, daí teres dito que não eram iguais. Este é o código correcto. Experimenta. Amanhã adiciono o que falta no código do receptor, hoje não posso, estou bastante cansado.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 04 de Setembro de 2012, 00:52
Código: [Seleccione]
#include <VirtualWire.h>
void setup()
{
    Serial.begin(9600);
    pinMode(7,INPUT);
    vw_set_rx_pin(7);
    vw_set_ptt_inverted(true);
    vw_setup(2000);
    vw_rx_start();
}

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

    if (vw_get_message(buf, &buflen))
    {
        Serial.print("Temperatura: ");
        Serial.print(buf[0]);
        Serial.print("; Humidade: ");
        Serial.println(buf[1]);
    }
}

Usa este para o receptor. Os valores que te apareciam de humidade no outro eram de temperatura, daí teres dito que não eram iguais. Este é o código correcto. Experimenta. Amanhã adiciono o que falta no código do receptor, hoje não posso, estou bastante cansado.

com esse codigo aparece me assim no serial monitor do receptor:


Temperatura: ; Humidade: 
Temperatura: ; Humidade: 

Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 04 de Setembro de 2012, 00:59
Não percebo porque é que não está a dar, devia funcionar. Sendo assim experimenta este:

Código: [Seleccione]
#include <VirtualWire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int ledPin = 10;

void setup()
{
  pinMode(ledPin, OUTPUT);
    lcd.begin(16, 2);
    Serial.begin(115200);
    pinMode(9,INPUT);
    vw_set_rx_pin(9); // Pino de recepção
    vw_set_ptt_inverted(true);
    vw_setup(2000);
    vw_rx_start(); // Necessário para começar a receber informação
}

void loop()
{
  analogWrite(ledPin, 600);
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;

    if (vw_get_message(buf, &buflen)) // Caso chegue alguma mensagem ao receptor
    {
int i;
        digitalWrite(13, true); // Esta parte é opcional, eu utilizei para testar e ver se estava a receber alguma coisa
for (i = 0; i < buflen; i++) // Basicamente isto vai repetir para cada byte recebido e vai guardar a informação numa array de caracteres
{
          if (i==1){
             lcd.setCursor(0,0);
             lcd.print("Humi ");
             lcd.print(buf[i], DEC);
             lcd.print(" %");
          }
          if (i==0){
             lcd.setCursor(0,1);
             lcd.print("Temp ");
             lcd.print(buf[i], DEC);
             lcd.print(" C");
  }
}
            Serial.println(String("Humidade: " + String(buf[1],DEC) + "%; Temperatura: " + String(buf[0],DEC) + "ºC"));
            digitalWrite(13, false);
    }
    }
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 04 de Setembro de 2012, 01:04
Não percebo porque é que não está a dar, devia funcionar. Sendo assim experimenta este:

Código: [Seleccione]
#include <VirtualWire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int ledPin = 10;

void setup()
{
  pinMode(ledPin, OUTPUT);
    lcd.begin(16, 2);
    Serial.begin(115200);
    pinMode(9,INPUT);
    vw_set_rx_pin(9); // Pino de recepção
    vw_set_ptt_inverted(true);
    vw_setup(2000);
    vw_rx_start(); // Necessário para começar a receber informação
}

void loop()
{
  analogWrite(ledPin, 600);
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;

    if (vw_get_message(buf, &buflen)) // Caso chegue alguma mensagem ao receptor
    {
int i;
        digitalWrite(13, true); // Esta parte é opcional, eu utilizei para testar e ver se estava a receber alguma coisa
for (i = 0; i < buflen; i++) // Basicamente isto vai repetir para cada byte recebido e vai guardar a informação numa array de caracteres
{
          if (i==1){
             lcd.setCursor(0,0);
             lcd.print("Humi ");
             lcd.print(buf[i], DEC);
             lcd.print(" %");
          }
          if (i==0){
             lcd.setCursor(0,1);
             lcd.print("Temp ");
             lcd.print(buf[i], DEC);
             lcd.print(" C");
  }
}
            Serial.println(String("Humidade: " + String(buf[1],DEC) + "%; Temperatura: " + String(buf[0],DEC) + "ºC"));
            digitalWrite(13, false);
    }
    }

neste caso aparece assim no serial

Humidade: 32%; Temperatura: 30ºC
Humidade: 32%; Temperatura: 30ºC
Humidade: 32%; Temperatura: 30ºC
Humidade: 32%; Temperatura: 30ºC
Humidade: 32%; Temperatura: 30ºC
Humidade: 32%; Temperatura: 30ºC
Humidade: 32%; Temperatura: 30ºC
Humidade: 32%; Temperatura: 30ºC
Humidade: 32%; Temperatura: 30ºC
Humidade: 32%; Temperatura: 30ºC
Humidade: 32%; Temperatura: 30ºC
Humidade: 32%; Temperatura: 30ºC
Humidade: 32%; Temperatura: 30ºC
Humidade: 32%; Temperatura: 30ºC
Humidade: 32%; Temperatura: 30ºC
Humidade: 32%; Temperatura: 30ºC
Humidade: 32%; Temperatura: 30ºC

no lcd aparece
humi 32%
temp 30 c

mas passado uns segundos comecam a aparecer caracteres malucos no lcd e fica branco depois aparece novamente caracteres malucos..

nao sei se sera do sinal % e graus

de qualquer das formas, amanha a gente ve isso com mais calma , pois agora tambem me vou deitar, e tu tambem que tas cansado.

mas estamos perto.. acho
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 04 de Setembro de 2012, 01:08
Se puderes depois posta um vídeo ou uma foto do lcd quando mostra os caracteres estranhos.

Até amanhã.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: Pedrock em 04 de Setembro de 2012, 02:47
Não sei se será disto, mas tem uma coisa mal:
analogWrite(ledPin, 600);
Apaga-se esta linha.

E podes tentar também substituir:
Serial.println(String("Humidade: " + String(buf[1],DEC) + "%; Temperatura: " + String(buf[0],DEC) + "ºC"));
Por:
Serial.println(String("Humidade: " + String(buf[1],DEC) + "; Temperatura: " + String(buf[0],DEC) + "C"));
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 04 de Setembro de 2012, 07:06
Não sei se será disto, mas tem uma coisa mal:
analogWrite(ledPin, 600);
Apaga-se esta linha.

E podes tentar também substituir:
Serial.println(String("Humidade: " + String(buf[1],DEC) + "%; Temperatura: " + String(buf[0],DEC) + "ºC"));
Por:
Serial.println(String("Humidade: " + String(buf[1],DEC) + "; Temperatura: " + String(buf[0],DEC) + "C"));
 


Pedro essa 1linha que comentaste referesse a que eu nao tenho potenciometro para regular o contraste do lcd entao a alternativa e usar um pin pwr. Por isso essa linha ta ai. Logo testo o que disseste em segundo lugar.
Obrigado
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 04 de Setembro de 2012, 07:07
Se puderes depois posta um vídeo ou uma foto do lcd quando mostra os caracteres estranhos.

Até amanhã.

Ok logo meto um video
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: Pedrock em 04 de Setembro de 2012, 09:31
Pedro essa 1linha que comentaste referesse a que eu nao tenho potenciometro para regular o contraste do lcd entao a alternativa e usar um pin pwr. Por isso essa linha ta ai. Logo testo o que disseste em segundo lugar.
Obrigado
O valor tem que ser entre 0 e 255 e é melhor mudares o nome para contraste porque LedPin causa confusão. :P
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 04 de Setembro de 2012, 16:37
quanto ao serial monitor do receptor da isto:

Humidade: 28%; Temperatura: 29ºC
Humidade: 28%; Temperatura: 29ºC
Humidade: 28%; Temperatura: 29ºC
Humidade: 28%; Temperatura: 29ºC
Humidade: 28%; Temperatura: 29ºC
Humidade: 28%; Temperatura: 29ºC
Humidade: 28%; Temperatura: 29ºC
Humidade: 28%; Temperatura: 29ºC
Humidade: 28%; Temperatura: 29ºC
Humidade: 28%; Temperatura: 29ºC
Humidade: 28%; Temperatura: 29ºC

mais uns momentos e ja vos partilho o video dos caracteres esquesitos do lcd
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: Pedrock em 04 de Setembro de 2012, 17:01
O serial do receptor continua a receber bem quando o LCD está "maluco"?
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 04 de Setembro de 2012, 18:49
O serial do receptor continua a receber bem quando o LCD está "maluco"?

sim continua a receber tal e qual o que postei acima

aqui esta o video:

http://youtu.be/_ka1lbbKM_k (http://youtu.be/_ka1lbbKM_k)

como podem ver.. aparece caracteres malucos e depois desaparece tudo do lcd durante mt tempo depois volta a aparecer..etc e os caracteres depois tanto aparecem na primeira linha do lcd como na segunda linha e sempre diferentes.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: Pedrock em 04 de Setembro de 2012, 20:21
Já substituíste o analogWrite(ledPin, 600); por um valor entre 0 e 255?
Pode não ser disto, mas o melhor é corrigir.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 04 de Setembro de 2012, 20:50
Já substituíste o analogWrite(ledPin, 600); por um valor entre 0 e 255?
Pode não ser disto, mas o melhor é corrigir.

ja pedro,..so de salientar que com o code example do lcd..que esta no ide do arduino eu tinha 600 e aparecia o hello world, sem aparecer caracteres esquesitos.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 04 de Setembro de 2012, 21:39
Provavelmente não vai alterar nada, mas experimenta na mesma:

Código: [Seleccione]
#include <VirtualWire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int ledPin = 10;
byte temp = 0;
byte humi = 0;

void setup()
{
  pinMode(ledPin, OUTPUT);
    lcd.begin(16, 2);
    Serial.begin(115200);
    pinMode(9,INPUT);
    vw_set_rx_pin(9); // Pino de recepção
    vw_set_ptt_inverted(true);
    vw_setup(2000);
    vw_rx_start(); // Necessário para começar a receber informação
}

void loop()
{
  analogWrite(ledPin, 600);
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;

    if (vw_get_message(buf, &buflen)) // Caso chegue alguma mensagem ao receptor
    {
int i;
        digitalWrite(13, true); // Esta parte é opcional, eu utilizei para testar e ver se estava a receber alguma coisa
for (i = 0; i < buflen; i++) // Basicamente isto vai repetir para cada byte recebido e vai guardar a informação numa array de caracteres
{
          if (i==1){
              humi = buf[1];
          }
          if (i==0){
              temp = buf[0];
  }
}
            Serial.println(String("Humidade: " + String(buf[1],DEC) + "; Temperatura: " + String(buf[0],DEC)));
            digitalWrite(13, false);
    }
    delay(10);
    actualizarlcd();
    }
   
    void actualizarlcd() {
             lcd.clear();
             lcd.setCursor(0,0);
             lcd.print("Humi ");
             lcd.print(humi, DEC);
             lcd.print(" %");
             lcd.setCursor(0,1);
             lcd.print("Temp ");
             lcd.print(temp, DEC);
             lcd.print(" C");
    }
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 04 de Setembro de 2012, 22:05
Provavelmente não vai alterar nada, mas experimenta na mesma:

Código: [Seleccione]
#include <VirtualWire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int ledPin = 10;
byte temp = 0;
byte humi = 0;

void setup()
{
  pinMode(ledPin, OUTPUT);
    lcd.begin(16, 2);
    Serial.begin(115200);
    pinMode(9,INPUT);
    vw_set_rx_pin(9); // Pino de recepção
    vw_set_ptt_inverted(true);
    vw_setup(2000);
    vw_rx_start(); // Necessário para começar a receber informação
}

void loop()
{
  analogWrite(ledPin, 600);
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;

    if (vw_get_message(buf, &buflen)) // Caso chegue alguma mensagem ao receptor
    {
int i;
        digitalWrite(13, true); // Esta parte é opcional, eu utilizei para testar e ver se estava a receber alguma coisa
for (i = 0; i < buflen; i++) // Basicamente isto vai repetir para cada byte recebido e vai guardar a informação numa array de caracteres
{
          if (i==1){
              humi = buf[1];
          }
          if (i==0){
              temp = buf[0];
  }
}
            Serial.println(String("Humidade: " + String(buf[1],DEC) + "; Temperatura: " + String(buf[0],DEC)));
            digitalWrite(13, false);
    }
    delay(10);
    actualizarlcd();
    }
   
    void actualizarlcd() {
             lcd.clear();
             lcd.setCursor(0,0);
             lcd.print("Humi ");
             lcd.print(humi, DEC);
             lcd.print(" %");
             lcd.setCursor(0,1);
             lcd.print("Temp ");
             lcd.print(temp, DEC);
             lcd.print(" C");
    }

rglove o que se passa neste codigo e que no lcd passa caracteres tao depressa tipo em loop infinito que nao da para ler sequer.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 04 de Setembro de 2012, 22:09
Pois, não sabia se ia funcionar. Soldaste bem os cabos ao lcd? Altera o delay no final do loop, mete um valor maior e experimenta.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 04 de Setembro de 2012, 22:12
olha nao sei se isto te vai ajudar a encontrar uma solucao mas eu adicionei neste codigo um delay e aparece a humidade bem...durante 10segundos sem aparecer caracteres malucos... mas passado esses 10 segundos comeca a aparecer caracteres.

ps ta bem soldado lol.

mas ve la se isso te ajuda a encontrar o erro:

Código: [Seleccione]
#include <VirtualWire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int ledPin = 10;

void setup()
{
  pinMode(ledPin, OUTPUT);
    lcd.begin(16, 2);
    Serial.begin(9600);
    pinMode(9,INPUT);
    vw_set_rx_pin(9); // Pino de recepção
    vw_set_ptt_inverted(true);
    vw_setup(2000);
    vw_rx_start(); // Necessário para começar a receber informação
}

void loop()
{
  analogWrite(ledPin, 600);
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;

    if (vw_get_message(buf, &buflen)) // Caso chegue alguma mensagem ao receptor
    {
int i;
        digitalWrite(13, true); // Esta parte é opcional, eu utilizei para testar e ver se estava a receber alguma coisa
for (i = 0; i < buflen; i++) // Basicamente isto vai repetir para cada byte recebido e vai guardar a informação numa array de caracteres
{
          if (i==0){
             lcd.setCursor(0,0);
             lcd.print("Humi ");
             lcd.print(buf[i], DEC);
             lcd.print(" %");
             delay(10000);
          //}
          //if (i==2){
           //  lcd.setCursor(0,1);
            // lcd.print("Temp ");
            // lcd.print(buf[i], DEC);
             //lcd.print(" C");
  }
}
            Serial.println(String("Humidade: " + String(buf[0],DEC) + "%; Temperatura: " + String(buf[2],DEC) + "ºC"));
            digitalWrite(13, false);
    }
}
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 04 de Setembro de 2012, 22:29
Experimenta assim:

Código: [Seleccione]
#include <VirtualWire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int ledPin = 10;

void setup()
{
  pinMode(ledPin, OUTPUT);
    lcd.begin(16, 2);
    Serial.begin(115200);
    pinMode(9,INPUT);
    vw_set_rx_pin(9); // Pino de recepção
    vw_set_ptt_inverted(true);
    vw_setup(2000);
    vw_rx_start(); // Necessário para começar a receber informação
}

void loop()
{
  analogWrite(ledPin, 255);
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;

    if (vw_get_message(buf, &buflen)) // Caso chegue alguma mensagem ao receptor
    {
              lcd.clear();
int i;
        digitalWrite(13, true); // Esta parte é opcional, eu utilizei para testar e ver se estava a receber alguma coisa
for (i = 0; i < buflen; i++) // Basicamente isto vai repetir para cada byte recebido e vai guardar a informação numa array de caracteres
{
          if (i==1){
             lcd.setCursor(0,0);
             lcd.print("Humi ");
             lcd.print(buf[i], DEC);
             lcd.print(" %");
          }
          if (i==0){
             lcd.setCursor(0,1);
             lcd.print("Temp ");
             lcd.print(buf[i], DEC);
             lcd.print(" C");
  }
}
            Serial.println(String("Humidade: " + String(buf[1],DEC) + "%; Temperatura: " + String(buf[0],DEC) + "ºC"));
            digitalWrite(13, false);
    }
    }
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 04 de Setembro de 2012, 23:06
Experimenta assim:

Código: [Seleccione]
#include <VirtualWire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int ledPin = 10;

void setup()
{
  pinMode(ledPin, OUTPUT);
    lcd.begin(16, 2);
    Serial.begin(115200);
    pinMode(9,INPUT);
    vw_set_rx_pin(9); // Pino de recepção
    vw_set_ptt_inverted(true);
    vw_setup(2000);
    vw_rx_start(); // Necessário para começar a receber informação
}

void loop()
{
  analogWrite(ledPin, 255);
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;

    if (vw_get_message(buf, &buflen)) // Caso chegue alguma mensagem ao receptor
    {
              lcd.clear();
int i;
        digitalWrite(13, true); // Esta parte é opcional, eu utilizei para testar e ver se estava a receber alguma coisa
for (i = 0; i < buflen; i++) // Basicamente isto vai repetir para cada byte recebido e vai guardar a informação numa array de caracteres
{
          if (i==1){
             lcd.setCursor(0,0);
             lcd.print("Humi ");
             lcd.print(buf[i], DEC);
             lcd.print(" %");
          }
          if (i==0){
             lcd.setCursor(0,1);
             lcd.print("Temp ");
             lcd.print(buf[i], DEC);
             lcd.print(" C");
  }
}
            Serial.println(String("Humidade: " + String(buf[1],DEC) + "%; Temperatura: " + String(buf[0],DEC) + "ºC"));
            digitalWrite(13, false);
    }
    }

desculpa a demora a responder..
com esse codigo o  lcd aparece todo em branco...

no entanto com este codigo:
Código: [Seleccione]
#include <VirtualWire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int ledPin = 10;

void setup()
{
  pinMode(ledPin, OUTPUT);
    lcd.begin(16, 2);
    Serial.begin(9600);
    pinMode(9,INPUT);
    vw_set_rx_pin(9); // Pino de recepção
    vw_set_ptt_inverted(true);
    vw_setup(2000);
    vw_rx_start(); // Necessário para começar a receber informação
}

void loop()
{
  analogWrite(ledPin, 600);
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;

    if (vw_get_message(buf, &buflen)) // Caso chegue alguma mensagem ao receptor
    {
int i;
        digitalWrite(13, true); // Esta parte é opcional, eu utilizei para testar e ver se estava a receber alguma coisa
for (i = 0; i < buflen; i++) // Basicamente isto vai repetir para cada byte recebido e vai guardar a informação numa array de caracteres
{
 
          if (i==0){
             lcd.setCursor(0,0);
             lcd.print("Humi ");
             lcd.print(buf[i], DEC);
             lcd.print(" %");
             delay(10);
          }
          if (i==1){
             lcd.setCursor(0,1);
             lcd.print("Temp ");
             lcd.print(buf[i], DEC);
             lcd.print(" C");
             delay(10);
             
  }
}
            Serial.println(String("Humidade: " + String(buf[0],DEC) + "%; Temperatura: " + String(buf[2],DEC) + "ºC"));
            digitalWrite(13, false);
            delay(60000);
    }
}

acrexentei uns delays e so quando o codigo passa do ultimo delay de 60000 é que começa a aparecer caracteres malucos.

tamos a chegar la....mas nao sei se isto tem logica.. que achas?

Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: senso em 04 de Setembro de 2012, 23:07
Mete um lcd.clear no inicio do loop.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 04 de Setembro de 2012, 23:08
Mete um lcd.clear no inicio do loop.

em qual codigo?
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: senso em 04 de Setembro de 2012, 23:11
No que estiveres a usar, tanta mudança e ainda não alteraram nada a não ser meter delays, portanto mete num qualquer.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 04 de Setembro de 2012, 23:17
No que estiveres a usar, tanta mudança e ainda não alteraram nada a não ser meter delays, portanto mete num qualquer.

no ultimo codigo que postei em citação ao rglove coloquei o lcd.clear no começo do loop e aparece caracteres malucos... sem lcd.clear nao aparece.. so aparece quando passa o ultimo delay de 60000

Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 04 de Setembro de 2012, 23:19
Eu tinha posto no código um lcd.clear() quando o receiver recebe alguma coisa, mesmo antes de escrever no lcd. Acho estranho o lcd ter ficado todo branco... Não será que tem a ver com a tensão que meteste no pino do contraste? Tenta ajustar isso.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 04 de Setembro de 2012, 23:28
Eu tinha posto no código um lcd.clear() quando o receiver recebe alguma coisa, mesmo antes de escrever no lcd. Acho estranho o lcd ter ficado todo branco... Não será que tem a ver com a tensão que meteste no pino do contraste? Tenta ajustar isso.

tinhas razao no codigo tinhas posto o pin a 255 coloquei a 60 ja apareceu mas apareceu os caracteres malucos..

como te disse o unico codigo que nao aparece os caracteres malucos é este,mas quando chega ao delay do final ou seja os 60000 começa a aparvalhar,,,, agora se é do pin pwr nao sei.. mas este codigo funciona bem...

ps: so nao aparece nada no serial monitor estara alguma coisa em falta?

Código: [Seleccione]
#include <VirtualWire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int ledPin = 10;

void setup()
{
  pinMode(ledPin, OUTPUT);
    lcd.begin(16, 2);
    Serial.begin(9600);
    pinMode(9,INPUT);
    vw_set_rx_pin(9); // Pino de recepção
    vw_set_ptt_inverted(true);
    vw_setup(2000);
    vw_rx_start(); // Necessário para começar a receber informação
}

void loop()
{
  analogWrite(ledPin, 600);
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;

    if (vw_get_message(buf, &buflen)) // Caso chegue alguma mensagem ao receptor
    {
int i;
        digitalWrite(13, true); // Esta parte é opcional, eu utilizei para testar e ver se estava a receber alguma coisa
for (i = 0; i < buflen; i++) // Basicamente isto vai repetir para cada byte recebido e vai guardar a informação numa array de caracteres
{
 
          if (i==0){
             lcd.setCursor(0,0);
             lcd.print("Humi ");
             lcd.print(buf[i], DEC);
             lcd.print(" %");
             delay(10);
          }
          if (i==1){
             lcd.setCursor(0,1);
             lcd.print("Temp ");
             lcd.print(buf[i], DEC);
             lcd.print(" C");
             delay(10);
             
  }
}
            Serial.println(String("Humidade: " + String(buf[0],DEC) + "%; Temperatura: " + String(buf[2],DEC) + "ºC"));
            digitalWrite(13, false);
            delay(60000);
    }
}
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: Pedrock em 04 de Setembro de 2012, 23:44
Tenta assim:
Código: [Seleccione]
#include <VirtualWire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int ledPin = 10;

void setup()
{
  pinMode(ledPin, OUTPUT);
  lcd.begin(16, 2);
  Serial.begin(115200);
  pinMode(9,INPUT);
  vw_set_rx_pin(9); // Pino de recepção
  vw_set_ptt_inverted(true);
  vw_setup(2000);
  vw_rx_start(); // Necessário para começar a receber informação
}

void loop()
{
  analogWrite(ledPin, 60);
  uint8_t buf[VW_MAX_MESSAGE_LEN];
  uint8_t buflen = VW_MAX_MESSAGE_LEN;

  if (vw_get_message(buf, &buflen)) // Caso chegue alguma mensagem ao receptor
  {
     int temperatura = 0;
     int humidade = 0;
     digitalWrite(13, HIGH); // Esta parte é opcional, eu utilizei para testar e ver se estava a receber alguma coisa
     for (int i = 0; i < buflen; i++) // Basicamente isto vai repetir para cada byte recebido e vai guardar a informação numa array de caracteres
     {
        if (i==0) temperatura = (buf[0], DEC);
        else if (i==1) humidade = (buf[1],DEC);
     }
     lcd.clear();
     lcd.setCursor(0,0);
     lcd.print("Humi ");
     lcd.print(String(humidade));
     lcd.print(" %");
     lcd.setCursor(0,1);
     lcd.print("Temp ");
     lcd.print(String(temperatura));
     lcd.print(" C");
     Serial.println(String("Humidade: " + String(humidade) + "%; Temperatura: " + String(temperatura) + "ºC"));
     digitalWrite(13, LOW); // Esta parte é opcional, eu utilizei para testar e ver se estava a receber alguma coisa
  }
}

EDIT: E em vez do pino PWM liga aos 5V através de uma resistência. Tenta várias até ficar bem.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 04 de Setembro de 2012, 23:51
Tenta assim:
Código: [Seleccione]
#include <VirtualWire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int ledPin = 10;

void setup()
{
  pinMode(ledPin, OUTPUT);
  lcd.begin(16, 2);
  Serial.begin(115200);
  pinMode(9,INPUT);
  vw_set_rx_pin(9); // Pino de recepção
  vw_set_ptt_inverted(true);
  vw_setup(2000);
  vw_rx_start(); // Necessário para começar a receber informação
}

void loop()
{
  analogWrite(ledPin, 60);
  uint8_t buf[VW_MAX_MESSAGE_LEN];
  uint8_t buflen = VW_MAX_MESSAGE_LEN;

  if (vw_get_message(buf, &buflen)) // Caso chegue alguma mensagem ao receptor
  {
     int temperatura = 0;
     int humidade = 0;
     digitalWrite(13, HIGH); // Esta parte é opcional, eu utilizei para testar e ver se estava a receber alguma coisa
     for (int i = 0; i < buflen; i++) // Basicamente isto vai repetir para cada byte recebido e vai guardar a informação numa array de caracteres
     {
        if (i==0) temperatura = (buf[0], DEC);
        else if (i==1) humidade = (buf[1],DEC);
     }
     lcd.clear();
     lcd.setCursor(0,0);
     lcd.print("Humi ");
     lcd.print(String(humidade));
     lcd.print(" %");
     lcd.setCursor(0,1);
     lcd.print("Temp ");
     lcd.print(String(temperatura));
     lcd.print(" C");
     Serial.println(String("Humidade: " + String(humidade) + "%; Temperatura: " + String(temperatura) + "ºC"));
     digitalWrite(13, LOW); // Esta parte é opcional, eu utilizei para testar e ver se estava a receber alguma coisa
  }
}

pedro tambem nao da... aparece os tais caracteres...

acho que tem haver alguma coisa com os delays...pois aquele codigo que postei funciona com os delays...no entanto a temperatura do receptor nao é igual a do emissor porque causa dos delays que inseri...


ou seja da ideia que o emissor ta a mandar dados de 1 em 1 segundo..e que o receptor.. quando vai ler..se captar um intervalo sem dados atrofia..
isso sou eu a supor ...nao sei se é se nao.. mas o que e certo é que com delays os caracteres nao aparecem. so aparecem no ultimo delay que vai reinciar o loop
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 05 de Setembro de 2012, 00:02
Tens a certeza que não se lia nada naquele código que postei na pagina anterior ou ha 2 páginas atras?
Tinha postado um código que fazia um refresh do lcd de 10 em 10 ms. Tinhas dito que o lcd ficava sempre branco. Será que também não tinhas um valor mal no analogWrite? Mete 60 como tinhas posto nesse código ai e experimenta.

O lcd não fica todo branco por estar sempre a fazer refresh... Experimenta outra vez, pode ser que resolva.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: senso em 05 de Setembro de 2012, 00:03
Mostra lá uma foto da montagem disso, e pormenor das soldas no lcd..
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 05 de Setembro de 2012, 00:14
Tens a certeza que não se lia nada naquele código que postei na pagina anterior ou ha 2 páginas atras?
Tinha postado um código que fazia um refresh do lcd de 10 em 10 ms. Tinhas dito que o lcd ficava sempre branco. Será que também não tinhas um valor mal no analogWrite? Mete 60 como tinhas posto nesse código ai e experimenta.

O lcd não fica todo branco por estar sempre a fazer refresh... Experimenta outra vez, pode ser que resolva.

rglove o codigo que exprimentei teu:
Código: [Seleccione]
#include <VirtualWire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int ledPin = 10;

void setup()
{
  pinMode(ledPin, OUTPUT);
    lcd.begin(16, 2);
    Serial.begin(115200);
    pinMode(9,INPUT);
    vw_set_rx_pin(9); // Pino de recepção
    vw_set_ptt_inverted(true);
    vw_setup(2000);
    vw_rx_start(); // Necessário para começar a receber informação
}

void loop()
{
  analogWrite(ledPin, 60);
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;

    if (vw_get_message(buf, &buflen)) // Caso chegue alguma mensagem ao receptor
    {
              lcd.clear();
int i;
        digitalWrite(13, true); // Esta parte é opcional, eu utilizei para testar e ver se estava a receber alguma coisa
for (i = 0; i < buflen; i++) // Basicamente isto vai repetir para cada byte recebido e vai guardar a informação numa array de caracteres
{
          if (i==1){
             lcd.setCursor(0,0);
             lcd.print("Humi ");
             lcd.print(buf[i], DEC);
             lcd.print(" %");
          }
          if (i==0){
             lcd.setCursor(0,1);
             lcd.print("Temp ");
             lcd.print(buf[i], DEC);
             lcd.print(" C");
  }
}
            Serial.println(String("Humidade: " + String(buf[1],DEC) + "%; Temperatura: " + String(buf[0],DEC) + "ºC"));
            digitalWrite(13, false);
    }
    }

foi esse.. no lcd nao aparece letra nenhuma...no serial monitor aparece.pelo menos com este codigo nada aparece...
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 05 de Setembro de 2012, 00:17
Tens a certeza que não se lia nada naquele código que postei na pagina anterior ou ha 2 páginas atras?
Tinha postado um código que fazia um refresh do lcd de 10 em 10 ms. Tinhas dito que o lcd ficava sempre branco. Será que também não tinhas um valor mal no analogWrite? Mete 60 como tinhas posto nesse código ai e experimenta.

O lcd não fica todo branco por estar sempre a fazer refresh... Experimenta outra vez, pode ser que resolva.

rglove o codigo que exprimentei teu:
Código: [Seleccione]
#include <VirtualWire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int ledPin = 10;

void setup()
{
  pinMode(ledPin, OUTPUT);
    lcd.begin(16, 2);
    Serial.begin(115200);
    pinMode(9,INPUT);
    vw_set_rx_pin(9); // Pino de recepção
    vw_set_ptt_inverted(true);
    vw_setup(2000);
    vw_rx_start(); // Necessário para começar a receber informação
}

void loop()
{
  analogWrite(ledPin, 60);
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;

    if (vw_get_message(buf, &buflen)) // Caso chegue alguma mensagem ao receptor
    {
              lcd.clear();
int i;
        digitalWrite(13, true); // Esta parte é opcional, eu utilizei para testar e ver se estava a receber alguma coisa
for (i = 0; i < buflen; i++) // Basicamente isto vai repetir para cada byte recebido e vai guardar a informação numa array de caracteres
{
          if (i==1){
             lcd.setCursor(0,0);
             lcd.print("Humi ");
             lcd.print(buf[i], DEC);
             lcd.print(" %");
          }
          if (i==0){
             lcd.setCursor(0,1);
             lcd.print("Temp ");
             lcd.print(buf[i], DEC);
             lcd.print(" C");
  }
}
            Serial.println(String("Humidade: " + String(buf[1],DEC) + "%; Temperatura: " + String(buf[0],DEC) + "ºC"));
            digitalWrite(13, false);
    }
    }

foi esse.. no lcd nao aparece letra nenhuma...no serial monitor aparece.pelo menos com este codigo nada aparece...

senso tenho o telemovel a carregar, mas assim que tiver carga, posso ate fazer um video para te mostrar..
alias.. nao sei se te vou dizer alguma barbaridade corrige me se tiver enganado..
mas se fosse más ligacoes do lcd... o example hello world nao aparecia  certo?

mas eu vou na mesma fazer um video e mostrar sem problema algum.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 05 de Setembro de 2012, 00:26
rglove e senso estou a carregar um video no youtube para vos mostrar o lcd em funcionamento com ambos os codigos.. e tambem as ligacoes ao lcd.

vai demorar um bocadinho
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: Pedrock em 05 de Setembro de 2012, 00:29
Acho que o problema está quando se escreve no LCD a segunda vez.
Tenta o exemplo Serial to LCD (ou qualquer coisa assim) e envia texto para o arduino por serial.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 05 de Setembro de 2012, 00:43
Acho que o problema está quando se escreve no LCD a segunda vez.
Tenta o exemplo Serial to LCD (ou qualquer coisa assim) e envia texto para o arduino por serial.

testei e escreveu bem a primeira vez , e a segunda vez.. a terceira ja apareceu no lcd caracteres malucos..

sera que isto tem alguma coisa a ver??
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: Pedrock em 05 de Setembro de 2012, 00:52
Acho que o problema está quando se escreve no LCD a segunda vez.
Tenta o exemplo Serial to LCD (ou qualquer coisa assim) e envia texto para o arduino por serial.

testei e escreveu bem a primeira vez , e a segunda vez.. a terceira ja apareceu no lcd caracteres malucos..

sera que isto tem alguma coisa a ver??
O problema não está na transmição de dados sem fios, mas sim no LCD ou nas ligações.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 05 de Setembro de 2012, 00:54
Acho que o problema está quando se escreve no LCD a segunda vez.
Tenta o exemplo Serial to LCD (ou qualquer coisa assim) e envia texto para o arduino por serial.

amanha vou rever isto tudo,,, mas e mesmo muito estranho aparecer as palavras neste caso uma e duas vezes e as vezes aparecer coisas diferentes do que escrevemos.

nao é?? eu tava convencido que se fosse mas ligacoes nao aparecia nada sequer
testei e escreveu bem a primeira vez , e a segunda vez.. a terceira ja apareceu no lcd caracteres malucos..

sera que isto tem alguma coisa a ver??
O problema não está na transmição de dados sem fios, mas sim no LCD ou nas ligações.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: senso em 05 de Setembro de 2012, 02:00
Era muito mais facil meia duzia de fotos.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 05 de Setembro de 2012, 05:52
Era muito mais facil meia duzia de fotos.


está aqui o video,,, espero esclarecer alguma coisa com isto,,,para verem o que esta errado

Teste2 (http://www.youtube.com/watch?v=yQykjd5MmZQ#ws)
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: Sérgio_Sena em 05 de Setembro de 2012, 12:05
uma pergunta rápida ::

está a acontecer protocolo de correcção de erros, antes e depois de enviar por rádio ?
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: kast em 05 de Setembro de 2012, 12:07
Acho que não, a menos que os encoders o façam ....
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: Pedrock em 05 de Setembro de 2012, 12:18
uma pergunta rápida ::

está a acontecer protocolo de correcção de erros, antes e depois de enviar por rádio ?
O problema não está aí, porque quando ele usou o exemplo Serial para LCD, houve o mesmo problema.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: Sérgio_Sena em 05 de Setembro de 2012, 12:25
Talvez.

Nunca nos vários anos a usar radiotransmissão, eu pude usar ligações simples.
Para conseguir comunicações error-free e robustas, tenho sempre que implementar Modems em ambos os lados.

Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 05 de Setembro de 2012, 18:57
Entao qual é a solucao para isto?
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: kast em 05 de Setembro de 2012, 19:00
há bibliotecas para o rfm12 com controlo de erros
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: Sérgio_Sena em 05 de Setembro de 2012, 20:42
há bibliotecas para o rfm12 com controlo de erros


o facto de se usar um RFM12 ou um nRF24L01, é o bastante para garantir muito bons resultados.

estes módulos de rádio já incorporam modems, por isso fica tudo mais facil.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: kast em 05 de Setembro de 2012, 23:20
Chegaste a colocar a resistência de 5k entre o pino 1 e 2 do DHT11 ????

Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 06 de Setembro de 2012, 10:03
Chegaste a colocar a resistência de 5k entre o pino 1 e 2 do DHT11 ????

Nao. Se bem me lembro acho que me disseste que isso seria para corrigir uma melhor precisao da temperatura.

Bom mas eu quero aqui referir alguns pontos que gostaria de discutir convosco, pois ainda me esta a fazer uma certa confusao.

 1. Caso houvesse problema de comunicao entre o emissor e receptor , nao chegaria a mesma informacao do emissor ao receptor certo? Coisa que nao acontece, usando o serial monitor do receptor a informacao e recebida perfeitamente.

2. Caso o lcd tivesse mal conectado eu nao conseguia com que ele lesse hello world do example que esta no ide.certo? Coisa que consigo e estavel sem caracteres malucos.

3. Dito isto e agradecendo a ajuda que ja foi aqui dada. Gostaria que alguem me desse uma explicacao do que esta errado. Se nao houver explicacao comprarei entao os NRF.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: Pedrock em 06 de Setembro de 2012, 12:25
Não dizes que o exemplo SerialDisplay não funciona bem?
Isto não envolve RF nem sensores de temperatura.
Logo, tens aí o teu problema. Está no LCD ou nas ligações.

Além disso, no Serial aparece tudo bem, o problema está mesmo no LCD.

No Hello World, aparece-te o tempo em baixo?
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 06 de Setembro de 2012, 18:17
Não dizes que o exemplo SerialDisplay não funciona bem?
Isto não envolve RF nem sensores de temperatura.
Logo, tens aí o teu problema. Está no LCD ou nas ligações.

Além disso, no Serial aparece tudo bem, o problema está mesmo no LCD.

No Hello World, aparece-te o tempo em baixo?


Pedro...
no codigo hello world este:

Código: [Seleccione]
/*
  LiquidCrystal Library - Hello World
 
 Demonstrates the use a 16x2 LCD display.  The LiquidCrystal
 library works with all LCD displays that are compatible with the
 Hitachi HD44780 driver. There are many of them out there, and you
 can usually tell them by the 16-pin interface.
 
 This sketch prints "Hello World!" to the LCD
 and shows the time.
 
  The circuit:
 * LCD RS pin to digital pin 12 
 * LCD Enable pin to digital pin 11 // liguei ao 10
 * LCD D4 pin to digital pin 5
 * LCD D5 pin to digital pin 4
 * LCD D6 pin to digital pin 3
 * LCD D7 pin to digital pin 2
 * LCD R/W pin to ground // liguei a 11
 * 10K resistor: (nao sei)
 * ends to +5V and ground (nao sei)
 * wiper to LCD VO pin (pin 3) // liguei ao 8 que que utilizei como pin
 pwr para o contraste.
 
 Library originally added 18 Apr 2008
 by David A. Mellis
 library modified 5 Jul 2009
 by Limor Fried (http://www.ladyada.net)
 example added 9 Jul 2009
 by Tom Igoe
 modified 22 Nov 2010
 by Tom Igoe
 
 This example code is in the public domain.

 http://www.arduino.cc/en/Tutorial/LiquidCrystal
 */

// include the library code:
#include <LiquidCrystal.h>
int ledPin = 8;

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);

void setup() {
   pinMode(ledPin, OUTPUT);
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);

  // Print a message to the LCD.
  lcd.print("hello, world!");
}

void loop() {
  analogWrite(ledPin, 60);
  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):
  lcd.setCursor(0, 1);
  // print the number of seconds since reset:
 
 
 // lcd.print(millis()/1000);
}

se eu tiver comentada a linha // lcd.print(millis()/1000); nao aparece o tempo e aparece o HELLO WORLD
 
e se eu tiver descomentada aparece os caracteres malucos...

mas nao sei se estou a proceder correctamente aqui numa coisa neste codigo...e talvez seja isso que tambem falte no outro..

repara nas ligacoes que o codigo tem:


The circuit:
 * LCD RS pin to digital pin 12 
 * LCD Enable pin to digital pin 11 // liguei ao 10
 * LCD D4 pin to digital pin 5
 * LCD D5 pin to digital pin 4
 * LCD D6 pin to digital pin 3
 * LCD D7 pin to digital pin 2
 * LCD R/W pin to ground // liguei a 11
 * 10K resistor: (nao sei)
 * ends to +5V and ground (nao sei)
 * wiper to LCD VO pin (pin 3) // liguei ao 8 que que utilizei como pin
 pwr para o contraste.

ou seja o que ves a vermelho são as alteracoes que fiz na ligacao ao arduino..
o que tenho a verde nao sei como ligar..

eu nao sei se é esse o problema..

mas eu fiz as ligacoes conforme esta aqui no site:
http://lusorobotica.com/index.php?topic=919.30 (http://lusorobotica.com/index.php?topic=919.30)

será que esta informacao vos ajuda a analisar melhor onde esta efectivamente o problema?

http://youtu.be/h6bkm6B8FcA (http://youtu.be/h6bkm6B8FcA)
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: kast em 06 de Setembro de 2012, 18:34
No reference do arduino sobre a função millis() diz o seguinte:

Tip:
Note that the parameter for millis is an unsigned long, errors may be generated if a programmer tries to do math with other datatypes such as ints.

Será disto ?
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: kast em 06 de Setembro de 2012, 18:36
Este 
Citar
* LCD R/W pin to ground // liguei a 11
está nitidamente mal, tens de ligar ao gnd ...
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 06 de Setembro de 2012, 21:18
Este 
Citar
* LCD R/W pin to ground // liguei a 11
está nitidamente mal, tens de ligar ao gnd ...

voltei a ligar conforme disseste ... continua com caracteres marados
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 06 de Setembro de 2012, 21:25
Mudaste no código os pinos que trocaste?
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 06 de Setembro de 2012, 21:42
Mudaste no código os pinos que trocaste?

sim , de momento tenho

Código: [Seleccione]
/*
  LiquidCrystal Library - Hello World
 
 Demonstrates the use a 16x2 LCD display.  The LiquidCrystal
 library works with all LCD displays that are compatible with the
 Hitachi HD44780 driver. There are many of them out there, and you
 can usually tell them by the 16-pin interface.
 
 This sketch prints "Hello World!" to the LCD
 and shows the time.
 
  The circuit:
 * LCD RS pin to digital pin 12 
 * LCD Enable pin to digital pin 11 // liguei ao 10
 * LCD D4 pin to digital pin 5
 * LCD D5 pin to digital pin 4
 * LCD D6 pin to digital pin 3
 * LCD D7 pin to digital pin 2
 * LCD R/W pin to ground // liguei a 11
 * 10K resistor: (nao sei)
 * ends to +5V and ground (nao sei)
 * wiper to LCD VO pin (pin 3) // liguei ao 8 que que utilizei como pin
 pwr para o contraste.
 
 Library originally added 18 Apr 2008
 by David A. Mellis
 library modified 5 Jul 2009
 by Limor Fried (http://www.ladyada.net)
 example added 9 Jul 2009
 by Tom Igoe
 modified 22 Nov 2010
 by Tom Igoe
 
 This example code is in the public domain.

 http://www.arduino.cc/en/Tutorial/LiquidCrystal
 */

// include the library code:
#include <LiquidCrystal.h>
int ledPin = 8;

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 10, 5, 4, 3, 2);

void setup() {
   pinMode(ledPin, OUTPUT);
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);

  // Print a message to the LCD.
  lcd.print("hello, world!");
}

void loop() {
 
  analogWrite(ledPin, 60);
 
  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):
  lcd.setCursor(0, 1);
  // print the number of seconds since reset:
 
 
 lcd.print(millis()/1000);
}

a unica palavra de jeito que se le é world!

de resto e so numeros e cardinais..

se esconder o
 lcd.print(millis()/1000);

ja aparece hello world como deve ser
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 06 de Setembro de 2012, 21:50
Ligaste o R/W ao ground?
Esses caracteres só aparecem a partir da segunda vez que escreves no lcd, portanto esse "hello world" sem o millis() funciona porque o "hello world" só é escrito uma vez no lcd...
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 06 de Setembro de 2012, 21:52
Ligaste o R/W ao ground?
Esses caracteres só aparecem a partir da segunda vez que escreves no lcd, portanto esse "hello world" sem o millis() funciona porque o "hello world" só é escrito uma vez no lcd...

sim liguei, sera o lcd que nao ta em condicoes??
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: Pedrock em 06 de Setembro de 2012, 22:16
Desliga tudo o arduino e faz isto:
http://arduino.cc/en/Tutorial/LiquidCrystal (http://arduino.cc/en/Tutorial/LiquidCrystal)

Usa os pinos que eles usam e como não tens um potenciómetro, usa resistências.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 06 de Setembro de 2012, 22:22
Desliga tudo o arduino e faz isto:
http://arduino.cc/en/Tutorial/LiquidCrystal (http://arduino.cc/en/Tutorial/LiquidCrystal)

Usa os pinos que eles usam e como não tens um potenciómetro, usa resistências.

se tiver que usar so uma resistencia qual e o valor dela? ligo de onde  a onde?

se for duas qual o valor de cada?
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: Pedrock em 06 de Setembro de 2012, 22:35
Desliga tudo o arduino e faz isto:
http://arduino.cc/en/Tutorial/LiquidCrystal (http://arduino.cc/en/Tutorial/LiquidCrystal)

Usa os pinos que eles usam e como não tens um potenciómetro, usa resistências.

se tiver que usar so uma resistencia qual e o valor dela? ligo de onde  a onde?

se for duas qual o valor de cada?
Liga uma resistência entre Vcc e Vc com um valor entre 0 e 10k, tens que ver o que te dá um bom contraste.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 06 de Setembro de 2012, 22:38
Desliga tudo o arduino e faz isto:
http://arduino.cc/en/Tutorial/LiquidCrystal (http://arduino.cc/en/Tutorial/LiquidCrystal)

Usa os pinos que eles usam e como não tens um potenciómetro, usa resistências.

se tiver que usar so uma resistencia qual e o valor dela? ligo de onde  a onde?

se for duas qual o valor de cada?
Liga uma resistência entre Vcc e Vc com um valor entre 0 e 10k, tens que ver o que te dá um bom contraste.

sim mas depois o pino VO vai ligar a onde, se tivesse um potenciometro ligava na perna do meio... mas assim liga onde?
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: senso em 06 de Setembro de 2012, 22:46
Ligas uma pata da resistência aos 5v e a outra ao VO, e depois ligas a pata de outra resistencia tambem ao VO e a segunda pata á massa, para fazer um dividor de tensão resistivo que é o que o potênciometro faz, usa um par de resistencias de 3 ou 4k.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 06 de Setembro de 2012, 23:14
Ligas uma pata da resistência aos 5v e a outra ao VO, e depois ligas a pata de outra resistencia tambem ao VO e a segunda pata á massa, para fazer um dividor de tensão resistivo que é o que o potênciometro faz, usa um par de resistencias de 3 ou 4k.
nao tenho esses valores de resistencia aqui, mas amanha vou comprar um potenciometro de 10k para tirar as teimas..

mas eu duvido que seja isso que me esta a fazer mostrar os caracteres malucos,. nao sei ate que ponto o contraste tem a ver com isto, visto que o resto das letras aparecem bem.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: Pedrock em 06 de Setembro de 2012, 23:27
Se tiveres de 1k, por exemplo, podes juntar várias em série.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 06 de Setembro de 2012, 23:35
Se tiveres de 1k, por exemplo, podes juntar várias em série.

so tenho aqui de valores altos... eu amanha vou comprar a porcaria do potenciometro para tirar as teimas..
eu nao entendo nada disto, mas tame a fazer especie..como é que um pino pwr não consegue fazer o mesmo trabalho que o potenciometro,,,e como é que o pino pwr é o causador dos caracteres estranhos.
Mas deixem tar que amanha, as duvidas sao tiradas.

Se alguem tiver ai um lcd que consiga testar era trabalho poupado.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: Pedrock em 06 de Setembro de 2012, 23:42
Se tiveres de 1k, por exemplo, podes juntar várias em série.

so tenho aqui de valores altos... eu amanha vou comprar a porcaria do potenciometro para tirar as teimas..
eu nao entendo nada disto, mas tame a fazer especie..como é que um pino pwr não consegue fazer o mesmo trabalho que o potenciometro,,,e como é que o pino pwr é o causador dos caracteres estranhos.
Mas deixem tar que amanha, as duvidas sao tiradas.

Se alguem tiver ai um lcd que consiga testar era trabalho poupado.
Eu também não acho que seja disso. Mas o PWM não é a mesma coisa que usar o potenciómetro.
O problema não está no código, tem que estar no LCD, no Arduino ou nas ligações.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 07 de Setembro de 2012, 22:07
Se tiveres de 1k, por exemplo, podes juntar várias em série.

so tenho aqui de valores altos... eu amanha vou comprar a porcaria do potenciometro para tirar as teimas..
eu nao entendo nada disto, mas tame a fazer especie..como é que um pino pwr não consegue fazer o mesmo trabalho que o potenciometro,,,e como é que o pino pwr é o causador dos caracteres estranhos.
Mas deixem tar que amanha, as duvidas sao tiradas.

Se alguem tiver ai um lcd que consiga testar era trabalho poupado.
Eu também não acho que seja disso. Mas o PWM não é a mesma coisa que usar o potenciómetro.
O problema não está no código, tem que estar no LCD, no Arduino ou nas ligações.

bom teimoso que é teimoso não descansa....

hoje fui comprar a porcaria do potenciometro a ver se o problema era então esse, visto que o PWR para algumas pessoas não seria o causador,,, mas para outra suscitava dúvidas...

Liguei e Funciona.....era mesmo do PWR

Agora vou testar o codigo da temperatura humidade postado há alguns posts atrás.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: Pedrock em 07 de Setembro de 2012, 22:11
Então ainda bem que era disso, assim ficou resolvido.
Agora o código deve funcionar sem grandes problemas.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 07 de Setembro de 2012, 22:33
Então ainda bem que era disso, assim ficou resolvido.
Agora o código deve funcionar sem grandes problemas.

há coisas... agora tou todo baralhado já com tanto código..

supostamente não era este para o emissor:
Código: [Seleccione]
#include <dht11.h>
#include <VirtualWire.h>
 
dht11 DHT11;
 
#define DHT11PIN 7
 
void setup()
 {
   Serial.begin(115200);
   pinMode(6,OUTPUT);
   vw_set_tx_pin(6);
   vw_set_ptt_inverted(true);
   vw_setup(2000);
 }
 
void loop()
 {
   Serial.println("\n");
 
  int chk = DHT11.read(DHT11PIN);
 
  Serial.print("Read sensor: ");
   switch (chk)
   {
     case DHTLIB_OK:
                Serial.println("OK");
                break;
     case DHTLIB_ERROR_CHECKSUM:
                Serial.println("Checksum error");
                break;
     case DHTLIB_ERROR_TIMEOUT:
                Serial.println("Time out error");
                break;
     default:
                Serial.println("Unknown error");
                break;
   }
 char data[2];
   data[0] = DHT11.temperature;
   data[1] = DHT11.humidity;
  Serial.print("Humidity (%): ");
   Serial.println(data[1]+0);
 
  Serial.print("Temperature (oC): ");
   Serial.println(data[0]+0);
   const char *msg = data;
      vw_send((uint8_t *)msg, strlen(msg));
   vw_wait_tx();
  delay(2000);
 }


e este para o receptor:


Código: [Seleccione]
#include <VirtualWire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 10, 5, 4, 3, 2);


void setup()
{
 
    lcd.begin(16, 2);
    Serial.begin(115200);
    pinMode(9,INPUT);
    vw_set_rx_pin(9); // Pino de recepção
    vw_set_ptt_inverted(true);
    vw_setup(2000);
    vw_rx_start(); // Necessário para começar a receber informação
}

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

    if (vw_get_message(buf, &buflen)) // Caso chegue alguma mensagem ao receptor
    {
int i;
        digitalWrite(13, true); // Esta parte é opcional, eu utilizei para testar e ver se estava a receber alguma coisa
for (i = 0; i < buflen; i++) // Basicamente isto vai repetir para cada byte recebido e vai guardar a informação numa array de caracteres
{
          if (i==1){
             lcd.setCursor(0,0);
             lcd.print("Humi ");
             lcd.print(buf[i], DEC);
             lcd.print(" %");
          }
          if (i==0){
             lcd.setCursor(0,1);
             lcd.print("Temp ");
             lcd.print(buf[i], DEC);
             lcd.print(" C");
  }
}
            Serial.println(String("Humidade: " + String(buf[1],DEC) + "%; Temperatura: " + String(buf[0],DEC) + "ºC"));
            digitalWrite(13, false);
    }
    }

é que com isto não funciona no lcd..
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: Pedrock em 07 de Setembro de 2012, 22:39
O serial funciona?
O Hello World funciona?
Tens as ligações iguais às do exemplo? Senão tens que alterar isto:
LiquidCrystal lcd(12, 10, 5, 4, 3, 2);
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 07 de Setembro de 2012, 22:46
O serial funciona?
O Hello World funciona?
Tens as ligações iguais às do exemplo? Senão tens que alterar isto:
LiquidCrystal lcd(12, 10, 5, 4, 3, 2);

no serial do emissor:

Temperature (oC): 30


Read sensor: OK
Humidity (%): 48
Temperature (oC): 30


Read sensor: OK
Humidity (%): 48
Temperature (oC): 30


Read sensor: OK
Humidity (%): 48
Temperature (oC): 30


no serial do receptor:

Humidade: 48%; Temperatura: 30ºC
Humidade: 48%; Temperatura: 30ºC
Humidade: 48%; Temperatura: 30ºC
Humidade: 48%; Temperatura: 30ºC
Humidade: 48%; Temperatura: 30ºC
Humidade: 48%; Temperatura: 30ºC
Humidade: 48%; Temperatura: 30ºC
Humidade: 48%; Temperatura: 30ºC
Humidade: 48%; Temperatura: 30ºC
Humidade: 48%; Temperatura: 30ºC
Humidade: 48%; Temperatura: 30ºC
Humidade: 48%; Temperatura: 30ºC
Humidade: 48%; Temperatura: 30ºC
Humidade: 48%; Temperatura: 30ºC
Humidade: 48%; Temperatura: 30ºC
Humidade: 48%; Temperatura: 30ºC
Humidade: 48%; Temperatura: 30ºC
Humidade: 48%; Temperatura: 30ºC
Humidade: 48%; Temperatura: 30ºC
Humidade: 48%; Temperatura: 30ºC
Humidade: 48%; Temperatura: 30ºC
Humidade: 48%; Temperatura: 30ºC
Humidade: 48%; Temperatura: 30ºC
Humidade: 48%; Temperatura: 30ºC
Humidade: 48%; Temperatura: 30ºC
Humidade: 48%; Temperatura: 30ºC
Humidade: 48%; Temperatura: 30ºC
Humidade: 48%; Temperatura: 30ºC
Humidade: 48%; Temperatura: 30ºC
Humidade: 48%; Temperatura: 30ºC
Humidade: 48%; Temperatura: 30ºC
Humidade: 48%; Temperatura: 30ºC
Humidade: 48%; Temperatura: 30ºC

o hello world funciona perfeitamente agora com o potenciometro e aparece o tempo em baixo..

sim mudei os pinos correctamente..
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: Pedrock em 07 de Setembro de 2012, 22:59
Tenta este código que eu tinha posto na página 7 deste tópico, no receptor:
Código: [Seleccione]
#include <VirtualWire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int ledPin = 10;

void setup()
{
  pinMode(ledPin, OUTPUT);
  lcd.begin(16, 2);
  Serial.begin(115200);
  pinMode(9,INPUT);
  vw_set_rx_pin(9); // Pino de recepção
  vw_set_ptt_inverted(true);
  vw_setup(2000);
  vw_rx_start(); // Necessário para começar a receber informação
}

void loop()
{
  analogWrite(ledPin, 60);
  uint8_t buf[VW_MAX_MESSAGE_LEN];
  uint8_t buflen = VW_MAX_MESSAGE_LEN;

  if (vw_get_message(buf, &buflen)) // Caso chegue alguma mensagem ao receptor
  {
     int temperatura = 0;
     int humidade = 0;
     digitalWrite(13, HIGH); // Esta parte é opcional, eu utilizei para testar e ver se estava a receber alguma coisa
     for (int i = 0; i < buflen; i++) // Basicamente isto vai repetir para cada byte recebido e vai guardar a informação numa array de caracteres
     {
        if (i==0) temperatura = (buf[0], DEC);
        else if (i==1) humidade = (buf[1],DEC);
     }
     lcd.clear();
     lcd.setCursor(0,0);
     lcd.print("Humi ");
     lcd.print(String(humidade));
     lcd.print(" %");
     lcd.setCursor(0,1);
     lcd.print("Temp ");
     lcd.print(String(temperatura));
     lcd.print(" C");
     Serial.println(String("Humidade: " + String(humidade) + "%; Temperatura: " + String(temperatura) + "ºC"));
     digitalWrite(13, LOW); // Esta parte é opcional, eu utilizei para testar e ver se estava a receber alguma coisa
  }
}
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 07 de Setembro de 2012, 23:49
Tenta este código que eu tinha posto na página 7 deste tópico, no receptor:
Código: [Seleccione]
#include <VirtualWire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int ledPin = 10;

void setup()
{
  pinMode(ledPin, OUTPUT);
  lcd.begin(16, 2);
  Serial.begin(115200);
  pinMode(9,INPUT);
  vw_set_rx_pin(9); // Pino de recepção
  vw_set_ptt_inverted(true);
  vw_setup(2000);
  vw_rx_start(); // Necessário para começar a receber informação
}

void loop()
{
  analogWrite(ledPin, 60);
  uint8_t buf[VW_MAX_MESSAGE_LEN];
  uint8_t buflen = VW_MAX_MESSAGE_LEN;

  if (vw_get_message(buf, &buflen)) // Caso chegue alguma mensagem ao receptor
  {
     int temperatura = 0;
     int humidade = 0;
     digitalWrite(13, HIGH); // Esta parte é opcional, eu utilizei para testar e ver se estava a receber alguma coisa
     for (int i = 0; i < buflen; i++) // Basicamente isto vai repetir para cada byte recebido e vai guardar a informação numa array de caracteres
     {
        if (i==0) temperatura = (buf[0], DEC);
        else if (i==1) humidade = (buf[1],DEC);
     }
     lcd.clear();
     lcd.setCursor(0,0);
     lcd.print("Humi ");
     lcd.print(String(humidade));
     lcd.print(" %");
     lcd.setCursor(0,1);
     lcd.print("Temp ");
     lcd.print(String(temperatura));
     lcd.print(" C");
     Serial.println(String("Humidade: " + String(humidade) + "%; Temperatura: " + String(temperatura) + "ºC"));
     digitalWrite(13, LOW); // Esta parte é opcional, eu utilizei para testar e ver se estava a receber alguma coisa
  }
}

depois de varios testes aqui com o pedrock pelo msn nao se chegou a conclusao nenhuma.

nao se entende porque é que o codigo com o pino PWR funciona MAS MAL...
ou seja ainda aparece a primeira vez a temperatura e humidade bem.. so que depois do loop faz caracteres malucos..

no example hello world.. a contagem nao aparecia...


agora comprei o potenciometro e é o inverso..

o codigo que o pedro postou... so aparece caracteres malucos,,,
e o hello world funciona perfeitamente bem e com a contagem a aparecer sem caracteres.

enfim...
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: kast em 07 de Setembro de 2012, 23:51
eu sei a solução pra isso ...


VAI À BRUXA !!!!!!!!!!!!!!!!!!!!!

LOOOOOOOOL  ;D ;D ;D
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 07 de Setembro de 2012, 23:55
Experimenta os primeiros códigos que postámos aqui que não funcionaram antes. PWM não faz o mesmo que um potênciómetro... O potênciómetro é um divisor de tensão, enquanto que o pino PWM apenas envia pulsos. O problema pode estar ai, resolves se fizeres um divisor de tensão, assim não precisas de usar potênciómetro.

Quanto ao que se passa agora, onde é que aparecem os caracteres?

Se o hello world funciona, penso que o problema do lcd já foi ultrapassado e agora é apenas com o código... Digo eu. Experimenta outros códigos exemplo para ter a certeza que o problema já não está no lcd.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: Pedrock em 07 de Setembro de 2012, 23:58
Ele testou o exemplo do serial e também funcionou sem problemas.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: rglove em 07 de Setembro de 2012, 23:59
Então experimenta todos os códigos que postámos antes... Agora o erro já não deve estar no lcd.
Título: Re: Sensor de temp dois arduinos, do quarto para a sala via RF
Enviado por: r16 em 08 de Setembro de 2012, 02:36
bom descobri o problema..

então é assim

o example original do hello world tem esta linha:
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

eu tinha modificado essa linha conforme tinha ligado no arduino ou seja assim:
LiquidCrystal lcd(12, 10, 5, 4, 3, 2);

e com esta linha o hello world funcionou com o potenciometro.. logo tambem deveria funcionar com o codigo do receptor...

entao decidi por carolice, trocar os pinos de 10 para 11..
e cheguei a conclusao que funciona...
lol, olhem que há coisas