1. Introdução
A jardinagem e a agricultura modernas dependem cada vez mais da automação para otimizar o uso de recursos, especialmente água — um recurso escasso em muitas regiões. Um controlador de irrigação inteligente automatiza a irrigação com base nas condições reais do solo, em vez de cronômetros fixos, reduzindo desperdícios, evitando regas excessivas ou insuficientes e apoiando um crescimento mais saudável das plantas.
Este estudo de caso foca na modelagem do comportamento desse sistema usando um diagrama de máquina de estados UML (também chamado de diagrama de estado). O diagrama captura o ciclo de vida do sistema, pontos de decisão e respostas a eventos como leituras de umidade, tempos esgotados e intervenções do usuário.
O projeto utiliza PlantUMLsintaxe, semelhante ao exemplo da cafeteria fornecido, que modela elegantemente estados compostos, guardas, ações e caminhos de erro/recuperação.
2. Enunciado do Problema e Requisitos
Um controlador automatizado de irrigação para um jardim doméstico ou pequeno greenhouse deve:

- Iniciar em um modo de baixo consumo Standbya maioria do tempo.
- Acordar periodicamente de acordo com um cronograma (gatilho por temporizador) para verificar as condições.
- Entrar em um estado de Sensingestado para ler o nível de umidade do solo (por meio de um sensor capacitivo ou resistivo).
- Se a umidade < 30% (limite configurável de seca), iniciar Irrigandoabrindo uma válvula solenóide ou ativando uma bomba.
- Se a umidade ≥ 30%, retornar para Aguardando (não é necessário regar).
- Enquanto Regando, monitorar continuamente (ou periodicamente) a umidade.
- Parar de regar e fechar a válvula quando:
- A umidade atinge 80% (limiar de umidade configurável) → objetivo alcançado.
- Um Tempo limite de segurança expira (por exemplo, 30 minutos) → evita inundação, estouros de tubos ou problemas elétricos caso o sensor falhe.
- Após parar a irrigação, passe para o estado de Desligamento estado.
- No estado de Desligamento, aguarde por confirmação manual (pressão de botão ou comando do aplicativo) antes de retornar ao Aguardando — isso permite que o usuário inspecione o sistema ou faça uma sobreposição, se necessário.
- Gerencie falhas de forma adequada (por exemplo, falha no sensor, válvula travada) passando para um estado de Erro estado com opções de recuperação.
Comportamentos desejáveis adicionais (mantidos simples aqui):
- Nenhuma irrigação durante determinadas horas (gerenciado por horário/contador).
- Registro ou notificações estão fora do escopo desta máquina de estados principal.
3. Conceitos principais da máquina de estados utilizados
- Estados: Ocioso/Standby, Sensando, Irrigando, Desligamento, Erro.
- Estado composto: Irrigando inclui lógica interna de monitoramento (embora mantida plana aqui para simplificação).
- Transições:
- Acionado por eventos (temporizador, leitura de umidade, tempo limite).
- Protegido por condições [umidade < 30%], [umidade >= 80%].
- Ações: /abrir_valvula(), /fechar_valvula(), /notificar_usuario(), etc.
- Pseudostados iniciais/finais: [*] para início/fim.
- Transições próprias e loops de recuperação.
4. Diagrama de estados em PlantUML
Abaixo está o código completo em PlantUML que implementa o comportamento descrito. Ele segue as convenções do exemplo da cafeteria (estilo skinparam, estados compostos quando apropriado, guardas entre [], ações com /).
@startuml
skinparam {
‘ Estilo geral
‘ Cores
CorDaSeta #333333
CorDaFonteDaSeta #333333
CorDeFundo #FFFFFF
CorDaBorda #333333
‘ Estilo de estado
Estado {
CorDaBorda #005073
CorDeFundo #E6F5FF
CorDaFonte #005073
}
}
[*] –> Standby
Standby –> Sensing : timer_triggers()
Sensing –> Irrigating : umidade_do_solo < 30%
Sensing –> Standby : umidade_do_solo >= 30%
Irigando –> Desligamento : umidade_do_solo >= 80% OU timeout_de_segurança()
Irigando –> Desligamento : timeout_de_segurança() // Proteção de tempo limite de fallback
Desligamento –> Standby : usuario_confirma_reinicializacao()
Standby –> [*]
@enduml

