collapse

* Posts Recentes

O que é isto ? por SerraCabo
[12 de Abril de 2024, 14:20]


Amplificador - Rockboard HA 1 In-Ear por almamater
[11 de Abril de 2024, 20:46]


Emulador NES em ESP32 por dropes
[10 de Abril de 2024, 15:30]


Meu novo robô por josecarlos
[29 de Março de 2024, 18:30]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Sensor de temp dois arduinos, do quarto para a sala via RF  (Lida 49327 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline r16

  • Mini Robot
  • *
  • Mensagens: 339
Re: Sensor de temp dois arduinos, do quarto para a sala via RF
« Responder #30 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

Offline rglove

  • Mini Robot
  • *
  • Mensagens: 527
Re: Sensor de temp dois arduinos, do quarto para a sala via RF
« Responder #31 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.

Offline r16

  • Mini Robot
  • *
  • Mensagens: 339
Re: Sensor de temp dois arduinos, do quarto para a sala via RF
« Responder #32 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

Offline rglove

  • Mini Robot
  • *
  • Mensagens: 527
Re: Sensor de temp dois arduinos, do quarto para a sala via RF
« Responder #33 em: 02 de Setembro de 2012, 19:39 »
Mas recebes alguma coisa no serial monitor? Algum texto?

Offline r16

  • Mini Robot
  • *
  • Mensagens: 339
Re: Sensor de temp dois arduinos, do quarto para a sala via RF
« Responder #34 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.

Offline rglove

  • Mini Robot
  • *
  • Mensagens: 527
Re: Sensor de temp dois arduinos, do quarto para a sala via RF
« Responder #35 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.

Offline r16

  • Mini Robot
  • *
  • Mensagens: 339
Re: Sensor de temp dois arduinos, do quarto para a sala via RF
« Responder #36 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

Offline rglove

  • Mini Robot
  • *
  • Mensagens: 527
Re: Sensor de temp dois arduinos, do quarto para a sala via RF
« Responder #37 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.

Offline r16

  • Mini Robot
  • *
  • Mensagens: 339
Re: Sensor de temp dois arduinos, do quarto para a sala via RF
« Responder #38 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

Offline kast

  • Mini Robot
  • *
  • Mensagens: 868
Re: Sensor de temp dois arduinos, do quarto para a sala via RF
« Responder #39 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 ....
Os electrões são nossos amigos !!! :D

Offline r16

  • Mini Robot
  • *
  • Mensagens: 339
Re: Sensor de temp dois arduinos, do quarto para a sala via RF
« Responder #40 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 ...

Offline kast

  • Mini Robot
  • *
  • Mensagens: 868
Re: Sensor de temp dois arduinos, do quarto para a sala via RF
« Responder #41 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
  //      }
      }
   }
}
« Última modificação: 02 de Setembro de 2012, 21:44 por kast »
Os electrões são nossos amigos !!! :D

Offline rglove

  • Mini Robot
  • *
  • Mensagens: 527
Re: Sensor de temp dois arduinos, do quarto para a sala via RF
« Responder #42 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;
}
« Última modificação: 02 de Setembro de 2012, 22:29 por rglove »

Offline r16

  • Mini Robot
  • *
  • Mensagens: 339
Re: Sensor de temp dois arduinos, do quarto para a sala via RF
« Responder #43 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
« Última modificação: 02 de Setembro de 2012, 22:43 por r16 »

Offline rglove

  • Mini Robot
  • *
  • Mensagens: 527
Re: Sensor de temp dois arduinos, do quarto para a sala via RF
« Responder #44 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]