ESP32 - Echtzeituhr (RTC)

In diesem Leitfaden lernen wir, wie man den ESP32 mit dem DS3231 RTC-Modul verwendet. Im Detail werden wir die folgenden Themen behandeln:

Erforderliche Hardware

1×ESP32 ESP-WROOM-32 Entwicklungsmodul
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×DS3231 Echtzeituhr(RTC)-Modul
1×CR2032 Batterie
1×Verbindungskabel
1×Breadboard
1×(Optional) DC-Stromanschluss
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für ESP32
1×(Empfohlen) Breakout Expansion Board for ESP32
1×(Empfohlen) Stromverteiler für ESP32

Oder Sie können die folgenden Kits kaufen:

1×DIYables ESP32 Starter-Kit (ESP32 enthalten)
1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über das DS3231-Echtzeituhr-Modul

Der ESP32 selbst hat einige zeitbezogene Funktionen wie millis(), micros(). Allerdings können sie weder das Datum noch die Uhrzeit bereitstellen (Sekunden, Minuten, Stunden, Wochentag, Datum, Monat und Jahr). Um Datum und Uhrzeit zu erhalten, muss man ein Real-Time Clock (RTC)-Modul wie DS3231, DS1370 verwenden. DS3231-Modul hat eine höhere Präzision als DS1370. Siehe DS3231 vs DS1307

Pinbelegung

DS3231-Echtzeituhr-Modul enthält 10 Pins:

  • 32K-Pin: Gibt den stabilen (temperaturkompensierten) und präzisen Referenz-Takt aus.
  • SQW-Pin: erzeugt ein sauberes Rechtecksignal mit 1 Hz, 4 kHz, 8 kHz oder 32 kHz und lässt sich programmmgesteuert verwenden. Dies kann zudem als Interrupt aufgrund eines Alarmzustands in vielen zeitbasierten Anwendungen verwendet werden.
  • SCL-Pin: ist ein Taktpin für die I2C-Schnittstelle.
  • SDA-Pin: ist ein Datenpin für die I2C-Schnittstelle.
  • VCC-Pin: versorgt das Modul mit Strom. Er kann im Bereich von 3,3 V bis 5,5 V liegen.
  • GND-Pin: ist ein Massepin.

Für den normalen Gebrauch werden 4 Pins benötigt: VCC, GND, SDA, SCL.

DS3231 RTC-Modul Pinbelegung

Das DS3231-Modul verfügt auch über einen Batteriehalter.

  • Wenn wir eine CR2032-Batterie einsetzen, läuft die Uhr des Moduls weiter, wenn die Hauptstromversorgung ausgeschaltet ist.
  • Wenn wir keine Batterie einsetzen, geht die Uhrzeit verloren, wenn die Hauptstromversorgung ausgeschaltet ist, und Sie müssen die Uhrzeit erneut einstellen.

Verdrahtungsdiagramm

ESP32 Echtzeituhr DS3231 Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Wenn Sie nicht wissen, wie Sie ESP32 und andere Komponenten mit Strom versorgen, finden Sie Anleitungen im folgenden Tutorial: Wie man ESP32 mit Strom versorgt.

ESP32 - DS3231 RTC-Modul

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

Wie man das DS3231 RTC-Modul programmiert

  • Die Bibliothek einbinden:
#include <RTClib.h>
  • Deklariere ein RTC-Objekt:
RTC_DS3231 rtc;
  • RTC initialisieren:
if (! rtc.begin()) { Serial.println("RTC module is NOT found"); while (1); }
  • Zum ersten Mal das RTC auf das Datum und die Uhrzeit des PCs einstellen, auf dem der Sketch kompiliert wurde
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  • Liest Datums- und Uhrzeitinformationen vom RTC-Modul
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);

ESP32-Code – Wie man Datum und Uhrzeit erhält

/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser ESP32 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/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 }

Schnelle Schritte

  • Wenn Sie ESP32 zum ersten Mal verwenden, sehen Sie sich wie man die Umgebung für ESP32 in der Arduino IDE einrichtet an.
  • Schließen Sie die Verkabelung gemäß dem obigen Bild an.
  • Verbinden Sie das ESP32-Board über ein Micro-USB-Kabel mit Ihrem PC.
  • Öffnen Sie die Arduino IDE auf Ihrem PC.
  • Wählen Sie das richtige ESP32-Board (z. B. ESP32 Dev Module) und den COM-Port aus.
  • Öffnen Sie den Library Manager, indem Sie auf das Library Manager-Symbol in der linken Navigationsleiste der Arduino IDE klicken.
  • Suchen Sie “RTClib”, und finden Sie dann die RTC-Bibliothek von Adafruit.
  • Klicken Sie auf den Install-Button, um die RTC-Bibliothek zu installieren.
ESP32 RTC-Bibliothek
  • Sie werden möglicherweise aufgefordert, Abhängigkeiten für die Bibliothek zu installieren
  • Installieren Sie alle Abhängigkeiten für die Bibliothek, indem Sie auf die Schaltfläche Alle installieren klicken.
ESP32 Adafruit BusIO-Bibliothek
  • Kopieren Sie den obigen Code und fügen Sie ihn in die Arduino IDE ein.
  • Kompilieren Sie den Code und laden Sie ihn auf das ESP32-Board hoch, indem Sie in der Arduino IDE auf die Upload-Schaltfläche klicken.
  • Öffnen Sie den seriellen Monitor in der Arduino IDE.
  • Sehen Sie die Ausgabe im seriellen 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

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!