ESP32 - Módulo RTC DS1307

Neste guia, vamos aprender a usar o módulo RTC DS1307 com o ESP32. Em detalhes, vamos ver os seguintes tópicos:

Sobre o Módulo de Relógio de Tempo Real DS1307

O próprio ESP32 tem algumas funções relacionadas a tempo, como millis() e micros(). Porém, elas não fornecem a data e a hora (segundos, minutos, horas, dia, data, mês e ano). Para obter a data e a hora, precisamos usar um módulo de Relógio de Tempo Real (RTC), como o DS3231 ou o DS1307. O módulo DS3231 tem precisão maior que o DS1307. Veja DS3231 vs DS1307

Pinagem

O módulo de Relógio de Tempo Real DS1307 tem 12 pinos. Porém, para uso normal, basta usar 4 pinos: VCC, GND, SDA, SCL:

  • Pino SCL: é o pino de clock da interface I2C.
  • Pino SDA: é o pino de dados da interface I2C.
  • Pino VCC: alimenta o módulo. Pode receber qualquer tensão entre 3.3V e 5.5V.
  • Pino GND: é o pino de terra.
Real-Time Clock DS1307 Module Pinout

O módulo DS1307 também tem um suporte para bateria.

  • Se você colocar uma bateria CR2032, o módulo continua contando o tempo quando a alimentação principal está desligada.
  • Se você não colocar a bateria, a informação de tempo é perdida quando a alimentação principal é desligada e você precisa acertar o horário novamente.

Diagrama de Ligação

The wiring diagram between ESP32 Real-Time Clock DS1307

This image is created using Fritzing. Click to enlarge image

Se você não sabe como alimentar o ESP32 e outros componentes, veja as instruções no tutorial a seguir: Como alimentar o ESP32.

ESP32 - Módulo RTC DS1307

Módulo RTC DS1307 ESP32
Vin 3.3V
GND GND
SDA GPIO21
SCL GPIO22

Como Programar o Módulo RTC DS1307

  • Inclua a biblioteca:
#include <RTClib.h>
  • Declare um objeto RTC:
RTC_DS1307 rtc;
  • Inicialize o RTC:
if (! rtc.begin()) { Serial.println("RTC module is NOT found"); while (1); }
  • Na primeira vez, ajuste o RTC para a data e a hora do PC em que o sketch foi compilado
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  • Leia as informações de data e hora do módulo RTC
DateTime now = rtc.now(); Serial.print("ESP32 RTC Date Time: "); Serial.print(now.year(), DEC); Serial.print('/'); Serial.print(now.month(), DEC); Serial.print('/'); Serial.print(now.day(), DEC); Serial.print(" ("); Serial.print(now.dayOfTheWeek()); Serial.print(") "); Serial.print(now.hour(), DEC); Serial.print(':'); Serial.print(now.minute(), DEC); Serial.print(':'); Serial.println(now.second(), DEC);

Código ESP32 – Como obter data e hora

/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp32/esp32-ds1307-rtc-module */ #include <RTClib.h> RTC_DS1307 rtc; char daysOfWeek[7][12] = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }; void setup () { Serial.begin(9600); // SETUP RTC MODULE if (! rtc.begin()) { Serial.println("RTC module is NOT found"); Serial.flush(); while (1); } // automatically sets the RTC to the date & time on PC this sketch was compiled rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // manually sets the RTC with an explicit date & time, for example to set // January 21, 2021 at 3am you would call: // rtc.adjust(DateTime(2021, 1, 21, 3, 0, 0)); } void loop () { DateTime now = rtc.now(); Serial.print("ESP32 RTC Date Time: "); Serial.print(now.year(), DEC); Serial.print('/'); Serial.print(now.month(), DEC); Serial.print('/'); Serial.print(now.day(), DEC); Serial.print(" ("); Serial.print(daysOfWeek[now.dayOfTheWeek()]); Serial.print(") "); Serial.print(now.hour(), DEC); Serial.print(':'); Serial.print(now.minute(), DEC); Serial.print(':'); Serial.println(now.second(), DEC); delay(1000); // delay 1 seconds }

Passos Rápidos

  • Se esta é a primeira vez que você usa o ESP32, veja como configurar o ambiente do ESP32 na Arduino IDE.
  • Faça a ligação como na imagem acima.
  • Conecte a placa ESP32 ao seu PC por um cabo micro USB
  • Abra a Arduino IDE no seu PC.
  • Selecione a placa ESP32 correta (por exemplo, ESP32 Dev Module) e a porta COM.
  • Abra o Library Manager clicando no ícone Library Manager na barra de navegação esquerda da Arduino IDE
  • Pesquise “RTClib” e encontre a biblioteca RTC da Adafruit
  • Clique no botão Install para instalar a biblioteca RTC.
ESP32 RTC library
  • Pode ser que a Arduino IDE peça para instalar as dependências da biblioteca
  • Instale todas as dependências da biblioteca clicando no botão Install All.
ESP32 Adafruit BusIO library
  • Copie o código acima e cole na Arduino IDE
  • Compile e faça o upload do código para a placa ESP32 clicando no botão Upload da Arduino IDE
  • Abra o Serial Monitor na Arduino IDE
  • Veja a saída no Serial Monitor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
ESP32 RTC Date Time: 2022/08/22 (Monday) 09:31:35 ESP32 RTC Date Time: 2022/08/22 (Monday) 09:31:36 ESP32 RTC Date Time: 2022/08/22 (Monday) 09:31:37 ESP32 RTC Date Time: 2022/08/22 (Monday) 09:31:38 ESP32 RTC Date Time: 2022/08/22 (Monday) 09:31:39 ESP32 RTC Date Time: 2022/08/22 (Monday) 09:31:40 ESP32 RTC Date Time: 2022/08/22 (Monday) 09:31:41 ESP32 RTC Date Time: 2022/08/22 (Monday) 09:31:42 ESP32 RTC Date Time: 2022/08/22 (Monday) 09:31:43 ESP32 RTC Date Time: 2022/08/22 (Monday) 09:31:44
Ln 11, Col 1
ESP32 Dev Module on COM15
2

Vídeo

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!