Skip to content

🌐 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

Diagrama de Componentes

Figura 3: Diagrama de Componentes da Arquitetura Lógica.

📝 Descrição do Diagrama

  1. 📤 ESP32 envia dados dos sensores via MQTT para o sistema.
  2. 📷 Raspberry Pi processa as imagens capturadas pela câmera e envia os dados processados para o back-end.
  3. 💾 Back-end recebe e processa dados, armazena no banco SQL, e envia as informações para o front-end.
  4. 🖥️ 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

Diagrama de Arquitetura

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

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

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:

  1. O "usuário" acessa a "interface".
  2. A "interface" solicita dados ao "back-end".
  3. O "back-end" consulta o "sql".
  4. O "sql" salva dados dos "sensores".
  5. O "back-end" recebe os dados dos "sensores".
  6. O "esp32" ajusta os "sensores" e envia os dados para o "back-end".
  7. O "raspberry" processa as imagens da câmera e envia os dados para o "back-end".
  8. O "back-end" envia as informações processadas para o "front-end".
  9. O "front-end" exibe os dados para o "usuário".

📚 Referências

  1. 🌐 MQTT Protocolo Oficial
  2. 📄 TDS Meter Datasheet
  3. 📄 DHT11 Datasheet
  4. ⚛️ React
  5. 🟩 Node.js

💾 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.