Agolva (discussão | contribs)
Sem resumo de edição
Agolva (discussão | contribs)
 
(21 revisões intermediárias por 2 usuários não estão sendo mostradas)
Linha 102: Linha 102:


= Diagrama de Estado =
= Diagrama de Estado =
[[Arquivo:estadoM3.png]]


= Diagrama de Sequência =
= Diagrama de Sequência =
[[Arquivo:sequenciaM3.png]]


= Protótipo =
= Protótipo =
== Materiais utilizados ==
== Funcionamento ==


== Dificuldades ==
Este protótipo possui as funções Ligar o Pivô, Desligar o Pivô e Ativar o Modo Automático. A interface de comunicação entre o usuário e o sistema é um display, dois botões e dois LEDs.
Inicialmente, o pivô está desligado. Quando o usuário aperta o botão Ligar, o Arduino processa esta ação e libera tensão para o relé, que ativa a bomba de água, fazendo o pivô aspergir enquanto o botão Desligar não for apertado. Quando isto ocorre, o Arduino para de liberar tensão para o relé, desligando, assim, o pivô.
Voltando à situação inicial (pivô desligado), se o botão Modo Automático for apertado, o Arduino processa esta ação e coleta dados do sensor. Se a temperatura ambiente (ou do solo) for menor que 29°C(*), o pivô continua desligado, porém, se a temperatura for igual ou maior que este valor, o pivô é ligado da mesma forma descrita anteriormente. Depois de ligado, o pivô continua aspergindo continuamente, sendo desligado somente quando a temperatura atinge um valor menor que 29°C(*) ou apertando-se novamente o botão Modo Automático.


Uma das maiores dificuldades encontradas na realização do protótipo foi encontrar os materiais que seriam utilizados. À princípio, o arduíno controlava uma bombinha de água de 220V (através de um relé). Entretanto, esta causava ruídos na tela do display que foi utilizado no projeto. No intuito de amenizar os ruídos, utilizou-se uma bombinha de água de 110V. Com a persistência do erro, utilizou-se uma bombinha de água de 12 V. Com esta bombinha, foi possível apresentar o protótipo sem que o display fosse preenchido por "lixo".
(*)29°C ou outra temperatura determinada no código


== Aperfeiçoamento ==
=== Materiais utilizados ===
* Arduino;
* Display 16x2;
* Relé;
* Bateria de 9V;
* Bomba d'água de 12V;
* Fonte linear 12V;
* Sensor de temperatura;
* LED's;
* Botões;


== Pontos Críticos ==


Uma das maiores dificuldades encontradas na realização do protótipo foi encontrar os materiais que seriam utilizados. À princípio, o arduíno controlava uma bombinha de água de 220V (através de um relé). Entretanto, esta causava ruídos na tela do display que foi utilizado no projeto. No intuito de amenizar os ruídos, utilizou-se uma bombinha de água de 110V. Com a persistência do erro, utilizou-se uma bombinha de água de 12 V. Com esta bombinha, foi possível apresentar o protótipo sem que o display fosse preenchido por "lixo".


== Código (.ino) ==
== Considerações Finais ==


/*
Neste protótipo, a interface utilizada, pela qual o usuário controla o sistema de irrigação, foi um display, dois botões e dois leds. Mas, para implementação do projeto, pode-se criar um website ou até mesmo aplicativo para dispositivos móveis, por exemplo Android, visando facilitar ainda mais o acesso pelo usuário.
Prototipo M3 Irrigacao
Optamos por utilizar o Arduíno como controlador por ser de fácil acesso, visto que é uma ferramenta open-source e sua linguagem de programação é, basicamente, a linguagem C. Além do mais, seus resultados são bastante satisfatórios para um protótipo a nível acadêmico. A programação é relativamente simples e o código é pequeno (o qual se encontra disponível e comentado abaixo).
Grupo: Alice Golva, Camila Belotti, Lara Braz
Utilizamos um sensor de temperatura para que a função Modo Automático fosse executada, ou seja, quando o solo atinge uma determinada temperatura, ou acima desta, o irrigador começa a aspergir. Pode-se observar que, para implementação do projeto, este torna-se ainda mais eficiente com a utilização de um sensor de umidade, juntamente com o de temperatura, para que se avalie também a umidade do solo, para que quando este estiver seco, o irrigador seja ligado, visto que pode ocorrer de a temperatura estar baixa, porém o solo estar seco. Desta forma, o sensor de umidade auxiliaria e aperfeiçoaria ainda mais a irrigação. Pode-se também implementar um temporizador no sistema, no Modo Automático, para que a irrigação possa ser feita em um horário e durante um período pré-determinado pelo usuário, todos os dias ou nos dias em que for necessária a irrigação.
*/


