Skip to content

About

Projeto disciplinar de IoT. Sendo utilizado um sensor de umidade HW-390, toda sua leitura e comunicação foram feitas através de um ESP32-S3, programado no Software Arduino IDE em C++, e utilizando protocolo MQTT para a comunicação.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

🌱 ProjetoUmidade

Projeto disciplinar de IoT que realiza o monitoramento da umidade do solo em tempo real e aciona automaticamente um sistema de irrigação, utilizando um ESP32-S3, um sensor de umidade HW-390 e o protocolo MQTT para comunicação entre o dispositivo e demais aplicações (dashboards, brokers, etc).

📑 Sumário


📋 Sobre o projeto

O ProjetoUmidade integra hardware e software para automatizar a irrigação com base na umidade do solo. O ESP32-S3 realiza a leitura analógica do sensor de umidade, converte essa leitura em um percentual de umidade, publica esse valor via MQTT e controla o acionamento da irrigação (simulada por LEDs) utilizando uma lógica de histerese, evitando acionamentos e desligamentos repetidos em curtos intervalos de tempo.

O projeto foi desenvolvido em C++, através da Arduino IDE, e utiliza comunicação Wi-Fi para conexão com a internet e um broker MQTT público para troca de mensagens.

⚙️ Funcionalidades

  • 📡 Conexão automática à rede Wi-Fi, com reconexão em caso de queda;
  • 🔄 Reconexão automática ao broker MQTT caso a conexão seja perdida;
  • 💧 Leitura analógica do sensor de umidade do solo, com média de múltiplas amostras para reduzir ruído;
  • 📊 Conversão da leitura bruta do sensor em percentual de umidade (0% a 100%);
  • 🚿 Controle automático de irrigação com histerese, evitando oscilações rápidas entre ligado/desligado;
  • 💡 Indicação visual do estado do sistema por meio de LEDs (verde = irrigação desligada, vermelho = irrigação ligada);
  • 📤 Publicação em tempo real da umidade e do status da irrigação via MQTT.

🛠 Tecnologias utilizadas

  • C++ (Arduino Framework)
  • Arduino IDE
  • Protocolo MQTT
  • Bibliotecas:

🔌 Hardware utilizado

Componente Função
ESP32-S3 Microcontrolador principal, responsável pela leitura do sensor e comunicação Wi-Fi/MQTT
Sensor de umidade do solo HW-390 Leitura analógica da umidade do solo
LED verde Indica que a irrigação está desligada
LED vermelho Indica que a irrigação está ligada

🔗 Esquema de ligação

Pino do ESP32-S3 Componente
GPIO 4 Sinal analógico do sensor HW-390
GPIO 5 LED verde (irrigação desligada)
GPIO 13 LED vermelho (irrigação ligada)

🧠 Como funciona

  1. Conexão: ao ligar, o ESP32-S3 se conecta à rede Wi-Fi e, em seguida, ao broker MQTT (broker.hivemq.com), publicando o status inicial "Desligada" no tópico de status.
  2. Leitura do sensor: a cada ciclo, são feitas 8 leituras analógicas do sensor (NUM_AMOSTRAS), que são somadas e divididas para obter uma leitura média, reduzindo o ruído da leitura.
  3. Conversão em umidade: a leitura bruta é convertida em um percentual de 0% a 100%, com base nos valores de calibração do sensor seco (sensorSeco = 2400) e do sensor molhado (sensorMolhado = 1200).
  4. Publicação MQTT: o valor de umidade calculado é publicado no tópico meuprojeto/umidade.
  5. Controle de irrigação (histerese):
    • Se a umidade cair abaixo de 35% e a irrigação estiver desligada, ela é ligada (LED vermelho aceso, LED verde apagado) e o status "Irrigando" é publicado.
    • Se a umidade subir acima de 50% e a irrigação estiver ligada, ela é desligada (LED verde aceso, LED vermelho apagado) e o status "Desligada" é publicado.
    • A diferença entre os limites de ligar (35%) e desligar (50%) evita que o sistema fique ligando e desligando repetidamente quando a umidade está próxima de um único limite fixo.
  6. O ciclo se repete a cada 2 segundos.

📡 Tópicos MQTT

Tópico Descrição Exemplo de mensagem
meuprojeto/umidade Percentual de umidade do solo 42
meuprojeto/status Status atual da irrigação Irrigando / Desligada

Broker MQTT: broker.hivemq.com (broker público, porta 1883)

✅ Pré-requisitos

  • Arduino IDE instalada
  • Suporte à placa ESP32 instalado na Arduino IDE
  • Biblioteca PubSubClient instalada (disponível pelo gerenciador de bibliotecas da Arduino IDE)
  • Sensor de umidade HW-390 e placa ESP32-S3
  • Rede Wi-Fi com acesso à internet

🔧 Instalação e configuração

  1. Clone este repositório:
    git clone https://github.com/jotapeor/ProjetoUmidade.git
  2. Abra o arquivo .ino na Arduino IDE.
  3. Instale a biblioteca PubSubClient pelo gerenciador de bibliotecas (Sketch > Incluir Biblioteca > Gerenciar Bibliotecas).
  4. Configure as credenciais da sua rede Wi-Fi no início do código:
    const char* ssid = "SEU_SSID";
    const char* password = "SUA_SENHA";
  5. (Opcional) Ajuste os valores de calibração do sensor (sensorSeco e sensorMolhado) e os limites de irrigação (ligaThreshold e desligaThreshold) conforme o seu sensor e o tipo de solo utilizado.

▶️ Como executar

  1. Conecte o ESP32-S3 ao computador via USB.
  2. Selecione a placa e a porta correspondente na Arduino IDE.
  3. Faça o upload do sketch para a placa.
  4. Abra o Monitor Serial (115200 baud) para acompanhar a conexão Wi-Fi/MQTT e as leituras de umidade em tempo real.
  5. Utilize um cliente MQTT (como o MQTT Explorer ou o app HiveMQ) inscrito nos tópicos meuprojeto/umidade e meuprojeto/status para acompanhar os dados publicados.

📁 Estrutura do projeto

ProjetoUmidade/
└── sketch_dec9a/
    └── sketch_dec9a.ino   # Código principal do ESP32-S3

🚀 Melhorias futuras

  • Substituir os LEDs indicativos por um relé real, acionando uma bomba ou válvula de irrigação;
  • Adicionar autenticação no broker MQTT (usuário/senha) em vez de um broker público;
  • Persistir o histórico de leituras em um banco de dados;
  • Criar um dashboard para visualização gráfica da umidade ao longo do tempo;
  • Mover credenciais sensíveis (Wi-Fi) para um arquivo de configuração separado, fora do controle de versão.

👨‍💻 Autor

Desenvolvido por João Paulo de Oliveira Rosseto

About

Projeto disciplinar de IoT. Sendo utilizado um sensor de umidade HW-390, toda sua leitura e comunicação foram feitas através de um ESP32-S3, programado no Software Arduino IDE em C++, e utilizando protocolo MQTT para a comunicação.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages