🌐 Arquitetura de Software
🚀 Nesta seção, apresentamos uma visão abrangente da arquitetura de software do projeto, detalhando os componentes essenciais, suas interações e as tecnologias aplicadas. Essa arquitetura foi projetada para garantir escalabilidade, manutenibilidade e eficiência, permitindo que todos os elementos do sistema funcionem em harmonia e cumpram as necessidades operacionais e de monitoramento.
Visão Geral da Arquitetura
A arquitetura de software adotada segue uma abordagem modular, na qual cada componente desempenha um papel específico e se comunica por interfaces bem definidas. Essa organização modular aprimora a manutenção, a escalabilidade e a evolução contínua do sistema, permitindo integração eficiente e expansões futuras.
🛠️ Componentes
A arquitetura de software está organizada nos seguintes componentes principais:
- 🌐 Aplicação Web: Desenvolvida com React, permite interação e controle da estufa.
- 🔧 API Back-End: Implementada em Node.js, processa e armazena dados recebidos via MQTT.
- 📊 Banco de Dados: Sistema SQL para armazenar históricos das condições ambientais.
- ⚙️ ESP32: Microcontrolador que controla sensores, atuadores e realiza comunicação com o sistema.
- 📡 Sensores:
- Condutividade/TDS: Modelo TDS Meter; sinal analógico.
- pH e Temperatura da Água: Modelo PH-4502C; sinais analógicos.
- Temperatura e Umidade do Ambiente: Modelo DHT11; comunicação digital.
- Nível da Água: Sensor tipo boia; chaveamento digital.
- 📷 Raspberry Pi: Responsável pelo processamento de imagens capturadas pela câmera.
- 🔋 Atuadores: Bombas de água, iluminação e ventilação para regulação interna.
🔍 A relação entre os componentes é representada no diagrama abaixo:
🖼️ Diagrama de Componentes
Figura 3: Diagrama de Componentes da Arquitetura Lógica.
📝 Descrição do Diagrama
- 📤 ESP32 envia dados dos sensores via MQTT para o sistema.
- 📷 Raspberry Pi processa as imagens capturadas pela câmera e envia os dados processados para o back-end.
- 💾 Back-end recebe e processa dados, armazena no banco SQL, e envia as informações para o front-end.
- 🖥️ Front-end solicita e exibe dados processados.
🎯 Metas e Restrições Arquiteturais
✨ Metas
- 📡 Monitoramento remoto em tempo real.
- 🖼️ Interface amigável e responsiva.
- 📈 Escalabilidade para novos sensores e funcionalidades.
🚫 Restrições
- Ferramentas: React e Node.js.
- Banco de dados: SQL.
- Protocolo: MQTT.
🖼️ Diagrama de Arquitetura de Software
Figura 1: Diagrama de Arquitetura de Software do Sistema de Estufa Inteligente.
📝 Descrição do Diagrama
- 🛡️ Protocolo MQTT: Integra ESP32 ao sistema.
- 📊 Banco SQL: Para consulta e armazenamento.
- 📷 Raspberry Pi: Processa imagens da câmera.
- 🌐 Front-End: Requisições HTTP ao back-end.
💻 Tecnologias
🔍 As tecnologias escolhidas para este projeto incluem:
- ⚛️ React: Para interfaces reativas e dinâmicas.
- 🌐 Node.js: Construção de back-end robusto.
- 📊 SQL: Banco de dados para gerenciar históricos.
- 📡 MQTT: Protocolo leve de mensagens.
- 📷 OpenCV: Para processamento de imagens no Raspberry Pi.
📑 Visão de Caso de Uso
Os casos de uso descrevem como os atores interagem com o sistema e incluem cenários típicos, como o monitoramento em tempo real das condições da estufa e o controle de parâmetros.
🌡️ Caso de Uso 1: Monitoramento de Temperatura e Umidade
🆔 ID | CU01 |
---|---|
👥 Ator | Usuário |
📝 Descrição | Exibir dados de temperatura e umidade coletados pelos sensores. |
🔄 Fluxo | 1. O sistema coleta os dados dos sensores. 2. O backend processa e armazena os dados. 3. O frontend exibe os valores para o usuário. |
💧 Caso de Uso 2: Controle Automático de Irrigação
🆔 ID | CU02 |
---|---|
👥 Ator | Sistema de Controle |
📝 Descrição | Ativar ou desativar as bombas de água com base na umidade do solo. |
🔄 Fluxo | 1. O sistema avalia a leitura dos sensores. 2. O backend envia o comando para as bombas. 3. As bombas ajustam o fluxo de água. |
💻 Visão Lógica
🌐 Visão Geral
A visão lógica descreve os subsistemas do projeto, destacando suas interações e responsabilidades principais. O objetivo é decompor os módulos, apresentando suas características para facilitar o entendimento e a manutenção futura do sistema.
🧪 Especificações dos Sensores
🔍 Sensor | 📦 Modelo | 🔄 Faixa de Operação | 🔗 Comunicação | ℹ️ Outras Informações |
---|---|---|---|---|
Condutividade/TDS | TDS Meter | 0–1000 ppm (0–2.3V) | Analógico | Tensão: 3.3–5.5V; Corrente: 3–6mA |
pH e Temp. da Água | PH-4502C | pH 0–14; 0–80°C | Analógico | Tempo de resposta: 5s; Consumo: 0.5W |
Temp. e Umidade | DHT11 | 20–90% UR; 0–50°C | Digital | Precisão: ±5% UR, ±2°C; Tempo resp.: 2s |
Nível da Água | Boia Sensor | -10 a 85°C | Digital | Corrente máx.: 0.5A; Extensão fio: 35cm |
🗂️ Diagrama de Pacotes
Figura 3: Diagrama de Pacotes da Arquitetura Lógica.
🗂️ Descrição do Diagrama
O Diagrama de Pacotes mostra a organização lógica dos módulos do sistema. Ele apresenta as dependências entre os pacotes e suas responsabilidades, garantindo uma estrutura modular que facilita a manutenção e a escalabilidade do sistema. 📦✨
🔄 Diagrama de Sequência
Figura 3: Diagrama de Sequência da Arquitetura Lógica.
🔄 Descrição do Diagrama
O diagrama mostra a sequência de interação entre diferentes componentes do sistema. Os componentes são: "usuário", "interface", "back-end", "sql", "sensores", "esp32", e "raspberry". A sequência de interação foi alterada da seguinte forma:
- O "usuário" acessa a "interface".
- A "interface" solicita dados ao "back-end".
- O "back-end" consulta o "sql".
- O "sql" salva dados dos "sensores".
- O "back-end" recebe os dados dos "sensores".
- O "esp32" ajusta os "sensores" e envia os dados para o "back-end".
- O "raspberry" processa as imagens da câmera e envia os dados para o "back-end".
- O "back-end" envia as informações processadas para o "front-end".
- O "front-end" exibe os dados para o "usuário".
📚 Referências
💾 Tabela de Versionamento
📅 Versão | 📆 Data | ✍️ Autor | 🛠️ Descrição |
---|---|---|---|
1.0 | 2024-11-26 | Pedro Lucas Santana | Versão inicial do documento. |
1.1 | 2024-11-26 | Pedro Lucas Santana | Adição de diagramas e melhorias estéticas. |
1.2 | 2024-11-26 | Pedro Lucas Santana | Revisão de casos de uso e estrutura geral. |
1.3 | 2024-12-02 | Pedro Lucas Santana | Ajustes estéticos realizados. |
1.4 | 2024-12-02 | Pedro Lucas Santana | Mudança de todos os diagramas. |
1.5 | 2024-01-20 | Pedro Lucas Santana | Correção da ordem de interação dos componentes no diagrama de sequência. |
1.6 | 2024-01-20 | Pedro Lucas Santana | Adição do Raspberry Pi para processamento de imagens. |