Reloj Meteorológico Arduino: Fecha, Hora, Temperatura y Humedad en Tiempo Real
Componentes y materiales
| Componente | Cantidad |
|---|---|
| Arduino UNO | 1 |
| Sensor de temperatura y humedad DHT11 (4 pines) | 1 |
| Módulo RTC DS3231 (Maxim Integrated) | 1 |
| Resistencia de 10 kΩ | 1 |
| Pantalla gráfica OLED 128x64 (Adafruit) | 1 |
| Protoboard (genérica) | 1 |
| Cables de conexión (genéricos) | 15 |
Sobre el proyecto
¿Alguna vez has querido crear tu propia interfaz que muestre la hora, la fecha, la temperatura y la humedad? Es mucho más sencillo de lo que parece.
Arduino Uno / Nano
Primero necesitamos un microcontrolador. Se utilizó un Arduino Uno, pero un Arduino Nano también dispone de pines suficientes.
Sensor DHT11
El DHT11 es un sensor digital de temperatura y humedad muy económico. Utiliza un sensor capacitivo de humedad y un termistor para medir el aire circundante. Es importante respetar el intervalo de lectura: se recomienda tomar una muestra cada 2 segundos.
Nota importante: tras configurar la hora una vez, comenta esa línea en el código y vuelve a compilar. Así el RTC mantendrá la hora correcta y no se restablecerá a la hora de compilación cada vez que se encienda.
Módulo RTC DS3231
El DS3231 es un módulo de reloj en tiempo real (RTC), similar al DS1307 pero mucho más preciso y a un coste comparable. Integra un oscilador de cristal compensado por temperatura (TCXO) y cristal, además de una entrada para batería que mantiene la hora aunque se corte la alimentación principal.
Pantalla gráfica OLED 128x64
La pantalla OLED muestra los datos. Su tamaño es compacto y su brillo es excelente. La pantalla Adafruit puede controlarse mediante SPI o I2C, configurable en la parte trasera. Existen alternativas más económicas (por ejemplo, en eBay), pero asegúrate de que sean compatibles con las librerías de Adafruit que se utilizarán.
Código
El sketch principal es Time_Temp_Humidity_Display.ino. Recuerda instalar las librerías necesarias (Adafruit_GFX, Adafruit_SSD1306, dht) antes de compilar.
// Reloj meteorológico: fecha, hora, temperatura y humedad
// Librerías para OLED
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// Pines SPI por software (por defecto)
#define OLED_MOSI 9
#define OLED_CLK 10
#define OLED_DC 11
#define OLED_CS 12
#define OLED_RESET 13
Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
#if (SSD1306_LCDHEIGHT != 64)
#error("Altura incorrecta, corrija Adafruit_SSD1306.h!");
#endif
// Librería para DHT
#include <dht.h>
dht DHT;
#define DHT11_PIN 3
int DHTtimer = 0;
// RTC DS3231 (I2C: SDA a A4, SCL a A5)
#define DS3231_I2C_ADDRESS 0x68
byte decToBcd(byte val) { return (val/10*16) + (val%10); }
byte bcdToDec(byte val) { return (val/16*10) + (val%16); }
void setup() {
Wire.begin();
Serial.begin(9600);
// Configurar hora inicial SOLO UNA VEZ, luego comentar:
// setDS3231time(0, 24, 12, 6, 3, 2, 17); // seg, min, hora, díaSem, díaMes, mes, año
display.begin(SSD1306_SWITCHCAPVCC);
display.clearDisplay();
}
// Funciones RTC (set/read) y visualización de reloj analógico/digital
// ... (código completo en el repositorio)
void loop() {
displayTime(); // Actualiza reloj y fecha en pantalla
DHTtimer++;
if (DHTtimer > 1) { // Lectura DHT cada ~2 segundos
display.fillRect(70, 45, 128, 64, BLACK);
ReadTempAndHum();
DHTtimer = 0;
}
delay(1000);
display.display();
// Limpia áreas de reloj para siguiente ciclo
display.fillRect(0, 0, 64, 64, BLACK);
display.fillRect(0, 0, 128, 20, BLACK);
}
Esquemáticos y archivos
- Diagrama de protoboard:
breadboard_diagram_QvhPKCpIo5.fzz - Esquemático:
schematic_XKU0jQoWbx.fzz - Librerías necesarias:
Adafruit_SSD1306,Adafruit_GFX,DHT,ArduinoRTClibrary
Consejo: Verifica las conexiones I2C (A4/A5) y SPI según los defines del código. La pantalla OLED debe coincidir con la resolución 128x64 y el controlador SSD1306.
Proceso de manufactura
- Monitor de temperatura y humedad en red con Raspberry Pi – Guía DIY completa
- Construya un sensor de temperatura remoto con Raspberry Pi y Python – Guía paso a paso
- Monitorización fluida de temperatura y humedad en Raspberry Pi con EzTemp
- Construya una Estación Meteorológica de Laboratorio Habilitada para Red con Raspberry Pi
- Construya un Sistema de Monitorización de Temperatura y Luz Multi‑Sensor con Raspberry Pi y DS18B20
- Verifica y calibra tu sensor de humedad para mediciones precisas
- Carga y Descarga de Capacitor: Experimento Práctico de Circuito RC
- Guía Completa de Fecha y Hora en C++
- Obtener la Fecha y Hora Actual en Python: Guía Práctica
- Dominando fechas y horas en Python: Guía práctica
- Dominando Fecha y Hora en Java: Constructores, Métodos y Mejores Prácticas