I_R_W15_M03 Przykładowe projekty
Budowa modułu czasu
Moduł DS3231 to bardzo precyzyjny w odmierzaniu czasu rzeczywistego zegar RTC, który komunikuje się po szynie I2C. Wyposażony jest w układ kompensacji temperaturowej oscylatora (TCX0) i w zintegrowany kwarc, dzięki czemu nie ma już konieczności podpięcia zewnętrznego generatora kwarcowego. Do tego posiada większy zakres napięcia (2.3 V - 5.5 V) oraz baterię podtrzymującą pamięć.

Na płytce mieści się także pamięć EEPROM AT24C32, która daje 32K pamięci, a zapisane w niej dane nie są usuwane w przypadku braku zasilania. Pozwala to na stworzenie np. prostego rejestratora zdarzeń.
Jeśli nie chcemy ingerować w strukturę modułu, najlepiej zastosować akumulator LIR2032. Możemy też użyć zwykłej baterii CR2032, ale w takiej sytuacji musimy pamiętać o kwestii jej ładowania. W przypadku, gdy moduł ma być zasilany napięciem 5V, należy odlutować diodę przy układzie DS3231 lub przeciąć ścieżkę pomiędzy diodą a rezystorem (chodzi o ścieżkę biegnącą na lewo od litery S w oznaczeniu SCL). Natomiast przy zasilaniu modułu napięciem 3.3 V nie ma takiej potrzeby. Spadek napięcia na diodzie sprawia, że dopóki napięcie ładowania nie jest większe od napięcia baterii – ta nie będzie ładowana, a dioda zapobiegnie rozładowywaniu baterii.
Funkcje
Zegar RTC z podtrzymaniem pamięci (wbudowana bateria):
odmierza sekundy, minuty, godziny, dni miesiąca, miesiące, dni tygodnia, lata;
zawiera dwa alarmy do ustawienia (z wieloma możliwymi interwałami do wyboru);
wyznacza lata przestępne do roku 2100;
dokonuje pomiary temperatury.
Pamięć EEPROM (konfigurowalny adres na magistrali I2C za pomocą zworek A0, A1 i A2).
Przykłady pracy z modułem DS3231
Wyświetlanie daty i czasu
Co nam będzie potrzebne:
moduł DS3231,
płytka Arduino Uno,
przewody połączeniowe męsko‑żeńskie.
Do poprawnego działania moduł DS3231 potrzebujesz zainstalowanej biblioteki DS3231.h. Można ją pobrać, klikając w odnośnik:
Po pobraniu bibliotekę należy zainstalować w Arduino IDE.
Podłączamy moduł DS3231 według następującego schematu:

Teraz przechodzimy do programowania.
Najpierw dołączamy bibliotekę.
Następnie inicjujemy DS3231 za pomocą interfejsu sprzętowego.
W pętli setup() ustawiamy prędkość połączenia z monitorem portu szeregowego na 115 200 bodów.
Ustawiamy ręcznie datę i godzinę.
Czas i datę wpisujemy według poniższego kodu. Ustawiamy dzień tygodnia, czas (HH:MM:SS) oraz datę (DD:MM:YYYY).
W pętli loop() deklarujemy, jakie informacje będą wyświetlane w monitorze portu szeregowego.
Kod
Całość kodu wygląda następująco:
Teraz wgrajmy kod do Arduino Uno i sprawdźmy, co pojawi nam się w monitorze portu szeregowego.

Wyświetlanie temperatury
Co nam będzie potrzebne:
moduł DS3231,
płytka Arduino Uno,
przewody połączeniowe męsko‑żeńskie.
Połączenie jest identyczne jak w przypadku wyświetlania daty i czasu, więc nie musimy niczego przepinać.
Przejdźmy zatem do pisania programu.
Najpierw dołączamy bibliotekę.
Następnie inicjujemy DS3231 za pomocą interfejsu sprzętowego.
W pętli setup() ustawiamy prędkość połączenia z monitorem portu szeregowego na 115 200 bodów.
Inicjujemy obiekt RTC.
W pętli loop() deklarujemy wyświetlanie temperatury.
Kod
Całość kodu wygląda następująco:
Zmodyfikuj kod tak, by w monitorze portu szeregowego pokazywane były następujące informacje:
data,
czas,
temperatura.

Podłącz wyświetlacz LCD i wyświetl na nim następujące informacje:
Ekran 1:
wiersz 1: data,
wiersz 2: czas.
Czas wyświetlania ekranu 1 wynosi 5 sekund.
Ekran 2:
wiersz 1: wyświetla napis TEMPERATURA,
wiersz 2: wyświetla aktualną temperaturę.
Czas wyświetlania ekranu 2 wynosi 5 sekund.
