Como usar com Arduino – Módulo Real Time Clock RTC DS1302

Como usar com Arduino – Módulo Real Time Clock RTC DS1302

img00_como_usar_com_arduino_modulo_real_time_clock_rtc_ds1302_horas_dias_mes_data_ano_bissexto_uno_mega_bateria

– Descrição:

Módulo Real Time Clock RTC DS1302 é um relógio em tempo real (RTC) que possui calendário completo e conta com 31 Bytes de SRAM. O mesmo é capaz de fornecer informações de hora, minutos, segundos, dia, data, mês e ano.

Para o funcionamento do Módulo Real Time Clock RTC DS1302 é necessário além da alimentação da placa, uma bateria CR2032 para poder permitir que os dados fiquem armazenados mesmo com a falta de energia. Além disso, o módulo é capaz de detectar falhas de energia e consequentemente acionando a bateria para evitar que os dados sejam perdidos. O módulo também é capaz de ajustar automaticamente o final dos meses que possuem menos de 31 dias, faz a correção de ano bissexto e trabalha tanto no formato de 12 horas quanto 24 horas.

– Especificações e características:

– Controlador: DS1302
– Tensão de operação: 2 a 5VDC
– Memória RAM não volátil: 31 bytes
– Computa horas / minutos / segundos / dias da semana / mês / meses / anos
– Consome menos de 300nA quando alimentado com 2VDC
– Possui circuito de detecção de falha de energia
– Bateria compatível: CR2032

– Aplicações:

Projetos com Arduino ou outras plataformas microcontroladas em que seja necessário obter informações das horas, dia e data.

– Proposta da prática:

Utilizar o Módulo Real Time Clock RTC DS1302 em conjunto com o Arduino e obter informações de horas e data. Estas informações serão exibidas no monitor serial do ambiente de programação do Arduino.

– Lista dos itens necessários:

01 – Arduino com Cabo USB
01 – Módulo Real Time Clock RTC DS1302
04 – Cabos Jumper macho-fêmea

– Esquema de ligação da prática

img01_como_usar_com_arduino_modulo_real_time_clock_rtc_ds1302_horas_dias_mes_data_ano_bissexto_uno_mega_bateria

– Tutorial de instalação e configuração do ambiente de programação do Arduino:

Arduino – Instalação e Configuração da IDE no Windows

– Biblioteca:

Download Rtc-master

– Importando bibliotecas para o ambiente de programação do Arduino:

Arduino – Importando bibliotecas para a IDE

– Código:

– Resultado final:

Gostou desta prática? Então deixa seu comentário, dúvida ou sugestão aí embaixo!

Loja online: https://www.masterwalkershop.com.br
Fan page no Facebook: https://www.facebook.com/masterwalkershop

Nos ajude a espalhar conhecimento clicando no botão de compartilhar (f Like) que está mais abaixo.

Obrigado e até a próxima!

Seu feedback é muito importante! Que tal dar uma nota para esta postagem?! Faça sua avaliação aqui embaixo.



Postagem anterior:
Próxima postagem:
Postagem feita por

Formado em Engenharia da Computação, Técnico em Eletroeletrônica, Fundador e Diretor da MasterWalker Electronic Shop. Se preocupa com o aprendizado dos seus clientes e daqueles interessados em aprender sobre Arduino e plataformas embarcadas em geral.

