Moduł DS3231 to bardzo precyzyjny w odmierzaniu czasu rzeczywistego zegar RTCmoduł RTCRTC, który komunikuje się po szynie I2CI2CI2C. 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ęć.
R1duW5MgAGaeN
Grafika przedstawia schematyczną budowę modułu DS3231. Moduł ma kształt prostokąta z zaokrąglonymi rogami. Wzdłuż krótszego lewego boku mamy kolejno od góry następujące piny: 32K, SQW, SCL, SDA, VCC, GND. Wzdłuż prawego krótszego boku mamy następujące piny: SCL, SDA, VCC, GND. W dolnej prawej części mamy piny od lewej: A0, A1, A2.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Na płytce mieści się także pamięć EEPROMpamięć EEPROMpamięć 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.3V 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.
Specyfikacja modułu DS3231
Zasilanie: 3,3 V - 5,5 V
Interfejs komunikacji: I2C
Układ zegara: DS3231
dokładność:
±2 ppm od 0°C to +40°C
±3.5 ppm od -40°C to +85°C
pomiar temperatury z dokładnością ±3°C
adres I2C: 0 x 68
podtrzymanie pamięci (wymienialną) baterią 2032
Pamięć EEPROM
pojemność: 32 kb
adres I2C: 0 x 57
Dodatkowe wyjścia: SDA, SCL, VCC i GND do kaskadowego podłączenia kolejnego modułu pracującego na magistrali I2C
Wymiary: 38 x 22 mm
Piny
VCC, GND – zasilanie
SCL, SDA – piny magistrali I2C
SQW – wyjście sygnału prostokątnego lub źródło przerwań dla alarmów
32K – sygnał prostokątny o częstotliwości 32 kHz
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 potrzebuje zainstalowanej biblioteki DS3231.h. Można ją pobrać, klikając w odnośnik:
RjNf3CsD74RBV
Przycisk z plikiem biblioteki DS3231 wykorzystanej w projekcie
Teraz wgrajmy kod do Arduino Uno i sprawdźmy, co pojawi się w monitorze portu szeregowego.
R1RaQTMwG7cGX
Zrzut ekranu przedstawia okno „Temperatura|Arduino 1.8.13”. W polu głównym mamy otwartą zakładkę zatytułowaną „Temperatura”. W zakładce wpisany jest następujący kod: 1. #include <DS3231.h> 2. 3. DS3231 rtc (SDA, SCL); 4. 5. void setup() { 6. Serial.begin (115200); 7. 8. rtc.begin (); 9. } 10. 11. void loop() { 12. Serial.print (”Temperatura wynosi: ”); 13. Serial.print (rtc.getTemp()); 14. Serial.printIn (” st. C”); 15. Delay (1000); 16. } Na zrzucie otwarte jest także drugie, mniejsze okno COM5, w którym wyświetla się komunikat w pierwszych ośmiu kolejnych wierszach: „Temperatura wynosi: 24.50 st. C”. W kolejnych siedmiu wyświetla się komunikat: „Temperatura wynosi: 28.50 st. C”.
„Podgrzejmy” trochę moduł i sprawdźmy, jakie teraz będą odczyty.
R25s6OXuldeY7
Zrzut ekranu przedstawia okno „Temperatura|Arduino 1.8.13”. W polu głównym mamy otwartą zakładkę zatytułowaną „Temperatura”. W zakładce wpisany jest następujący kod: 1. #include <DS3231.h> 2. 3. DS3231 rtc (SDA, SCL); 4. 5. void setup() { 6. Serial.begin (115200); 7. 8. rtc.begin (); 9. } 10. 11. void loop() { 12. Serial.print (”Temperatura wynosi: ”); 13. Serial.print (rtc.getTemp()); 14. Serial.printIn (” st. C”); 15. Delay (1000); 16. } Na zrzucie otwarte jest także drugie, mniejsze okno COM5, w którym wyświetla się komunikat w pierwszych ośmiu kolejnych wierszach: „Temperatura wynosi: 24.50 st. C”. W kolejnych siedmiu wyświetla się komunikat: „Temperatura wynosi: 28.50 st. C”.
Polecenie 1
Zmodyfikuj kod tak, by w monitorze portu szeregowego pokazywane były następujące informacje:
data,
czas,
temperatura.
R1Qp17pQPXMNy
Zrzut ekranu przedstawia okno „Data_i_czas|Arduino 1.8.13”. W polu głównym mamy otwartą zakładkę zatytułowaną „Data_i_czas”. W zakładce wpisany jest następujący kod: … 3. DS3231 rtc (SDA, SCL); 4. 5. void setup() { 6. 7. Serial.begin (115200); 8. 9. rtc.begin (); 10. 11. rtc.setDOW (MONDAY); 12. rtc.setTime (11, 29, 00); 13. rtc.setDate (25, 01, 2021); 14. } 15. 16. void loop() { 17. Serial.print (rtc.getDateStr()); 18. Serial.print (” -- ”); 19. 20. Serial.print (rtc.getTimeStr()); 21. Serial.print (” -- ”); 22. 23. Serial.print (”Temperatura wynosi: ”); 24. Serial.print (rtc.getTemp()); 25. Serial.printIn (” st. C”); 26. 27. delay (1000); 28. } Na zrzucie otwarte jest także drugie, mniejsze okno COM5, w którym wyświetla się komunikat w każdym kolejnym wierszu: „25.01.2021 -- 11:29:01 – Temperatura wynosi: 23.50 st. C”. Każdy kolejny wiersz różni się o sekundę więcej od poprzedniego, temperatura pozostaje bez zmian.
Arduino
Linia 1. kratka include otwórz nawias ostrokątny DS3231 kropka h zamknij nawias ostrokątny.
Linia 3. DS3231 rtc otwórz nawias okrągły SDA przecinek SCL zamknij nawias okrągły średnik.
Linia 5. void setup otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 7. Serial kropka begin otwórz nawias okrągły 115200 zamknij nawias okrągły średnik.
Linia 9. rtc kropka begin otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 11. rtc kropka setDOW otwórz nawias okrągły MONDAY zamknij nawias okrągły średnik.
Linia 12. rtc kropka setTime otwórz nawias okrągły 11 przecinek 29 przecinek 00 zamknij nawias okrągły średnik.
Linia 13. rtc kropka setDate otwórz nawias okrągły 25 przecinek 01 przecinek 2021 zamknij nawias okrągły średnik.
Linia 14. zamknij nawias klamrowy.
Linia 16. void loop otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 17. Serial kropka print otwórz nawias okrągły rtc kropka getDateStr otwórz nawias okrągły zamknij nawias okrągły zamknij nawias okrągły średnik.
Linia 18. Serial kropka print otwórz nawias okrągły cudzysłów minus minus cudzysłów zamknij nawias okrągły średnik.
Linia 20. Serial kropka print otwórz nawias okrągły rtc kropka getTimeStr otwórz nawias okrągły zamknij nawias okrągły zamknij nawias okrągły średnik.
Linia 21. Serial kropka print otwórz nawias okrągły cudzysłów minus minus cudzysłów zamknij nawias okrągły średnik.
Linia 23. Serial kropka print otwórz nawias okrągły cudzysłów Temperatura wynosi dwukropek cudzysłów zamknij nawias okrągły średnik.
Linia 24. Serial kropka print otwórz nawias okrągły rtc kropka getTemp otwórz nawias okrągły zamknij nawias okrągły zamknij nawias okrągły średnik.
Linia 25. Serial kropka println otwórz nawias okrągły cudzysłów st kropka C cudzysłów zamknij nawias okrągły średnik.
Linia 27. delay otwórz nawias okrągły 1000 zamknij nawias okrągły średnik.
Linia 28. zamknij nawias klamrowy.
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.
RWeQzfKVchlzX
Zdjęcie przedstawia główny moduł Andruino, do którego podpięte są przewody połączeniowe łączące go z płytką stykową. Do płytki podłączony jest także wyświetlacz, na którym jest data i godzina: wiersz pierwszy: 25.01.2021, wiersz drugi: 11:30:44.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
RWOtEOwWP9FxA
Zdjęcie przedstawia główny moduł Andruino, do którego podpięte są przewody połączeniowe łączące go z płytką stykową. Do płytki podłączony jest także wyświetlacz, na którym jest temperatura: wiersz pierwszy: TEMPERATURA:, wiersz drugi: 23.00 st. C.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Zmodyfikuj kod tak, by w jednej kratce wyświetlany był znak Indeks górny ooC.
R19lnSsFDiIuh
Grafika przedstawia prostokąt, którego podstawą jest krótszy bok. W prostokącie narysowano równomiernie małe kwadraty: 5 na 8. Część kwadratów jest niebieska tak, jak cały prostokąt, a część ma białe tło. Wymienimy białe kwadraty. Ustalmy dla uproszczenia, że kwadraty będziemy nazywać od ich położenia. Kwadrat w pierwszym wierszu i w pierwszej kolumnie nazwiemy 1 W 1 K. Zatem białe kwadraty mają następujące rozmieszczenie: 1 W 2 K, 2 W 1 K, 2 W 3 K, 3 W 2 K, 4 W 3 K, 4 W 4 K, 5 W 2 K, 5 W 5 K, 6 W 2 K, 7 W 2 K, 7 W 5 K, 8 W 3 K, 8 W 4 K.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Rs4oTujuDuSwE
Zdjęcie przedstawia główny moduł Arduino, do którego podpięte są przewody połączeniowe łączące go z płytką stykową. Do płytki podłączony jest także wyświetlacz, na którym jest temperatura: wiersz pierwszy: TEMPERATURA:, wiersz drugi:
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
szeregowa, dwukierunkowa magistrala służąca do przesyłania danych w urządzeniach elektronicznych
pamięć EEPROM
pamięć EEPROM
(ang. electrically erasable programmable read‑only memory) rodzaj nieulotnej pamięci komputerowej; pamięć EEPROM w odróżnieniu od pamięci EPROM może być kasowana tylko przy użyciu prądu elektrycznego