Skip to content

Fluxo de Dados

Estevam edited this page Jun 1, 2024 · 1 revision

Coleta de Dados

Como os dados são coletados dos sensores

O sistema utiliza dois tipos de sensores para coletar dados: um sensor DHT11 para medir temperatura e umidade, e um sensor de nível de água para medir a quantidade de água na cafeteira.

  1. Sensor DHT11:

    • Pino de Dados: O sensor DHT11 está conectado ao pino 0 do microcontrolador.
    • Leitura de Dados: O sensor DHT11 coleta dados de temperatura e umidade. A função dht.readTemperature() é usada para obter a temperatura, enquanto dht.readHumidity() é usada para obter a umidade.
    • Frequência de Leitura: As leituras são realizadas a cada ciclo de 2 segundos no loop principal do programa.
  2. Sensor de Nível de Água:

    • Pino de Dados: O sensor de nível de água está conectado ao pino analógico A1 do microcontrolador.
    • Leitura de Dados: Os dados de nível de água são lidos utilizando a função analogRead(waterSensorPin), que retorna um valor analógico entre 0 e 1023.
    • Frequência de Leitura: As leituras são realizadas a cada ciclo de 2 segundos no loop principal do programa.
    • Média das Leituras: Para melhorar a precisão, uma média de 10 leituras é calculada.

Processamento de Dados

Como os dados são processados pelo microcontrolador

Uma vez que os dados são coletados dos sensores, eles são processados pelo microcontrolador para preparar a transmissão via MQTT e para controle local.

  1. Processamento dos Dados do DHT11:

    • Conversão de Dados: Os valores de temperatura e umidade são lidos como float.
    • Controle de LED: A temperatura é usada para controlar um LED conectado ao pino 7. Se a temperatura for maior que 30 graus Celsius, o LED é aceso (digitalWrite(LED, LOW)), caso contrário, o LED é apagado (digitalWrite(LED, HIGH)).
    • Preparação para Transmissão: Os valores de temperatura e umidade são convertidos para strings utilizando String(temp, 2) e String(hum, 2).
  2. Processamento dos Dados do Sensor de Nível de Água:

    • Média das Leituras: As leituras são acumuladas e uma média é calculada a cada ciclo para suavizar flutuações.
    • Conversão de Dados: O valor médio das leituras é convertido para string utilizando String(average).
    • Controle de LEDs: Baseado no nível de água (em porcentagem), LEDs conectados aos pinos 2, 3 e 4 são controlados para indicar níveis baixo, médio e alto.

Transmissão de Dados

Como os dados são transmitidos via MQTT

Os dados processados são transmitidos via MQTT para um broker configurado. O sistema utiliza a biblioteca PubSubClient para gerenciar a conexão e a comunicação MQTT.

  1. Configuração da Conexão MQTT:

    • Parâmetros de Conexão: São configurados o SSID da rede WiFi, senha, broker MQTT, tópico, usuário e senha do MQTT.
    • Conexão Inicial: A função connectMQTT() tenta conectar ao broker MQTT. Em caso de falha, a conexão é tentada até 5 vezes com um intervalo de 2 segundos entre as tentativas.
  2. Publicação de Dados:

    • Temperatura e Umidade: Os valores de temperatura e umidade são publicados nos tópicos 2bqsvw6678/temperatura2505 e 2bqsvw6678/humidade2505 respectivamente, utilizando a função client.publish(topic, message.c_str()).
    • Nível de Água: O valor do nível de água é publicado no tópico 2bqsvw6678/nivelAgua2505 da mesma forma.
    • Estado do Relé: O estado do relé (ligado/desligado) é publicado no tópico 2bqsvw6678/, refletindo se a cafeteira está ligada ou desligada.
  3. Manutenção da Conexão MQTT:

    • Verificação e Reconexão: No loop principal, a função client.loop() é chamada continuamente para manter a conexão ativa. Se a conexão for perdida, a função connectMQTT() é chamada novamente para restabelecer a conexão.

Clone this wiki locally