Existem 14 comentários para esta postagem
  1. Luis às 13:32

    Está acontecendo isso, será que o senhor poderia me ajudar?

    Compilado em: 31/12/2021 13:29:50

    As informações atuais do RTC são iguais as de compilação! Não é o esperado, mas está tudo OK.

    31/12/2021 13:29:50
    31/12/2021 13:29:50
    31/12/2021 13:29:50
    31/12/2021 13:29:50
    31/12/2021 13:29:50
    31/12/2021 13:29:50
    31/12/2021 13:29:50

  2. Guilherme às 18:21

    Olá Euler, boa noite. Tudo bem?

    Estou tentando utilizar essa biblioteca com esse código no meu projeto, mas fico recebendo o seguinte erro:

    In file included from C:\Users\Pichau\Documents\Arduino\lcd_test4\lcd_test4.ino:49:0:

    C:\Users\Pichau\Documents\Arduino\libraries\Rtc-master\src/RtcDS1302.h: In member function ‘RtcDateTime RtcDS1302::GetDateTime()’:

    C:\Users\Pichau\Documents\Arduino\libraries\Rtc-master\src/RtcDS1302.h:162:61: error: ‘THREEWIRE_READFLAG’ was not declared in this scope

    _wire.beginTransmission(DS1302_REG_TIMEDATE_BURST | THREEWIRE_READFLAG);

    ^~~~~~~~~~~~~~~~~~

    C:\Users\Pichau\Documents\Arduino\libraries\Rtc-master\src/RtcDS1302.h: In member function ‘uint8_t RtcDS1302::GetMemory(uint8_t*, uint8_t)’:

    C:\Users\Pichau\Documents\Arduino\libraries\Rtc-master\src/RtcDS1302.h:227:56: error: ‘THREEWIRE_READFLAG’ was not declared in this scope

    _wire.beginTransmission(DS1302_REG_RAM_BURST | THREEWIRE_READFLAG);

    ^~~~~~~~~~~~~~~~~~

    C:\Users\Pichau\Documents\Arduino\libraries\Rtc-master\src/RtcDS1302.h: In member function ‘uint8_t RtcDS1302::getReg(uint8_t)’:

    C:\Users\Pichau\Documents\Arduino\libraries\Rtc-master\src/RtcDS1302.h:247:46: error: ‘THREEWIRE_READFLAG’ was not declared in this scope

    _wire.beginTransmission(regAddress | THREEWIRE_READFLAG);

    Você saberia como resolvê-lo?

    Muito obrigado pela ajuda!

    • Euler Oliveira Autor às 17:19

      Olá Guilherme.

      Agradeço pelo comentário!

      Sugiro que remova e adicione novamente a biblioteca disponibilizada no tutorial, pois acabei de testar o código e está funcionando perfeitamente.

      • Guilherme às 11:22

        Olá Euler

        Muito obrigado pela resposta!

        Segui a sua sugestão e deletei da minha pasta de libs a biblioteca disponibilizada aqui no tutorial (rtc-master). Porém, infelizmente o problema persiste, não sei dizer o porque.

        Abri o arquivo da biblioteca RtcDS1302 para tentar entender o erro, e pelo que vi a THREEWIRE_READFLAG não foi declarada em nenhum lugar. Será que é esse o problema? Você consegue compartilhar como está o código apenas dessa sua lib comigo para compararmos se está igual?

        Muito obrigado pela prontidão e disponibilidade em me ajudar.
        Um abraço!

        • Euler Oliveira Autor às 08:26

          Mas o código que usei é o mesmo da postagem e a biblioteca também é a mesma disponibilizada para download.

          Não fiz nenhuma alteração nos arquivos originais. Não sei qual versão do IDE do Arduino está usando, mas aqui uso a 1.8.13.

  3. Mailson Malaquias às 22:05

    Boa noite, o meu esta acontecendo isto!
    pode me ajudar?

    As informações atuais do RTC são mais recentes que as de compilação. Isso é o esperado.

    00/00/2000 00:27:58
    00/00/2000 00:27:59
    00/00/2000 00:28:00
    00/00/2000 00:28:01
    00/00/2000 00:28:02

  4. Carolina Bragança às 12:36

    Boa Tarde,

    Como é que eu deste código retiro a data para guardar num cartão SD?

    Obrigada

    • Euler Oliveira Autor às 13:06

      Olá Carolina.

      Agradeço pelo comentário!

      Recomendo que leia os comentários das linhas do código da postagem, pois lá é informado do que se trata algumas das variáveis que armazena as informações.

  5. willian às 18:15

    Boa noite, o meu esta acontecendo isto!
    pode me ajudar?
    Compilado em:02/09/2019 18:05:31

    As informações atuais do RTC são mais recentes que as de compilação. Isso é o esperado.

    00/00/2000 00:27:58
    00/00/2000 00:27:59
    00/00/2000 00:28:00
    00/00/2000 00:28:01
    00/00/2000 00:28:02

    • Euler Oliveira Autor às 19:21

      Olá Willian.

      Agradeço pelo comentário!

      Troque a bateria do RTC, recarregue o código e veja se resolve.

  6. José às 06:50

    Está me acontecendo isto:

    {
    Compilado em: 08/08/2019 10:46:40

    As informações atuais do RTC são mais recentes que as de compilação. Isso é o esperado.

    08/08/2019 16:58:42
    08/08/2019 16:58:43
    08/08/2019 16:58:44
    }

    • Euler Oliveira Autor às 11:35

      Olá José.

      Agradeço pelo comentário!

      Remova a bateria do módulo, aguarde alguns segundos e tente novamente carregar o código no Arduino e veja se irá registrar as informações corretamente.

  7. Gabriel às 22:06

    Uma dúvida, talvez tenha passado despercebido por mim, mas onde eu faço a inserção da data atual?

    • Euler Oliveira Autor às 12:23

      Olá Gabriel.

      Agradeço pelo comentário!

      O código captura a data e hora de compilação do código e usa como parâmetro para definir as informações do RTC.