Registro de testes: https://1drv.ms/w/c/11003e87cfbcc96d/EaLHpej2h81Ovfr5hyHNWkgBq5SkPecqjYCpnD6vC409gA?e=1whbhg
- Descrição do sistema
- Componentes utilizados
- Linguagens de programação utilizadas
- Framework utilizado
- Softwares utilizados
- Regras de negócio
- Requisitos funcionais
- Requisitos não funcionais
- Diagrama de casos de uso
- Imagens do sistema
O Smart Irrigator irriga o solo de forma automática de acordo com os níveis de umidade mínima e máxima definidas pelo usuário. O sistema consiste em um aplicativo desenvolvido com React Native e um ESP8266 (um microcontrolador) configurado como Web Server, capaz de receber e responder requisições HTTP.
No aplicativo, o usuário precisa primeiramente especificar a URL do ESP8266 (em “Gerenciar ESP8266”), após isso, na tela de início, basta clicar no botão de conectar e o aplicativo irá tentar sincronizar com o microcontrolador. Quando a sincronização é bem-sucedida, o app exibe a mensagem “Sincronizado”, caso ocorra algum erro, é exibida a mensagem “Erro de comunicação. Não sincronizado”.
Na tela de Início, o usuário pode acompanhar o nível de umidade do solo, o status da bomba (Ligada ou Desligada) e verificar se o app está ou não sincronizado com o microcontrolador.
Acessando o menu, o usuário pode navegar entre as telas do app. Na tela “Definir níveis de umidade” o usuário pode especificar os níveis de umidade mínimo e máximo que o microcontrolador deve considerar para realizar as irrigações. No menu, ao clicar em “Gerenciar bomba”, é exibido uma tela onde o usuário pode especificar as características da bomba de água, como a potência (em watts) e a vazão (em litros por hora). Nessa mesma tela, o usuário tem acesso ao controle manual, habilitando esse controle, o sistema para de irrigar o sistema de forma automática e passa o controle para o usuário, que pode ligar e desligar a bomba de água através dos botões do app.
O aplicativo também permite gerar gráficos referente ao consumo de água e energia nos períodos especificados pelo usuário.
-
1 NodeMCU ESP8266;
-
1 Módulo Relé de 1 canal 5V;
-
1 Diodo IN4007;
-
1 Protoboard;
-
Jumpers;
-
1 Bomba de água;
-
1 Módulo sensor de umidade do solo;
-
1 Transistor BC548;
-
1 Resistor 1K ohms ¼W.
-
C++;
-
JavaScript.
- React native.
-
IDE Arduino;
-
Visual Studio Code.
-
O sistema deve cadastrar os dados de uma única bomba de água;
-
Por padrão, enquanto o usuário não alterar os níveis de umidade mínima e máxima, estes atributos devem valer respectivamente 20% e 40%;
-
O aplicativo deve sincronizar com um único esp8266;
-
O sistema deve permitir o cadastro de no máximo 15 sensores de umidade.
-
O sistema deve usar o ESP8266 como um Web Server capaz de receber e responder requisições HTTP para controle e monitoramento;
-
O sistema deve medir o nível de umidade do solo através do ESP8266 e permitir que ele envie esses dados ao aplicativo quando solicitado;
-
O sistema deve exibir no aplicativo o nível de umidade do solo retornado pelo ESP8266;
-
O sistema deve identificar o status da bomba de água (“Ligada” ou “Desligada”) por meio do ESP8266 e enviar essas informações ao aplicativo quando solicitado;
-
O sistema deve exibir no aplicativo o status da bomba de água (“Ligada” ou “Desligada”) retornado pelo ESP8266;
-
O sistema deve sincronizar automaticamente o nível de umidade e o status da bomba de água entre o aplicativo e o ESP8266 a cada intervalo de tempo de no máximo 5 segundos;
-
O sistema deve cessar as requisições de sincronização e notificar o usuário após 3 tentativas malsucedidas seguidas, permitindo novas requisições apenas mediante solicitação do usuário;
-
O sistema deve permitir que o usuário configure os níveis de umidade mínima e máxima do solo pelo aplicativo e envie esses dados ao ESP8266;
-
O sistema deve salvar os níveis de umidade mínima e máxima enviados pelo aplicativo na memória EEPROM do ESP8266;
-
O sistema deve ligar a bomba de água automaticamente quando a umidade do solo estiver abaixo do nível mínimo e desligá-la quando atingir o nível máximo, caso o controle manual esteja desativado;
-
O sistema deve permitir que o usuário especifique a vazão (em litros por hora) e a potência (em watts) da bomba de água utilizada através do aplicativo;
-
O sistema deve registrar as datas e horários de início e término das irrigações pelo ESP8266 e permitir que esses dados sejam enviados ao aplicativo quando solicitado;
-
O sistema deve salvar no aplicativo os registros de irrigação retornados pelo ESP8266;
-
O sistema deve gerar gráficos no aplicativo referentes ao consumo de água (em litros) e energia (em kWh) com base em um período especificado pelo usuário;
-
O sistema deve permitir que o usuário escolha a unidade de tempo para exibição dos gráficos de consumo, com as opções de diário, dias, semanas e meses;
-
O sistema deve incluir a funcionalidade de controle manual no aplicativo, permitindo que o usuário ligue e desligue a bomba de água por meio de botões e suspenda a irrigação automática quando ativado;
-
O sistema deve salvar os dados no aplicativo em arquivos no formato “txt”;
-
O sistema deve permitir que o usuário cadastre mais de um sensor de umidade do solo.
-
O sistema deve ser intuitivo e fácil de usar, promovendo uma experiência acessível para o usuário.
-
O sistema deve apresentar telas simples e objetivas, focando na clareza das informações.
-
O sistema deve garantir que as opções de navegação estejam claramente identificadas e facilmente acessíveis por meio do menu.
-
O sistema deve disponibilizar a interface em português.
-
O sistema deve adotar uma cor de fundo escura nas telas do aplicativo para minimizar o cansaço visual do usuário.
-
O sistema deve utilizar uma paleta de cores composta por tons de verde, azul e branco, garantindo uma interface visualmente agradável.
O único requisito funcional não implementado foi o de adicionar sensores. Isso pois o microcontrolador utilizado possui apenas uma porta analógica (tipo de porta necessária para receber as leituras do sensor). Uma possível solução para esse problema é acoplar um circuito integrado que funcione como comutador e ajustar o código.