Explicação do Diagrama
- Standby — Estado padrão de baixo consumo/ocioso.
- Sensibilidade — Verificação rápida acionada por temporizador; evita rega desnecessária.
- Irrigando (composto) — Fase ativa de irrigação com subatividade internaIrrigação subatividade.
- Sai quando atinge a umidade alvo ou ocorre timeout de segurança.
- Desligamento — Estado de espera pós-irrigação que exige confirmação para retomar a automação (funcionalidade de segurança).
- Erro — Estado de contenção de falhas com transição de recuperação manual.
5. Racional de Design e Benefícios
- Conservação de água — Apenas irriga quando realmente necessário (baseado na umidade do solo, em vez de tempo).
- Prevenção de inundação — Condições duplas de saída do estado de irrigação (alvo de umidade + timeout).
- Segurança e controle do usuário — Confirmação manual após parada anormal evita reinício automático após possíveis problemas.
- Extensibilidade — Fácil de adicionar estados (por exemplo, Chuva Detectada, Bateria Baixa, Modo Inverno) ou ajustar os limites.
- Baixa complexidade — Plano sempre que possível, composto apenas quando o agrupamento lógico aumenta a clareza (Irrigação).
Este design equilibra robustez, segurança e simplicidade — adequado para implementação em microcontroladores embarcados (Arduino, ESP32, etc.).
6. Conclusão
Máquina de estadosAs máquinas de estados fornecem um formalismo excelente para modelar sistemas de controle reativos, como controladores de irrigação inteligentes. Ao definir claramente estados, eventos, guardas e ações, os engenheiros podem analisar o comportamento do sistema, casos extremos e recuperação de erros antes de escrever o código.
A representação em PlantUML acima serve tanto como documentação quanto como projeto para implementação. Renderizá-la (por meio de ferramentas PlantUML ou servidores online) produz um diagrama limpo e profissional, pronto para revisões de requisitos, geração de código ou ensino de conceitos de UML.
Extensões futuras poderiam incluir:
- Integração com API de clima (pular sensação se houver previsão de chuva).
- Múltiplas zonas com limites de umidade por zona.
- Notificações no aplicativo móvel em caso de tempo esgotado ou erro.
Este estudo de caso demonstra como um problema aparentemente simples de automação se beneficia muito com modelagem estruturada baseada em estados.
- Guia Completo Passo a Passo da Máquina de Estados da Impressora 3D: Este guia aplica conceitos de máquina de estados a sistemas de impressão 3D, detalhando sua lógica operacional e caminhos de automação.
- Ferramenta Interativa de Diagrama de Máquina de Estados: Uma ferramenta especializada baseada na web para criar e editar diagramas de máquinas de estados que aproveita capacidades de GenAI para modelagem de comportamento em tempo real.
- Compreendendo Diagramas de Máquinas de Estados em UML: Este tutorial oferece uma visão geral completavisão geral abrangenteda modelagem do comportamento do sistema usando diagramas de máquina de estados no UML.
- Guia Definitivo sobre Diagramas de Máquina de Estados UML com IA: Este recurso oferece uma análise detalhada sobre o uso deferramentas com inteligência artificialpara modelar com precisão o comportamento de objetos com diagramas de máquina de estados UML.
- Como Desenhar um Diagrama de Máquina de Estados no UML?: Este tutorial fornece instruções detalhadas para criar diagramas e nomear transições para modelarhistórico de entidades e eventos.
- Domine os Diagramas de Estado com o Visual Paradigm AI: Um Guia para Sistemas de Pedágio Automatizados: Este guia fornece um passo a passo sobre o uso dediagramas de estado aprimorados por IApara modelar e automatizar a lógica complexa necessária para o software de sistemas de pedágio.
- Tutorial de Diagrama de Máquina de Estados: Este tutorial explica ossímbolos e sintaxenecessários para modelar o comportamento dinâmico de objetos individuais de classes, casos de uso e sistemas inteiros.
- Visual Paradigm AI Suite: Um Guia Abrangente sobre Ferramentas Inteligentes de Modelagem: Esta visão geral detalha como a plataformachatbot de IA apoia a modelagem técnica, incluindo máquinas de estado e outros diagramas comportamentais.
- Visual Paradigm – Ferramenta de Diagrama de Máquina de Estados UML: Uma visão geral de uma ferramenta online com recursos avançados projetada para arquitetos paracriar, editar e exportar modelos precisos de máquinas de estadousando uma interface baseada em nuvem.
- Tutorial Rápido de Diagrama de Estado: Domine Máquinas de Estados UML em Minutos: Um tutorial amigável para iniciantes sobre criação e compreensão de diagramas de estado, com foco emconceitos centrais e técnicas práticas de modelagem.