Arduino Forum

International => Portugues => Topic started by: josesilva on Jul 10, 2015, 12:50 pm

Title: Arduino uno + Dht11 activar 2 relays Ajuda Pf
Post by: josesilva on Jul 10, 2015, 12:50 pm
bem eu sou novo em tudo tanto no forum como no Arduino
Eu sou paraplégico a muitos anos e o meu passa tempo é o pc
e eu comprei um Arduino uno e tenho dois dht11  e eu gostaria de o por a funcionar da seguinte forma
que era  2 dht11 e  4 relays em que  1 dht11 me punha a ligar  2 relays com temperaturas diferentes
em que eu teria 2 temperaturas que era ligar quando atingisse +/- 30 graus (podendo mudar) e se desligava +/- 25 graus (podendo se mudar) de temperatura  mas caso a temperatura não baixasse  então ligava o segundo relay igualmente com temperatura alta e outra baixa para ele se desligar.
eu não sei se dá pra fazer assim  seria tb para o segundo dht11   em que eu depois só ligava caso precisasse deles  

desde já o meu muito obrigado
será que haverá alguma Alma caridosa  que me posa ajudar
Title: Re: Ajuda pf
Post by: josesilva on Jul 11, 2015, 12:20 pm
ja vi que ninguém pode me ajudar neste problema com o arduino e relays
talvez seja complicado de mais  
mas eu não sei pq eu não  entendo nada de programação
eu faço como muitos copio as programações da net mas este eu ainda não o encontrei


Title: Re: Ajuda pf com Arduino
Post by: luisilva on Jul 11, 2015, 09:27 pm
Não me parece muito complicado de fazer. O maior problema é a parte de:
Eu sou paraplégico a muitos anos e o meu passa tempo é o pc
(...)
será que haverá alguma Alma caridosa  que me posa ajudar
Não me parece que esta parte seja relevante para o programa/aplicação que se está a descrever. Se em vez disso tivesse explicado melhor qual é o objectivo deste projecto, neste momento já deveria ter a solução, ou pelo menos algumas respostas. Se quiser explicar melhor:
- qual é o objectivo deste projecto?
- porque é que ele tem que funcionar assim?
- porquê 2 sensores e não apenas 1?
- como é que está a pensar em alterar as temperaturas?
- na parte "mas caso a temperatura não baixasse  então ligava (...)", não baixe durante quanto tempo?

pode ser que obtenha mais respostas.
Title: Re: Ajuda pf com Arduino
Post by: josesilva on Jul 12, 2015, 02:18 am
obrigado por me ter respondido

