Zpět na články

ESP32 + DS1307 RTC module – kompletní návod

ESP32 s RTC DS1307 čte a drží čas, lze ho syncnout přes WiFi (NTP) pro přesnost.

ESP32 + DS1307 RTC module – kompletní návod

Co je RTC modul

RTC (Real-Time Clock) je modul, který si drží čas nezávisle na mikrokontroleru. Má vlastní baterii (typicky CR2032), takže běží i při výpadku napájení.

  • komunikuje přes I2C
  • běžná adresa: 0x68
  • EEPROM na modulu má adresu 0x50

DS1307 je méně přesný než DS3231, ale pro většinu projektů stačí.

ESP32 Blog image

Piny modulu (přepsaná tabulka)

Modul má tyto piny:

  • SQ – výstup obdélníkového signálu (nepoužívá se)
  • DS – výstup pro teplotní čidlo (volitelné)
  • SCL – I2C clock
  • SDA – I2C data
  • VCC – napájení (3.3V nebo 5V)
  • GND – zem
  • BAT – záložní baterie

🔗 Zapojení ESP32 ↔ RTC (přepsaná tabulka)

  • SCL → GPIO 22
  • SDA → GPIO 21
  • VCC → 3.3V
  • GND → GND
ESP32 Blog image

⚙️ Jak RTC používat

Jsou potřeba 2 věci:

  1. nastavit čas
  2. udržet čas pomocí baterie
ESP32 Blog image

📦 Knihovna

Používá se knihovna:

  • RTClib od Adafruit
ESP32 Blog image

🧾 ✅ KOMPLETNÍ KÓD 1: Nastavení + čtení času

rtc.cpp
1#include <Wire.h> 2#include "RTClib.h" 3 4RTC_DS1307 rtc; 5 6char daysOfTheWeek[7][12] = { 7 "Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday" 8}; 9 10void setup () { 11 Serial.begin(115200); 12 13 if (!rtc.begin()) { 14 Serial.println("Couldn't find RTC"); 15 while (1); 16 } 17 18 if (!rtc.isrunning()) { 19 Serial.println("RTC is NOT running, setting time..."); 20 21 // nastaví čas podle času kompilace 22 rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); 23 24 // nebo ručně: 25 // rtc.adjust(DateTime(2024, 1, 1, 12, 0, 0)); 26 } 27} 28 29void loop () { 30 DateTime now = rtc.now(); 31 32 Serial.print("Date: "); 33 Serial.print(now.year()); 34 Serial.print("/"); 35 Serial.print(now.month()); 36 Serial.print("/"); 37 Serial.print(now.day()); 38 Serial.print(" "); 39 40 Serial.print(daysOfTheWeek[now.dayOfTheWeek()]); 41 Serial.print(" "); 42 43 Serial.print("Time: "); 44 Serial.print(now.hour()); 45 Serial.print(":"); 46 Serial.print(now.minute()); 47 Serial.print(":"); 48 Serial.println(now.second()); 49 50 delay(3000); 51}

🌐 ✅ KOMPLETNÍ KÓD 2: Synchronizace s NTP (WiFi)

rtc-wifi.cpp
1#include <WiFi.h> 2#include <time.h> 3#include <Wire.h> 4#include "RTClib.h" 5 6RTC_DS1307 rtc; 7 8// WiFi 9const char* ssid = "TVE_WIFI"; 10const char* password = "HESLO"; 11 12// NTP 13const char* ntpServer = "pool.ntp.org"; 14const long gmtOffset_sec = 0; 15const int daylightOffset_sec = 3600; 16 17struct tm timeinfo; 18 19unsigned long lastSyncMillis = 0; 20 21void initWiFi() { 22 WiFi.begin(ssid, password); 23 Serial.print("Connecting to WiFi"); 24 25 while (WiFi.status() != WL_CONNECTED) { 26 delay(500); 27 Serial.print("."); 28 } 29 30 Serial.println("\nConnected!"); 31} 32 33void syncTime() { 34 configTime(gmtOffset_sec, daylightOffset_sec, ntpServer); 35 36 if (!getLocalTime(&timeinfo)) { 37 Serial.println("Failed to obtain time"); 38 return; 39 } 40 41 rtc.adjust(DateTime( 42 timeinfo.tm_year + 1900, 43 timeinfo.tm_mon + 1, 44 timeinfo.tm_mday, 45 timeinfo.tm_hour, 46 timeinfo.tm_min, 47 timeinfo.tm_sec 48 )); 49 50 lastSyncMillis = millis(); 51 Serial.println("RTC synchronized with NTP"); 52} 53 54void checkTimeAndSync() { 55 if (millis() - lastSyncMillis >= 3600000) { 56 Serial.println("Resyncing..."); 57 syncTime(); 58 } 59} 60 61void setup() { 62 Serial.begin(115200); 63 64 initWiFi(); 65 66 if (!rtc.begin()) { 67 Serial.println("Couldn't find RTC"); 68 while (1); 69 } 70 71 syncTime(); 72} 73 74void loop() { 75 checkTimeAndSync(); 76 77 DateTime now = rtc.now(); 78 79 Serial.printf("%04d-%02d-%02d %02d:%02d:%02d\n", 80 now.year(), now.month(), now.day(), 81 now.hour(), now.minute(), now.second()); 82 83 delay(10000); 84}

🖥️ (Volitelné) OLED zapojení

OLED se připojuje stejně jako RTC:

  • SDA → GPIO 21
  • SCL → GPIO 22
  • VCC → 3.3V
  • GND → GND

🧾 Shrnutí

  • RTC drží čas i bez napájení
  • DS1307 komunikuje přes I2C
  • musíš:
    • jednou nastavit čas
    • pak už jen číst
  • můžeš synchronizovat přes NTP pro přesnost

Nakupte svoje ESP32 ještě dnes!

Doprava Zásilkovnou za 89 Kč
Platba dobírkou
Vrácení do 30 dnů
Omezené zásoby - skladem

ESP32-S3 DevKit USB-C

Kompletní vývojová deska s USB-C

240MHz dvoujádrový
WiFi 802.11 b/g/n
Bluetooth 4.2 + BLE
4MB Flash paměť
520KB SRAM
38 GPIO pinů
209za kus

Množstevní slevy:

1
Celkem
209
Objednat

Bezpečná platba při převzetí zásilky nebo online platba přes Comgate, a.s.