Início›Projetos›Qualidade do Ar no Laboratório
⬤ Intermédio · Projeto Integrado · Cenário LED

🌫️ Qualidade do Ar no Laboratório

⏱️ 40–50 min📊 Intermédio🏫 Cenário LED oficial
DHTChamaBuzzerLED 2C

Nesta página

🎯 Objetivo do Projeto

Sistema de monitorização ambiental para laboratório ou sala de aula que mede temperatura, humidade e deteta presença de chama ou fumo. Quando qualquer parâmetro sai dos limites seguros, o LED 2 cores muda para vermelho e o buzzer ativo soa. Simula um sistema de alarme de segurança real.

MóduloPino do móduloPino ArduinoFunção
DHT11 (#19)VCC / GND / S5V / GND / D2Temperatura e humidade
Sensor de Chama (#1)VCC / GND / DO / AO5V / GND / D3 / A0Deteção de chama/IR
LED 2 Cores (#10)VCC / GND / R / G5V / GND / D12 / D11Verde = OK, Vermelho = Alerta
Buzzer Ativo (#20)VCC / GND / S5V / GND / D8Alarme sonoro

🔨 Fases de Montagem

Fase 1 — Ligar e testar o DHT11

Liga o DHT11 ao D2. Usa o código de Sensor DHT para confirmar que lê valores correctos antes de continuar.

Fase 2 — Ligar e calibrar o sensor de chama

Liga o sensor de chama (DO→D3, AO→A0). Lê o valor analógico no Serial Monitor com luz normal — esse é o teu valor de referência. Ajusta o potenciómetro para que o LED da PCB acenda apenas na presença de IR intenso.

Fase 3 — LED 2 cores e buzzer

Liga o LED 2 cores (R→D12, G→D11) e o buzzer ativo (S→D8). Testa: digitalWrite(12, HIGH) deve ligar vermelho; digitalWrite(8, HIGH) deve soar.

Fase 4 — Sketch integrado e limiares

Carrega o sketch completo. Ajusta TEMP_MAX, HUM_MAX e CHAMA_LIMIAR aos valores do teu ambiente.

💻 Código Completo

proj_qualidade_ar.ino
#include <DHT.h>

#define DHT_PIN      2
#define CHAMA_D      3    // Saída digital — LOW = chama
#define CHAMA_A      A0   // Saída analógica
#define LED_R        12   // Vermelho = alerta
#define LED_G        11   // Verde = OK
#define BUZZER       8

#define TEMP_MAX     30.0
#define HUM_MAX      75.0
#define CICLO_MS     2000

DHT dht(DHT_PIN, DHT11);
unsigned long ultimoAlerta = 0;
#define PAUSA_BUZZER 5000  // Buzzer não repete antes de 5s

void alarme() {
  if (millis() - ultimoAlerta < PAUSA_BUZZER) return;
  ultimoAlerta = millis();
  for (int i = 0; i < 3; i++) {
    digitalWrite(BUZZER, HIGH); delay(200);
    digitalWrite(BUZZER, LOW);  delay(150);
  }
}

void setup() {
  dht.begin();
  pinMode(CHAMA_D, INPUT);
  pinMode(LED_R,   OUTPUT);
  pinMode(LED_G,   OUTPUT);
  pinMode(BUZZER,  OUTPUT);
  Serial.begin(9600);
  Serial.println("Sistema Qualidade do Ar — INICIADO");
}

void loop() {
  delay(CICLO_MS);

  float t = dht.readTemperature();
  float h = dht.readHumidity();
  bool  chama = (digitalRead(CHAMA_D) == LOW);
  int   irRaw = analogRead(CHAMA_A);

  bool alerta = false;
  String causa = "";

  if (isnan(t) || isnan(h)) {
    Serial.println("ERRO: sensor DHT sem resposta"); return;
  }
  if (t > TEMP_MAX) { alerta = true; causa += "TEMP_ALTA "; }
  if (h > HUM_MAX)  { alerta = true; causa += "HUM_ALTA "; }
  if (chama)         { alerta = true; causa += "CHAMA "; }

  digitalWrite(LED_G, !alerta);
  digitalWrite(LED_R,  alerta);
  if (alerta) alarme();

  Serial.print("T:"); Serial.print(t,1);
  Serial.print(" H:"); Serial.print(h,1);
  Serial.print(" IR:"); Serial.print(irRaw);
  Serial.print(" | ");
  Serial.println(alerta ? causa : "OK");
}

🏆 Para ir mais longe

Kit B 37 · PR.FT6_15 · Arduino UNO · Raspberry Pi · Início · led.dge.medu.pt