Caso você não tenha acessado o material anterior, ele pode ser visualizado por este link.
Dando sequência ao assunto sobre irrigação iremos falar sobre hidrólise, este fenômeno ocorre toda vez em que se alimenta o sensor quando ele está em contato com o solo úmido, ocasionando em corrosão do mesmo. Uma forma para reduzir esta corrosão do sensor é liga-lo somente em horários pré definidos para a leitura de dados, usando para isso um relógio de tempo real (RTC), este componente funciona como o relógio do computador, mesmo que a alimentação do Arduíno seja desligada o horário permanece gravado. O Arduíno ira verificar se a hora atual é a mesma da programação, caso seja irá realizar a irrigação das plantas.
Dando sequência ao assunto sobre irrigação iremos falar sobre hidrólise, este fenômeno ocorre toda vez em que se alimenta o sensor quando ele está em contato com o solo úmido, ocasionando em corrosão do mesmo. Uma forma para reduzir esta corrosão do sensor é liga-lo somente em horários pré definidos para a leitura de dados, usando para isso um relógio de tempo real (RTC), este componente funciona como o relógio do computador, mesmo que a alimentação do Arduíno seja desligada o horário permanece gravado. O Arduíno ira verificar se a hora atual é a mesma da programação, caso seja irá realizar a irrigação das plantas.
Será necessário colocar um horário para ligar o sensor e um horário para desligar o sensor, caso a umidade esteja abaixo da necessária a válvula solenoide irá ser acionada e efetuará a irrigação, caso a umidade esteja acima, a válvula continuará desligada mesmo com o sensor ligado.
Funcionamento
O Arduíno irá verificar a hora, caso seja a hora pré programada a porta 7 irá ser acionada, ligando o sensor.
O sensor sendo ligado ele verificará se à umidade é maior que 700 através da porta analógica A0, caso seja o solenoide que está ligado ao pino 13 continuará desligado, no entanto se a umidade for menor que 700 o pino 13 irá acionar a solenoide e as plantas serão irrigadas.
O vídeo abaixo tem mais informações sobre a montagem.
Uma das formas de ligação do RTC é vista no desenho abaixo, o Arduíno utilizado tem duas portas especificas para os pinos SCL e SDA.
Para se utilizar o RTC é necessário a utilização de uma biblioteca que pode ser baixada neste link.
O código fonte está disponibilizado logo abaixo, recomendamos acompanhar à matéria anterior neste link.
#include <Wire.h>
#include "RTClib.h"
int umidade;
RTC_DS1307 rtc;
void setup () {
pinMode(13,OUTPUT);
pinMode(7,OUTPUT);
digitalWrite(13,LOW);// Desliga o solenóide
digitalWrite(7,LOW); // Desliga o sensor
Serial.begin(9600);
#ifdef AVR
Wire.begin();
#else
Wire1.begin();
#endif
rtc.begin();
if (! rtc.isrunning()) {
Serial.println("RTC is NOT running!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
///Serial.print("inicializaçao");
}
}
void loop () {
umidade = analogRead(A0);
DateTime now = rtc.now();
Serial.print(now.hour()); // Mostra a hora
Serial.print(":"); // mostra separação da hora
Serial.println(now.minute(),DEC);//mostra os minutos
//Serial.println(now.year(), DEC); // Mostra anos
Serial.println(umidade); //Mostra o valor da umidade
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Verifica se está no horário do acionamento
if (( now.hour()==(23)and ( now.minute()==(28)))){
Serial.println("Ligado");
digitalWrite(7,HIGH); // Liga pino 7 para acionar o sensor
if (umidade > 700){ //Se a umidade for maior que 700 desliga o solenoide
digitalWrite(13,LOW);// Desliga o pino 13 do solenoide
}
else{
digitalWrite(13,HIGH); //Caso o valor esteja abaixo de 700 liga o pino 13 do solenoide
}}
//Desliga a acionamento na parte da manha
if (( now.hour()==(23)and ( now.minute()>=(29)))){
Serial.println("Desligado");
digitalWrite(7,LOW); //Desliga o pino 7
digitalWrite(13,LOW); //Desliga pino 13
}
delay(1000);
}
Abaixo podemos ver o esquema de ligação completo, a alimentação da válvula solenoide esta separada do Arduíno, nota, a foi utilizado uma bateria nesse esquema, mas a válvula pode funcionar na rede elétrica ( 127V) também.
Caso tenha dificuldades em fazer o modulo relé você pode encontrar mais informações nesse vídeo.
digitalWrite(13,HIGH); Passa a ser digitalWrite(13,LOW);
digitalWrite(13,LOW); Passa a ser digitalWrite(13,HIGH);
Obrigado.
Funcionamento
O Arduíno irá verificar a hora, caso seja a hora pré programada a porta 7 irá ser acionada, ligando o sensor.
O sensor sendo ligado ele verificará se à umidade é maior que 700 através da porta analógica A0, caso seja o solenoide que está ligado ao pino 13 continuará desligado, no entanto se a umidade for menor que 700 o pino 13 irá acionar a solenoide e as plantas serão irrigadas.
O vídeo abaixo tem mais informações sobre a montagem.
Uma das formas de ligação do RTC é vista no desenho abaixo, o Arduíno utilizado tem duas portas especificas para os pinos SCL e SDA.
Fonte: http://blog.filipeflop.com/wp-content/uploads/2014/06/Circuito_DS1307_Serial_Monitor1-630x287.png
Para se utilizar o RTC é necessário a utilização de uma biblioteca que pode ser baixada neste link.
O código fonte está disponibilizado logo abaixo, recomendamos acompanhar à matéria anterior neste link.
#include <Wire.h>
#include "RTClib.h"
int umidade;
RTC_DS1307 rtc;
void setup () {
pinMode(13,OUTPUT);
pinMode(7,OUTPUT);
digitalWrite(13,LOW);// Desliga o solenóide
digitalWrite(7,LOW); // Desliga o sensor
Serial.begin(9600);
#ifdef AVR
Wire.begin();
#else
Wire1.begin();
#endif
rtc.begin();
if (! rtc.isrunning()) {
Serial.println("RTC is NOT running!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
///Serial.print("inicializaçao");
}
}
void loop () {
umidade = analogRead(A0);
DateTime now = rtc.now();
Serial.print(now.hour()); // Mostra a hora
Serial.print(":"); // mostra separação da hora
Serial.println(now.minute(),DEC);//mostra os minutos
//Serial.println(now.year(), DEC); // Mostra anos
Serial.println(umidade); //Mostra o valor da umidade
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Verifica se está no horário do acionamento
if (( now.hour()==(23)and ( now.minute()==(28)))){
Serial.println("Ligado");
digitalWrite(7,HIGH); // Liga pino 7 para acionar o sensor
if (umidade > 700){ //Se a umidade for maior que 700 desliga o solenoide
digitalWrite(13,LOW);// Desliga o pino 13 do solenoide
}
else{
digitalWrite(13,HIGH); //Caso o valor esteja abaixo de 700 liga o pino 13 do solenoide
}}
//Desliga a acionamento na parte da manha
if (( now.hour()==(23)and ( now.minute()>=(29)))){
Serial.println("Desligado");
digitalWrite(7,LOW); //Desliga o pino 7
digitalWrite(13,LOW); //Desliga pino 13
}
delay(1000);
}
Abaixo podemos ver o esquema de ligação completo, a alimentação da válvula solenoide esta separada do Arduíno, nota, a foi utilizado uma bateria nesse esquema, mas a válvula pode funcionar na rede elétrica ( 127V) também.
Caso tenha dificuldades em fazer o modulo relé você pode encontrar mais informações nesse vídeo.
A figura abaixo mostra o esquema de ligação utilizando um módulo relé comercial encontrado a venda na internet, um detalhe ao utilizar estes tipos de módulos é a inversão nas linhas onde aciona o relé, onde for LOW deve se utilizar HIGH e vise versa.
digitalWrite(13,LOW); Passa a ser digitalWrite(13,HIGH);
Obrigado.
Bom dia hora que ,mostra no serial monitor não mesma que horário real e o sensor mesmo na em solo úmido não desliga. Você teria algum esquema de ligação pois o pino 7 voçe diz que o sensor porém o sensor não ligado pino A0 como você descreve no loop
ResponderExcluir06
ExcluirOlá! Obrigado por acompanhar nossos conteúdos.
O sensor só é desligado na hora programada independente se o solo estiver úmido ou não, no caso se estiver úmido o solenóide do pino 13 vai ser desligado, o sensor no pino 7 irá aguardar até a hora programada. Como exemplo:
Nosso sensor foi ligado as 19:00 a umidade estava baixa e o solenóide acionou, digamos que as 19:20 o solo estava úmido, o solenóide vai desligar e o sensor continua ligado até às 19:30 horário programado para desligar o sensor no pino 7.
Ficou mais claro?
Qualquer coisa pode perguntar,
Obrigado
boa noite ,ficou claro mais porque no loop voçe colocou umidade = analogRead(A0); essa minha duvida voçe disse que sensor vai no pino 7 correto ? E PORQUE TEM ESSA LINHA umidade = analogRead(A0);????
ResponderExcluirOlá!
Excluirumidade=analogRead(A0); quer dizer que a variável umidade vai receber os dados do sensor de umidade.
O pino 7 vai ligar ou desligar o sensor
note, o sensor necessita de 3 fios, um gnd, um que envia os dados e o outro o positivo que em nosso caso está ligado no pino 7.
Boa tarde obrigado por tirar minha duvida parabéns pelo projeto.
ResponderExcluirEntendi o positivo do sensor voçe ligou no pino 7 do arduino isso ? Ou que envia dados do pino D0 do sensor no pino 7 do arduino.
ResponderExcluirdesculpa pino A0 sensor vai na entrada analógica A0 isso ??
ResponderExcluirParabéns pelo trabalho, me ajudou muito em meu projeto.
ResponderExcluirAbraço!
Olá Renato!
ExcluirObrigado!
Fico feliz que tenha ajudado, no que pudermos ajudar estaremos a disposição.
Obrigado
Att.
Equipe projeto básico
Cara, meu RTC não funciona de jeito nenhum. Ele fica dando 165:165. Meu RTC é parecido com esse:
ResponderExcluirhttps://www.dx.com/pt/p/rtc-v1-1-ds1307-real-time-clock-module-w-i2c-works-with-official-arduino-boards-316101?tc=BRL&ta=BR&gclid=Cj0KCQjw6rXeBRD3ARIsAD9ni9DL2gSdsweu4hlbtm9TLAFeLipGLlRfUhl-T-Kp0yprBK2x7H1a3JgaAvx-EALw_wcB#.W86ePFVKjIU
Olá!
ExcluirVerifica se não inverteu o scl e o sda.
Cara, era a placa RTC que estava ruim mesmo... Você sabe como redefinir a hora do RTC? Porque não estou conseguindo ajustar a hora. Grande abraço e obrigado pela dica.
ExcluirOlá Igor!
ResponderExcluirEle pega a hora do PC.
Da alguma mensagem de erro?
Consegui. Valeu! A placa estava queimada ...
ExcluirFalow, que bom que funcionou
ExcluirAmigo fiz todo procedimento funciona, porém ao programar a hora de ligar e desligar ele inicia por exemplo sensor no solo seco aciona a valvula porem se o solo não umedecer em 1 minuto a valvula so vai desligar na hora programada independente do solo ficar umido ou não, acredito que seja algo haver com o codigo.
ResponderExcluirOlá amigo.
ExcluirObrigado por acompanhar nossos conteúdos.
O código está correto, utilizei o tempo de 1 minuto para exemplificar, mas vc pode usar outros tempos de acordo com sua necessidade.
(( now.hour()==(23)and ( now.minute()==(28)))){
Nessa linha vc coloca o início
if (( now.hour()==(23)and ( now.minute()>=(29)))){
Nessa linha o horário de terminar.
Vc pode colocar o intervalo que quiser.
Espero ter ajudado.
Qualquer dúvida pode perguntar.
Compartilhe esse material para ajudar nosso canal.
YouTube
www.youtube.com/c/projetobasicos
Facebook
www.facebook.com/projetobasico100
Teria como vc me enviar o codigo por email
ResponderExcluirDesculpa amigo o que estou tentando dizer é que programo a hora inicio e a hora final porem o comando para acionar a valvula so funciona por 1 minuto o sensor continua marcando na variável A0 porem apos 1 minuto a vavula aciona mais si tiver ligada continua ligada até o final do horario programado
ResponderExcluirVocê está utilizando um módulo relé?
ExcluirEstou usando o relé comercial e já fiz as alterações:
ResponderExcluirdigitalWrite(13,HIGH); Passa a ser digitalWrite(13,LOW);
digitalWrite(13,LOW); Passa a ser digitalWrite(13,HIGH);
Bacana.
ExcluirMe manda o código para eu dar uma olhada, pode ser aqui ou para meu e-mail.
projetobasico100@gmail.com
Amigo,
ResponderExcluirValeu pela disposição em ajudar, mas já consegui resolver o meu problema ajustando o codigo as minhas necessidades e uma ótima solução.
obrigado
abraço
Primeiramente gostaria de te agradecer pela iniciativa de ajudar e compartilha um pouco do seu amplo conhecimento. Em segundo lugar gostaria de saber se ha possibilidade de me enviar o codigo completo pelo email; vanderleycorretor@gmail.com, vai me ser de grande serventia. forte abraço.
ResponderExcluir