Paso 1: Diseño RTC
No me gustó mi primer diseño como las baterías sólo pasados unos diez días, así que quería un diseño que iba a durar más tiempo.
Technobabble: La razón que las baterías no duran mucho tiempo es que tuve que mantener el poder en el AtMega328 (Arduino) continuamente para mantener el reloj de tiempo real de software funcionando. Así que necesito poder poner el AtMega328 para dormir o lo apaga.
Mi amigo me envió a algunos de estos módulos RTC (reloj en tiempo Real):
http://www.eBay.co.uk/ITM/Arduino-I2C-Tiny-RTC-DS1307-Real-Time-Clock-Module-AT24C32-Board-AVR-MCU-PIC-/221176522620?PT=UK_BOI_Electrical_Components_Supplies_ET&hash=item337f25e77c
http://www.eBay.com/ITM/I2C-Tiny-RTC-DS1307-Real-Time-Clock-Module-AT24C32-Board-for-AVR-MCU-PIC-DIY-/231037403500?PT=LH_DefaultDomain_0&hash=item35cae7016c
Estos vienen con un RTC con respaldo de batería y una EEPROM que es útil.
Problema: Así que tengo una inquietud acerca de estos módulos. Tenga en cuenta que la batería es un LIR2032 que es una batería recargable. Sospecho que tiene un circuito de carga. Bueno, encontré un esquema y decidió dibujar mi propio (ver imagen). Tiene un circuito de carga y pondría una carga adicional de la batería 18650.
Solución: Así que para este módulo, si quitar D1, R4, R5 y R6 y poner un puente a través de R6 y reemplace la batería con una CR2032, esto eliminará la carga de la batería. Es que lo que (véase el cuadro).
En esta aplicación, la CR2032 se supone que pasados unos diez años por lo que no tengo ningún problema con eso.
ADVERTENCIA: Estaba usando una vieja biblioteca de AdaFruit para su registrador de datos llamado RTCLib. Había un bosquejo llamado DS1307.pde que fijaría el tiempo. Ahora Esto funciono bien la primera vez que se ejecuta pero luego no fijó el tiempo. Hay una versión actualizada con un ejemplo que funciona mejor:
https://github.com/JCW/rtclib
Descargar el zip, descomprimirlo, cambiar el nombre de rtclib amo a rtclib y copiarlo a su directorio de las bibliotecas de Arduino.
TechnoSpeak I2C: Técnicamente debería ser C I(squared) o CII que está parado para el circuito de Inter-Integrated. Básicamente es una interfaz serial 'estándar' que requieren de dos señales SCL y SDA de tierra. SDA es la señal de datos conmutación de 0V a 5V con los datos que va a través en secuencia (en serie). Puesto que hay sólo dos niveles y la velocidad no es determinada, no hay ninguna manera de determinar donde empieza un bit de datos extremos y la siguiente. Es donde entra la señal SCL (reloj). Esto indica que el dispositivo receptor inicia de los extremos de un bit y el siguiente.
Una ventaja de I2C es que varios dispositivos pueden acoplarse a las misma dos señales. En este caso el DS1307 (RTC) y 24c32 (EEPROM) están ambos vinculados a las líneas SCL y SDA. Para decir que usted está hablando a cada tipo de dispositivo el dispositivo tiene una dirección única.
La dirección del DS1307 es 0x68. La Dirección 32 de 24 C es 0 x 50.
Arduino compatible con I2C con la biblioteca de 'alambre'.
Por cierto, esto significa que no puede tener más de uno del mismo tipo de dispositivo en las misma dos líneas. Por ejemplo, no puede haber dos 24C32s.