En este tutorial veremos como hacer un reloj en tiempo real (RTC) para arduino, donde podremos ver la hora, la fecha y el día de la semana, en un display oled sh1106. Veremos el diagrama electrónico del circuito, el módulo RTC y también el display oled SH1106, estudiaremos el código fuente, por último probaremos el funcionamiento del proyecto.
Más abajo podrás descargar las librerías que usamos en este proyecto, el código fuente y el diagrama electrónico.
También, se incluye información detallada de los componentes utilizados en este proyecto
Tal vez pueda interesarte proyectos en arduino, pic, robótica, telecomunicaciones, suscribete en http://www.youtube.com/user/carlosvolt?sub_confirmation=1 mucho videos con código fuentes completos y diagramas
Módulo RTC
Descripción
El módulo RTC se basa en el módulo de reloj DS1307 de alta precisión en tiempo real.
A través de la interfaz I2C para comunicarnos con singlechip, puede leer año, mes, día, semana, hora, minuto, segundo, puede leer hasta año 2100.
La interfaz de Control es I2C.
Voltaje recomendado: cc 5 V, la dirección del módulo es 0x68, el nivel de interfaz de Control es 5 V o 3,3 V.
El reloj de tiempo real serie (RTC) DS1307 es un reloj / calendario decimal de código binario completo (BCD) de baja potencia.
Más 56 bytes de NV SRAM. Dirección y datos son transferido en serie a través de un I2C, bus bidireccional.
El reloj / calendario proporciona segundos, minutos, horas, información de día, fecha, mes y año. El fin de la fecha del mes se ajusta automáticamente por meses con menos de 31 días, incluidas correcciones por salto año. El reloj funciona en 24 horas o 12 formato de hora con indicador AM / PM. El DS1307 tiene un
circuito de detección de energía incorporado que detecta fallas de energía y cambia automáticamente al suministro de respaldo.
La operación de cronometraje continúa mientras la parte opera desde el suministro de respaldo.
Características
Especificación de voltaje de alimentación VCC: 4,5 ~ 5,5 V;
Voltaje de la batería: 3,5 V ~ 2,0; H
Entrada de nivel igh: 2,1 vvcc + 0,3 V;
Entrada de bajo nivel:-0,3 ~ + 0,8 V;
Interfaz de Control: 4 pines (GND, VCC, SDA, SCL), GND para cable de tierra, VCC para fuente de alimentación, SDA para cable de datos de interfaz I2C, SCL para cable de reloj de interfaz I2C;
IC en tiempo Real: DS1307Z; sincronización independiente: a través de la interfaz I2C se comunican con MCU.
Batería: Batería de CR1220;
Orificio instalado: agujero de tornillo de 4 m2, agujero de diámetro: 2,2mm, fácil de instalar.
Diagrama electrico RTC DS1307
Display oled SH1106
Se trata de un módulo de pantalla OLED monocromática DE 128×64 puntos con interface I2C .Que presenta varias ventajas en comparación con pantallas LCD, y podemos destacar su alto brillo, un muy buen contraste, un ángulo de visión más amplio, y bajo consumo de energía. ES compatible con Arduino Rasberry Pi y micro controladores PIC entre otros. Trabaja con niveles lógicos de 3.3V a 5V tiene un angulo de visión mayor a los 160 grados. el Tamaño de la pantalla es de 1,3 pulgadas. Se alimenta con un voltaje de 3.3V a 5V Se lo puede usar en aplicaciones como relojes inteligentes, MP3, termómetros, instrumentos, y proyectos varios, etc.
Arduino mini pro
Esta placa se desarrolló para aplicaciones e instalaciones donde el espacio es premium y los proyectos se realizan como configuraciones permanentes. Pequeño, disponible en versiones de 3.3 V y 5 V, alimentado por ATmega328
| Microcontroller | ATmega328 * |
| Board Power Supply | 3.35 -12 V (3.3V model) or 5 – 12 V (5V model) |
| Circuit Operating Voltage | 3.3V or 5V (depending on model) |
| Digital I/O Pins | 14 |
| PWM Pins | 6 |
| UART | 1 |
| SPI | 1 |
| I2C | 1 |
| Analog Input Pins | 6 |
| External Interrupts | 2 |
| DC Current per I/O Pin | 40 mA |
| Flash Memory | 32KB of which 2 KB used by bootloader * |
| SRAM | 2 KB * |
| EEPROM | 1 KB * |
| Clock Speed | 8 MHz (3.3V versions) or 16 MHz (5V versions) |
FUENTE DE ALIMENTACIÓN DE PLACA DE PRUEBA DE 3.3V Y 5V
Esta práctica placa de fuente de alimentación de placa de 3.3V y 5V de YuRobot está diseñada para conectarse a un panel de placa de pruebas con 2 tiras de distribución.
Características y especificaciones
- Carga total máxima: 700 mA.
- Voltaje seleccionable de 5 V, 3,3 V o sin bus para ambos buses.
- Interruptor de encendido / apagado a bordo.
- Potencia de entrada del puerto USB A hembra o conector de alimentación de 5.5 / 2.5 mm.
- Rango de entrada 6.5-12VDC
Circuito: diagrama electrónico del proyecto
Código Fuente
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
// Función: establecer hora y fecha, obtener el tiempo del chip RTC (DS1307) y mostrar // en el monitor en serie. // Hardware: RTC de Catalex // /****************************************************************************/ #include <Wire.h> #include "DS1307.h" #include "U8glib.h"//Librería para el control del display oled DS1307 clock;//definir un objeto de la clase DS1307 U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);// I2C / TWI // Se habilita esta linea según el display a usar en este caso el driver SH1106 String dia=""; void setup() { Serial.begin(9600); clock.begin(); clock.fillByYMD(2020,3,25);//Marzo 25,2020 clock.fillByHMS(20,45,30);//20:45 30" clock.fillDayOfWeek(WED);//Miercoles clock.setTime();//Escribir hora y fecha en el chip RTC } void loop() { /*Mostrar fecha y hora en el monitor en serie*/ clock.getTime(); Serial.print(clock.hour, DEC); Serial.print(":"); Serial.print(clock.minute, DEC); Serial.print(":"); Serial.print(clock.second, DEC); Serial.print(" "); Serial.print(clock.dayOfMonth, DEC); Serial.print("/"); Serial.print(clock.month, DEC); Serial.print("/"); Serial.print(clock.year+2000, DEC); Serial.print(" "); // Impresión del día de la semana switch (clock.dayOfWeek) { case MON: Serial.print("Lunes"); dia="Lunes"; break; case TUE: Serial.print("Martes"); dia="Martes"; break; case WED: Serial.print("Miercoles"); dia="Miercoles"; break; case THU: Serial.print("Jueves"); dia="Jueves"; break; case FRI: Serial.print("Viernes"); dia="Viernes"; break; case SAT: Serial.print("Sabado"); dia="Sabado"; break; case SUN: Serial.print("Domingo"); dia="Domingo"; break; } Serial.println(" "); pantalla();//llama a la función "pantalla" para mostrar los datos en el display oled } //Mostra datos en en display void pantalla(){ u8g.firstPage(); do { draw();//Llama a la función draw } while( u8g.nextPage() ); // Reconstruye la imagen después de un tiempo delay(50); } void draw(void) { //Los comandos gráficos para volver a dibujar la pantalla completa deben colocarse aquí u8g.setFont(u8g_font_unifont); u8g.setPrintPos(0, 20); u8g.print("Hora:"); u8g.print(clock.hour, DEC); u8g.print(":"); u8g.print(clock.minute, DEC); u8g.print(":"); u8g.print(clock.second, DEC); u8g.setPrintPos(0, 40); u8g.print("Fecha:"); u8g.print(clock.dayOfMonth, DEC); u8g.print("/"); u8g.print(clock.month, DEC); u8g.print("/"); u8g.print(clock.year+2000, DEC); u8g.setPrintPos(0, 60); u8g.print("Dia:"); u8g.print(dia); } |
Librerías
RTC–>Librería reloj de tiempo real
U8glib–>Librería de oled SH1106
Hoja de datos DS1307
SUSCRIBETE A NUESTROS BOLETINES, RECIBE EN TU CORREO LAS NOTICIAS MÁS DESTACADAS, SÓLO INGRESANDO TU CORREO ELECTRÓNICO
[wysija_form id=”1″]
VIDEO RECOMENDADO






