Jak i dlaczego dodać zegar czasu rzeczywistego do Arduino?

Jak i dlaczego dodać zegar czasu rzeczywistego do Arduino?

Utrzymywanie czasu na projektach Arduino nie jest tak proste, jak mogłoby się wydawać: gdy połączenie z komputerem nie jest dostępne, twoje Arduino bez zasilania po prostu przestaje działać, w tym jego wewnętrzny pasek.





jak włączyć kamerę na Macu?

Aby zachować synchronizację Arduino z otaczającym go światem, będziesz potrzebować tak zwanego „modułu zegara czasu rzeczywistego”. Oto jak używać jednego.





Jaki jest sens zegara czasu rzeczywistego (RTC)?

Twój komputer najprawdopodobniej synchronizuje swój czas z Internetem, ale nadal ma wewnętrzny zegar, który działa nawet bez połączenia z Internetem lub wyłączonego zasilania. Kiedy używasz Arduino podłączonego do komputera, ma on dostęp do dokładnego czasu dostarczanego przez twój zegar systemowy. To całkiem przydatne, ale większość projektów Arduino jest zaprojektowana do użytku z dala od komputera – w tym momencie, za każdym razem, gdy zasilanie zostanie odłączone lub Arduino zrestartowane, nie będzie miał pojęcia, która jest godzina. Zegar wewnętrzny zostanie zresetowany i po ponownym włączeniu zacznie odliczać od zera.





Jeśli twój projekt ma coś wspólnego z potrzebą czasu – na przykład mój budzik ze światłem nocnym i wschodem słońca – to z pewnością będzie problem. W tym projekcie obejdzieliśmy ten problem, ręcznie ustawiając godzinę każdej nocy w dość prymitywny sposób – użytkownik naciskał przycisk resetowania tuż przed pójściem spać, zapewniając ręczną synchronizację czasu. Oczywiście nie jest to idealne rozwiązanie na długi czas.

Moduł RTC to dodatkowy element obwodów, wymagający niewielkiej baterii pastylkowej, która kontynuuje odliczanie czasu nawet po wyłączeniu Arduino. Po jednokrotnym ustawieniu - zachowa ten czas przez cały czas pracy baterii, zwykle dobry rok.



TinyRTC

Najpopularniejszy RTC dla Arduino nazywa się TinyRTC i można go kupić za około 5-10 USD na eBayu. Najprawdopodobniej będziesz musiał dostarczyć własną baterię (nielegalne jest wysyłanie ich za granicę do wielu miejsc) i niektóre nagłówki (piny, które wchodzą w otwory, które musisz wlutować).

To jest moduł, który posiadam:





Ma nawet wbudowany czujnik temperatury, ale bateria będzie działać dłużej, jeśli jej nie używasz.

Liczba dziur w tej rzeczy wygląda dość przerażająco, ale potrzebujesz tylko czterech z nich; GND, VCC, SCL i SDA - możesz użyć odpowiednich pinów po obu stronach modułu RTC. Mówisz do zegara, używając Protokół I2C , co oznacza, że ​​używane są tylko dwa piny - jeden dla „zegara” (zegar danych komunikacji szeregowej, nie ma nic wspólnego z czasem) i jeden dla danych. W rzeczywistości można połączyć nawet 121 urządzeń I2C na tych samych dwóch pinach - sprawdź ta strona Adafruit do wyboru innych urządzeń I2C, które możesz dodać, ponieważ jest ich wiele!





Pierwsze kroki

Podłącz swój moduł TinyRTC zgodnie z poniższym schematem - różowa linia DS nie jest potrzebna, ponieważ dotyczy czujnika temperatury.

Następnie pobierz Czas oraz DS1307RTC biblioteki i umieść powstałe foldery w swoim /biblioteki teczka.

Wyjdź i uruchom ponownie środowisko Arduino, aby załadować biblioteki i przykłady.

W menu DS1307RTC znajdziesz dwa przykłady: prześlij i uruchom Ustaw czas Przykład pierwszy - to ustawi RTC na poprawny czas. Rzeczywisty kod nie jest wart wchodzenia w szczegóły, po prostu wiedz, że musisz go uruchomić raz, aby wykonać początkową synchronizację czasu.

Następnie spójrz na przykładowe użycie z Przeczytaj test .

aplikacja do pobierania muzyki na Androida 2016 za darmo

#include
#include
#include
void setup() {
Serial.begin(9600);
while (!Serial) ; // wait for serial
delay(200);
Serial.println('DS1307RTC Read Test');
Serial.println('-------------------');
}
void loop() {
tmElements_t tm;
if (RTC.read(tm)) {
Serial.print('Ok, Time = ');
print2digits(tm.Hour);
Serial.write(':');
print2digits(tm.Minute);
Serial.write(':');
print2digits(tm.Second);
Serial.print(', Date (D/M/Y) = ');
Serial.print(tm.Day);
Serial.write('/');
Serial.print(tm.Month);
Serial.write('/');
Serial.print(tmYearToCalendar(tm.Year));
Serial.println();
} else {
if (RTC.chipPresent()) {
Serial.println('The DS1307 is stopped. Please run the SetTime');
Serial.println('example to initialize the time and begin running.');
Serial.println();
} else {
Serial.println('DS1307 read error! Please check the circuitry.');
Serial.println();
}
delay(9000);
}
delay(1000);
}
void print2digits(int number) {
if (number >= 0 && number <10) {
Serial.write('0');
}
Serial.print(number);
}

Pamiętaj, że zawarliśmy również rdzeń Drut.h biblioteka - ta jest dostarczana z Arduino i służy do komunikacji przez I2C. Prześlij kod, otwórz konsolę szeregową z prędkością 9600 bodów i obserwuj, a Arduino wyświetla aktualny czas co sekundę. Cudowny!

Najważniejszym kodem w przykładzie jest tworzenie a tmElements_t tm - to jest Struktura że wypełnimy aktualny czas; i RTC.odczyt(tm) funkcja, która pobiera aktualny czas z modułu RTC, umieszcza go w naszym tm struktury i zwraca wartość true, jeśli wszystko poszło dobrze. Dodaj kod debugowania lub logiczny wewnątrz tej instrukcji „if”, na przykład drukując godzinę lub reagując na nią.

zewnętrzny dysk twardy nie wyświetla systemu Windows 10

Teraz, gdy już wiesz, jak uzyskać właściwy czas z Arduino, możesz spróbować przepisać projekt alarmu wschodu słońca lub stworzyć zegar słowny LED - możliwości są nieograniczone! Co zrobisz?

Kredyty obrazkowe: Snootlab Przez Flickr

Udział Udział Ćwierkać E-mail Jak zmienić wygląd i styl pulpitu Windows 10?

Chcesz wiedzieć, jak poprawić wygląd systemu Windows 10? Skorzystaj z tych prostych dostosowań, aby dostosować system Windows 10 do własnych potrzeb.

Czytaj dalej
Powiązane tematy
  • majsterkowanie
  • Arduino
O autorze James Bruce(707 opublikowanych artykułów)

James ma tytuł licencjata w dziedzinie sztucznej inteligencji i posiada certyfikaty CompTIA A+ i Network+. Kiedy nie pracuje jako redaktor recenzji sprzętu, lubi gry LEGO, VR i gry planszowe. Przed dołączeniem do MakeUseOf był technikiem oświetlenia, nauczycielem języka angielskiego i inżynierem centrum danych.

Więcej od Jamesa Bruce .a

Zapisz się do naszego newslettera

Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!

Kliknij tutaj, aby zasubskrybować