//Declaracoes
== Código ==
int pinoLM35 = A3;
int ledRed = 9; // led vermelho esta na porta digital 9 do arduino
int ledGreen = 10; //led verde esta na porta digital 10 do arduino
int BotaoLD = 6; //botao LD esta na porta digital 6 do arduino
int BotaoMA = 7; //botao MA esta na porta digital 7 do arduino
int estadoB1 = 0; //botao LD inicializado  como 0(desligado, pressionado)
int estadoB2 = 0; //botao MA inicializado  como 0(desligado, pressionado)
int flag1 = 0; // variavel para ler o estado em que o botao LD se encontra, ou seja, se o pivo esta ligado ou desligado
int flag2 = 0; // variavel para ler o estado em que o botao MA se encontra, ou seja, se o pivo esta ou nao no modo automatico
int pinoSensor = 0;
int valorLido = 0;
int rele = 8; //o rele esta na porta digital 8 do arduino
float temperatura = 0; // parametro temperatura e inicializado como 0


#include <LiquidCrystal.h> //Biblioteca do display
[[Arquivo:M3IrrigacaoCodigo.pdf]]
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //portas do arduino em que o display esta ligado


void setup()
== Fotos e Vídeo ==
{
  //Inicializacoes
  pinMode(BotaoLD, INPUT); //este botao trabalha apenas como entrada, ou seja, arduino sempre coleta suas informacoes
  pinMode(ledRed, OUTPUT); // led trabalha apenas como saida, ou seja, arduino somente 'manda' tensão para ele
  pinMode(ledGreen, OUTPUT); //idem
  digitalWrite(BotaoLD, 1); //inicializa o botao LD como HIGH/1/levantado/não apertado
  digitalWrite(BotaoMA, 1); // idem para botao MA
  lcd.begin(16, 2);//funcao do display, indica que ele e uma matriz 16x2
  Serial.begin(9600);
  pinMode(rele, OUTPUT);// o rele trabalha apenas como saida, ou seja, arduino somente 'manda' tensão para ele
  digitalWrite(rele, 0); //rele inicializado como "desligado" (lógica contrária aos botões)
}


