Problemas ao usar RTC- DS3231 com esp32

Olá!, estou tentando utilizar um módulo de RTC DS3231 para criar uma rotina de irrigação em um sistema hidropônico, porém, ao testar o módulo no microcontrolador esp32, ele chega a exibir os valores corretamente, pegando data e hora do meu computador, porém ao ser desconectado ele não continua a contar a hora mesmo estando com a bateria acoplada, permanecendo com o último horário a qual ele exibiu no momento em que a desconexão foi realizada, ou seja, se desligar a esp as 8 horas e religar as 9 o RTC permanece exibindo 8 horas.
Gostaria de saber se alguém já passou pelo mesmo problema, o se alguém sabe como resolver, desde já agradecido!

Código utilizado:


#include <RTClib.h>
#include <Wire.h>

RTC_DS3231 rtc;

char t[32];

void setup()
{
Serial.begin(115200);
Wire.begin();

rtc.begin();
rtc.adjust(DateTime(F(DATE),F(TIME)));
//rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));

}

void loop()
{
DateTime now = rtc.now();

sprintf(t, "%02d:%02d:%02d %02d/%02d/%02d", now.hour(), now.minute(), now.second(), now.day(), now.month(), now.year());

Serial.print(F("Date/Time: "));
Serial.println(t);

delay(1000);
}

Eu acho que o que está a acontecer é que ao desligares o computador, a ligação série faz reset do ESP32.

Ao fazer reset do ESP32, o teu código diz-lhe para reinicializar o tempo com esta instrução no teu setup:

rtc.adjust(DateTime(F(DATE),F(TIME)));

Eu diria que o melhor que tens a fazer é compilar e enviar este código para o ESP32. Isso vai fazer com que o relógio seja ajustado com a data e hora corrente.

Depois comentas ou apagas a linha:

rtc.adjust(DateTime(F(DATE),F(TIME)));

compilas e voltas a enviar para o ESP32. Desta vez, ele não vai tentar ajustar a hora e vai assumir que a hora no RTC está correcta.

Existe uma maneira de ver se o RTC já foi ajustado ou não, mas sinceramente não me lembro agora como era feito. De qualquer das formas, se isso acontecesse não quererias mostrar a hora da compilação do programa e quererias talvez mostrar um erro para indicar o problema.

1 Like

De fato! testei a sua sugestão e realmente foi como você disse! muitíssimo obrigado por me ajudar :slight_smile: ainda sou um pouco leigo em programação de módulos.