ESP32 - RTC

Neste guia, vamos aprender a usar o ESP32 com o módulo de Relógio de Tempo Real DS3231. Em detalhes, vamos ver os seguintes tópicos:

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

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 DS3231 tem 10 pinos:

  • Pino 32K: fornece um clock de referência estável (com compensação de temperatura) e preciso.
  • Pino SQW: fornece uma onda quadrada em 1Hz, 4kHz, 8kHz ou 32kHz, que pode ser controlada por programação. Ele também pode ser usado como interrupção por condição de alarme em muitas aplicações baseadas em tempo.
  • 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.

Para uso normal, basta usar 4 pinos: VCC, GND, SDA, SCL

Real-Time Clock DS3231 Module Pinout

O módulo DS3231 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 DS3231

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 DS3231

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

Como Programar o Módulo RTC DS3231

  • Inclua a biblioteca:
#include <RTClib.h>
  • Declare um objeto RTC:
RTC_DS3231 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-rtc */ #include <RTClib.h> RTC_DS3231 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/26 (Friday) 15:21:35 ESP32 RTC Date Time: 2022/08/26 (Friday) 15:21:36 ESP32 RTC Date Time: 2022/08/26 (Friday) 15:21:37 ESP32 RTC Date Time: 2022/08/26 (Friday) 15:21:38 ESP32 RTC Date Time: 2022/08/26 (Friday) 15:21:39 ESP32 RTC Date Time: 2022/08/26 (Friday) 15:21:40 ESP32 RTC Date Time: 2022/08/26 (Friday) 15:21:41 ESP32 RTC Date Time: 2022/08/26 (Friday) 15:21:42 ESP32 RTC Date Time: 2022/08/26 (Friday) 15:21:43 ESP32 RTC Date Time: 2022/08/26 (Friday) 15:21: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!