Um relé é um interruptor eletromecânico controlado por um sinal elétrico fraco (5V do Arduino) que comuta um circuito de maior tensão ou corrente (até 250V AC / 10A). Proporciona isolamento galvânico total entre o circuito de controlo e a carga.
Pino central do relé — sempre ligado à carga ou fonte de alimentação da carga.
Comum a NC e NONormalmente fechado — ligado ao COM quando o relé está desativado. Carga ligada por defeito.
Relé desativado = ligadoNormalmente aberto — ligado ao COM quando o relé é ativado. Carga desligada por defeito.
Relé ativado = ligado| Aplicação | Segurança escolar? | Notas |
|---|---|---|
| LED ou buzzer a 5V DC | ✅ Seguro | Excelente para demonstração — sem risco |
| Motor DC 5–12V | ✅ Seguro com fonte DC dedicada | Adiciona díodo flyback na carga indutiva |
| Lâmpada 12V DC | ✅ Seguro | Fonte DC isolada da rede |
| Qualquer tensão AC (rede 230V) | ❌ NÃO em contexto escolar | Requer eletricista qualificado e EPI |
Terminais do relé (lado da carga):
LOW no pino IN. Isto é contra-intuitivo mas common em módulos de relé com optoacoplador.| digitalWrite(IN, ...) | Estado do relé | Terminais ligados | LED indicador |
|---|---|---|---|
HIGH (ou pino flutuante) | Desativado | COM ↔ NC | Apagado |
LOW | Ativado (bobine energizada) | COM ↔ NO | Aceso |
#define RELE_PIN 7 // Pino de controlo do relé
void setup() {
pinMode(RELE_PIN, OUTPUT);
digitalWrite(RELE_PIN, HIGH); // Garante relé desligado ao início
Serial.begin(9600);
}
void loop() {
Serial.println("Relé ATIVADO (LOW)");
digitalWrite(RELE_PIN, LOW); // Ativa relé — COM liga a NO
delay(2000);
Serial.println("Relé DESATIVADO (HIGH)");
digitalWrite(RELE_PIN, HIGH); // Desativa relé — COM liga a NC
delay(2000);
}// Controlo do relé por temperatura — Termóstato simples
#include <DHT.h>
#define DHT_PIN 2
#define RELE_PIN 7
#define TEMP_LIGUE 26.0 // Liga a carga acima deste valor
#define TEMP_DESLIGUE 24.0 // Desliga abaixo (histerese)
DHT dht(DHT_PIN, DHT11);
bool releAtivo = false;
void setup() {
pinMode(RELE_PIN, OUTPUT);
digitalWrite(RELE_PIN, HIGH);
dht.begin();
Serial.begin(9600);
}
void loop() {
delay(2000);
float t = dht.readTemperature();
if (isnan(t)) return;
if (t > TEMP_LIGUE && !releAtivo) {
digitalWrite(RELE_PIN, LOW); // Ativa (ex: ventilador)
releAtivo = true;
Serial.println("Relé ON — temperatura alta");
} else if (t < TEMP_DESLIGUE && releAtivo) {
digitalWrite(RELE_PIN, HIGH); // Desativa
releAtivo = false;
Serial.println("Relé OFF — temperatura normal");
}
Serial.print("T: "); Serial.print(t); Serial.println(" C");
}