Yes, you read the title correct. Have you ever forgot your birthday, that you need someone else to remind you about it ? Or what if you can gift to someone you love, a device that'll wish them on their birthday for 50 times ? I kid you not, this simple Arduino powered Birthday Alarm that runs on a single CR2450 coin cell can wish your loved ones (or yourself) a happy birthday for 50 years, before the battery run out of juice.
This is my first project on Hackaday. I was really intrigued by the Coin Cell contest here and wanted to make something awesome. This birthday alarm thing simply popped into my head and I started researching on how long we can run something on a coin cell. I've never used the sleep modes of any microcontrollers before. So I had to learn everything about making MCUs run at insanely low currents and save every bit of energy from a cell. It was a challenge really! I used ATmega168P as the microcontroller (actually I modified an Arduino Nano that has ATmega168P on it by removing all the unwanted components such as the voltage regulator, USB bridge etc.) and used Arduino IDE to develop the firmware.
The time and birthday date can be programmed via serial monitor over USB. Once the time and alarm are set, the MCU goes to sleep mode. When the current RTC time matches your birthday every year, the LED will flash for a minute and will print a happy birthday message to the serial monitor. The average current consumption is around 1.2 uAh (including self-discharge) which makes it possible to run it for more than 50 years on a CR2450 (540mAh) Lithium coin cell.
- Around 1.22 uAh average current consumption including cell self-discharge (608 nA without considering self-discharge, as measured by ammeter, on cell CR2450N)
- Actual operating times on different types of Lithium coin cells are : >29 years on CR2023 (225 mAh), >50 years on CR2450N (540 mAh), and >64 years on CR2477N (950 mAh). [actual operating time depends on the battery's physical and chemical health over the period]
- Birthday can be set and updated via any serial monitor software over USB with simple commands.
- Dedicated time setting switch allows to set, see and update time anytime you want.
- Software setting of time means, it can be set pretty accurately with an app running on a computer (a time setting/syncing software based on Processing is under development)
- Open source - all design files and software codes are available to download with detailed documentation and high resolution images.
Now I'll walk you through the instructions on how to build this and show you the actual current consumption test.
1. Modifying the Arduino Nano
For this project you can use a bare microcontroller or use an Arduino Nano or Mini boards. All that is required is we must run it with internal oscillator (1MHz) and at full 1.8 - 5V operating range. The CR2450 or similar Lithium cells have a nominal voltage of 3V, and so we can run the MCU without using a voltage regulator. Chinese clones or Nano and Mini are extremely cheap that you can buy them for the chip's price! I used such a Nano clone that has CH340G as the USB to serial bridge. Below is the one I used.
I had both ATmega168 and 328 versions. I bought the 168 versions by mistake a few years ago (now I found a use for it). In this particular board you need to remove,
- The USB to Serial bridge IC which here is the CH340G.
- The Schottky diode that is connected to the USB 5V.
- Two 1K resistors connected to the TX and RX pins of the CH340G.
- RX, TX and PWR LEDs (SMD)
- The AMS1117 5V voltage regulator.
I used the LED on pin 13 for debugging and as the main flasher, and so I didn't remove it. The capacitors need not be removed as they'll help attenuate noise. Once the regulator is removed, you need to short the pads of the voltage regulator as shown in the image. This is due...Read more »