[PRZYKŁAD] KAmduino oraz moduł RTC z układem DS1307
W przykładzie pokazano sposób podłączenia oraz obsługi modułu z zegarem czasu rzeczywistego. Tego typu moduł może być użyty np. do budowy zegarka/budzika.
Aby zrealizować projekt potrzebne są:
- Płytka KAmduino Uno
- Moduł z zegarem czasu rzeczywistego opartym na układzie DS1307
- Bateria CR1220
- Przewody męsko-żeńskie
Rys 1. Moduł z układem DS1307
W projekcie użyto modułu opartego na układzie RS1307. Pozwala on zapisywać oraz precyzyjnie odmierzać czas. Do komunikacji wykorzystywany jest interfejs I2C. Moduł posiada gniazdo na baterie CR1220, która podtrzymuje działanie zegara RTC w przypadku odłączenia od zasilania. Wymaga samodzielnego montażu (przylutowania kilku elementów).
W celu rozpoczęcia pracy z modułem, należy podłączyć zasilanie 5 V, oraz linie komunikacyjne (SDA oraz SCL) interfejsu I2C do płytki KAmduino UNO. Połączenie zostało przedstawione w poniższej tabeli:
Pin KAmduino UNO | Pin modułu RTC |
+5V | 5V |
GND | GND |
SDA(A4) | SDA |
SCL (A5) | SCL |
Moduł z zegarem czasu rzeczywistego RS1307 podłączony do KAmduino UNO prezentuje się następująco:
Rys 2. Moduł z zegarem czasu rzeczywistego RS1307. podłączony do płytki KAmduino UNO
Aby wykorzystać możliwości modułu z zegarem czasu rzeczywistego należy skorzystać z biblioteki RCTlib (plik znajduje się w sekcji „Do pobrania”, na końcu artykułu). Po pobraniu należy ją zainstalować w środowisku Arduino IDE. Aby to zrobić trzeba uruchomić program Arduino, a następnie na górnej belce wybrać Szkic >> Dołącz Bibliotekę >> Dodaj bibliotekę .ZIP, odnaleźć na dysku pobraną bibliotekę RCTlib i zatwierdzić przyciskiem OPEN. Po instalacji biblioteki przechodzimy do zakładki Plik >> Przykłady >> RTClib (rysunek 3).
Rys 3. Przykłady dostępne w bibliotece RTClib
Po wybraniu odpowiedniej płytki (Narzędzia >> Płytka) można wgrać przykład na mikrokontoler znajdujący się na płytce KAmduino UNO. Po poprawnym wgraniu programu należy uruchomić monitor portu szeregowego. Jeżeli wszystko jest podłączone prawidłowo, powinien się pojawić następujący komunikat (rysunek 4).
Rys 4. Monitor portu szeregowego – pierwsze uruchomienie
Jak widać data oraz godzina nie jest poprawna – otrzymaliśmy komunikat iż zegar RTC nie jest uruchomiony. Aby działał on poprawnie należy ustalić początkową datę i godzinę. W tym celu w przykładzie należy odkomentować następującą linijkę widoczną w czerwonej ramce na rysunku 5. Data oraz godzina zostanie pobrana z naszego zegara systemowego. Można również wprowadzić tą informację ręcznie. Aby to zrobić należy odkomentować linię kodu która znajduje się w zielonym prostokącie na rysunku 5.
Rys 5. Ustawianie początkowej daty oraz godziny dla modułu RTC
Następnie należy ponownie wgrać program oraz uruchomić monitor portu szeregowego.
Rys 6. Poprawne wyświetlanie dany oraz godzinę po ustawieniu wartości początkowych
Jak widać na rysunku 6 zegar czasu rzeczywistego poprawnie wskazuje datę oraz godzinę. Jej wyświetlanie odbywa się się co 3 sekundy. Aby dni tygodnia były wyświetlane w języku polskim należy na początku podmienić tablicę:
char daysOfTheWeek[7][12] = {"Niedziela", "Poniedzialek", "Wtorek", "Sroda", "Czwartek", "Piatek", "Sobota"};
Poniżej aktualnej daty mamy czas jaki minął od 1 stycznia 1970 roku oraz informację o tym jaka data będzie za 7 dni i 30 sekund.