Início Atividade 4
4
INTERMEDIÁRIO

Temperatura e Umidade 🌡️

Leia dados ambientais com o sensor DHT11 e combine com o LDR

🎯 Objetivo desta atividade

Ao pressionar o botão, a placa vai ler e exibir no Monitor Serial: temperatura, umidade e luminosidade - tudo de uma vez! É como criar uma mini estação meteorológica.

📚 Conhecendo o DHT11

O DHT11 é um sensor digital que mede temperatura e umidade do ar. Ele usa um protocolo de comunicação especial, por isso precisamos de uma biblioteca para facilitar a leitura.

🌡️ Temperatura

Faixa: 0°C a 50°C
Precisão: ±2°C

💧 Umidade

Faixa: 20% a 90%
Precisão: ±5%

📦 O que é uma Biblioteca?

Uma biblioteca é um conjunto de código pronto que outras pessoas escreveram para facilitar tarefas complexas. Ao invés de escrever 500 linhas para ler o DHT11, usamos uma biblioteca e fazemos com 5 linhas!

📚 Analogia: É como usar uma receita de bolo. Ao invés de descobrir todo o processo sozinho, você segue instruções prontas que funcionam!

#include "DHT.h" // Inclui a biblioteca DHT

🔧 Hardware Utilizado

🌡️

DHT11

GPIO 12

☀️

LDR

GPIO 15

🔘

Botão

GPIO 4

💻 Código Completo

⚠️ Pré-requisito: Certifique-se de ter instalado a biblioteca DHT sensor library via Library Manager!

estacao_meteorologica.ino
/************************************************
* RoboCore - IoT DevKit - LoRaWAN   
* Mini Estação Meteorológica
***********************************************/

//Inclusao da biblioteca do sensor DHT11
#include "DHT.h"

//Declaracao dos pinos
const int pinoDHT = 12;
const int pinoBotao = 4;
const int pinoLDR = 15;

//Variaveis de leitura
int estadoBotao = 0;
int valorLDR = 0;

//Criacao do objeto DHT (pino, tipo do sensor)
DHT dht(pinoDHT, DHT11);

void setup() {
  Serial.begin(115200);
  
  //Inicializamos o sensor DHT11
  dht.begin();
      
  pinMode(pinoBotao, INPUT);
  
  Serial.println("Pressione o botão para ler os sensores!");
}

void loop() {
  estadoBotao = digitalRead(pinoBotao);

  //Se o botao estiver pressionado...
  if (estadoBotao == LOW) {
    delay(30); // Debounce
    estadoBotao = digitalRead(pinoBotao);
  
    //Leitura de temperatura e umidade
    float temperatura = dht.readTemperature();
    float umidade = dht.readHumidity();
  
    Serial.print("Temperatura: ");
    Serial.print(temperatura);
    Serial.print(" *C - Umidade: ");
    Serial.print(umidade);
    Serial.print(" % - Luminosidade: ");
  
    //Leitura do LDR em porcentagem
    valorLDR = analogRead(pinoLDR);
    valorLDR = map(valorLDR, 4095, 2500, 0, 100);
  
    Serial.print(valorLDR);
    Serial.println(" %");

    while (digitalRead(pinoBotao) == LOW) {
      //Espera soltar o botão
    }
  }
}

🔍 Pontos Importantes

DHT dht(pinoDHT, DHT11);

Criamos um "objeto" chamado dht que representa nosso sensor. Informamos qual pino ele está conectado e qual o modelo (DHT11).

dht.readTemperature() e dht.readHumidity()

Esses são métodos da biblioteca que fazem toda a mágica! Eles executam a comunicação complexa com o sensor e retornam os valores prontos.

Tipo float

Usamos float ao invés de int porque temperatura e umidade podem ter casas decimais (ex: 25.6°C).

📺 Saída no Monitor Serial

Pressione o botão para ler os sensores!

Temperatura: 26.00 *C - Umidade: 65.00 % - Luminosidade: 42 %

Temperatura: 26.00 *C - Umidade: 64.00 % - Luminosidade: 38 %

Temperatura: 27.00 *C - Umidade: 63.00 % - Luminosidade: 55 %

📝 Teste seus Conhecimentos

🎮

Quiz Gamificado

Responda às perguntas para ganhar XP e desbloquear a próxima atividade!

Carregando quiz...