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!
🔧 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!
/************************************************
* 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...