DS3231 module.. Are we doomed to desolder everything?

I'd love to make a battery running product with DS3231 and atmega328p I could sell locally, therefore I'd make a couple of copies. However, this module might be wasting power with the pwr led always on, and the problem that it forces the backup cell battery to recharge, meaning the battery will just blow up one day on the long run (except if you use a rechargeable battery). How long would that module last with the led? is there a better way than desoldering every led and scratching off the battery recharge circuit on every module I buy? I thought of using a transistor to turn the power off when the arduino is in sleep mode, but it doesnt seem to work. Anyway, I cant find if I can send a signal from SQW pin to the atmega (to an interrupt pin, so it can wake up) when SD3231 is running on backup battery. Is it the case? and if it does, maybe I can just leave the module off all the time and simply send SQW signals to wake the atmega from times to times? If all of what I said is garbage, is there another RTC module that is as simple to use and cheap as this one (or cheaper!) with libraries that can make alarms to wake up the chip from sleep mode? Thanks for making this community so rich!

Alarms in the DS3231 generate INT signals which are used to wake the processor. SQW is a programmable 1 Hz output that shares the same output pin. Read the datasheet.

Surface mount parts can be clipped off when you don’t care about the part although I prefer to desoldering them as it takes all of five seconds. If it takes you longer, you’re doing it wrong!

Edit: Yeah, you need to disable the battery charger circuit as well. Back before the changes to the postal regulations with lithium batteries, a rechargeable 2032 cell was supplied as standard with those boards. Rather than redesign, the Chinese just stopped suppling the battery. Doesn’t matter as you only need/want one battery for a battery operated device.

Here is the "cheap DS3231 module" desoldering guide: Using a $1 DS3231 Real-time Clock Module with Arduino | Underwater Arduino Data Loggers

It is very important to remove all the pullup resistors or the SQW/*INT pin won't work properly when the DS3231 is battery powered.

It is very important to remove all the pullup resistors or the SQW/*INT pin won't work properly when the DS3231 is battery powered.

Sheet 9 of the datasheet says:

Pin 3 | Name | INT/SQW

Active-Low Interrupt or Square-Wave Output. This open-drain pin requires an external pullup resistor connected
to a supply at 5.5V or less. This multifunction pin is determined by the state of the INTCN bit in the Control
Register (0Eh). When INTCN is set to logic 0, this pin outputs a square wave and its frequency is determined by
RS2 and RS1 bits. When INTCN is set to logic 1, then a match between the timekeeping registers and either of
the alarm registers activates the INT/SQW pin (if the alarm is enabled). Because the INTCN bit is set to logic 1
when power is first applied, the pin defaults to an interrupt output with alarms disabled. The pullup voltage can
be up to 5.5V, regardless of the voltage on VCC. If not used, this pin can be left unconnected.

Yes, a pullup is required, on the Arduino side. Using INPUT_PULLUP on the input pin will be fine.

If you do NOT remove the pullup built into the DS3231 module it will defeat the Arduino pullup, when the DS3231 module is powered by battery only.

You need to look at the module schematic to see why my warning must be heeded.

You could have just posted the link and skipped the bold font:


The link in reply #2 is more current, more complete and much more useful.

thanks, people the links share are amazing. I realize a lot of it is all about reading. Do you find thoses gems simply by googling??

Yes, google is our friend.

Quote from The cave pearl project:

" I already had pullups on the I2C lines, so they were not needed here, but they were in a combined 4 resistor block, which meant that to get rid of the pullups on SCL and SDA, I also had to remove the pullup on the alarm line. This had me a little concerned, as that alarm line is vital to the whole design. Without that resistor on SQW, I am relying on the weak internal processor pullups keep the alarm line high with:

digitalWrite(INTERRUPT_PIN, HIGH); "

I don't know if its the language barrier or if it's due to my exclusively diy electronics knowledge, but im struggling with understanding which parts I need to remove.

I understand I need to remove the power led + its 1k resistor, and I also need to remove the diode and the 200 ohm resistor from vcc pin to the battery holder is that correct?

Theres another bunch of stuff we need to remove, and Im not sure, which is why I quoted the article. Do I only need to remove the 4 resistors block? I'm not sure why he says he already has pullups on the I2C line, I dont know if it's my case. Do I require removing the block, or only in certain cases? Do I need to change anything to a circuit/code using ds3231 if I desolder those parts? like adding resistors or adding lines of code? thanks! and sorry if it's supposed to be easy to learn by myself, I cant find those answers even after reading articles

If you intend to use the DS3231 running on its own battery AND you intend to use the SQW/*INT output, then it is essential that you remove the 4 resistor package from the module.

You will then need pullup resistors on SDA, SCL and whatever input you use on the Arduino for SQW/*INT, connected to the Arduino Vcc.

You will also need to power the DS3231, possibly with an Arduino output, while setting the clock or reading out the date and time.

Some Arduino boards may already have pullup resistors on SDA and SCL but you do need to make certain, otherwise I2C won't work.

Brilliant! very clear answer thank you.

I'll be a little off the topic of general electronics and soldering the module on that one, but I've been using RTClibExtended library by Fabio Cuomo, without physically modifying the module at all, and I am able to use the SQW/*INT pin to wake my arduino. This library was said to add the functionality of using alarms as interrupts to wake a sleeping chip, but it clearly is possible with the usual RTC library. Anyone has tried this library? Is it due to this library if I could use the interrupt pin without pullup resistors to vcc?