Electronic – arduino – Reduce power consumption and schedule power on and off with RTC module

arduinorelaytimer

I work on an Arduino based beehive scale project.

My circuit is wired and it works perfectly (measure temperature, humidity, weight every day at 6 AM, 2 PM and 10 PM and sends it to the server by GSM module) while powered by 5 V and 3 A.

My goal is to power everything with 12 V battery pack which will last for at least 1 year. The circuit consumes about 20-30 mA (it is because Arduino is turned on, sensors work all day long, GSM module is an active whole day, etc.) and about 150 mA while GSM is sending a message (few seconds).

I was looking for the best way to solve my problem and found this guy:

DS3231 Real Time Clock Module
DS3231 RTC Module will probably be the best choice. Arduino watchdog timer is very inaccurate and consumes more power than the RTC module.

My questions are:

How can I program a DS3231 RTC module to power on Arduino at a specific time and wait for Arduino to tell him when to power off or be turned on for example 5 minutes until the server gets all the measurements? How long will the RTC module's battery (CR2302) last in my case? Is Arduino's watchdog timer in combination with Arduino's sleep mode a better and easier solution to fix that?

PS. Now Arduino works all day long and delay is specifying time when it will send measurements to server.

Best Answer

You can do that with this module, but you may need some additional circuit.

The SQW output of the DS3231 can be programmed to output an alarm (active low) when the internal time registers match a certain predefined value. You can use this alarm/SQW signal to power-up your beehive scale (arduino & Co.) e.g. with a single high-side transistor between the battery and the arduino.

After Arduino has done its work, it must reprogram the DS3231 over I2C for a new wakeup time, e.g. 15mins later. At last, the arduino must reset the interrupt which also shuts down the arduino from power.