Construye un reloj en tiempo real con Arduino para horarios de oración islámica
Componentes y materiales
| Arduino UNO | 1 |
| Pantalla Nokia 5110 (PCD8544) | 1 |
| Módulo RTC DS1307 (Seeed Pi RTC) | 1 |
Herramientas necesarias
- Cables jumper macho-macho premium (40 x 75mm)
- Protoboard 400 puntos
Aplicaciones y servicios online
- Arduino IDE
Sobre el proyecto
Este reloj en tiempo real muestra la fecha gregoriana y los horarios diarios de oración (salat). Utiliza un Arduino UNO, un RTC DS1307 y una pantalla LCD Nokia 5110.
Materiales detallados
Arduino UNO
Placa basada en ATmega328P con 14 pines digitales (6 PWM), 6 entradas analógicas, 16 MHz, 32 KB Flash, 2 KB SRAM, 1 KB EEPROM.
DS1307
Reloj/calendario BCD de bajo consumo con ajuste automático de fin de mes y año bisiesto. Funciona en formato 12/24 horas con indicador AM/PM. Incluye detección de fallo de alimentación y cambio automático a batería. Comunicación I2C (pines SCL, SDA). Requiere cristal de 32.768 kHz.
Pantalla Nokia 5110
Pantalla monocroma 84x48 píxeles con retroiluminación, controlador PCD8544 (interfaz serie tipo SPI). Pines: VCC, GND, RST (reset activo bajo), CE (chip enable activo bajo), D/C (datos/comando), DIN (datos serie), CLK (reloj), BL (retroiluminación, controlable por PWM).
Cómo adaptar el programa a tu ciudad
Modifica la línea 161 del código con tus coordenadas geográficas y parámetros de cálculo:
calcPrayerTimes(year, month, dayOfMonth, longitud, latitud, zonaHoraria, anguloFajr, anguloIsha, fajr, sunRise, zuhr, asr, maghrib, isha);
Parámetros necesarios:
- Longitud / Latitud / Zona horaria del lugar.
- Ángulos de crepúsculo para Fajr e Isha (varían según método de cálculo).
Puedes obtener estos datos en IslamicFinder buscando tu ciudad. Ejemplo para El Cairo:
- Longitud: 31.2
- Latitud: 30.0
- Zona horaria: +2
- Ángulo Fajr: -19.5
- Ángulo Isha: -17.5
La línea quedaría:
calcPrayerTimes(year, month, dayOfMonth, 31.2, 30.0, 2, -19.5, -17.5, fajr, sunRise, zuhr, asr, maghrib, isha);
Funcionamiento del algoritmo
La función calcPrayerTimes (autor: Mahmoud Adly Ezzat) calcula los momentos astronómicos del sol y aplica fórmulas trigonométricas para obtener los horarios de las cinco oraciones. Los resultados se devuelven como números double (horas decimales) y la función doubleToHrMin los convierte a horas y minutos.
Código completo
#include "Wire.h"
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);
#define DS1307_I2C_ADDRESS 0x68
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
double fajr, sunRise, zuhr, asr, maghrib, isha;
void setup() {
Wire.begin();
display.begin();
display.setContrast(25);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(BLACK);
display.setCursor(22, 18); display.print("Hatem");
display.display(); delay(500);
display.setCursor(24, 28); display.print("ZEHIR");
display.display(); delay(500);
getDateDs1307();
}
void loop() {
getDateDs1307();
// Ajusta los parámetros según tu ubicación
calcPrayerTimes(year, month, dayOfMonth, 39.8, 21.4, 3, -18.5, -19,
fajr, sunRise, zuhr, asr, maghrib, isha);
unsigned long currentMillis = millis();
static long previousMillis = 0;
const long interval = 200;
if (currentMillis - previousMillis > interval) {
previousMillis = currentMillis;
printTime();
}
}
// Funciones de conversión BCD, lectura/escritura RTC, impresión en pantalla
// y algoritmo completo de cálculo de horarios de oración (incluidas en el código original)
Esquemático de conexiones
Conexiones I2C entre Arduino (A4=SDA, A5=SCL) y DS1307; pantalla Nokia 5110 en pines digitales 3-7.
Proceso de manufactura
- Reloj POV con Arduino: Construye una pantalla LED de persistencia de visión
- Construye un reloj Numitron retro con Arduino: Simple, fiable y eficiente energéticamente
- Reloj de Palabras DIY con Arduino: Construye una Pantalla Elegante en Tiempo Real
- Construye un Reloj Maestro LED Personalizado con Alarma – Visible desde 12 Metros
- Alcancía Inteligente: Controla un Aceptador de Monedas con Arduino Nano
- Monitor de Temperatura y Reloj en Tiempo Real con Arduino Due y Pantalla TFT 3.2"
- Controla un LED por Bluetooth con Arduino – Guía DIY paso a paso
- Cómo mostrar imágenes en una pantalla TFT LCD de 1.17 pulgadas con Arduino UNO
- Construir una pantalla de persistencia de visión portátil con Arduino UNO y ATtiny85
- Construye un reloj despertador fiable con RTC DS1302 y Arduino UNO
- Control de Ventilador PWM de 4 Pines a 25 kHz con Arduino Uno – Montaje, Código y Pruebas