Projeto Arduino: Sensor de Chuva com LEDs e Buzzer Sonoro

 

Projeto Arduino: Sensor de Chuva com LEDs e Buzzer Sonoro

Introdução

Vamos criar um sistema de detecção de chuva inteligente que:

  • Acende 3 LEDs (verde, amarelo, vermelho) conforme a intensidade da chuva

  • Emite sons diferentes no buzzer para cada nível

  • Toca uma sirene de alerta quando a chuva é intensa (LED vermelho)

Materiais Necessários

ComponenteQuantidade
Arduino Uno1
Sensor de chuva1
Protoboard1
JumpersVários
LED verde1
LED amarelo1
LED vermelho1
Resistores 220Ω3
Buzzer ativo1

Montagem do Circuito



Conexões do Sensor de Chuva

Pino SensorPino Arduino
VCC5V
GNDGND
DODigital 2
AOAnalógico A5

Conexões dos LEDs

LEDPino ArduinoResistor
VerdeDigital 5220Ω
AmareloDigital 6220Ω
VermelhoDigital 7220Ω

Conexão do Buzzer

BuzzerPino Arduino
+Digital 8
-GND

Programação

cpp
Copy
Download
// Definindo os pinos
const int sensorAnalogico = A5;
const int sensorDigital = 2;
const int ledVerde = 5;
const int ledAmarelo = 6;
const int ledVermelho = 7;
const int buzzer = 8;

// Variáveis para controle
int ultimoNivel = -1; // Para detectar mudanças

void setup() {
  pinMode(ledVerde, OUTPUT);
  pinMode(ledAmarelo, OUTPUT);
  pinMode(ledVermelho, OUTPUT);
  pinMode(buzzer, OUTPUT);
  pinMode(sensorDigital, INPUT);
 
  Serial.begin(9600);
}

void loop() {
  int leitura = analogRead(sensorAnalogico);
  Serial.print("Leitura: ");
  Serial.println(leitura);

  // Desliga todos os LEDs
  digitalWrite(ledVerde, LOW);
  digitalWrite(ledAmarelo, LOW);
  digitalWrite(ledVermelho, LOW);

  // Determina o nível de chuva
  int nivelAtual;
  if (leitura < 900 && leitura > 600) {
    nivelAtual = 0; // Seco
    digitalWrite(ledVerde, HIGH);
    digitalWrite(ledAmarelo, LOW);
    digitalWrite(ledVermelho, LOW);
  }
  else if (leitura < 600 && leitura > 400) {
    nivelAtual = 1; // Chuva moderada
    digitalWrite(ledVerde, LOW);
    digitalWrite(ledAmarelo, HIGH);
    digitalWrite(ledVermelho, LOW);
  }
  else if (leitura < 400) {
    nivelAtual = 2; // Chuva forte
      digitalWrite(ledVerde, LOW);
    digitalWrite(ledAmarelo, LOW);
    digitalWrite(ledVermelho, HIGH);;
  }

  // Toca sons diferentes quando muda de nível
  if (nivelAtual != ultimoNivel) {
    noTone(buzzer); // Para o som atual
   
    switch(nivelAtual) {
      case 0: // Verde - som curto
        tone(buzzer, 1000, 200);
        break;
      case 1: // Amarelo - som intermitente
        for (int i = 0; i < 3; i++) {
          tone(buzzer, 1500, 100);
          delay(200);
        }
        break;
      case 2: // Vermelho - sirene
        for (int i = 0; i < 5; i++) {
          tone(buzzer, 800, 200);
          delay(150);
          tone(buzzer, 1200, 200);
          delay(150);
        }
        break;
    }
   
    ultimoNivel = nivelAtual; // Atualiza o último nível
  }

  delay(500); // Espera meio segundo entre leituras
}

Funcionamento do Sistema

Níveis de Detecção

  1. LED Verde (0-300)

    • Condição: Pouca ou nenhuma chuva

    • Som: Bip único agudo (1000Hz)

  2. LED Amarelo (301-700)

    • Condição: Chuva moderada

    • Som: Três bips rápidos (1500Hz)

  3. LED Vermelho (701-1023)

    • Condição: Chuva intensa

    • Som: Sirene alternada (800-1200Hz)

Recursos Especiais

  • O buzzer só toca quando há mudança de nível

  • A sirene do nível vermelho chama atenção para perigo

  • Monitor Serial mostra os valores lidos para calibração

Aplicações Práticas

  1. Alerta meteorológico caseiro

  2. Sistema de prevenção de enchentes

  3. Controle automático de irrigação

  4. Projeto escolar de ciências ambientais

Comentários

Postagens mais visitadas