ESP32 - RTC (Real-Time Clock)

In deze gids leert u hoe u de ESP32 gebruikt in combinatie met het DS3231 Real-Time Clock (RTC) module. We behandelen de volgende onderwerpen in detail:

  • Hoe u het DS3231 RTC module aansluit op de ESP32.
  • Hoe u de ESP32 programmeert om datum en tijd uit te lezen van het DS3231 RTC module (seconde, minuut, uur, dag, datum, maand en jaar).

Over het Real-Time Clock DS3231 Module

De ESP32 zelf heeft enkele tijdgerelateerde functies zoals millis() en micros(). Deze kunnen echter niet de volledige datum en tijd leveren (seconden, minuten, uren, dag, datum, maand en jaar). Om datum en tijd te verkrijgen, gebruiken we een Real-Time Clock (RTC) module zoals de DS3231 of DS1370. Het DS3231 module heeft een hogere nauwkeurigheid dan de DS1370. Zie voor meer informatie DS3231 vs DS1307.

Pinout

Het Real-Time Clock DS3231 Module heeft 10 pinnen:

  • 32K pin: levert een stabiele (temperatuurgecompenseerde) en nauwkeurige referentieklok.
  • SQW pin: geeft een nette vierkante golf af op 1 Hz, 4 kHz, 8 kHz of 32 kHz en kan programmatisch worden aangestuurd. Dit kan worden gebruikt als interrupt bij alarmcondities in veel tijdgebonden toepassingen.
  • SCL pin: klokpin voor de I2C-interface.
  • SDA pin: datapin voor de I2C-interface.
  • VCC pin: voedt het module. Dit kan variëren van 3,3V tot 5,5V.
  • GND pin: aardingspin.

Voor normaal gebruik zijn er slechts 4 pinnen nodig: VCC, GND, SDA en SCL.

Real-Time Clock DS3231 Module Pinout

Het DS3231 module heeft ook een batterijhouder.

  • Wanneer u een CR2032 batterij plaatst, blijft de tijd lopen op het module wanneer de primaire voeding uitgeschakeld is.
  • Zonder batterij gaat de tijdsinformatie verloren als de hoofdvoeding uitvalt en moet u de tijd opnieuw instellen.

Bedradingsschema

ESP32 Real-Time Clock DS3231 Bedradingsschema

This image is created using Fritzing. Click to enlarge image

Als u niet weet hoe u ESP32 en andere componenten van stroom moet voorzien, vindt u instructies in de volgende tutorial: Hoe ESP32 van stroom te voorzien.

ESP32 - DS3231 RTC Module

DS1307 RTC Module ESP32
Vin 3.3V
GND GND
SDA GPIO21
SCL GPIO22

Hoe te programmeren voor DS3231 RTC Module

  • Voeg de bibliotheek toe:
#include <RTClib.h>
  • Declareer een RTC-object:
RTC_DS3231 rtc;
  • Initialiseer de RTC:
if (! rtc.begin()) { Serial.println("RTC module is NIET gevonden"); while (1); }
  • Voor de eerste keer, stel de RTC in op de datum & tijd waarop de sketch is gecompileerd op de PC:
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  • Lees datum- en tijdsinformatie uit het RTC-module:
DateTime now = rtc.now(); Serial.print("ESP32 RTC Datum Tijd: "); 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);

ESP32 Code – Hoe data en tijd uit te lezen

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/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 }

Snel aan de slag

  • Als u dit de eerste keer is dat u de ESP32 gebruikt, zie dan hoe u de omgeving instelt voor ESP32 in Arduino IDE.
  • Maak de bedrading volgens bovenstaande afbeelding.
  • Verbind de ESP32 met uw PC via een micro USB-kabel.
  • Open de Arduino IDE op uw PC.
  • Selecteer de juiste ESP32 board (bijv. ESP32 Dev Module) en de juiste COM-poort.
  • Open de Library Manager door op het Library Manager icoon te klikken in de linkernavigatiebalk van Arduino IDE.
  • Zoek naar “RTClib” en selecteer de RTC bibliotheek van Adafruit.
  • Klik op de Installeren knop om de RTC bibliotheek te installeren.
ESP32 RTC bibliotheek
  • Mogelijk wordt u gevraagd ook afhankelijkheden voor de bibliotheek te installeren.
  • Installeer alle afhankelijkheden door te klikken op de Alles Installeren knop.
ESP32 Adafruit BusIO bibliotheek
  • Kopieer de bovenstaande code en plak deze in Arduino IDE.
  • Compileer en upload de code naar het ESP32 board door te klikken op de Uploaden knop in Arduino IDE.
  • Open de Seriële Monitor in Arduino IDE.
  • Bekijk de uitvoer in de Seriële Monitor.
COM6
Send
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
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!