Kazalo:
Video: Ura v realnem času z Arduinom: 3 koraki
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:04
V tem projektu bomo s pomočjo modula Arduino in RTC izdelali uro. Kot vemo, Arduino ne more prikazati dejanskega časa, zato bomo z modulom RTC prikazali pravi čas na LCD -prikazovalniku. Pozorno preberite vse korake, ki vam bodo v veliko pomoč pri izdelavi ure.
Koda DS3231 Arduino je podobna kodi DS1307 in deluje z obema čipoma RTC.
Arduino koda spodaj ne uporablja nobene knjižnice za DS3231 RTC, knjižnica Wire je za korespondenco med Arduino in DS3231, ki uporablja konvencijo I2C.
Ja! Mnogi inženirji elektronike so pri svojih časovno odvisnih projektih odvisni od tega, vendar RTC ni povsem zanesljiv. Deluje na baterije in ga je treba kmalu ali slej zamenjati. Prihaja do projektov IoT, zavzema dragocene zatiče SPI (Serial Peripheral Interface) in se zaplete z žicami, ki se prepletajo. Rešitev … Prihaja naš junak NTP (omrežni časovni protokol). NTP je tako natančen, saj dobi čas iz interneta. Ta protokol bomo upravljali v načinu odjemalec-strežnik. postopek je tako preprost, da naš Nodemcu deluje kot odjemalec in od strežnika z uporabo UDP zahteva paket NTP. V zameno strežnik pošlje paket odjemalcu, ki razčleni podatke. NTP je univerzalni protokol za časovno sinhronizacijo. Zdaj pa prižgimo laboratorijsko delovno mesto
Korak: Potrebne komponente
- Arduino plošča
- DS3231 RTC plošča
- 16x2 LCD zaslon
- 2 x gumb
- 10K ohmski spremenljivi upor (ali potenciometer)
- 330-ohmski upor
- 3V gumbna baterija
- Ogledna plošča
- Mostične žice
RTC mokula DS3231
Čas je bistveni čut, ki je potreben v tem hitrem svetu ljudi. V projektu v realnem času
Uporabljamo RTC (A. K. A ura v realnem času)
RTC ura v realnem času (RTC) je integrirano vezje (IC), ki spremlja trenutni čas. RTC skrbi za čas v realnem načinu. RTC običajno najdemo v računalniških matičnih ploščah in vgrajenih sistemih, kar zahteva pravočasen dostop.
2. korak: Povezava ure Arduino
- Priključite SCL pin na modul RTC na Arduino A5
- Priključite pin SDA na modul RTC na Arduino A4
- VCC priključite na 5v in GND na GND
- Priključite gumb na zatič 8
- Priključite drug gumb na zatič 9
- Priključite RS LCD na pin 2 Arduina
- E LCD priključite na pin 3 Arduina
- Priključite D7 LCD na pin 7 Arduina
- Priključite D6 LCD na pin 6 Arduina
- Priključite D5 LCD na pin 5 Arduina
- Priključite D4 LCD na pin 4 Arduina
- Priključite VSS & K na GND
- Priključite VDD & A na 5v
- Priključite vo na izhodni zatič potenciometra
3. korak: Koda za uro Arduino z RTC
DS3231 deluje samo v formatu BCD in za pretvorbo BCD v decimalno vrednost in obratno sem uporabil 2 vrstici spodaj (primer za minute): // Pretvori BCD v decimalno minuto = (minuta >> 4) * 10 + (minuta & 0x0F);
// Pretvori decimalno v BCDminute = ((minute / 10) << 4) + (minuta % 10); void DS3231_display (): prikaže čas in koledar, preden se prikaz časa in koledarski podatki pretvorijo iz BCD v decimalni format. void blink_parameter ():
// Ura in koledar v realnem času z nastavljenimi gumbi z uporabo DS3231 in Arduino // vključuje kodo knjižnice LCD #include // vključuje kodo knjižnice Wire (potrebno za naprave s protokolom I2C) #include // povezave z modulom LCD (RS, E, D4, D5, D6, D7) LCD tekoči kristal (2, 3, 4, 5, 6, 7); void setup () {pinMode (8, INPUT_PULLUP); // gumb1 je priključen na pin 8 pinMode (9, INPUT_PULLUP); // button2 je priključen na pin 9 // nastavite število stolpcev in vrstic LCD -ja lcd.begin (16, 2); Wire.begin (); // Pridružite se vodilu i2c} char Time = "TIME:::"; char Calendar = "DATE: / / 20"; bajt i, druga, minuta, ura, datum, mesec, leto; void DS3231_display () {// Pretvori BCD v decimalno sekundo = (druga >> 4) * 10 + (druga & 0x0F); minuta = (minuta >> 4) * 10 + (minuta & 0x0F); ura = (ura >> 4) * 10 + (ura & 0x0F); datum = (datum >> 4) * 10 + (datum & 0x0F); mesec = (mesec >> 4) * 10 + (mesec & 0x0F); leto = (leto >> 4) * 10 + (leto & 0x0F); // Končni čas pretvorbe [12] = drugi % 10 + 48; Čas [11] = sekunda / 10 + 48; Čas [9] = minuta % 10 + 48; Čas [8] = minuta / 10 + 48; Čas [6] = ura % 10 + 48; Čas [5] = ura / 10 + 48; Koledar [14] = leto % 10 + 48; Koledar [13] = leto / 10 + 48; Koledar [9] = mesec % 10 + 48; Koledar [8] = mesec / 10 + 48; Koledar [6] = datum % 10 + 48; Koledar [5] = datum / 10 + 48; lcd.setCursor (0, 0); lcd.print (čas); // Prikaz časa lcd.setCursor (0, 1); lcd.print (koledar); // Prikaz koledarja} void blink_parameter () {bajt j = 0; while (j 23) // Če so ure> 23 ==> ure = 0 parameter = 0; if (i == 1 && parameter> 59) // Če minute> 59 ==> minute = 0 parameter = 0; if (i == 2 && parameter> 31) // Če je datum> 31 ==> datum = 1 parameter = 1; if (i == 3 && parameter> 12) // Če je mesec> 12 ==> mesec = 1 parameter = 1; if (i == 4 && parameter> 99) // Če je leto> 99 ==> leto = 0 parameter = 0; sprintf (besedilo, "%02u", parameter); lcd.setCursor (x, y); lcd.print (besedilo); zamuda (200); // Počakajte 200 ms} lcd.setCursor (x, y); lcd.print (""); // Prikaz dveh presledkov blink_parameter (); sprintf (besedilo, "%02u", parameter); lcd.setCursor (x, y); lcd.print (besedilo); blink_parameter (); if (! digitalRead (8)) {// Če pritisnete gumb (pin #8) i ++; // Povečanje 'i' za naslednji vrnjeni parameter; // Vrnitev vrednosti parametra in izhod}}} void loop () {if (! DigitalRead (8)) {// Če je pritisnjen gumb (pin #8) i = 0; ura = uredi (5, 0, ura); minuta = uredi (8, 0, minuta); datum = uredi (5, 1, datum); mesec = uredi (8, 1, mesec); leto = uredi (13, 1, leto); // Pretvori decimalno v BCD minuto = ((minute / 10) << 4) + (minuta % 10); ura = ((ura / 10) << 4) + (ura % 10); datum = ((datum / 10) << 4) + (datum % 10); mesec = ((mesec / 10) << 4) + (mesec % 10); leto = ((leto / 10) << 4) + (leto % 10); // Konec pretvorbe // Zapis podatkov v DS3231 RTC Wire.beginTransmission (0x68); // Zaženite protokol I2C z naslovom DS3231 Wire.write (0); // Pošlji naslov registra Wire.write (0); // Ponastavi sesonde in zažene oscilator Wire.write (minuta); // Zapišite minuto Wire.write (ura); // Pisanje ure Wire.write (1); // Napišite dan (ne uporablja se) Wire.write (datum); // Zapišite datum Wire.write (mesec); // Zapišite mesec Wire.write (leto); // Zapišite leto Wire.endTransmission (); // Ustavi prenos in sprosti zakasnitev vodila I2C (200); // Počakajte 200 ms} Wire.beginTransmission (0x68); // Zaženite protokol I2C z naslovom DS3231 Wire.write (0); // Pošlji naslov registra Wire.endTransmission (false); // I2C znova zaženite Wire.requestFrom (0x68, 7); // Zahtevajte 7 bajtov od DS3231 in sprostite vodilo I2C na koncu drugega branja = Wire.read (); // Branje sekund iz registra 0 minut = Wire.read (); // 1 uro beremo zapisnike iz registra = Wire.read (); // Ura branja iz registra 2 Wire.read (); // dan branja iz registra 3 (ne uporablja se) datum = Wire.read (); // Datum branja iz registra 4 mesec = Wire.read (); // Branje meseca iz registra 5 let = Wire.read (); // Preberite leto iz registra 6 DS3231_display (); // Čas predvajanja in zamik koledarja (50); // Počakajte 50 ms}
Priporočena:
Nastavitev DS3231 RTC (ura v realnem času) natančno, hitro in avtomatizirano z uporabo Java (+-1 s): 3 koraki
Nastavitev DS3231 RTC (ure v realnem času) natančno, hitro in avtomatizirano z uporabo Jave (+-1 s): Ta navodila vam bodo pokazala, kako nastaviti uro na uri DS3231 v realnem času z uporabo Arduina in majhne aplikacije Java, ki uporablja serijska povezava Arduina. Osnovna logika tega programa: 1. Arduino pošlje serijsko zahtevo
Uporaba modulov ure v realnem času DS1307 in DS3231 z Arduinom: 3 koraki
Uporaba modulov ure v realnem času DS1307 in DS3231 z Arduinom: Nenehno prejemamo zahteve o uporabi modulov ure v realnem času DS1307 in DS3231 z Arduinom iz različnih virov-zato je to prvi od dveh delov, kako jih uporabljati. Za to vadnico Arduino imamo na voljo dva modula ure v realnem času
DS1307 Ura v realnem času RTC z Arduinom: 4 koraki
DS1307 Ura v realnem času RTC z Arduinom: V tem vodiču bomo spoznali uro v realnem času (RTC) in kako Arduino & Ura za realni čas IC DS1307 sta skupaj sestavljena kot časovna naprava. Ura realnega časa (RTC) se uporablja za spremljanje časa in vzdrževanje koledarja
Ustvarjanje ure z M5stick C z uporabo Arduino IDE - RTC ura v realnem času z M5stack M5stick-C: 4 koraki
Ustvarjanje ure z M5stick C z uporabo Arduino IDE | RTC ura v realnem času z M5stack M5stick-C: Pozdravljeni fantje, v tem navodilu se bomo naučili, kako narediti uro z m5stick-C razvojno ploščo m5stack z uporabo Arduino IDE. Tako bo m5stick prikazal datum, čas in amp; tedna v mesecu na zaslonu
Ura v realnem času: 4 koraki
Ura v realnem času v okolici: AimI je to uro izdelal, ker imam naokoli naslovljiv LED trak in ga želim uporabiti. Potem sem videl, da moja soba nima dobre ure, ki se ujema s stenami. Zato sem se odločil narediti uro, ki lahko spreminja barve glede na razpoloženje uporabnikov ali