Obsah:
Video: Hodiny v reálnom čase s Arduino: 3 kroky
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:57
V tomto projekte vyrobíme hodiny pomocou modulu Arduino a RTC. Ako vieme, Arduino nemôže zobrazovať skutočný čas, takže na zobrazenie správneho času na LCD displeji použijeme modul RTC. Prečítajte si pozorne všetky kroky, ktoré vám pri výrobe hodinového strojčeka veľmi pomôžu.
Kód DS3231 Arduino je ako kód DS1307 a funguje s oboma čipmi RTC.
Dole uvedený kód Arduino nevyužíva žiadnu knižnicu pre DS3231 RTC, knižnica Wire je pre korešpondenciu medzi Arduino a DS3231 pomocou konvencie I2C.
Áno! Mnoho elektrotechnických inžinierov na nich závisí pri svojich projektoch založených na čase, ale RTC nie je úplne spoľahlivý. Je napájaný batériami a je potrebné ho čoskoro alebo neskôr vymeniť. Pokiaľ ide o projekty internetu vecí, zaberá cenné kolíky SPI (sériové periférne rozhranie) a zamotáva sa do drôtov, ktoré sú zamotané okolo. Riešenie … Tu prichádza náš hrdina NTP (Network Time Protocol). NTP je taký presný, pretože získava čas z internetu. Tento protokol budeme prevádzkovať v režime klient-server. proces je taký jednoduchý, že náš Nodemcu funguje ako klient a požaduje od servera paket NTP pomocou protokolu UDP. Server na oplátku odošle klientovi paket, ktorý údaje analyzuje. NTP je univerzálny protokol synchronizácie času. Teraz rozsvietime pracovnú stanicu laboratória
Krok 1: Požadované komponenty
- Doska Arduino
- Doska RTC DS3231
- LCD obrazovka 16x2
- 2 x tlačidlo
- 10K ohm variabilný odpor (alebo potenciometer)
- Odpor 330 ohmov
- 3V gombíková batéria
- Breadboard
- Prepojovacie vodiče
Modul RTC DS3231
Čas je v tomto uponáhľanom svete ľudských bytostí nevyhnutným zmyslom. V projekte v reálnom čase
Používame RTC (A. K. A hodiny v reálnom čase)
Hodiny RTC v reálnom čase (RTC) sú integrované obvody (IC), ktoré zaznamenávajú aktuálny čas. RTC sa stará o čas v reálnom režime. RTC sa zvyčajne nachádza v počítačových základných doskách a vstavaných systémoch, ktoré vyžadujú včasný prístup.
Krok 2: Pripojenie hodín Arduino
- Pripojte pin SCL k modulu RTC k Arduino A5
- Pripojte pin SDA k modulu RTC k Arduino A4
- Pripojte VCC TO 5v a GND TO GND
- Pripojte tlačidlo ku kolíku 8
- Na kolík 9 pripojte ďalšie tlačidlo
- Pripojte RS LCD k pinu 2 Arduino
- Pripojte E LCD k pinu 3 Arduino
- Pripojte D7 LCD k pinu 7 Arduino
- Pripojte D6 LCD k pinu 6 Arduino
- Pripojte D5 LCD k pinu 5 Arduino
- Pripojte D4 LCD k pinu 4 Arduino
- Pripojte VSS & K k GND
- Pripojte VDD & A k 5v
- Pripojte vo k výstupnému kolíku potenciometra
Krok 3: Kód pre hodiny Arduino s RTC
DS3231 pracuje iba s formátom BCD a na konverziu BCD na desatinné a naopak som použil nasledujúce 2 riadky (príklad pre minúty): // Previesť BCD na desatinnú minútu = (minúta >> 4) * 10 + (minúta a 0x0F);
// Previesť desatinné miesto na BCDminute = ((minúta / 10) << 4) + (minúta % 10); void DS3231_display (): zobrazuje čas a kalendár, než sa údaje o čase a kalendári prevedú z BCD do desatinného formátu. Vyhnite sa parametru blink_parameter ():
// Hodiny a kalendár v reálnom čase s nastavenými tlačidlami pomocou DS3231 a Arduino // zahrnúť kód knižnice LCD #include // zahrnúť kód knižnice drôtu (potrebné pre zariadenia s protokolom I2C) #include // pripojenia modulu LCD (RS, E, D4, D5, D6, D7) LiquidCrystal lcd (2, 3, 4, 5, 6, 7); neplatné nastavenie () {pinMode (8, INPUT_PULLUP); // button1 je pripojený k pinu 8 pinMode (9, INPUT_PULLUP); // button2 je pripojený k pinu 9 // nastavenie počtu stĺpcov a riadkov LCD lcd.begin (16, 2); Wire.begin (); // Pripojte sa k autobusu i2c} char Čas = "ČAS:::"; char Calendar = "DÁTUM: / / 20"; bajt i, sekunda, minúta, hodina, dátum, mesiac, rok; neplatné DS3231_display () {// Previesť BCD na desatinné sekundy = (druhé >> 4) * 10 + (druhé & 0x0F); minúta = (minúta >> 4) * 10 + (minúta & 0x0F); hodina = (hodina >> 4) * 10 + (hodina & 0x0F); dátum = (dátum >> 4) * 10 + (dátum & 0x0F); mesiac = (mesiac >> 4) * 10 + (mesiac & 0x0F); rok = (rok >> 4) * 10 + (rok & 0x0F); // Čas ukončenia konverzie [12] = sekunda % 10 + 48; Čas [11] = sekunda / 10 + 48; Čas [9] = minúta % 10 + 48; Čas [8] = minúta / 10 + 48; Čas [6] = hodina % 10 + 48; Čas [5] = hodina / 10 + 48; Kalendár [14] = rok % 10 + 48; Kalendár [13] = rok / 10 + 48; Kalendár [9] = mesiac % 10 + 48; Kalendár [8] = mesiac / 10 + 48; Kalendár [6] = dátum % 10 + 48; Kalendár [5] = dátum / 10 + 48; lcd.setCursor (0, 0); lcd.print (čas); // Čas zobrazenia lcd.setCursor (0, 1); lcd.print (kalendár); // Zobraziť kalendár} void blink_parameter () {byte j = 0; while (j 23) // If hours> 23 ==> hours = 0 parameter = 0; if (i == 1 && parameter> 59) // If minutes> 59 ==> minutes = 0 parameter = 0; if (i == 2 && parameter> 31) // If date> 31 ==> date = 1 parameter = 1; if (i == 3 && parameter> 12) // If month> 12 ==> month = 1 parameter = 1; if (i == 4 && parameter> 99) // If year> 99 ==> year = 0 parameter = 0; sprintf (text, "%02u", parameter); lcd.setCursor (x, y); lcd.print (text); oneskorenie (200); // Počkajte 200 ms} lcd.setCursor (x, y); lcd.print (""); // Zobraz dve medzery blink_parameter (); sprintf (text, "%02u", parameter); lcd.setCursor (x, y); lcd.print (text); blink_parameter (); if (! digitalRead (8)) {// Ak je stlačené tlačidlo (pin #8) i ++; // Zvýšenie 'i' pre nasledujúci parameter návratového parametra; // Vrátenie hodnoty parametra a ukončenie}}} void loop () {if (! DigitalRead (8)) {// Ak je stlačené tlačidlo (pin #8) i = 0; hodina = úprava (5, 0, hodina); minúta = úprava (8, 0, minúta); dátum = úprava (5, 1, dátum); mesiac = upraviť (8, 1, mesiac); rok = upraviť (13, 1, rok); // Prevod desatinnej čísla na BCD minútu = ((minúta / 10) << 4) + (minúta % 10); hodina = ((hodina / 10) << 4) + (hodina % 10); dátum = ((dátum / 10) << 4) + (dátum % 10); mesiac = ((mesiac / 10) << 4) + (mesiac % 10); rok = ((rok / 10) << 4) + (rok % 10); // Ukončenie konverzie // Zapisovanie údajov do DS3231 RTC Wire.beginTransmission (0x68); // Spustenie protokolu I2C s adresou DS3231 Wire.write (0); // Odoslať registračnú adresu Wire.write (0); // Resetujte sesondy a spustite oscilátor Wire.write (minúta); // zápis minúty Wire.write (hodina); // Napíšte hodinu Wire.write (1); // Deň zápisu (nepoužíva sa) Wire.write (dátum); // Napíšte dátum Wire.write (mesiac); // Napíšte mesiac Wire.write (rok); // Napíšte rok Wire.endTransmission (); // Zastavte prenos a uvoľnite oneskorenie zbernice I2C (200); // Počkajte 200 ms} Wire.beginTransmission (0x68); // Spustenie protokolu I2C s adresou DS3231 Wire.write (0); // Odoslať registračnú adresu Wire.endTransmission (false); // I2C reštart Wire.requestFrom (0x68, 7); // Požiadajte 7 bajtov z DS3231 a uvoľnite zbernicu I2C na konci čítania sekundy = Wire.read (); // Čítanie sekúnd z registra 0 minút = Wire.read (); // Čítanie minút z registra 1 hodinu = Wire.read (); // Hodina čítania z registra 2 Wire.read (); // Deň čítania z registra 3 (nepoužíva sa) date = Wire.read (); // Dátum čítania z registra 4 mesiace = Wire.read (); // Prečítajte si mesiac z registra 5 rokov = Wire.read (); // Čítať rok z registra 6 DS3231_display (); // Čas zobrazenia a oneskorenie kalendára (50); // Počkajte 50 ms}
Odporúča:
Hodiny Minitel v reálnom čase: 5 krokov
Hodiny Minitel v reálnom čase: Minitel, ktorý v roku 1978 vytvorila spoločnosť France Telecom, bol službou na vyhľadávanie a odosielanie textových správ. Považovaná za najúspešnejšiu sieť pred celosvetovým webom. Po 30 rokoch v roku 2008 sa sieť konečne zatvorila. (Existuje veľa informácií o tomto
Použitie hodinových modulov v reálnom čase DS1307 a DS3231 s Arduino: 3 kroky
Používanie modulov hodín v reálnom čase DS1307 a DS3231 s Arduinom: Stále dostávame žiadosti o to, ako používať moduly hodín v reálnom čase DS1307 a DS3231 s Arduino z rôznych zdrojov-toto je teda prvý z dvojdielneho tutoriálu o ich použití. Na tento výukový program Arduino máme k dispozícii dva moduly hodín v reálnom čase
Hodiny DS1307 v reálnom čase RTC s Arduino: 4 kroky
DS1307 Hodiny v reálnom čase RTC s Arduino: V tomto návode sa dozvieme o hodinách v reálnom čase (RTC) a o tom, ako Arduino & Hodiny v reálnom čase IC DS1307 sú zostavené ako časovacie zariadenie. Hodiny v reálnom čase (RTC) sa používajú na monitorovanie času a údržbu kalendára. Ak chcete používať RTC,
Výroba hodín pomocou M5stick C pomocou Arduino IDE - Hodiny RTC v reálnom čase s M5stack M5stick-C: 4 kroky
Výroba hodín pomocou M5stick C pomocou Arduino IDE | Hodiny RTC v reálnom čase s M5stack M5stick-C: Ahoj chlapci, v tomto návode sa naučíme, ako vyrobiť hodiny s vývojovou doskou m5stick-C m5stack pomocou Arduino IDE. Takže m5stick zobrazí dátum, čas a týždeň v mesiaci na displeji
Ako vytvoriť hodiny v reálnom čase pomocou displeja Arduino a TFT - Arduino Mega RTC s 3,5 palcovým TFT displejom: 4 kroky
Ako vytvoriť hodiny v reálnom čase pomocou Arduino a TFT displeja | Arduino Mega RTC s 3,5 palcovým TFT displejom: Navštívte môj kanál YouTube. Úvod:- V tomto príspevku urobím „Hodiny v reálnom čase“pomocou 3,5 palcového dotykového TFT LCD displeja, Arduino Mega Modul RTC 2560 a DS3231 …. Pred spustením … si pozrite video z môjho kanála YouTube..Poznámka:- Ak používate Arduin