⭐⭐ Principiante avanzado ⏱️ 20 minutos

Mini estación meteorológica

Vas a hacer una mini estación meteorológica. El DHT11 mide la temperatura y la humedad, y la pantallita OLED las muestra.

Primero inicias sesión un momento. Después tu proyecto está listo enseguida.

🧰 ¿Qué necesitas?

1× Arduino UNO
1× Sensor de temperatura DHT11
1× Pantallita OLED 0,91"
🔌
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 · 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

  1. Conecta el DHT11: DAT al pin 2, VCC a 5V y GND a GND.
  2. Conecta la pantalla OLED: SDA a A4, SCL a A5, VCC a 5V y GND a GND.
  3. Consejo: dos piezas necesitan 5V y GND. Usa las tiras + y − de tu breadboard.

💻 El código

// Mini estación meteorológica
// El DHT11 mide la temperatura y la humedad. La pantallita OLED lo muestra.

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>

const int DHT_PIN = 2;          // DAT del DHT11 está en pin 2
DHT dht(DHT_PIN, DHT11);

Adafruit_SSD1306 pantalla(128, 32, &Wire, -1);  // OLED de 128 x 32 píxeles (SDA = A4, SCL = A5)

void setup() {
  Serial.begin(9600);
  dht.begin();
  if (!pantalla.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {  // 0x3C es la dirección de la pantalla
    Serial.println(F("Pantalla no encontrada. Revisa los cables de SDA y SCL."));
    while (true);                                   // Parar: sin pantalla no tiene sentido
  }
  pantalla.setTextColor(SSD1306_WHITE);
}

void loop() {
  float temperatura = dht.readTemperature();  // En grados Celsius
  float humedad = dht.readHumidity();           // En porcentaje

  pantalla.clearDisplay();
  pantalla.setTextSize(2);
  pantalla.setCursor(0, 0);

  if (isnan(temperatura) || isnan(humedad)) {   // ¿No se puede medir?
    pantalla.setTextSize(1);
    pantalla.print(F("No hay DHT11"));
  } else {
    pantalla.print(temperatura, 1);
    pantalla.print((char)247);                  // El signo de grados
    pantalla.println(F("C"));
    pantalla.print(humedad, 0);
    pantalla.print(F("% hum."));

    Serial.print(F("Temperatura: "));
    Serial.print(temperatura);
    Serial.print(F(" C  Humedad: "));
    Serial.print(humedad);
    Serial.println(F(" %"));
  }

  pantalla.display();   // Solo ahora aparece todo en la pantalla
  delay(2000);        // El DHT11 solo puede medir una vez cada 2 segundos
}

🧠 ¿Qué hace el código?

  • El DHT11 está en el pin 2. Con readTemperature() y readHumidity() leemos los valores.
  • La pantalla OLED habla por SDA (A4) y SCL (A5). Con print() ponemos texto en la pantalla.
  • Cada 2 segundos llega una nueva medición. ¿No se puede medir? Entonces ves un mensaje.

🎯 Prueba esto…

  • Muestra también la temperatura en Fahrenheit
  • Haz que un LED se encienda si hace más de 25 grados
  • Recuerda la temperatura más alta de hoy y muéstrala también

🚀 Construye este proyecto con Codey: abre codey.online/es/starter-kits/uno/projects/weather-station y haz clic en HAZ ESTO. Entonces el código y el esquema de conexión estarán listos enseguida.

Primero inicias sesión un momento. Después tu proyecto está listo enseguida.
⬇️ Descarga esta página como PDF 📚 Descarga el tutorial completo (PDF)

Codey Online es un producto de OTRONIC

Crea tu proyecto de Arduino o ESP32 con IA

Describe lo que quieres construir. Codey Online escribe el codigo, dibuja el esquema de conexiones, lo compila y graba tu placa directamente desde el navegador.

Empieza gratis