19-1 Grupo 6

## Autores

* Gabriel Diniz - 0040961723006
* Tiago Carnevalli Elias - 0040961723012
* Ulisses Bragagnoli Moreno - 0040961723001
* Vinícius Lima - 0040961723011

## Resumo

Projeto para monitorar a umidade do solo e regar as plantas assim que se fizer necessário.

## Softwares e materiais usados

**Materiais:**

* Arduino Uno
* Módulo sensor de umidade de solo
* Módulo relé 5v
* Válvula solenoide de 12v para água (½" x ½")
* Fonte 12v
* Display TM1637 de 7 segmentos e 4 dígitos

**Softwares:**

* IDE Arduino
* Bibliotecas para o display TM1637

## Metodologia

O sistema recebe informações do sensor de umidade a cada 1h, que as converte em porcentagem de umidade e envia para serem mostradas no display TM1637. Caso a umidade fique abaixo de uma porcentagem pré definida, o sistema ativa o relé, que por sua vez, abre a válvula solenoide para liberar a água que vai regar o solo seco.

## Desenvolvimento

O projeto começou pelo código do sistema, que era mais fácil de ser feito. O desafio começou quando precisamos achar as peças corretas, comprá-las e testá-las.

Para os primeiros testes, como ainda não tínhamos todos os componentes, usamos um potenciômetro para simular o sensor de umidade e um led para indicar o comando do relé.

Depois que os componentes extras chegaram, foi fácil substituir os componentes de teste pelos componentes do projeto final.

Outro desafio foi notar que a válvula estava esquentando um pouco com o uso e modificar o projeto para evitar isso, visto que o objetivo era manter a rega o tempo todo para que pudesse fazer a verificação e rega.

Após todos os testes e ajustes, verificamos que tudo estava funcionando normalmente.

## Programação

É necessário incluir a biblioteca específica para usar os comandos do display TM1637.

O monitor serial foi iniciado para comparar os números mostrados no display com os recebidos pelo sistema.

```
#include <TM1637Display.h>

#define valvula 5
#define CLK 3
 #define DIO 2
 #define WS A0

 TM1637Display display(CLK, DIO);

 int umidade, tempoAnalise = 3600, tempoRega = 15, limite = 55;
 //                     (Segundos)      (Segundos)(Porcentagem)

 void setup() {
   Serial.begin(57600);
  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(valvula, OUTPUT);
  digitalWrite(valvula, HIGH);
}

void loop() {
  for(int i = 0; i < tempoAnalise; i++)
  {
     umidade = analogRead(WS);
    display.setBrightness(0);
    umidade = map(umidade, 1023, 0, 0, 100);
    display.showNumberDec(umidade, false);
    Serial.print(umidade); Serial.println("%");
    delay(1000);
  }
   if(umidade < limite)
  {
     digitalWrite(valvula, LOW);
    Serial.print(umidade);Serial.print("%\t");Serial.println("Regando...");
    delay(tempoRega * 1000);
    digitalWrite(valvula, HIGH);
  }
   else
   {
     Serial.print(umidade);Serial.print("%\t");Serial.println("Úmido o suficiente.");
  }
 }

```

## Resultado

O pouco tempo que tivemos para testar o sistema não mostrou nenhum problema grande e pareceu um projeto bem efetivo. Os tempos e valores foram calculados e balanceados para obter a máxima efetividade para o qual o projeto foi pensado.

Com um tempo maior da válvula sem trocar de estado, a temperatura subiu muito menos em relação ao que estava subindo nos primeiros testes.

## Conclusão

O projeto saiu perfeitamente como o planejado e funcionando como o esperado. Aprender a mexer com tantos componentes a mais foi bem interessante e recompensador. O sucesso do projeto só poderá ser avaliado após um período longo de uso, podendo avaliar a praticidade que ele gerou, a condição de saúde das plantas que ele regar e sua efetividade em evitar regas nos dias chuvosos, para não encharcar a planta e fazer com que ela morra.