![Zegar czasu rzeczywistego z Arduino: 3 kroki Zegar czasu rzeczywistego z Arduino: 3 kroki](https://i.howwhatproduce.com/images/010/image-28025-j.webp)
Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-23 15:02
![Zegar czasu rzeczywistego z Arduino Zegar czasu rzeczywistego z Arduino](https://i.howwhatproduce.com/images/010/image-28025-1-j.webp)
W tym projekcie wykonamy zegar za pomocą modułu Arduino i RTC. Jak wiemy Arduino nie może wyświetlać aktualnego czasu, dlatego użyjemy modułu RTC, aby wyświetlić właściwy czas na wyświetlaczu LCD. Przeczytaj uważnie wszystkie kroki, co bardzo pomoże ci w zegarku.
Kod Arduino DS3231 jest podobny do kodu DS1307 i działa z obydwoma układami RTC.
Poniższy kod Arduino nie wykorzystuje żadnej biblioteki dla DS3231 RTC, biblioteka Wire służy do korespondencji między Arduino i DS3231 przy użyciu konwencji I2C.
Tak! Wielu inżynierów elektroników polega na nim w swoich projektach opartych na czasie, ale RTC nie jest całkowicie niezawodny. Jest zasilany bateryjnie i musi zostać wymieniony prędzej czy później. W projektach IoT zajmuje cenne piny SPI (Serial Peripheral Interface) i robi bałagan z plątaniną przewodów. Rozwiązanie…. Oto nasz bohater NTP (protokół czasu sieciowego). NTP jest tak dokładny, ponieważ pobiera czas z Internetu. Będziemy obsługiwać ten protokół w trybie klient-serwer. proces jest tak prosty, że nasz Nodemcu działa jako klient i żąda pakietu NTP z serwera za pomocą UDP. W zamian serwer wysyła pakiet do klienta, który analizuje dane. NTP to uniwersalny protokół synchronizacji czasu. Teraz rozświetlmy nasze stanowisko pracy w laboratorium
Krok 1: Wymagane składniki
- Płytka Arduino
- DS3231 Płytka RTC
- Ekran LCD 16x2
- 2 x przycisk
- Rezystor zmienny 10K ohm (lub potencjometr)
- Rezystor 330 omów
- Bateria pastylkowa 3 V
- Deska do krojenia chleba
- Przewody połączeniowe
Moduł RTC DS3231
Czas jest podstawowym zmysłem wymaganym w tym szybkim świecie istot ludzkich. Projekt w czasie rzeczywistym
Używamy RTC (zegar czasu rzeczywistego A. K. A)
RTC Zegar czasu rzeczywistego (RTC) to układ scalony (IC), który śledzi aktualny czas. RTC dba o czas w trybie rzeczywistym. RTC zwykle znajduje się na płytach głównych komputerów i systemach wbudowanych, aby wymagać szybkiego dostępu.
Krok 2: Podłączenie zegara Arduino
![Połączenie zegara Arduino Połączenie zegara Arduino](https://i.howwhatproduce.com/images/010/image-28025-2-j.webp)
- Podłącz pin SCL do modułu RTC do Arduino A5
- Podłącz pin SDA do modułu RTC do Arduino A4
- Podłącz VCC do 5 v i GND do GND
- Podłącz przycisk do bolca 8
- Podłącz kolejny przycisk do kołka 9
- Podłącz RS wyświetlacza LCD do pinu 2 Arduino
- Podłącz E wyświetlacza LCD do pinu 3 Arduino
- Podłącz D7 wyświetlacza LCD do pinu 7 Arduino
- Podłącz D6 wyświetlacza LCD do pinu 6 Arduino
- Podłącz D5 wyświetlacza LCD do pinu 5 Arduino
- Podłącz D4 wyświetlacza LCD do pinu 4 Arduino
- Podłącz VSS i K do GND
- Podłącz VDD i A do 5v
- Podłącz vo do pinu wyjściowego potencjometru
Krok 3: Kod dla zegara Arduino z RTC
![Kod zegara Arduino z RTC Kod zegara Arduino z RTC](https://i.howwhatproduce.com/images/010/image-28025-3-j.webp)
DS3231 działa tylko z formatem BCD i do konwersji BCD na dziesiętny i odwrotnie użyłem 2 linii poniżej (przykład dla minuty):// Konwertuj BCD na decimalminute = (minuta >> 4) * 10 + (minuta i 0x0F);
// Konwersja dziesiętna na BCDminuta = ((minuta / 10) << 4) + (minuta % 10); void DS3231_display(): wyświetla czas i kalendarz, przed wyświetleniem czasu i danych kalendarza są konwertowane z formatu BCD do formatu dziesiętnego.void blink_parameter():
// Zegar czasu rzeczywistego i kalendarz z przyciskami ustawiania za pomocą DS3231 i Arduino // zawiera kod biblioteki LCD #include // zawiera kod biblioteki przewodów (wymagany dla urządzeń z protokołem I2C) #include // Połączenia modułu LCD (RS, E, D4, D5, D6, D7) LiquidCrystal lcd(2, 3, 4, 5, 6, 7); void setup() { pinMode(8, INPUT_PULLUP); //przycisk1 jest podłączony do pinu 8 pinMode(9, INPUT_PULLUP); //przycisk 2 jest podłączony do pinu 9 // ustawia liczbę kolumn i wierszy LCD lcd.begin(16, 2); Wire.początek(); // Dołącz do magistrali i2c } char Czas = "CZAS::: "; char Kalendarz = "DATA: / /20"; bajt i, sekunda, minuta, godzina, data, miesiąc, rok; void DS3231_display(){ // Konwertuj BCD na sekundy dziesiętne = (sekunda >> 4) * 10 + (sekunda i 0x0F); minuta = (minuta >> 4) * 10 + (minuta i 0x0F); godzina = (godzina >> 4) * 10 + (godzina i 0x0F); data = (data >> 4) * 10 + (data i 0x0F); miesiąc = (miesiąc >> 4) * 10 + (miesiąc i 0x0F); rok = (rok >> 4) * 10 + (rok i 0x0F); // Czas zakończenia konwersji[12] = sekunda % 10 + 48; Czas[11] = sekunda / 10 + 48; Czas[9] = minuta % 10 + 48; Czas[8] = minuta / 10 + 48; Czas[6] = godzina % 10 + 48; Czas[5] = godzina / 10 + 48; Kalendarz[14] = rok % 10 + 48; Kalendarz[13] = rok / 10 + 48; Kalendarz[9] = miesiąc % 10 + 48; Kalendarz[8] = miesiąc / 10 + 48; Kalendarz[6] = data % 10 + 48; Kalendarz[5] = data / 10 + 48; lcd.setCursor(0, 0); lcd.print(czas); // Wyświetl czas lcd.setCursor(0, 1); lcd.print(Kalendarz); // Wyświetl kalendarz } void blink_parameter(){ byte j = 0; while(j 23) // Jeżeli godziny > 23 ==> godziny = 0 parametr = 0; if(i == 1 && parametr > 59) // If minuty > 59 ==> minuty = 0 parametr = 0; if(i == 2 && parametr > 31) // If data > 31 ==> data = 1 parametr = 1; if(i == 3 && parametr > 12) // If miesiąc > 12 ==> miesiąc = 1 parametr = 1; if(i == 4 && parametr > 99) // If rok > 99 ==> rok = 0 parametr = 0; sprintf(tekst, "%02u", parametr); lcd.setCursor(x, y); lcd.print(tekst); opóźnienie(200); // Czekaj 200 ms } lcd.setCursor(x, y); lcd.print(" "); // Wyświetl dwie spacje blink_parameter(); sprintf(tekst, "%02u", parametr); lcd.setCursor(x, y); lcd.print(tekst); parametr_mignięcia(); if(!digitalRead(8)){ // Jeśli przycisk (pin #8) jest wciśnięty i++; // Zwiększenie 'i' dla następnego parametru return parametr; // Zwróć wartość parametru i wyjdź } } } void loop() { if(!digitalRead(8)){ // Jeżeli przycisk (pin #8) został naciśnięty i = 0; godzina = edycja(5, 0, godzina); minuta = edytuj(8, 0, minuta); data = edycja(5, 1, data); miesiąc = edytuj(8, 1, miesiąc); rok = edycja(13, 1, rok); // Konwersja dziesiętna na BCD minuta = ((minuta / 10) << 4) + (minuta % 10); godzina = ((godzina / 10) << 4) + (godzina % 10); data = ((data / 10) << 4) + (data % 10); miesiąc = ((miesiąc / 10) << 4) + (miesiąc % 10); rok = ((rok / 10) << 4) + (rok % 10); // Zakończ konwersję // Zapis danych do DS3231 RTC Wire.beginTransmission(0x68); // Uruchom protokół I2C z adresem DS3231 Wire.write(0); // Wyślij adres rejestru Wire.write(0); // Zresetuj sesondy i uruchom oscylator Wire.write(minute); // Napisz minutę Wire.write(hour); // Zapisz godzinę Wire.write(1); // Dzień zapisu (nie używany) Wire.write(data); // data zapisu Wire.write(miesiąc); // Zapisz miesiąc Wire.write(year); // Zapisz rok Wire.endTransmission(); // Zatrzymaj transmisję i zwolnij opóźnienie magistrali I2C(200); // Czekaj 200ms } Wire.beginTransmission(0x68); // Uruchom protokół I2C z adresem DS3231 Wire.write(0); // Wyślij adres rejestru Wire.endTransmission(false); // Ponowne uruchomienie I2C Wire.requestFrom(0x68, 7); // Zażądaj 7 bajtów od DS3231 i zwolnij magistralę I2C pod koniec odczytu sekund = Wire.read(); // Odczytaj sekundy z rejestru 0 minuta = Wire.read(); // Odczytaj minuty z rejestru 1 godzina = Wire.read(); // Odczytaj godzinę z rejestru 2 Wire.read(); // Odczytaj dzień z rejestru 3 (nieużywany) date = Wire.read(); // Odczytaj datę z rejestru 4 miesiąc = Wire.read(); // Odczytaj miesiąc z rejestru 5 rok = Wire.read(); // Odczytaj rok z rejestru 6 DS3231_display(); // Czas wyświetlania i opóźnienie kalendarza(50); // Czekaj 50ms }
Zalecana:
Zegar czasu rzeczywistego przy użyciu AT89s52: 3 kroki
![Zegar czasu rzeczywistego przy użyciu AT89s52: 3 kroki Zegar czasu rzeczywistego przy użyciu AT89s52: 3 kroki](https://i.howwhatproduce.com/images/009/image-25599-j.webp)
Zegar czasu rzeczywistego używający AT89s52: WITAJCIE Z POWROTEM, Tu shubham Trivedi. Dzisiaj mam zamiar zaprojektować zegar czasu rzeczywistego używając mikrokontrolera At89s52. Sercem tego projektu jest mikrokontroler AT89S52. DS1307 IC jest używany jako RTC. Ten układ scalony DS1307 wymagał interfejsu I2C, ale 89
Dokładne, szybkie i automatyczne ustawianie DS3231 RTC (zegar czasu rzeczywistego) za pomocą języka Java (+-1 s): 3 kroki
![Dokładne, szybkie i automatyczne ustawianie DS3231 RTC (zegar czasu rzeczywistego) za pomocą języka Java (+-1 s): 3 kroki Dokładne, szybkie i automatyczne ustawianie DS3231 RTC (zegar czasu rzeczywistego) za pomocą języka Java (+-1 s): 3 kroki](https://i.howwhatproduce.com/images/011/image-31716-j.webp)
Dokładne, szybkie i automatyczne ustawianie zegara czasu rzeczywistego DS3231 (zegar czasu rzeczywistego) za pomocą języka Java (+-1 s): Ta instrukcja pokaże, jak ustawić czas w zegarze czasu rzeczywistego DS3231 za pomocą Arduino i małej aplikacji Java, która używa połączenie szeregowe Arduino.Podstawowa logika tego programu:1. Arduino wysyła żądanie szeregowe
DS1307 Zegar czasu rzeczywistego RTC z Arduino: 4 kroki
![DS1307 Zegar czasu rzeczywistego RTC z Arduino: 4 kroki DS1307 Zegar czasu rzeczywistego RTC z Arduino: 4 kroki](https://i.howwhatproduce.com/images/001/image-678-98-j.webp)
DS1307 Zegar czasu rzeczywistego RTC z Arduino: W tym samouczku dowiemy się o zegarze czasu rzeczywistego (RTC) oraz o tym, jak Arduino i amp; Układ scalony zegara czasu rzeczywistego DS1307 jest złożony jako urządzenie do pomiaru czasu.Zegar czasu rzeczywistego (RTC) służy do monitorowania czasu i utrzymywania kalendarza.W celu korzystania z zegara czasu rzeczywistego
Tworzenie zegara za pomocą M5stick C przy użyciu Arduino IDE - Zegar czasu rzeczywistego RTC z M5stack M5stick-C: 4 kroki
![Tworzenie zegara za pomocą M5stick C przy użyciu Arduino IDE - Zegar czasu rzeczywistego RTC z M5stack M5stick-C: 4 kroki Tworzenie zegara za pomocą M5stick C przy użyciu Arduino IDE - Zegar czasu rzeczywistego RTC z M5stack M5stick-C: 4 kroki](https://i.howwhatproduce.com/images/002/image-3337-33-j.webp)
Tworzenie zegara za pomocą M5stick C przy użyciu Arduino IDE | Zegar czasu rzeczywistego RTC z M5stack M5stick-C: Cześć chłopaki, w tej instrukcji dowiemy się, jak zrobić zegar za pomocą płytki rozwojowej m5stick-C m5stack przy użyciu Arduino IDE. Tak więc m5stick wyświetli datę, godzinę i amp; tydzień miesiąca na wyświetlaczu
Jak zrobić zegar czasu rzeczywistego za pomocą Arduino i wyświetlacza TFT - Arduino Mega RTC z 3,5-calowym wyświetlaczem TFT: 4 kroki
![Jak zrobić zegar czasu rzeczywistego za pomocą Arduino i wyświetlacza TFT - Arduino Mega RTC z 3,5-calowym wyświetlaczem TFT: 4 kroki Jak zrobić zegar czasu rzeczywistego za pomocą Arduino i wyświetlacza TFT - Arduino Mega RTC z 3,5-calowym wyświetlaczem TFT: 4 kroki](https://i.howwhatproduce.com/images/006/image-16956-9-j.webp)
Jak zrobić zegar czasu rzeczywistego za pomocą Arduino i wyświetlacza TFT | Arduino Mega RTC z 3,5-calowym wyświetlaczem TFT: Odwiedź mój kanał YouTube. Wprowadzenie: - W tym poście zamierzam stworzyć „Zegar czasu rzeczywistego” za pomocą 3,5-calowego ekranu dotykowego TFT, Arduino Mega Moduł 2560 i DS3231 RTC….Przed rozpoczęciem…sprawdź wideo z mojego kanału YouTube..Uwaga:- Jeśli używasz Arduina