⭐⭐⭐ Reto
⏱️ 30 minutos
Ventilador inteligente
Vas a construir un termostato. Si hace más de 25 grados, el relé hace clic y se enciende. Así tu Arduino puede encender, por ejemplo, un ventilador pequeño con una batería. En la pantalla ves la temperatura y si el ventilador está encendido.
🧰 ¿Qué necesitas?
🔌
Cable USB + Cables jumper🗺️ Esquema de conexión
Sigue los cables desde el Arduino hasta cada pieza. Puedes elegir tú los colores de los cables.
| Desde | Hasta |
|---|---|
Arduino UNO · D2 |
Sensor de temperatura DHT11 · DAT |
Arduino UNO · 5V |
Sensor de temperatura DHT11 · VCC |
Arduino UNO · GND |
Sensor de temperatura DHT11 · GND |
Arduino UNO · D7 |
Relé 5V · S |
Arduino UNO · 5V |
Relé 5V · + |
Arduino UNO · GND |
Relé 5V · - |
Arduino UNO · A4 |
Pantallita OLED 0,91" · SDA |
Arduino UNO · A5 |
Pantallita OLED 0,91" · SCL |
Arduino UNO · 5V |
Pantallita OLED 0,91" · VCC |
Arduino UNO · GND |
Pantallita OLED 0,91" · GND |
🛠️ Así lo construyes
- Conecta el DHT11: DAT al pin 2, VCC a 5V y GND a GND.
- Conecta el relé: S al pin 7, + a 5V y − a GND.
- Conecta la pantalla OLED: SDA a A4, SCL a A5, VCC a 5V y GND a GND.
- ¿Quieres encender algo de verdad? Usa solo una batería o bajo voltaje en COM y NO, nunca el enchufe.
💻 El código
// Ventilador inteligente (termostato)
// ¿Hace demasiado calor? Entonces el relé se enciende, por ejemplo para un ventilador.
// En la pantalla ves la temperatura y si el ventilador está encendido.
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>
const int DHT_PIN = 2; // DAT del DHT11 en pin 2
const int RELE_PIN = 7; // S del relé en pin 7
const float ENCENDER_SOBRE = 25.0; // Sobre esta temperatura se enciende el ventilador
const float APAGAR_BAJO = 24.0; // Bajo esta temperatura se vuelve a apagar
DHT dht(DHT_PIN, DHT11);
Adafruit_SSD1306 pantalla(128, 32, &Wire, -1); // OLED: SDA = A4, SCL = A5
bool ventiladorEncendido = false;
void setup() {
Serial.begin(9600);
pinMode(RELE_PIN, OUTPUT);
digitalWrite(RELE_PIN, LOW); // Empieza con el relé apagado
dht.begin();
pantalla.begin(SSD1306_SWITCHCAPVCC, 0x3C);
pantalla.setTextColor(SSD1306_WHITE);
}
void loop() {
float temperatura = dht.readTemperature();
if (!isnan(temperatura)) {
// Dos límites, para que el relé no haga clic sin parar
if (temperatura > ENCENDER_SOBRE) ventiladorEncendido = true;
if (temperatura < APAGAR_BAJO) ventiladorEncendido = false;
digitalWrite(RELE_PIN, ventiladorEncendido ? HIGH : LOW);
}
pantalla.clearDisplay();
pantalla.setTextSize(2);
pantalla.setCursor(0, 0);
if (isnan(temperatura)) {
pantalla.print(F("DHT11 ?"));
} else {
pantalla.print(temperatura, 1);
pantalla.print((char)247);
pantalla.print(F("C"));
}
pantalla.setTextSize(1);
pantalla.setCursor(0, 22);
pantalla.print(ventiladorEncendido ? F("Ventilador: SI") : F("Ventilador: no"));
pantalla.display();
Serial.print(F("Temperatura: "));
Serial.print(temperatura);
Serial.println(ventiladorEncendido ? F(" C -> SI") : F(" C -> no"));
delay(2000);
}
🧠 ¿Qué hace el código?
- El DHT11 mide la temperatura. Por encima de 25 grados encendemos el relé.
- Solo por debajo de 24 grados el relé se vuelve a apagar. Con esos dos límites no hace clic todo el tiempo encendiendo y apagando.
- La pantalla OLED muestra la temperatura y "Ventilador: SI" o "no".
🎯 Prueba esto…
- Añade dos botones para subir y bajar la temperatura límite
- Haz que un LED se encienda mientras el ventilador esté encendido
- Haz que el ventilador también se encienda si la humedad del aire pasa del 70%
🚀 Construye este proyecto con Codey: abre codey.online/es/starter-kits/uno/projects/thermostat y haz clic en HAZ ESTO. Entonces el código y el esquema de conexión estarán listos enseguida.
Codey Online es un producto de OTRONIC