qual é o objectivo deste projecto = seria para por a ligar duas ventoinhas ( talvez por dentro de um local fechado
porque é que ele tem que funcionar assim = porque caso a ventoinha numero um não funcionasse activaria a segunda ventoinha (ou um alarme)
porquê 2 sensores e não apenas 1 = eu disse 2 pq eu não sei se dá só com um dht11 desculpe minha ignorância
como é que está a pensar em alterar as temperaturas = me desculpe mas não sei mas as temperaturas no meu ver para por a funcionar dois relays acho eu (mas eu não sei) que devem de ter 2 temperaturas diferentes
na parte "mas caso a temperatura não baixasse  então ligava (...)", não baixe durante quanto tempo  =
bem seria assim a primeira ventoinha tinha de se ligar mas caso ela avariasse não podia refrescar o local aonde estaria e a temperatura iria subir alem da temperatura que era suposto por a funcionar a primeira ventoinha então accionava o alarme ou relay para ligar a segunda ventoinha
bem em resumo seria 1 dht11 a activar 2 relays com a temperatura mas individualmente mediante as temperaturas programadas

me desculpe se eu não expliquei bem mas seria uma coisa assim e obrigado por a sua compreensão
Title: Re: Arduino uno + Dht11 activar 2 relays Ajuda Pf
Post by: tecdiego on Jul 17, 2015, 08:41 pm
Caro josesilva esse programa não é complicado, mas o ideal seria você tentar programa-lo, posso lhe  ajudar desta vez, vamos lá:


Code: [Select]

#include "DHT.h"
 
#define DHTPIN A1 // pino que estamos conectado
#define DHTTYPE DHT11 // DHT 11
 
// Conecte pino 1 do sensor (esquerda) ao +5V
// Conecte pino 2 do sensor ao pino de dados definido em seu Arduino
// Conecte pino 4 do sensor ao GND
// Conecte o resistor de 10K entre pin 2 (dados)
// e ao pino 1 (VCC) do sensor
DHT dht(DHTPIN, DHTTYPE);

float t = dht.readTemperature();
float tempMaxima     = 32.000;
float tempMinimo      = 29.000;
int delayRele2 = 4 // tempo em segundos entre ligar o primeiro relé e o segundo relé
int intervalo = 0;
int rele1 = 5;
int rele2 = 6;

 
void setup()
{
  Serial.begin(9600);
  dht.begin();
  pinMode(rele1, OUTPUT);
  pinMode(rele2, OUTPUT);
}
 
void loop()
{
  // A leitura da temperatura e umidade pode levar 250ms!
  // O atraso do sensor pode chegar a 2 segundos.
  // testa se retorno é valido, caso contrário algo está errado.
  if (isnan(t) || isnan(h))
  {
    Serial.println("Erro ao ler a temperatura do DHT");
  }
  else
  {
    Serial.print("Temperatura: ");
    Serial.print(t);
    Serial.println(" *C");

    if (t >= tempMaxima){

      digitalWrite(rele1,HIGH);
      if(intervalo == 0){
         intervalo = millis();
      }
      if( (millis() - intervalo) /1000 >= delayRele2) { // se a temperatura não baixar e passar o intervalo desejado, o programa vai ligar o segundo relé
        digitalWrite(rele2,HIGH);
      }
       
    }
   
    if( t<= temMinimo) {

       digitalWrite(rele1,LOW);
       digitalWrite(rele2,LOW);
       intervalo = 0;
    }

  }

}
 

código fonte baseado no código do site Felipeflop (http://blog.filipeflop.com/sensores/monitorando-temperatura-e-umidade-com-o-sensor-dht11.html)

Espero ter ajudado, mas espero que você estude um pouco de programação para não depender tanto dos outros.
Abraços
Title: Re: Arduino uno + Dht11 activar 2 relays Ajuda Pf
Post by: josesilva on Jul 18, 2015, 01:57 am
Obrigado mesmo muito obrigado por me ajudar mas infelizmente ele me dá erro nesta linha



DHT dht;//DHTPIN, DHTTYPE);



e eu não sei o que fazer se me pudesse Ajudar novamente

Obrigado  e sim era bom eu saber de programação sim mas eu não sei inglês
Title: Re: Arduino uno + Dht11 activar 2 relays Ajuda Pf
Post by: luisilva on Jul 18, 2015, 02:28 am
Isso deverá ser a biblioteca mal instalada. Como instalou a biblioteca? Seguiu este (https://www.arduino.cc/en/guide/libraries) procedimento?
Title: Re: Arduino uno + Dht11 activar 2 relays Ajuda Pf
Post by: josesilva on Jul 18, 2015, 02:56 am
a versão  arduino-1.6.5-r2  ja tras DHT  Include library
eu faço adicionar mas me dá o mesmo erro

em:    DHT dht;//DHTPIN, DHTTYPE);

eu não sei o que fazer
aqui vai o erro que ele me dá

sensortemperatura:14: error: 'DHT' does not name a type
sensortemperatura:16: error: expected primary-expression before '.' token
sensortemperatura:20: error: expected ',' or ';' before 'int'
sensortemperatura.ino: In function 'void setup()':
sensortemperatura:28: error: expected unqualified-id before '.' token
sensortemperatura.ino: In function 'void loop()':
sensortemperatura:38: error: 'h' was not declared in this scope
sensortemperatura:51: error: 'intervalo' was not declared in this scope
sensortemperatura:54: error: 'intervalo' was not declared in this scope
sensortemperatura:60: error: 'temMinimo' was not declared in this scope
sensortemperatura:64: error: 'intervalo' was not declared in this scope
'DHT' does not name a type
Title: Re: Arduino uno + Dht11 activar 2 relays Ajuda Pf
Post by: luisilva on Jul 18, 2015, 10:41 am
Mas o erro:
Code: [Select]
sensortemperatura:14: error: 'DHT' does not name a type
quer dizer que a biblioteca não está instalada. O Arduino IDE até pode trazer uma versão da biblioteca para comunicar com o sensor DHT, mas não é a mesma que foi utilizada para escrever este sketch.
Title: Re: Arduino uno + Dht11 activar 2 relays Ajuda Pf
Post by: josesilva on Jul 18, 2015, 11:11 am
ups me desculpe eu não sabia  poderia me indicar pf aonde eu poderia ir buscar  essa biblioteca compatível para poder gravar o sketch

Obrigado e me desculpe 
Title: Re: Arduino uno + Dht11 activar 2 relays Ajuda Pf
Post by: luisilva on Jul 18, 2015, 12:06 pm
A biblioteca é  esta (https://github.com/adafruit/DHT-sensor-library).
Tem que carregar no botão do lado direito da página que diz "Download ZIP". Com o IDE desligado deve pegar no conteúdo do ficheiro e guardá-lo na directoria "\sketchbook\libraries". Depois disso pode abrir o IDE, criar um novo sketch, copiar para lá o código:
Code: [Select]

#include "DHT.h"

#define DHTPIN A1 // pino que estamos conectado
#define DHTTYPE DHT11 // DHT 11

// Conecte pino 1 do sensor (esquerda) ao +5V
// Conecte pino 2 do sensor ao pino de dados definido em seu Arduino
// Conecte pino 4 do sensor ao GND
// Conecte o resistor de 10K entre pin 2 (dados)
// e ao pino 1 (VCC) do sensor
DHT dht(DHTPIN, DHTTYPE);

float tempMaxima     = 32.000;
float tempMinimo      = 29.000;
int delayRele2 = 4; // tempo em segundos entre ligar o primeiro relé e o segundo relé
int intervalo = 0;
int rele1 = 5;
int rele2 = 6;


void setup()
{
  Serial.begin(9600);
  dht.begin();
  pinMode(rele1, OUTPUT);
  pinMode(rele2, OUTPUT);
}

void loop()
{
  // A leitura da temperatura e umidade pode levar 250ms!
  // O atraso do sensor pode chegar a 2 segundos.
  float t = dht.readTemperature();
  float h = dht.readHumidity();

  // testa se retorno é valido, caso contrário algo está errado.
  if (isnan(t) || isnan(h))
  {
    Serial.println("Erro ao ler a temperatura do DHT");
  }
  else
  {
    Serial.print("Temperatura: ");
    Serial.print(t);
    Serial.println(" *C");

    if (t >= tempMaxima){

      digitalWrite(rele1,HIGH);
      if(intervalo == 0){
        intervalo = millis();
      }
      if( (millis() - intervalo) /1000 >= delayRele2) { // se a temperatura não baixar e passar o intervalo desejado, o programa vai ligar o segundo relé
        digitalWrite(rele2,HIGH);
      }

    }

    if( t<= tempMinimo) {

      digitalWrite(rele1,LOW);
      digitalWrite(rele2,LOW);
      intervalo = 0;
    }

  }

}


e ver se funciona. Este código tem algumas correcções em relação ao partilhado inicialmente pelo tecdiego.
Title: Re: Arduino uno + Dht11 activar 2 relays Ajuda Pf
Post by: josesilva on Jul 18, 2015, 12:16 pm
já dá  fixe  Obrigado muito mas muito obrigado Vc é o maior
vou testar a ver como funciona  :)  ;)

Obrigado
Title: Re: Arduino uno + Dht11 activar 2 relays Ajuda Pf
Post by: josesilva on Jul 18, 2015, 05:34 pm
esta a dar bem obrigado
mas uma pergunta ele não faz o reset  depois de ele disparar a  primeira vez ?
eu digo isso pq ele comigo não faz eu tenho de o desligar pra ele recomeçar a dar bem
pq se eu não o desligo ele me desliga os 2 relays

Obrigado desculpe o incomodo
Title: Re: Arduino uno + Dht11 activar 2 relays Ajuda Pf
Post by: luisilva on Jul 18, 2015, 05:42 pm
No programa, o que está definido é que quando a temperatura baixa para além dos 29 graus ele desliga os dois relés.
Title: Re: Arduino uno + Dht11 activar 2 relays Ajuda Pf
Post by: josesilva on Jul 18, 2015, 05:52 pm
muito Obrigado VC é o Maior  
sim ele desliga os 2 (relays) sim mas depois se ele volta a disparar ele liga os 2 tb o que seria as 2 (ventoinhas) o mesmo tempo e não uma só até fazer o tempo pra ligar a segunda ventoinha
isto é o que eu estou a ver que ele faz com os meus relays
de inicio ele faz isso sim mas depois de disparar a primeira vez ja não o faz ele liga os 2 o mesmo tempo

desculpe a minha pergunta mas daria pra fazer assim ?

1 relay
float tempMaxima     = 32.000;
float tempMinimo      = 29.000;

e fazer a mesma coisa mas para o segundo relay ?

2 relay
float tempMaxima     = 35.000;
float tempMinimo      = 32.000;


Obrigado muito Obrigado por a sua Ajuda e desculpe a minha ignorância
Title: Re: Arduino uno + Dht11 activar 2 relays Ajuda Pf
Post by: luisilva on Jul 19, 2015, 12:47 am
Bem, isso deve ficar assim:
Code: [Select]

#include "DHT.h"

#define DHTPIN A1 // pino que estamos conectado
#define DHTTYPE DHT11 // DHT 11

// Conecte pino 1 do sensor (esquerda) ao +5V
// Conecte pino 2 do sensor ao pino de dados definido em seu Arduino
// Conecte pino 4 do sensor ao GND
// Conecte o resistor de 10K entre pin 2 (dados)
// e ao pino 1 (VCC) do sensor
DHT dht(DHTPIN, DHTTYPE);

float tempMaxima1 = 32.0;
float tempMinima1 = 29.0;
float tempMaxima2 = 35.0;
float tempMinima2 = 32.0;
int delayRele2 = 4; // tempo em segundos entre ligar o primeiro relé e o segundo relé
int intervalo = 0;
int rele1 = 5;
int rele2 = 6;


void setup()
{
  Serial.begin(9600);
  dht.begin();
  pinMode(rele1, OUTPUT);
  pinMode(rele2, OUTPUT);
}

void loop()
{
  // A leitura da temperatura e umidade pode levar 250ms!
  // O atraso do sensor pode chegar a 2 segundos.
  float t = dht.readTemperature();
  float h = dht.readHumidity();

  // testa se retorno é valido, caso contrário algo está errado.
  if (isnan(t) || isnan(h))
  {
    Serial.println("Erro ao ler a temperatura do DHT");
  }
  else
  {
    Serial.print("Temperatura: ");
    Serial.print(t);
    Serial.println(" *C");

    if (t >= tempMaxima1){

      digitalWrite(rele1,HIGH);
    }

    else if( t < tempMinima1) {

      digitalWrite(rele1,LOW);
    }

    if (t >= tempMaxima2){

      digitalWrite(rele2,HIGH);
    }

    else if( t < tempMinima2) {

      digitalWrite(rele2,LOW);
    }
  }

}
Title: Re: Arduino uno + Dht11 activar 2 relays Ajuda Pf
Post by: luisilva on Jul 19, 2015, 02:02 am
Essa parte dos pontos existe, só que como vocês não lêem as regras não sabem disso. Basta carregar no "[add]" junto ao "Karma" do lado esquerdo do post que acho útil.