Recordatorio de Cumpleaños con Arduino: Solución Fiable para 50 Años
Componentes y suministros
| Componente | Cantidad |
|---|---|
| Arduino Nano R3 (clon chino con ATmega168P-AU) | 1 |
| RTC Intersil ISL1208 (I2C, bajo consumo) | 1 |
| Pila de moneda Renata CR2450N (3V, 540 mAh) | 1 |
| Módulo USB-Serie CP2102 | 1 |
| Programador USBasp | 1 |
| Cristal 32.768 kHz | 1 |
| Interruptor SPST | 1 |
| LEDs SMD | 1 |
| Cúpula LED transparente | 1 |
| Caja de derivación 4"x4" (o caja impresa 3D) | 1 |
| Placa perforada (perfboard) | 1 |
| Conectores Berg (macho y hembra) | 1 |
| Resistencia 4.75 kΩ | 3 |
| Resistencia 10 kΩ | 2 |
Herramientas necesarias
- Dremel
- Soldador
Aplicaciones y servicios en línea
- ProgISP - Para programar fuses y flash
- Arduino IDE
Descripción del proyecto
Un dispositivo que felicita el cumpleaños durante 50 años con una sola pila de moneda CR2450. El ATmega168P (versión PicoPower) duerme en modo SLEEP_MODE_PWR_DOWN a 1 MHz, consumiendo ~0.2 µA. El RTC ISL1208 (400 nA en modo VBAT) genera interrupción anual en la fecha programada, despertando al MCU para parpadear un LED y enviar mensaje por serie. Consumo medio: 1.22 µAh (incluyendo auto-descarga de la pila), dando >50 años en CR2450N, >29 en CR2032, >64 en CR2477.
Características clave
- Consumo medio ~1.22 µAh (incluyendo auto-descarga 1%/año)
- Configuración de hora y alarma por monitor serie (USB) con comandos simples
- Interruptor dedicado para modo configuración
- Código abierto (MIT License) en GitHub
Paso 1: Modificar el Arduino Nano
Eliminar del Nano clónico (CH340G): puente USB-serie, diodo Schottky, resistencias 1K en TX/RX, LEDs SMD (RX/TX/PWR), regulador AMS1117 5V. Puentear las patillas del regulador por el routing de la PCB. No quitar el cristal de 16 MHz aún (necesario para cambiar fuses).
Paso 2: Cambiar fuses del ATmega168P
Con USBasp y ProgISP: oscilador interno 8 MHz + divisor 8 → 1 MHz, desactivar BOD, desactivar WDT. Fuses: Low=0x62, High=0xDF, Extended=0xF9. Solo chips con sufijo P (PicoPower) soportan esto.
Paso 3: Compilar y subir
Añadir definición de placa personalizada en boards.txt (Arduino Pro Mini 3.3V 1 MHz ATmega168). Compilar, exportar binario compilado (Ctrl+Alt+S), flashear el .hex sin bootloader con USBasp/ProgISP.
Paso 4: RTC ISL1208 I2C
RTC de muy bajo consumo (400 nA en VBAT). Alarma con mes/día/hora/min/seg (ideal para cumpleaños). Interrupción de 250 ms en flanco descendente al coincidir. Requiere cristal 32.768 kHz. Se hizo breakout board para versión SMD.
Paso 5: Pila CR2450N
Li/MnO2, 3V, 540 mAh, auto-descarga <1%/año, vida en estantería 10 años, rango -40 a +85°C.
Paso 6: Esquemático
Dos resistencias 4.7K pull-up I2C. Pull-ups 10K en pines de interrupción (D2=alarma RTC, D3=interruptor configuración). CP2102 conectado a RX/TX del Nano (no conectar +5V del USB a VCC principal).
Paso 7: Funcionamiento
- Activar interruptor configuración (D3 a GND)
- Conectar USB, abrir monitor serie (9600 baudios)
- Enviar
t(ver hora),a(ver alarma),c(cancelar) - Establecer hora:
TYYMMDDhhmmssp#(ej.T1801050835120#= 05/01/2018 08:35:12 AM) - Establecer alarma:
AMMDDhhmmssp#(ej.A08240800000#= 24/08 08:00:00 AM) - Desactivar interruptor → duerme en 6 seg
- En cumpleaños: RTC despierta MCU → parpadea LED + mensaje serie → vuelve a dormir
Paso 8: Código
13 funciones: setup(), loop(), sleepNow() (desactiva periféricos, adjunta interrupciones, sleep_mode()), ISRs alarmInterrupt() (INT0/D2) y timeUpdateInterrupt() (INT1/D3), fetchTime(), blinkLED(), establishSerial()/endSerial(), conversión BCD↔decimal, printTime(), printAlarmTime(). Código comentado en GitHub: vishnumaiea/Birthday-Alarm.
Paso 9: Pruebas y optimización
Mediciones con Fluke 87 (0.1 µA resolución). Inicial: 1.4-1.6 µA total (MCU 0.2 µA + RTC 1.2 µA). Optimización: desconectar VDD del ISL1208 (jumper en breakout), dejar solo VBAT, desactivar bit LPMOD → RTC a 400 nA. Quitar un LED (3 mA pico). Resultado: 0.6 µA reposo, 85 seg/año activos → 608 nA promedio → teórico 101 años. Con auto-descarga 1% (616 nA/año) → 1.22 µAh total → 50 años + 131 días.
Paso 10: Construcción
Montaje en perfboard con conectores Berg extraíbles. Caja de derivación 4"x4", agujeros para interruptor y USB, cúpula LED recuperada de luz barata, pintura plateada. Fotos del proceso y resultado final.
Mejoras futuras
- Pantalla Nokia 5110 LCD (muy bajo consumo sin retroiluminación)
- Software PC (Processing) para sincronizar hora automáticamente
- Parpadeo indicando edad
- PCB dedicado (Eagle/KiCad)
- Optoacoplador para activar alarma AC, música, luces, etc.
Proceso de manufactura
- Montaje en frío de rodamientos: Consejos de expertos para una instalación segura y precisa
- Industria 4.0 e IoT: Tendencias clave del mercado para los próximos dos años
- Cómo el COVID-19 sigue alimentando el cibercrimen: Trabajo remoto, cadenas de suministro de vacunas y espionaje
- 7 señales clave de que es hora de actualizar su generador
- Tres Señales de Alerta que Indican que su Motor Necesita Rebobinado
- Dominar el ensamblaje de PCB impecable: prácticas clave
- De fábricas a laboratorios: El poder versátil de los robots industriales
- NVIDIA Jetson Nano: Computadora IA de 5 W, 472 GFLOPS Potenciando Makers y Empresas
- Kontron lanza CP6940: Switch robusto 40 GbE para entornos extremos
- 10 factores clave para seleccionar el interruptor perfecto para tu aplicación
- Recubrimientos nano ultra-delgados: Control preciso del color mediante capas sub-20 nm