void loop() //funçao principal
[[Arquivo:Fotor0309165324.jpg]]
{
  do{
  flag1 = digitalRead(BotaoLD); //A variavel flag1 le o botão. O BotaoLD, inicialmente está como HIGH. Ao ser pressionado, vira LOW. Entao, flag vira LOW e entra no if abaixo


  if(flag1==0) //Se o estado do botão for igual à zero (ou seja, for pressionado uma vez, então...)
Componentes do protótipo: botões, sensor, relé, bateria e bomba d'água de 12V.
  {
  estadoB1 = 1 - estadoB1; //inverte o valor do estado do botão liga (estava inicialmente 0-'desligado', agora se encontra 1-'ligado')
  }


  if(estadoB1 == 1)//se o estado do botãoLD for igual a um, indica que foi apertado, ou seja, 'ligado'. Isto indica que o usuário deseja LIGAR o pivô. Então..
  {
  digitalWrite(ledGreen, estadoB1); //acende o led verde
  digitalWrite(ledRed,0); //desliga o led vermelho
  digitalWrite(rele, 1); //aciona o rele, que liga a bomba, que liga o pivô.
  lcd.clear(); //limpa o display
  lcd.setCursor(0,0); //coloca o cursor no inicio do display
  lcd.print("Estado:"); //mostra mensagem no display
  lcd.setCursor(0,1); //coloca o cursor na linha debaixo
  lcd.print("Pivo ligado!");  // mostra mensagem com o estado em que o pivo se encontra-ligado
  }


  else // se o botão não foi pressionado, ou seja, o usuário não pediu que ligasse o pivô (default)
[[Arquivo:Fotor0309165223.jpg]]
  {
  digitalWrite(ledGreen, 0); //desliga o led verde 
  digitalWrite(ledRed, 1); //liga o led vermelho - este fica sempre ligado para indicar que o pivô encontra-se desligado
  digitalWrite(rele, 0); //arduino não esta liberando tensao para o rele, ou seja, a bomba esta desligada
  lcd.clear(); //limpa a tela
  lcd.setCursor(0,0); //coloca cursor no inico da tela
  lcd.print("Estado:"); //mostra mensagem no display
  lcd.setCursor(0,1); //coloca o cursor na linha debaixo
  lcd.print("Pivo desligado!");  // mostra mensagem com o estado em que o pivo se encontra-ligado
}
delay(200); //pausa no programa por 2 segundos
}while(estadoB1 == 1); //fazer isto enquanto o botao nao for pressionado novamente


Display exibindo os modos do pivô (ligado, desligado ou modo automático - com temperatura que o sensor está coletando)




== Vídeo ==
Vídeo  
< http://www.youtube.com/watch?v=xSqgQt0qAg8&feature=youtu.be >

Edição atual tal como às 20h15min de 9 de março de 2014

Integrantes

  • Alice Golva
  • Camila Beloti
  • Lara Braz



5W2H


What

  • 1. Qual o objetivo deste projeto?

O objetivo deste projeto é controlar (pela central de operações) o irrigador de jardim. Essa nova tecnologia proporcionará uma automatização desta tarefa. O irrigador de jardim automatizado poderá proporcionar ao proprietário da casa maior tranquilidade quanto ao cuidado de suas plantas. O proprietário não precisará se preocupar com o horário de irrigação, nem mesmo com a quantidade de água necessitada pelas mesmas. Dessa forma, o irrigador é ligado no momento em que o solo estiver seco (a sua resistência aumenta, dificultando a passagem de corrente, indicando o momento da irrigação). Saber quando irrigar é conhecer a capacidade de retenção de água no solo, de forma a garantir que a água reposta pela irrigação fique armazenada em uma profundidade que possa ser aproveitada pelas raízes das plantas. É preciso que o sistema não extrapole a capacidade de irrigação, pois pode significar perda de ingredientes e nutrientes necessários para o solo.


Who

  • 1. Quais elementos fazem parte do sistema?
    • Sensores de temperatura e umidade;
    • Arduino;
    • Interface de comunicação com o usuário (celular, computador, etc).
    • Pivô


Where

  • 1. Onde esta aplicação poderá ser usada?

Esta aplicação poderá ser usada em residências que possuem jardim. Uma das vantagens desse projeto é que o proprietário não precisa necessariamente estar em casa ou se preocupar com horários para ligar o irrigador, pois a própria central M2M se encarregará disso. Além disso, o irrigador beneficiará leigos em jardinagem. Será possível determinar uma quantidade de água que determinada espécie de planta necessita para sobreviver. Os principais beneficiados com este projeto são os próprios moradores da casa, que pouparão tempo (pois não precisará reservar um período do dia para aguar as plantas) e também dinheiro (já que o irrigador automatizado trabalhará de forma a economizar a quantidade de água necessária para a sobrevivência das plantas).

How

  • 1. Descreva a 1a. funcionalidade?
    • Ligar (à distância) o irrigador de jardim.


  • 2. Descreva a 2a. funcionalidade?
    • Desligar (à distância) o irrigador de jardim.


  • 3. Descreva a 3a. funcionalidade?
    • Ativar o modo automático. Este acionará sensores (de temperatura e umidade) que foram colocados no jardim para que seja avaliado a necessidade de irrigação.


How much

  • 1. Quanto custa cada sensor?
    • Sensor de temperatura do solo pode variar de R$30,00 à R$50,00.
      • Exemplo: Sensor de Temperatura Watermark Modelo: 200TS Preço: R$40,50
    • Sensor de umidade do solo pode variar de R$20,00 à R$40,00.
      • Exemplo: Moisture Sensor Preço: R$24,00


Informações Adicionais

  • Para o desenvolvimento do projeto, na parte de levantamento de requisitos, será feita uma entrevista com moradores que possuem interesse no produto, bem como jardineiros e biólogos. Essas pesquisas contribuirão para a eficiência do sistema, pois serão avaliadas as necessidades e as dificuldades encontradas nessa atividade.
  • Será criado um exemplo para demonstrar a forma como o irrigador trabalhará. Esse protótipo será controlado pela plataforma Arduino. As funções IDE do Arduino permitem o desenvolvimento de software que possa ser executado pelo dispositivo. Além disso, serão utilizados sensores mais simples de serem manuseados, como o sensor de temperatura (essencial para o funcionamento deste projeto).


Diagrama de Fluxo de Dados - Nível 0

Diagrama de Fluxo de Dados

Diagrama Entidade Relacionamento

Diagrama de Classes

Diagrama de Casos de Uso

Detalhamento Casos de Uso

Diagrama de Estado

Diagrama de Sequência

Protótipo

Funcionamento

Este protótipo possui as funções Ligar o Pivô, Desligar o Pivô e Ativar o Modo Automático. A interface de comunicação entre o usuário e o sistema é um display, dois botões e dois LEDs. Inicialmente, o pivô está desligado. Quando o usuário aperta o botão Ligar, o Arduino processa esta ação e libera tensão para o relé, que ativa a bomba de água, fazendo o pivô aspergir enquanto o botão Desligar não for apertado. Quando isto ocorre, o Arduino para de liberar tensão para o relé, desligando, assim, o pivô. Voltando à situação inicial (pivô desligado), se o botão Modo Automático for apertado, o Arduino processa esta ação e coleta dados do sensor. Se a temperatura ambiente (ou do solo) for menor que 29°C(*), o pivô continua desligado, porém, se a temperatura for igual ou maior que este valor, o pivô é ligado da mesma forma descrita anteriormente. Depois de ligado, o pivô continua aspergindo continuamente, sendo desligado somente quando a temperatura atinge um valor menor que 29°C(*) ou apertando-se novamente o botão Modo Automático.

(*)29°C ou outra temperatura determinada no código

Materiais utilizados

  • Arduino;
  • Display 16x2;
  • Relé;
  • Bateria de 9V;
  • Bomba d'água de 12V;
  • Fonte linear 12V;
  • Sensor de temperatura;
  • LED's;
  • Botões;

Pontos Críticos

Uma das maiores dificuldades encontradas na realização do protótipo foi encontrar os materiais que seriam utilizados. À princípio, o arduíno controlava uma bombinha de água de 220V (através de um relé). Entretanto, esta causava ruídos na tela do display que foi utilizado no projeto. No intuito de amenizar os ruídos, utilizou-se uma bombinha de água de 110V. Com a persistência do erro, utilizou-se uma bombinha de água de 12 V. Com esta bombinha, foi possível apresentar o protótipo sem que o display fosse preenchido por "lixo".

Considerações Finais

Neste protótipo, a interface utilizada, pela qual o usuário controla o sistema de irrigação, foi um display, dois botões e dois leds. Mas, para implementação do projeto, pode-se criar um website ou até mesmo aplicativo para dispositivos móveis, por exemplo Android, visando facilitar ainda mais o acesso pelo usuário. Optamos por utilizar o Arduíno como controlador por ser de fácil acesso, visto que é uma ferramenta open-source e sua linguagem de programação é, basicamente, a linguagem C. Além do mais, seus resultados são bastante satisfatórios para um protótipo a nível acadêmico. A programação é relativamente simples e o código é pequeno (o qual se encontra disponível e comentado abaixo). Utilizamos um sensor de temperatura para que a função Modo Automático fosse executada, ou seja, quando o solo atinge uma determinada temperatura, ou acima desta, o irrigador começa a aspergir. Pode-se observar que, para implementação do projeto, este torna-se ainda mais eficiente com a utilização de um sensor de umidade, juntamente com o de temperatura, para que se avalie também a umidade do solo, para que quando este estiver seco, o irrigador seja ligado, visto que pode ocorrer de a temperatura estar baixa, porém o solo estar seco. Desta forma, o sensor de umidade auxiliaria e aperfeiçoaria ainda mais a irrigação. Pode-se também implementar um temporizador no sistema, no Modo Automático, para que a irrigação possa ser feita em um horário e durante um período pré-determinado pelo usuário, todos os dias ou nos dias em que for necessária a irrigação.

Código

Arquivo:M3IrrigacaoCodigo.pdf

Fotos e Vídeo

Componentes do protótipo: botões, sensor, relé, bateria e bomba d'água de 12V.


Display exibindo os modos do pivô (ligado, desligado ou modo automático - com temperatura que o sensor está coletando)


Vídeo < http://www.youtube.com/watch?v=xSqgQt0qAg8&feature=youtu.be >