Kategorie
Moduły RTC
Moduły RTC (Real Time Clock) to niewielkie układy zegarów czasu rzeczywistego, dzięki którym Twój projekt elektroniczny zyskuje poczucie czasu – nawet po odłączeniu zasilania. W kategorii modułów RTC znajdziesz popularne zegary czasu rzeczywistego, takie jak DS1307 czy DS3231, często wyposażone w bateryjne podtrzymanie, aby nie gubiły aktualnej godziny podczas wyłączenia urządzenia. Dodając moduł RTC do Arduino, Raspberry Pi czy innego mikrokontrolera, możesz łatwo śledzić aktualny czas i datę: od sekund, przez minuty i godziny, po dzień tygodnia, miesiąc i rok. Takie moduły są niezastąpione w projektach wymagających harmonogramu lub zapisywania zdarzeń z sygnaturą czasową – np. budziki, rejestratory danych (data loggery), sterowniki oświetlenia działające według harmonogramu dobowego. Moduły RTC komunikują się zazwyczaj przez interfejs I2C, co oznacza prostą integrację z Twoim układem, a do ich działania wystarczy niewielka bateria litowa, która zapewnia pracę zegara nawet przez kilka lat bez zewnętrznego zasilania.
Moduły RTC
Dlaczego potrzebujemy modułu RTC?
Mikrokontrolery same w sobie nie „wiedzą” która jest godzina – po włączeniu zasilania startują od zera i polegają na nas, programistach, aby ewentualnie odmierzać czas (np. za pomocą liczników, funkcji millis() itp.). Jednak takie odliczanie jest względne i krótkoterminowe – nie daje informacji o rzeczywistym kalendarzu (dniu, godzinie), a po odłączeniu zasilania wszystko przepada. Moduł RTC (Real Time Clock) to wyspecjalizowany układ scalony, który działa jak miniaturowy zegarek i kalendarz. Posiada własny oscylator (kwarc) tykający z częstotliwością 32.768 kHz i liczniki zliczające sekundy, minuty, godziny, daty. Co ważne, moduly RTC są zaprojektowane tak, by pobierać minimalny prąd – dzięki czemu mogą być zasilane z małej baterii (najczęściej pastylkowej typu CR2032) i podtrzymywać czas nawet przez kilka lat bez głównego zasilania. W praktyce oznacza to, że jeśli zbudujesz zegar na Arduino z modułem RTC, to nawet po odcięciu zasilania na noc, układ nie „zapomni” która godzina – po ponownym uruchomieniu odczytasz aktualny, prawdziwy czas. To kluczowe w projektach takich jak budziki, systemy logujące dane z sygnaturą czasową, urządzenia automatyki domowej (np. włącz/wyłącz oświetlenie o określonej porze) czy wszędzie tam, gdzie wymagane jest odmierzanie długich okresów (dni, miesiące, lata) z podtrzymaniem przy braku zasilania.
Popularne moduły RTC – DS1307 vs DS3231 i inne
W świecie hobbystycznym prym wiodą dwa modele zegarów RTC:
-
DS1307 – klasyczny układ RTC produkowany przez firmę Maxim (obecnie Analog Devices). Obsługuje zegar (godzina, minuty, sekundy) oraz kalendarz (data, dzień tygodnia, miesiąc, rok z uwzględnieniem lat przestępnych do 2100). Komunikuje się przez I2C. Wymaga podłączenia zewnętrznego rezonatora kwarcowego 32.768 kHz oraz baterii podtrzymującej (typowo CR1220 lub CR2032 w zależności od modułu). Jego dokładność zależy od jakości kwarcu i warunków – zazwyczaj odchyla się o kilka minut na miesiąc (im temperatura dalej od kalibracyjnej, tym większy błąd). DS1307 to tani i popularny wybór do wielu prostych zastosowań. Wiele modułów RTC zawiera DS1307 wraz z gniazdem na bateryjkę i potrzebnymi komponentami.
-
DS3231 – ulepszony RTC, również od Maxima. W przeciwieństwie do DS1307, DS3231 ma wbudowany precyzyjny oscylator z kompensacją temperaturową. Oznacza to, że jest znacznie dokładniejszy – błąd to typowo ±2 ppm na typowej temperaturze, co daje około ±1 minuta na rok (a nie na miesiąc jak DS1307). DS3231 również komunikuje się po I2C i ma ten sam zestaw informacji czasowych (sekundy, minuty, godziny, dzień tygodnia, data, miesiąc, rok). Dodatkowo posiada 2 programowalne alarmy (można ustawić, by wygenerował sygnał o określonej porze) oraz wbudowany czujnik temperatury (wykorzystywany do kompensacji, ale dostępny też do odczytu). Ma też drobny dodatek – wyprowadzenie sygnału 32kHz, gdyby potrzebny był dokładny zegar sygnałowy. DS3231 jest droższy od DS1307, ale często wybierany ze względu na swą znakomitą dokładność – w projektach, gdzie zależy nam na tym, by zegar nie rozjeżdżał się przez długi czas, DS3231 jest idealny. Większość modułów DS3231 również ma miejsce na baterię podtrzymującą.
-
Inne RTC: DS1302 (starszy układ, komunikacja po 3-pinowym interfejsie podobnym do SPI, obecnie rzadziej używany), PCF8563 (RTC od NXP, I2C, dość popularny w niektórych modułach, dokładność porównywalna z DS1307, niższy pobór mocy), RV-3028 (nowoczesny RTC o ultraniskim poborze prądu i bardzo wysokiej dokładności, komunikacja I2C – pojawia się coraz częściej w nowych projektach), czy moduły typu ChronoDot (to w zasadzie DS3231 w lepszej obudowie z inną baterią). Dla większości hobbystów DS1307 i DS3231 są jednak standardem, bo są wszechobecne i dobrze wspierane bibliotekami.
Wybierając moduł RTC, warto zwrócić uwagę czy zawiera on wymienną baterię oraz czy bateria jest dołączona. Przeważnie moduły mają gniazdo – trzeba dokupić bateryjkę CR2032 osobno. Użycie baterii jest opcjonalne, ale bez niej RTC straci czas po odłączeniu zasilania głównego.
Jak podłączyć i korzystać z modułu RTC
Większość modułów RTC, w tym DS1307 i DS3231, korzysta z interfejsu I2C. To sprawia, że podłączenie jest bardzo proste: moduł ma zwykle 4 główne piny – VCC (zasilanie, typowo 5V dla DS1307 lub 3,3-5V dla DS3231, bo one tolerują różne zakresy), GND (masa), SCL (zegarkowy sygnał I2C) i SDA (dane I2C). Podłączamy je do odpowiednich pinów mikrokontrolera (dla Arduino Uno SCL to A5, SDA to A4; dla innych Arduino – zależy od modelu, dla Raspberry Pi – piny SDA/SCL na GPIO). Po fizycznym podłączeniu i włożeniu bateryjki, moduł jest gotów do pracy.
W kodzie Arduino możemy skorzystać z gotowych bibliotek, np. RTClib (od Adafruit) lub innych dedykowanych dla DS1307/DS3231. Taka biblioteka oferuje metody do ustawiania czasu (np. rtc.adjust(DateTime(2025, 4, 7, 12, 30, 00)) – ustaw zegar na 2025-04-07 12:30:00) oraz odczytywania bieżącego czasu (rtc.now()). Często przykładowy kod ustawiający raz czas jest używany, a potem zapisany czas jest podtrzymywany przez baterię – nie trzeba go ustawiać za każdym resetem, chyba że np. dodasz funkcję synchronizacji z użytkownikiem lub z internetem (NTP przy połączeniu WiFi).
Przy użyciu Raspberry Pi lub innych SBC, biblioteka systemowa może obsłużyć RTC i np. przy starcie systemu zaczytać z niego czas (przydatne gdy Pi nie ma internetu do synchronizacji).
Bateria podtrzymująca: ważne, by moduł miał włożoną baterię (zazwyczaj 3V litowa). Moduł RTC zawsze korzysta z głównego zasilania, gdy jest dostępne, ale gdy go zabraknie – automatycznie przełącza się na bateryjne. Przy normalnej pracy (główne zasilanie włączone) bateria praktycznie się nie zużywa, natomiast w trybie podtrzymania zużycie prądu jest minimalne (parę mikroamperów), co przekłada się na lata działania na jednej baterii.
Dokładność i synchronizacja: Po pewnym czasie działania (miesiące, lata) nawet dokładny DS3231 może mieć minimalne odchyłki. W projektach krytycznych czas może być okresowo synchronizowany – np. zegar może raz na dobę łączyć się z serwerem czasu lub sygnałem GPS by skorygować RTC. Jednak w większości hobbystycznych zastosowań nie jest to konieczne, bo błąd kilku minut na rok jest akceptowalny.
Zastosowania modułów RTC w praktyce
Dodanie RTC do projektu daje nam świadomość czasu, co otwiera wiele możliwości:
-
Budzik / zegar – najoczywistsze: zbudowanie zegara, który wyświetla aktualną godzinę na wyświetlaczu LED czy LCD. Mikrokontroler odczytuje godzinę z RTC i aktualizuje wyświetlacz. Dzięki RTC godzina jest zawsze poprawna (po ustawieniu raz, urządzenie pamięta ją latami). Można ustawić alarm (jeśli korzystamy z funkcji alarmu DS3231 lub po prostu porównując czas w programie) i włączyć buzzer o ustawionej godzinie.
-
Logger danych (datalogger) – gdy zapisujesz pomiary sensorów na kartę SD lub wysyłasz je do pamięci, warto dodać znacznik czasu. Moduł RTC pozwala dopisywać do każdego rekordu datę i godzinę, co jest nieocenione przy późniejszej analizie (np. wiesz, o której godzinie nastąpiła zmiana temperatury, itp.). Zresztą gotowe shieldy data logger dla Arduino zazwyczaj mają wbudowany DS1307 i gniazdo SD – to połączenie idealne.
-
Sterowanie czasowe – w automatyce domowej często chcemy coś włączać/wyłączać o określonej porze. Np. lampki ogrodowe zapalane o zmierzchu (można to zrobić z czujnikiem światła, ale można też czasowo), system nawadniania co dzień o 6:00, karmnik dla zwierząt, który otwiera się o konkretnej godzinie. Mikrokontroler z RTC może przechowywać harmonogram i sprawdzać bieżący czas – jeśli pasuje do zaplanowanego zdarzenia, aktywuje wyjście (pompę, przekaźnik, serwo itp.).
-
Odliczanie czasu realnego – powiedzmy, że robisz grę lub urządzenie, które ma reagować po pewnym czasie (np. escape room, gdzie coś się dzieje po godzinie). RTC zapewnia wiarygodne odliczanie nawet przy resetach systemu. Możesz też zliczać upływ dni – np. ile dni minęło od uruchomienia urządzenia, kiedy ma się coś wydarzyć po tygodniu itp.
-
Utrzymanie czasu w systemie po resecie – niektóre platformy (jak Raspberry Pi w wersjach bez internetu) mogą korzystać z RTC, by znać czas od razu po włączeniu (bo inaczej, bez sieci, Pi domyślnie nie wie jaki jest czas). Jeśli budujesz coś na Pi, co pracuje off-line, dołożenie modułu RTC zapewni, że system plików i logi będą miały poprawny czas.
Wszystkie te zastosowania łączy jedno – moduł RTC jest jak mały zegarek-dodatek do Twojego mikrokontrolera, który zawsze tyka we właściwym rytmie, niezależnie od tego, czy Twój główny układ jest włączony, uśpiony czy nawet chwilowo odcięty od prądu. To bardzo cenny komponent, gdy Twój projekt wychodzi w świat rzeczywisty, gdzie czas ma znaczenie.
FAQ – Najczęstsze pytania o moduły RTC
-
Co to jest moduł RTC i do czego służy?
Moduł RTC (Real Time Clock) to niewielki zegar czasu rzeczywistego dla projektów elektronicznych. Zawiera specjalizowany układ scalony, który przechowuje aktualny czas (godzinę, minutę, sekundę) oraz datę (dzień, miesiąc, rok) i odmierza go nawet wtedy, gdy główne urządzenie jest wyłączone. Wyposażony jest zwykle w bateryjne podtrzymanie – małą baterię, dzięki której chodzi niczym zegarek, gdy reszta elektroniki nie ma zasilania. Służy on do tego, by nasz projekt „wiedział, która jest godzina” i mógł wykonywać działania zależne od prawdziwego czasu. Przykładowo, jeśli budujesz zegar, to RTC daje dokładny czas do wyświetlenia. Jeśli tworzysz rejestrator temperatury, możesz do każdego pomiaru dodać datę i godzinę. Innymi słowy: moduł RTC jest dodatkiem, który pozwala urządzeniom elektronicznym orientować się w czasie rzeczywistym, zamiast tylko odliczać interwały. -
Czym różni się RTC od wbudowanego timera w Arduino?
Wbudowany timer/zegary w Arduino (np. funkcjamillis()
lubdelay()
) pozwalają mierzyć upływ czasu od włączenia urządzenia, ale to jest czas względny, a nie absolutny. Arduino samo z siebie nie wie, jaki jest aktualny czas dnia – może jedynie liczyć milisekundy od startu. Co więcej, po odcięciu zasilania lub resecie, to liczenie się zeruje. RTC natomiast utrzymuje absolutny czas zegarowy: wie, że np. teraz jest 8 kwietnia 2025, godzina 15:00, i będzie to pamiętał niezależnie od restartów (dzięki bateryjnemu podtrzymaniu). Dodatkowo, RTC jest zaprojektowany, by być bardzo dokładny w długim okresie i odporny na drobne wahania (zwłaszcza modele z kompensacją jak DS3231), podczas gdy wewnętrzne liczniki Arduino bazują na jego kwarcu systemowym, który może mieć pewne odchyłki i nie utrzyma idealnej dokładności przez wiele dni (typowy błąd może wynosić kilka sekund na dobę, a nawet więcej zależnie od temperatury i rezonatora). Podsumowując: timery Arduino są dobre do krótkotrwałych pomiarów (sekundy, minuty) i operacji czasowych w programie, ale do przechowywania aktualnego czasu i daty oraz zachowania go po odłączeniu zasilania, potrzebny jest osobny moduł RTC. -
Jak podłączyć moduł RTC do Arduino lub Raspberry Pi?
Najczęściej moduły RTC, takie jak DS1307 czy DS3231, korzystają z interfejsu I2C. W Arduino Uno oznacza to podłączenie czterech przewodów: VCC do 5V (lub 3,3V zależnie od modułu, choć większość DS1307 działa na 5V, DS3231 też toleruje 5V), GND do masy, SCL do pinu A5, SDA do pinu A4. W przypadku Arduino Mega, Leonardo, czy ESP8266/ESP32 – piny I2C mogą być inne (np. na Mega SCL to pin 21, SDA 20; na ESP8266 D1=SCL, D2=SDA domyślnie; na ESP32 dowolne, konfigurowalne, ale często używa się GPIO 21 i 22). Sprawdź dla swojej płytki piny I2C. Jeśli chodzi o Raspberry Pi, to moduł RTC również podłączasz do magistrali I2C – na złączu GPIO Raspberry SCL to pin 5, SDA to pin 3 (numeracja fizyczna) plus zasilanie i masa (na Raspberry Pi lepiej zasilać moduł RTC z 3,3V, bo Pi pracuje na 3,3V logicznych; większość modułów DS3231 działa bez problemu na 3,3V). Po podłączeniu hardware, na Arduino trzeba wgrać odpowiedni program (skorzystać z biblioteki, np. RTClib, i komunikować się przez I2C). Na Raspberry Pi, jeśli chcesz by system korzystał z RTC, musisz włączyć obsługę sprzętowego zegara w systemie (poprzez konfigurację/boot/config.txt
dodając odpowiedni overlay dla DS1307/DS3231) – wtedy Pi przy starcie odczyta czas z RTC. Podsumowując: podłączenie sprowadza się do tych samych 4 linii I2C jak przy każdym innym urządzeniu I2C, plus upewnienie się co do zgodności napięć i załadowanie/biblioteki obsługującej w kodzie. -
Czy moduł RTC jest dokładny? Jak bardzo może się spóźniać lub spieszyć?
To zależy od modelu RTC. DS1307 ma dokładność zależną od użytego kwarcu zegarkowego 32kHz, który typowo ma tolerancję około 20 ppm (części na milion) w temperaturze pokojowej. 20 ppm to 0.002% – co przekłada się na ~1.7 sekundy dziennie odchyłki, czyli około 52 sekundy na miesiąc, ~10 minut na rok. W praktyce DS1307 często mieści się w kilkudziesięciu sekundach do paru minut odchyłki na miesiąc, jeśli nie jest w ekstremalnych temperaturach. Można go skorygować, ale z natury nie jest super dokładny. DS3231 natomiast jest bardzo dokładny – ma wbudowany kompensowany oscylator z dokładnością deklarowaną ±2 ppm w zakresie 0-40°C, co daje błąd rzędu ±0.17 sekundy na dzień (czyli ~5 sekund na miesiąc, ~1 minuta na rok). Często realnie DS3231 potrafi trzymać się w kilkunastu sekundach błędu na rok. To porównywalne, a nawet lepsze, niż wiele zegarków na rękę. Oczywiście egzemplarze mogą minimalnie się różnić, ale generalnie DS3231 jest uznawany za bardzo precyzyjny do zastosowań hobbystycznych i nie potrzeba nic lepszego.Są jeszcze dokładniejsze RTC jak wspomniany RV-3028 (który ma błąd ~1 ppm, czyli ~0.5 minuty na rok). Ale one są mniej popularne.
Reasumując: DS1307 może się spóźniać/spieszyć o kilka minut w skali miesiąca, DS3231 – o parę sekund w skali miesiąca. Jeżeli projekt wymaga co do sekundy synchronizacji przez długi czas, i tak zwykle robi się synchronizację z zewnątrz (internet, radio DCF77, GPS). Dla większości zastosowań (np. zegar na biurku) drobna odchyłka raz na jakiś czas może być ręcznie skorygowana.
-
Jak długo działa RTC na baterii i kiedy ją wymienić?
Układy RTC są bardzo energooszczędne. Przykładowo DS1307 pobiera około 300 nA (nanoamperów) w trybie podtrzymania bateryjnego, DS3231 nieco więcej bo około 1-2 µA (mikroamperów). Typowa bateria CR2032 ma pojemność ~220 mAh (miliamperogodzin). W trybie podtrzymania 1 µA, taka bateria teoretycznie mogłaby zasilać RTC przez 220000 godzin, czyli około 25 lat! Oczywiście w praktyce samorozładowanie baterii i warunki sprawiają, że raczej warto wymienić baterię co kilka lat profilaktycznie. Wielu producentów modułów zaleca np. wymianę co 5 lat dla pewności, choć często nawet po 10 latach bateria CR2032 nadal podtrzyma RTC. Jeśli moduł ma akumulatorek LIR2032 (czasem spotykane w chińskich modułach DS1307), to on może być ładowany z 5V – ale to w Arduino jest kontrowersyjne, bo DS1307 ładuje bateryjkę co może skrócić jej życie. Zwykle jednak jest zwykła bateria, nie akumulator. Objaw rozładowanej baterii jest taki, że RTC działa tylko przy włączonym zasilaniu, a po restarcie traci czas (wraca do fabrycznego 1 stycznia 2000 albo przestaje odliczać). Wtedy wiadomo, że pora wymienić. Dla pewności – można zmierzyć napięcie baterii co jakiś czas (choć wpięta w moduł nie jest łatwo mierzalna bez wylutowania w wielu przypadkach). Ale ponieważ pobór jest tak mały, zazwyczaj przez kilka lat nie trzeba się martwić. Jeśli Twój projekt ma być długoterminowo używany (np. zegar w domu), dobrze jest po, powiedzmy, 5 latach profilaktycznie dać nową baterię za parę złotych, żeby następne lata też chodziło bez zakłóceń. -
Czy Arduino/ESP może sam utrzymać czas bez RTC?
Arduino (np. UNO) po odcięciu zasilania traci informacje o czasie – nie ma wbudowanej baterii ani układu zegara czasu rzeczywistego. Istnieją sposoby na zachowanie czasu programowo, np. zapisywanie co jakiś czas do EEPROM i przy starcie kontynuacja – ale to niedokładne i kłopotliwe. ESP8266/ESP32 i inne moduły z WiFi często polegają na synchronizacji internetowej (NTP). Jeśli urządzenie ma stały dostęp do WiFi, może przy starcie zapytać serwer czasu i ustawić wewnętrzny zegar (ESP ma wewn. RTC w miare dokładny podczas działania, ale on też resetuje się po odłączeniu zasilania). Zegar internetowy jest super – o ile masz internet. Jeśli projekt jest offline lub ma działać również bez dostępu do sieci, wtedy tylko zewnętrzny moduł RTC zapewni podtrzymanie czasu. Są też mikrokontrolery z wbudowanym RTC i miejscem na baterię (niektóre STM32 mają VBAT pin do zasilania tylko zegara), ale popularne Arduino nie. Raspberry Pi ma zegar systemowy synchronizowany z internetem i możliwość dodania modułu RTC – sam z siebie Pi nie ma bateryjnego RTC. Podsumowując: typowe Arduino nie utrzyma czasu samo, ESP z internetem może zawsze pobrać czas, ale bez internetu tak samo zgubi – dlatego dedykowany moduł RTC jest jedynym prostym sposobem na zachowanie czasu przy braku zasilania głównego. -
Czy jeden moduł RTC mogę użyć z wieloma mikrokontrolerami jednocześnie?
W teorii można podłączyć kilka mikrokontrolerów do jednego modułu RTC, jeśli dzielą one magistralę I2C. I2C jest magistralą wielourządzeniową – można mieć jeden RTC jako urządzenie podrzędne (slave) i np. dwa mikrokontrolery jako urządzenia nadrzędne (mastery), choć to wymaga ostrożności (by nie kolidowały – I2C nie przewiduje łatwo dwóch masterów naraz chyba że się je specjalnie oprogramuje do arbitrażu). W praktyce rzadko jest potrzeba, by dwa różne układy naraz korzystały z jednego RTC. Prościej by było dać każdemu swój RTC lub jeden mikrokontroler robi za centralny i podaje czas drugiemu. Ale technicznie jest możliwe – np. w systemach z magistralą I2C jeden RTC może obsługiwać cały system (byle tylko jedna płytka na raz pytała o czas, bo jak dwie naraz spróbują to mogą być kolizje). Są protokoły wielomasterowe, ale to już zaawansowane.Dla hobbysty – raczej takich rzeczy się nie robi. Jeśli np. masz Arduino i dodatkowo moduł WiFi, to sensowniej jest mieć jedno urządzenie jako źródło czasu i przekazywać je ewentualnie. Moduł RTC kosztuje niewiele, więc zwykle się go daje tam, gdzie potrzebny, zamiast kombinować z współdzieleniem.
Jeśli pytanie zmierza do tego, czy można np. odłączać RTC i podłączać do innego mikrokontrolera – tak, można go przepinać, nie jest przypisany na stałe. Byle tylko nie zresetować go (chyba że to zamierzone). Warto pamiętać, że adres I2C DS1307/3231 to 0x68 – w jednym układzie nie można mieć dwóch RTC o tym samym adresie bo by się gryzły (chyba że magistrale są osobne).
Podsumowując: to nietypowy scenariusz używać jeden moduł sprzętowy z wieloma mikrokontrolerami naraz, ale nie jest to zupełnie niemożliwe – wymaga zaawansowanej koordynacji na magistrali. W prostych projektach – lepiej tego unikać.
-
Czy moduł RTC może budzić mikrokontroler ze snu?
Tak, wiele układów RTC ma funkcję alarmu i wyjście sygnału, które można wykorzystać do wybudzenia mikrokontrolera z trybu uśpienia. Przykładowo DS3231 posiada dwa alarmy, które można zaprogramować (np. alarm codzienny o 6:00, albo alarm co minutę, albo alarm w określony dzień miesiąca – dość elastycznie). Gdy czas w RTC osiągnie zaprogramowaną wartość alarmu, układ ustawia pin INT/SQW (przerwania) w stan niski. Ten pin można podłączyć do wejścia przerwania mikrokontrolera (np. pin INT Arduino) i ustawić, że ma wybudzać ze stanu uśpienia. W ten sposób możesz zrobić np. bardzo oszczędny projekt na baterię: mikrokontroler śpi większość czasu, a RTC co godzinę generuje impuls, który budzi mikrokontroler do działania (ten np. odczytuje czujniki, zapisuje dane, po czym znowu usypia). DS1307 akurat też ma wyjście SQW/OUT, ale on nie ma tak elastycznych alarmów – jego wyprowadzenie może generować stały przebieg zegarowy (1Hz, 4kHz itp.) albo stać w stanach 0/1. Więc DS1307 raczej nie obudzi o zadanej godzinie (nie ma alarmu), ale DS3231 już tak. Inne RTC jak PCF8563 mają podobne funkcje alarmów/przerywań.Zatem, jeżeli planujesz wykorzystać RTC do budzenia, upewnij się, że wybrany układ RTC ma taką możliwość (DS3231 – tak). Podłącz pin INT/SQW z RTC do pinu mikrokontrolera obsługującego przerwania zewnętrzne. Oprogramuj RTC (przez I2C) ustawiając rejestry alarmu (biblioteka RTClib również daje do tego dostęp, np.
RTC.setAlarm1()
itp.). Ustaw mikrokontroler w tryb uśpienia z włączonym czuwaniem na przerwanie pinowe. Gdy nadejdzie czas alarmu, pin się zmieni i mikrokontroler się wybudzi, gotów do wykonania zaplanowanych zadań. To świetny sposób na oszczędzanie energii w projektach zasilanych bateryjnie, które muszą działać autonomicznie w określonych odstępach czasu.